import { createRequire as __createRequire } from 'node:module'; import { fileURLToPath as __fileURLToPath } from 'node:url'; import { dirname as __dirname_ } from 'node:path'; const require = __createRequire(import.meta.url); const __filename = __fileURLToPath(import.meta.url); const __dirname = __dirname_(__filename); var __create3 = Object.create; var __defProp3 = Object.defineProperty; var __getOwnPropDesc3 = Object.getOwnPropertyDescriptor; var __getOwnPropNames3 = Object.getOwnPropertyNames; var __getProtoOf3 = Object.getPrototypeOf; var __hasOwnProp3 = Object.prototype.hasOwnProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) { if (typeof require !== "undefined") return require.apply(this, arguments); throw Error('Dynamic require of "' + x + '" is not supported'); }); var __esm = (fn2, res) => function __init() { return fn2 && (res = (0, fn2[__getOwnPropNames3(fn2)[0]])(fn2 = 0)), res; }; var __commonJS2 = (cb, mod) => function __require2() { return mod || (0, cb[__getOwnPropNames3(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export3 = (target, all) => { for (var name in all) __defProp3(target, name, { get: all[name], enumerable: true }); }; var __copyProps3 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames3(from)) if (!__hasOwnProp3.call(to, key) && key !== except) __defProp3(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc3(from, key)) || desc.enumerable }); } return to; }; var __toESM3 = (mod, isNodeMode, target) => (target = mod != null ? __create3(__getProtoOf3(mod)) : {}, __copyProps3( // 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 ? __defProp3(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS3 = (mod) => __copyProps3(__defProp3({}, "__esModule", { value: true }), mod); var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; var __accessCheck = (obj, member, msg) => { if (!member.has(obj)) throw TypeError("Cannot " + msg); }; var __privateGet = (obj, member, getter) => { __accessCheck(obj, member, "read from private field"); return getter ? getter.call(obj) : member.get(obj); }; var __privateAdd = (obj, member, value) => { if (member.has(obj)) throw TypeError("Cannot add the same private member more than once"); member instanceof WeakSet ? member.add(obj) : member.set(obj, value); }; var __privateSet = (obj, member, value, setter) => { __accessCheck(obj, member, "write to private field"); setter ? setter.call(obj, value) : member.set(obj, value); return value; }; var __privateMethod = (obj, member, method) => { __accessCheck(obj, member, "access private method"); return method; }; // ../error-utils/dist/index.js var require_dist2 = __commonJS2({ "../error-utils/dist/index.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var src_exports2 = {}; __export4(src_exports2, { errorToString: () => errorToString13, isErrnoException: () => isErrnoException22, isError: () => isError14, isErrorLike: () => isErrorLike2, isObject: () => isObject2, isSpawnError: () => isSpawnError2, normalizeError: () => normalizeError3 }); module2.exports = __toCommonJS4(src_exports2); var import_node_util = __toESM4(__require("util")); var isObject2 = (obj) => typeof obj === "object" && obj !== null; var isError14 = (error3) => { return import_node_util.default.types.isNativeError(error3); }; var isErrnoException22 = (error3) => { return isError14(error3) && "code" in error3; }; var isErrorLike2 = (error3) => isObject2(error3) && "message" in error3; var errorToString13 = (error3, fallback) => { if (isError14(error3) || isErrorLike2(error3)) return error3.message; if (typeof error3 === "string") return error3; return fallback ?? "An unknown error has ocurred."; }; var normalizeError3 = (error3) => { if (isError14(error3)) return error3; const errorMessage = errorToString13(error3); return isErrorLike2(error3) ? Object.assign(new Error(errorMessage), error3) : new Error(errorMessage); }; function isSpawnError2(v) { return isErrnoException22(v) && "spawnargs" in v; } } }); // ../../node_modules/.pnpm/universalify@2.0.1/node_modules/universalify/index.js var require_universalify = __commonJS2({ "../../node_modules/.pnpm/universalify@2.0.1/node_modules/universalify/index.js"(exports2) { "use strict"; exports2.fromCallback = function(fn2) { return Object.defineProperty(function(...args2) { if (typeof args2[args2.length - 1] === "function") fn2.apply(this, args2); else { return new Promise((resolve14, reject) => { args2.push((err, res) => err != null ? reject(err) : resolve14(res)); fn2.apply(this, args2); }); } }, "name", { value: fn2.name }); }; exports2.fromPromise = function(fn2) { return Object.defineProperty(function(...args2) { const cb = args2[args2.length - 1]; if (typeof cb !== "function") return fn2.apply(this, args2); else { args2.pop(); fn2.apply(this, args2).then((r) => cb(null, r), cb); } }, "name", { value: fn2.name }); }; } }); // ../../node_modules/.pnpm/graceful-fs@4.2.11/node_modules/graceful-fs/polyfills.js var require_polyfills = __commonJS2({ "../../node_modules/.pnpm/graceful-fs@4.2.11/node_modules/graceful-fs/polyfills.js"(exports2, module2) { var constants2 = __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(fs15) { if (constants2.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { patchLchmod(fs15); } if (!fs15.lutimes) { patchLutimes(fs15); } fs15.chown = chownFix(fs15.chown); fs15.fchown = chownFix(fs15.fchown); fs15.lchown = chownFix(fs15.lchown); fs15.chmod = chmodFix(fs15.chmod); fs15.fchmod = chmodFix(fs15.fchmod); fs15.lchmod = chmodFix(fs15.lchmod); fs15.chownSync = chownFixSync(fs15.chownSync); fs15.fchownSync = chownFixSync(fs15.fchownSync); fs15.lchownSync = chownFixSync(fs15.lchownSync); fs15.chmodSync = chmodFixSync(fs15.chmodSync); fs15.fchmodSync = chmodFixSync(fs15.fchmodSync); fs15.lchmodSync = chmodFixSync(fs15.lchmodSync); fs15.stat = statFix(fs15.stat); fs15.fstat = statFix(fs15.fstat); fs15.lstat = statFix(fs15.lstat); fs15.statSync = statFixSync(fs15.statSync); fs15.fstatSync = statFixSync(fs15.fstatSync); fs15.lstatSync = statFixSync(fs15.lstatSync); if (fs15.chmod && !fs15.lchmod) { fs15.lchmod = function(path11, mode, cb) { if (cb) process.nextTick(cb); }; fs15.lchmodSync = function() { }; } if (fs15.chown && !fs15.lchown) { fs15.lchown = function(path11, uid, gid, cb) { if (cb) process.nextTick(cb); }; fs15.lchownSync = function() { }; } if (platform === "win32") { fs15.rename = typeof fs15.rename !== "function" ? fs15.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() { fs15.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; }(fs15.rename); } fs15.read = typeof fs15.read !== "function" ? fs15.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(fs15, fd, buffer, offset, length, position, callback); } callback_.apply(this, arguments); }; } return fs$read.call(fs15, fd, buffer, offset, length, position, callback); } if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read); return read; }(fs15.read); fs15.readSync = typeof fs15.readSync !== "function" ? fs15.readSync : function(fs$readSync) { return function(fd, buffer, offset, length, position) { var eagCounter = 0; while (true) { try { return fs$readSync.call(fs15, fd, buffer, offset, length, position); } catch (er) { if (er.code === "EAGAIN" && eagCounter < 10) { eagCounter++; continue; } throw er; } } }; }(fs15.readSync); function patchLchmod(fs16) { fs16.lchmod = function(path11, mode, callback) { fs16.open( path11, constants2.O_WRONLY | constants2.O_SYMLINK, mode, function(err, fd) { if (err) { if (callback) callback(err); return; } fs16.fchmod(fd, mode, function(err2) { fs16.close(fd, function(err22) { if (callback) callback(err2 || err22); }); }); } ); }; fs16.lchmodSync = function(path11, mode) { var fd = fs16.openSync(path11, constants2.O_WRONLY | constants2.O_SYMLINK, mode); var threw = true; var ret; try { ret = fs16.fchmodSync(fd, mode); threw = false; } finally { if (threw) { try { fs16.closeSync(fd); } catch (er) { } } else { fs16.closeSync(fd); } } return ret; }; } function patchLutimes(fs16) { if (constants2.hasOwnProperty("O_SYMLINK") && fs16.futimes) { fs16.lutimes = function(path11, at, mt, cb) { fs16.open(path11, constants2.O_SYMLINK, function(er, fd) { if (er) { if (cb) cb(er); return; } fs16.futimes(fd, at, mt, function(er2) { fs16.close(fd, function(er22) { if (cb) cb(er2 || er22); }); }); }); }; fs16.lutimesSync = function(path11, at, mt) { var fd = fs16.openSync(path11, constants2.O_SYMLINK); var ret; var threw = true; try { ret = fs16.futimesSync(fd, at, mt); threw = false; } finally { if (threw) { try { fs16.closeSync(fd); } catch (er) { } } else { fs16.closeSync(fd); } } return ret; }; } else if (fs16.futimes) { fs16.lutimes = function(_a, _b, _c, cb) { if (cb) process.nextTick(cb); }; fs16.lutimesSync = function() { }; } } function chmodFix(orig) { if (!orig) return orig; return function(target, mode, cb) { return orig.call(fs15, 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(fs15, 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(fs15, 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(fs15, 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(fs15, target, options, callback) : orig.call(fs15, target, callback); }; } function statFixSync(orig) { if (!orig) return orig; return function(target, options) { var stats = options ? orig.call(fs15, target, options) : orig.call(fs15, 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/.pnpm/graceful-fs@4.2.11/node_modules/graceful-fs/legacy-streams.js var require_legacy_streams = __commonJS2({ "../../node_modules/.pnpm/graceful-fs@4.2.11/node_modules/graceful-fs/legacy-streams.js"(exports2, module2) { var Stream = __require("stream").Stream; module2.exports = legacy; function legacy(fs15) { return { ReadStream, WriteStream }; function ReadStream(path11, options) { if (!(this instanceof ReadStream)) return new ReadStream(path11, options); Stream.call(this); var self2 = this; this.path = path11; 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 index = 0, length = keys.length; index < length; index++) { var key = keys[index]; 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; } fs15.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(path11, options) { if (!(this instanceof WriteStream)) return new WriteStream(path11, options); Stream.call(this); this.path = path11; 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 index = 0, length = keys.length; index < length; index++) { var key = keys[index]; 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 = fs15.open; this._queue.push([this._open, this.path, this.flags, this.mode, void 0]); this.flush(); } } } } }); // ../../node_modules/.pnpm/graceful-fs@4.2.11/node_modules/graceful-fs/clone.js var require_clone = __commonJS2({ "../../node_modules/.pnpm/graceful-fs@4.2.11/node_modules/graceful-fs/clone.js"(exports2, module2) { "use strict"; 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 copy3 = { __proto__: getPrototypeOf(obj) }; else var copy3 = /* @__PURE__ */ Object.create(null); Object.getOwnPropertyNames(obj).forEach(function(key) { Object.defineProperty(copy3, key, Object.getOwnPropertyDescriptor(obj, key)); }); return copy3; } } }); // ../../node_modules/.pnpm/graceful-fs@4.2.11/node_modules/graceful-fs/graceful-fs.js var require_graceful_fs = __commonJS2({ "../../node_modules/.pnpm/graceful-fs@4.2.11/node_modules/graceful-fs/graceful-fs.js"(exports2, module2) { var fs15 = __require("fs"); var polyfills = require_polyfills(); var legacy = require_legacy_streams(); var clone = require_clone(); var util = __require("util"); var gracefulQueue; var previousSymbol; if (typeof Symbol === "function" && typeof Symbol.for === "function") { gracefulQueue = Symbol.for("graceful-fs.queue"); previousSymbol = Symbol.for("graceful-fs.previous"); } else { gracefulQueue = "___graceful-fs.queue"; previousSymbol = "___graceful-fs.previous"; } function noop() { } function publishQueue(context, queue2) { Object.defineProperty(context, gracefulQueue, { get: function() { return queue2; } }); } var debug2 = noop; if (util.debuglog) debug2 = util.debuglog("gfs4"); else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) debug2 = function() { var m = util.format.apply(util, arguments); m = "GFS4: " + m.split(/\n/).join("\nGFS4: "); console.error(m); }; if (!fs15[gracefulQueue]) { queue = global[gracefulQueue] || []; publishQueue(fs15, queue); fs15.close = function(fs$close) { function close2(fd, cb) { return fs$close.call(fs15, fd, function(err) { if (!err) { resetQueue(); } if (typeof cb === "function") cb.apply(this, arguments); }); } Object.defineProperty(close2, previousSymbol, { value: fs$close }); return close2; }(fs15.close); fs15.closeSync = function(fs$closeSync) { function closeSync2(fd) { fs$closeSync.apply(fs15, arguments); resetQueue(); } Object.defineProperty(closeSync2, previousSymbol, { value: fs$closeSync }); return closeSync2; }(fs15.closeSync); if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) { process.on("exit", function() { debug2(fs15[gracefulQueue]); __require("assert").equal(fs15[gracefulQueue].length, 0); }); } } var queue; if (!global[gracefulQueue]) { publishQueue(global, fs15[gracefulQueue]); } module2.exports = patch(clone(fs15)); if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs15.__patched) { module2.exports = patch(fs15); fs15.__patched = true; } function patch(fs16) { polyfills(fs16); fs16.gracefulify = patch; fs16.createReadStream = createReadStream; fs16.createWriteStream = createWriteStream2; var fs$readFile = fs16.readFile; fs16.readFile = readFile8; function readFile8(path11, options, cb) { if (typeof options === "function") cb = options, options = null; return go$readFile(path11, options, cb); function go$readFile(path12, options2, cb2, startTime) { return fs$readFile(path12, options2, function(err) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$readFile, [path12, options2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } var fs$writeFile = fs16.writeFile; fs16.writeFile = writeFile6; function writeFile6(path11, data, options, cb) { if (typeof options === "function") cb = options, options = null; return go$writeFile(path11, data, options, cb); function go$writeFile(path12, data2, options2, cb2, startTime) { return fs$writeFile(path12, data2, options2, function(err) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$writeFile, [path12, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } var fs$appendFile = fs16.appendFile; if (fs$appendFile) fs16.appendFile = appendFile; function appendFile(path11, data, options, cb) { if (typeof options === "function") cb = options, options = null; return go$appendFile(path11, data, options, cb); function go$appendFile(path12, data2, options2, cb2, startTime) { return fs$appendFile(path12, data2, options2, function(err) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$appendFile, [path12, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } var fs$copyFile = fs16.copyFile; if (fs$copyFile) fs16.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 = fs16.readdir; fs16.readdir = readdir2; var noReaddirOptionVersions = /^v[0-5]\./; function readdir2(path11, options, cb) { if (typeof options === "function") cb = options, options = null; var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path12, options2, cb2, startTime) { return fs$readdir(path12, fs$readdirCallback( path12, options2, cb2, startTime )); } : function go$readdir2(path12, options2, cb2, startTime) { return fs$readdir(path12, options2, fs$readdirCallback( path12, options2, cb2, startTime )); }; return go$readdir(path11, options, cb); function fs$readdirCallback(path12, options2, cb2, startTime) { return function(err, files) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([ go$readdir, [path12, 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(fs16); ReadStream = legStreams.ReadStream; WriteStream = legStreams.WriteStream; } var fs$ReadStream = fs16.ReadStream; if (fs$ReadStream) { ReadStream.prototype = Object.create(fs$ReadStream.prototype); ReadStream.prototype.open = ReadStream$open; } var fs$WriteStream = fs16.WriteStream; if (fs$WriteStream) { WriteStream.prototype = Object.create(fs$WriteStream.prototype); WriteStream.prototype.open = WriteStream$open; } Object.defineProperty(fs16, "ReadStream", { get: function() { return ReadStream; }, set: function(val) { ReadStream = val; }, enumerable: true, configurable: true }); Object.defineProperty(fs16, "WriteStream", { get: function() { return WriteStream; }, set: function(val) { WriteStream = val; }, enumerable: true, configurable: true }); var FileReadStream = ReadStream; Object.defineProperty(fs16, "FileReadStream", { get: function() { return FileReadStream; }, set: function(val) { FileReadStream = val; }, enumerable: true, configurable: true }); var FileWriteStream = WriteStream; Object.defineProperty(fs16, "FileWriteStream", { get: function() { return FileWriteStream; }, set: function(val) { FileWriteStream = val; }, enumerable: true, configurable: true }); function ReadStream(path11, 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; open10(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(path11, 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; open10(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(path11, options) { return new fs16.ReadStream(path11, options); } function createWriteStream2(path11, options) { return new fs16.WriteStream(path11, options); } var fs$open = fs16.open; fs16.open = open10; function open10(path11, flags, mode, cb) { if (typeof mode === "function") cb = mode, mode = null; return go$open(path11, flags, mode, cb); function go$open(path12, flags2, mode2, cb2, startTime) { return fs$open(path12, flags2, mode2, function(err, fd) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$open, [path12, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } return fs16; } function enqueue(elem) { debug2("ENQUEUE", elem[0].name, elem[1]); fs15[gracefulQueue].push(elem); retry6(); } var retryTimer; function resetQueue() { var now = Date.now(); for (var i = 0; i < fs15[gracefulQueue].length; ++i) { if (fs15[gracefulQueue][i].length > 2) { fs15[gracefulQueue][i][3] = now; fs15[gracefulQueue][i][4] = now; } } retry6(); } function retry6() { clearTimeout(retryTimer); retryTimer = void 0; if (fs15[gracefulQueue].length === 0) return; var elem = fs15[gracefulQueue].shift(); var fn2 = elem[0]; var args2 = elem[1]; var err = elem[2]; var startTime = elem[3]; var lastTime = elem[4]; if (startTime === void 0) { debug2("RETRY", fn2.name, args2); fn2.apply(null, args2); } else if (Date.now() - startTime >= 6e4) { debug2("TIMEOUT", fn2.name, args2); var cb = args2.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) { debug2("RETRY", fn2.name, args2); fn2.apply(null, args2.concat([startTime])); } else { fs15[gracefulQueue].push(elem); } } if (retryTimer === void 0) { retryTimer = setTimeout(retry6, 0); } } } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/fs/index.js var require_fs = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/fs/index.js"(exports2) { "use strict"; var u = require_universalify().fromCallback; var fs15 = require_graceful_fs(); var api2 = [ "access", "appendFile", "chmod", "chown", "close", "copyFile", "fchmod", "fchown", "fdatasync", "fstat", "fsync", "ftruncate", "futimes", "lchmod", "lchown", "link", "lstat", "mkdir", "mkdtemp", "open", "opendir", "readdir", "readFile", "readlink", "realpath", "rename", "rm", "rmdir", "stat", "symlink", "truncate", "unlink", "utimes", "writeFile" ].filter((key) => { return typeof fs15[key] === "function"; }); Object.assign(exports2, fs15); api2.forEach((method) => { exports2[method] = u(fs15[method]); }); exports2.realpath.native = u(fs15.realpath.native); exports2.exists = function(filename, callback) { if (typeof callback === "function") { return fs15.exists(filename, callback); } return new Promise((resolve14) => { return fs15.exists(filename, resolve14); }); }; exports2.read = function(fd, buffer, offset, length, position, callback) { if (typeof callback === "function") { return fs15.read(fd, buffer, offset, length, position, callback); } return new Promise((resolve14, reject) => { fs15.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => { if (err) return reject(err); resolve14({ bytesRead, buffer: buffer2 }); }); }); }; exports2.write = function(fd, buffer, ...args2) { if (typeof args2[args2.length - 1] === "function") { return fs15.write(fd, buffer, ...args2); } return new Promise((resolve14, reject) => { fs15.write(fd, buffer, ...args2, (err, bytesWritten, buffer2) => { if (err) return reject(err); resolve14({ bytesWritten, buffer: buffer2 }); }); }); }; if (typeof fs15.writev === "function") { exports2.writev = function(fd, buffers, ...args2) { if (typeof args2[args2.length - 1] === "function") { return fs15.writev(fd, buffers, ...args2); } return new Promise((resolve14, reject) => { fs15.writev(fd, buffers, ...args2, (err, bytesWritten, buffers2) => { if (err) return reject(err); resolve14({ bytesWritten, buffers: buffers2 }); }); }); }; } } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/mkdirs/utils.js var require_utils = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/mkdirs/utils.js"(exports2, module2) { "use strict"; var path11 = __require("path"); module2.exports.checkPath = function checkPath(pth) { if (process.platform === "win32") { const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path11.parse(pth).root, "")); if (pathHasInvalidWinCharacters) { const error3 = new Error(`Path contains invalid characters: ${pth}`); error3.code = "EINVAL"; throw error3; } } }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/mkdirs/make-dir.js var require_make_dir = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/mkdirs/make-dir.js"(exports2, module2) { "use strict"; var fs15 = require_fs(); var { checkPath } = require_utils(); var getMode = (options) => { const defaults = { mode: 511 }; if (typeof options === "number") return options; return { ...defaults, ...options }.mode; }; module2.exports.makeDir = async (dir, options) => { checkPath(dir); return fs15.mkdir(dir, { mode: getMode(options), recursive: true }); }; module2.exports.makeDirSync = (dir, options) => { checkPath(dir); return fs15.mkdirSync(dir, { mode: getMode(options), recursive: true }); }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/mkdirs/index.js var require_mkdirs = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/mkdirs/index.js"(exports2, module2) { "use strict"; var u = require_universalify().fromPromise; var { makeDir: _makeDir, makeDirSync } = require_make_dir(); var makeDir = u(_makeDir); module2.exports = { mkdirs: makeDir, mkdirsSync: makeDirSync, // alias mkdirp: makeDir, mkdirpSync: makeDirSync, ensureDir: makeDir, ensureDirSync: makeDirSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/util/utimes.js var require_utimes = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/util/utimes.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); function utimesMillis(path11, atime, mtime, callback) { fs15.open(path11, "r+", (err, fd) => { if (err) return callback(err); fs15.futimes(fd, atime, mtime, (futimesErr) => { fs15.close(fd, (closeErr) => { if (callback) callback(futimesErr || closeErr); }); }); }); } function utimesMillisSync(path11, atime, mtime) { const fd = fs15.openSync(path11, "r+"); fs15.futimesSync(fd, atime, mtime); return fs15.closeSync(fd); } module2.exports = { utimesMillis, utimesMillisSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/util/stat.js var require_stat = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/util/stat.js"(exports2, module2) { "use strict"; var fs15 = require_fs(); var path11 = __require("path"); var util = __require("util"); function getStats(src, dest, opts) { const statFunc = opts.dereference ? (file) => fs15.stat(file, { bigint: true }) : (file) => fs15.lstat(file, { bigint: true }); return Promise.all([ statFunc(src), statFunc(dest).catch((err) => { if (err.code === "ENOENT") return null; throw err; }) ]).then(([srcStat, destStat]) => ({ srcStat, destStat })); } function getStatsSync(src, dest, opts) { let destStat; const statFunc = opts.dereference ? (file) => fs15.statSync(file, { bigint: true }) : (file) => fs15.lstatSync(file, { bigint: true }); const srcStat = statFunc(src); try { destStat = statFunc(dest); } catch (err) { if (err.code === "ENOENT") return { srcStat, destStat: null }; throw err; } return { srcStat, destStat }; } function checkPaths(src, dest, funcName, opts, cb) { util.callbackify(getStats)(src, dest, opts, (err, stats) => { if (err) return cb(err); const { srcStat, destStat } = stats; if (destStat) { if (areIdentical(srcStat, destStat)) { const srcBaseName = path11.basename(src); const destBaseName = path11.basename(dest); if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { return cb(null, { srcStat, destStat, isChangingCase: true }); } return cb(new Error("Source and destination must not be the same.")); } if (srcStat.isDirectory() && !destStat.isDirectory()) { return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)); } if (!srcStat.isDirectory() && destStat.isDirectory()) { return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)); } } if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { return cb(new Error(errMsg(src, dest, funcName))); } return cb(null, { srcStat, destStat }); }); } function checkPathsSync(src, dest, funcName, opts) { const { srcStat, destStat } = getStatsSync(src, dest, opts); if (destStat) { if (areIdentical(srcStat, destStat)) { const srcBaseName = path11.basename(src); const destBaseName = path11.basename(dest); if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { return { srcStat, destStat, isChangingCase: true }; } throw new Error("Source and destination must not be the same."); } if (srcStat.isDirectory() && !destStat.isDirectory()) { throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`); } if (!srcStat.isDirectory() && destStat.isDirectory()) { throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`); } } if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { throw new Error(errMsg(src, dest, funcName)); } return { srcStat, destStat }; } function checkParentPaths(src, srcStat, dest, funcName, cb) { const srcParent = path11.resolve(path11.dirname(src)); const destParent = path11.resolve(path11.dirname(dest)); if (destParent === srcParent || destParent === path11.parse(destParent).root) return cb(); fs15.stat(destParent, { bigint: true }, (err, destStat) => { if (err) { if (err.code === "ENOENT") return cb(); return cb(err); } if (areIdentical(srcStat, destStat)) { return cb(new Error(errMsg(src, dest, funcName))); } return checkParentPaths(src, srcStat, destParent, funcName, cb); }); } function checkParentPathsSync(src, srcStat, dest, funcName) { const srcParent = path11.resolve(path11.dirname(src)); const destParent = path11.resolve(path11.dirname(dest)); if (destParent === srcParent || destParent === path11.parse(destParent).root) return; let destStat; try { destStat = fs15.statSync(destParent, { bigint: true }); } catch (err) { if (err.code === "ENOENT") return; throw err; } if (areIdentical(srcStat, destStat)) { throw new Error(errMsg(src, dest, funcName)); } return checkParentPathsSync(src, srcStat, destParent, funcName); } function areIdentical(srcStat, destStat) { return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev; } function isSrcSubdir(src, dest) { const srcArr = path11.resolve(src).split(path11.sep).filter((i) => i); const destArr = path11.resolve(dest).split(path11.sep).filter((i) => i); return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true); } function errMsg(src, dest, funcName) { return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`; } module2.exports = { checkPaths, checkPathsSync, checkParentPaths, checkParentPathsSync, isSrcSubdir, areIdentical }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/copy-sync/copy-sync.js var require_copy_sync = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/copy-sync/copy-sync.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var mkdirsSync = require_mkdirs().mkdirsSync; var utimesMillisSync = require_utimes().utimesMillisSync; var stat2 = require_stat(); function copySync(src, dest, opts) { if (typeof opts === "function") { opts = { filter: opts }; } opts = opts || {}; opts.clobber = "clobber" in opts ? !!opts.clobber : true; opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber; if (opts.preserveTimestamps && process.arch === "ia32") { console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended; see https://github.com/jprichardson/node-fs-extra/issues/269`); } const { srcStat, destStat } = stat2.checkPathsSync(src, dest, "copy", opts); stat2.checkParentPathsSync(src, srcStat, dest, "copy"); return handleFilterAndCopy(destStat, src, dest, opts); } function handleFilterAndCopy(destStat, src, dest, opts) { if (opts.filter && !opts.filter(src, dest)) return; const destParent = path11.dirname(dest); if (!fs15.existsSync(destParent)) mkdirsSync(destParent); return getStats(destStat, src, dest, opts); } function startCopy(destStat, src, dest, opts) { if (opts.filter && !opts.filter(src, dest)) return; return getStats(destStat, src, dest, opts); } function getStats(destStat, src, dest, opts) { const statSync3 = opts.dereference ? fs15.statSync : fs15.lstatSync; const srcStat = statSync3(src); if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts); else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts); else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts); else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`); else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`); throw new Error(`Unknown file: ${src}`); } function onFile(srcStat, destStat, src, dest, opts) { if (!destStat) return copyFile(srcStat, src, dest, opts); return mayCopyFile(srcStat, src, dest, opts); } function mayCopyFile(srcStat, src, dest, opts) { if (opts.overwrite) { fs15.unlinkSync(dest); return copyFile(srcStat, src, dest, opts); } else if (opts.errorOnExist) { throw new Error(`'${dest}' already exists`); } } function copyFile(srcStat, src, dest, opts) { fs15.copyFileSync(src, dest); if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest); return setDestMode(dest, srcStat.mode); } function handleTimestamps(srcMode, src, dest) { if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode); return setDestTimestamps(src, dest); } function fileIsNotWritable(srcMode) { return (srcMode & 128) === 0; } function makeFileWritable(dest, srcMode) { return setDestMode(dest, srcMode | 128); } function setDestMode(dest, srcMode) { return fs15.chmodSync(dest, srcMode); } function setDestTimestamps(src, dest) { const updatedSrcStat = fs15.statSync(src); return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime); } function onDir(srcStat, destStat, src, dest, opts) { if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts); return copyDir(src, dest, opts); } function mkDirAndCopy(srcMode, src, dest, opts) { fs15.mkdirSync(dest); copyDir(src, dest, opts); return setDestMode(dest, srcMode); } function copyDir(src, dest, opts) { fs15.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts)); } function copyDirItem(item, src, dest, opts) { const srcItem = path11.join(src, item); const destItem = path11.join(dest, item); const { destStat } = stat2.checkPathsSync(srcItem, destItem, "copy", opts); return startCopy(destStat, srcItem, destItem, opts); } function onLink(destStat, src, dest, opts) { let resolvedSrc = fs15.readlinkSync(src); if (opts.dereference) { resolvedSrc = path11.resolve(process.cwd(), resolvedSrc); } if (!destStat) { return fs15.symlinkSync(resolvedSrc, dest); } else { let resolvedDest; try { resolvedDest = fs15.readlinkSync(dest); } catch (err) { if (err.code === "EINVAL" || err.code === "UNKNOWN") return fs15.symlinkSync(resolvedSrc, dest); throw err; } if (opts.dereference) { resolvedDest = path11.resolve(process.cwd(), resolvedDest); } if (stat2.isSrcSubdir(resolvedSrc, resolvedDest)) { throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`); } if (fs15.statSync(dest).isDirectory() && stat2.isSrcSubdir(resolvedDest, resolvedSrc)) { throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`); } return copyLink(resolvedSrc, dest); } } function copyLink(resolvedSrc, dest) { fs15.unlinkSync(dest); return fs15.symlinkSync(resolvedSrc, dest); } module2.exports = copySync; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/copy-sync/index.js var require_copy_sync2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/copy-sync/index.js"(exports2, module2) { "use strict"; module2.exports = { copySync: require_copy_sync() }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/path-exists/index.js var require_path_exists = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/path-exists/index.js"(exports2, module2) { "use strict"; var u = require_universalify().fromPromise; var fs15 = require_fs(); function pathExists(path11) { return fs15.access(path11).then(() => true).catch(() => false); } module2.exports = { pathExists: u(pathExists), pathExistsSync: fs15.existsSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/copy/copy.js var require_copy = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/copy/copy.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var mkdirs = require_mkdirs().mkdirs; var pathExists = require_path_exists().pathExists; var utimesMillis = require_utimes().utimesMillis; var stat2 = require_stat(); function copy3(src, dest, opts, cb) { if (typeof opts === "function" && !cb) { cb = opts; opts = {}; } else if (typeof opts === "function") { opts = { filter: opts }; } cb = cb || function() { }; opts = opts || {}; opts.clobber = "clobber" in opts ? !!opts.clobber : true; opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber; if (opts.preserveTimestamps && process.arch === "ia32") { console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended; see https://github.com/jprichardson/node-fs-extra/issues/269`); } stat2.checkPaths(src, dest, "copy", opts, (err, stats) => { if (err) return cb(err); const { srcStat, destStat } = stats; stat2.checkParentPaths(src, srcStat, dest, "copy", (err2) => { if (err2) return cb(err2); if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb); return checkParentDir(destStat, src, dest, opts, cb); }); }); } function checkParentDir(destStat, src, dest, opts, cb) { const destParent = path11.dirname(dest); pathExists(destParent, (err, dirExists) => { if (err) return cb(err); if (dirExists) return getStats(destStat, src, dest, opts, cb); mkdirs(destParent, (err2) => { if (err2) return cb(err2); return getStats(destStat, src, dest, opts, cb); }); }); } function handleFilter(onInclude, destStat, src, dest, opts, cb) { Promise.resolve(opts.filter(src, dest)).then((include) => { if (include) return onInclude(destStat, src, dest, opts, cb); return cb(); }, (error3) => cb(error3)); } function startCopy(destStat, src, dest, opts, cb) { if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb); return getStats(destStat, src, dest, opts, cb); } function getStats(destStat, src, dest, opts, cb) { const stat3 = opts.dereference ? fs15.stat : fs15.lstat; stat3(src, (err, srcStat) => { if (err) return cb(err); if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb); else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb); else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb); else if (srcStat.isSocket()) return cb(new Error(`Cannot copy a socket file: ${src}`)); else if (srcStat.isFIFO()) return cb(new Error(`Cannot copy a FIFO pipe: ${src}`)); return cb(new Error(`Unknown file: ${src}`)); }); } function onFile(srcStat, destStat, src, dest, opts, cb) { if (!destStat) return copyFile(srcStat, src, dest, opts, cb); return mayCopyFile(srcStat, src, dest, opts, cb); } function mayCopyFile(srcStat, src, dest, opts, cb) { if (opts.overwrite) { fs15.unlink(dest, (err) => { if (err) return cb(err); return copyFile(srcStat, src, dest, opts, cb); }); } else if (opts.errorOnExist) { return cb(new Error(`'${dest}' already exists`)); } else return cb(); } function copyFile(srcStat, src, dest, opts, cb) { fs15.copyFile(src, dest, (err) => { if (err) return cb(err); if (opts.preserveTimestamps) return handleTimestampsAndMode(srcStat.mode, src, dest, cb); return setDestMode(dest, srcStat.mode, cb); }); } function handleTimestampsAndMode(srcMode, src, dest, cb) { if (fileIsNotWritable(srcMode)) { return makeFileWritable(dest, srcMode, (err) => { if (err) return cb(err); return setDestTimestampsAndMode(srcMode, src, dest, cb); }); } return setDestTimestampsAndMode(srcMode, src, dest, cb); } function fileIsNotWritable(srcMode) { return (srcMode & 128) === 0; } function makeFileWritable(dest, srcMode, cb) { return setDestMode(dest, srcMode | 128, cb); } function setDestTimestampsAndMode(srcMode, src, dest, cb) { setDestTimestamps(src, dest, (err) => { if (err) return cb(err); return setDestMode(dest, srcMode, cb); }); } function setDestMode(dest, srcMode, cb) { return fs15.chmod(dest, srcMode, cb); } function setDestTimestamps(src, dest, cb) { fs15.stat(src, (err, updatedSrcStat) => { if (err) return cb(err); return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb); }); } function onDir(srcStat, destStat, src, dest, opts, cb) { if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts, cb); return copyDir(src, dest, opts, cb); } function mkDirAndCopy(srcMode, src, dest, opts, cb) { fs15.mkdir(dest, (err) => { if (err) return cb(err); copyDir(src, dest, opts, (err2) => { if (err2) return cb(err2); return setDestMode(dest, srcMode, cb); }); }); } function copyDir(src, dest, opts, cb) { fs15.readdir(src, (err, items) => { if (err) return cb(err); return copyDirItems(items, src, dest, opts, cb); }); } function copyDirItems(items, src, dest, opts, cb) { const item = items.pop(); if (!item) return cb(); return copyDirItem(items, item, src, dest, opts, cb); } function copyDirItem(items, item, src, dest, opts, cb) { const srcItem = path11.join(src, item); const destItem = path11.join(dest, item); stat2.checkPaths(srcItem, destItem, "copy", opts, (err, stats) => { if (err) return cb(err); const { destStat } = stats; startCopy(destStat, srcItem, destItem, opts, (err2) => { if (err2) return cb(err2); return copyDirItems(items, src, dest, opts, cb); }); }); } function onLink(destStat, src, dest, opts, cb) { fs15.readlink(src, (err, resolvedSrc) => { if (err) return cb(err); if (opts.dereference) { resolvedSrc = path11.resolve(process.cwd(), resolvedSrc); } if (!destStat) { return fs15.symlink(resolvedSrc, dest, cb); } else { fs15.readlink(dest, (err2, resolvedDest) => { if (err2) { if (err2.code === "EINVAL" || err2.code === "UNKNOWN") return fs15.symlink(resolvedSrc, dest, cb); return cb(err2); } if (opts.dereference) { resolvedDest = path11.resolve(process.cwd(), resolvedDest); } if (stat2.isSrcSubdir(resolvedSrc, resolvedDest)) { return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)); } if (destStat.isDirectory() && stat2.isSrcSubdir(resolvedDest, resolvedSrc)) { return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)); } return copyLink(resolvedSrc, dest, cb); }); } }); } function copyLink(resolvedSrc, dest, cb) { fs15.unlink(dest, (err) => { if (err) return cb(err); return fs15.symlink(resolvedSrc, dest, cb); }); } module2.exports = copy3; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/copy/index.js var require_copy2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/copy/index.js"(exports2, module2) { "use strict"; var u = require_universalify().fromCallback; module2.exports = { copy: u(require_copy()) }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/remove/rimraf.js var require_rimraf = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/remove/rimraf.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var assert = __require("assert"); var isWindows = process.platform === "win32"; function defaults(options) { const methods = [ "unlink", "chmod", "stat", "lstat", "rmdir", "readdir" ]; methods.forEach((m) => { options[m] = options[m] || fs15[m]; m = m + "Sync"; options[m] = options[m] || fs15[m]; }); options.maxBusyTries = options.maxBusyTries || 3; } function rimraf(p, options, cb) { let busyTries = 0; if (typeof options === "function") { cb = options; options = {}; } assert(p, "rimraf: missing path"); assert.strictEqual(typeof p, "string", "rimraf: path should be a string"); assert.strictEqual(typeof cb, "function", "rimraf: callback function required"); assert(options, "rimraf: invalid options argument provided"); assert.strictEqual(typeof options, "object", "rimraf: options should be object"); defaults(options); rimraf_(p, options, function CB(er) { if (er) { if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && busyTries < options.maxBusyTries) { busyTries++; const time = busyTries * 100; return setTimeout(() => rimraf_(p, options, CB), time); } if (er.code === "ENOENT") er = null; } cb(er); }); } function rimraf_(p, options, cb) { assert(p); assert(options); assert(typeof cb === "function"); options.lstat(p, (er, st) => { if (er && er.code === "ENOENT") { return cb(null); } if (er && er.code === "EPERM" && isWindows) { return fixWinEPERM(p, options, er, cb); } if (st && st.isDirectory()) { return rmdir2(p, options, er, cb); } options.unlink(p, (er2) => { if (er2) { if (er2.code === "ENOENT") { return cb(null); } if (er2.code === "EPERM") { return isWindows ? fixWinEPERM(p, options, er2, cb) : rmdir2(p, options, er2, cb); } if (er2.code === "EISDIR") { return rmdir2(p, options, er2, cb); } } return cb(er2); }); }); } function fixWinEPERM(p, options, er, cb) { assert(p); assert(options); assert(typeof cb === "function"); options.chmod(p, 438, (er2) => { if (er2) { cb(er2.code === "ENOENT" ? null : er); } else { options.stat(p, (er3, stats) => { if (er3) { cb(er3.code === "ENOENT" ? null : er); } else if (stats.isDirectory()) { rmdir2(p, options, er, cb); } else { options.unlink(p, cb); } }); } }); } function fixWinEPERMSync(p, options, er) { let stats; assert(p); assert(options); try { options.chmodSync(p, 438); } catch (er2) { if (er2.code === "ENOENT") { return; } else { throw er; } } try { stats = options.statSync(p); } catch (er3) { if (er3.code === "ENOENT") { return; } else { throw er; } } if (stats.isDirectory()) { rmdirSync(p, options, er); } else { options.unlinkSync(p); } } function rmdir2(p, options, originalEr, cb) { assert(p); assert(options); assert(typeof cb === "function"); options.rmdir(p, (er) => { if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) { rmkids(p, options, cb); } else if (er && er.code === "ENOTDIR") { cb(originalEr); } else { cb(er); } }); } function rmkids(p, options, cb) { assert(p); assert(options); assert(typeof cb === "function"); options.readdir(p, (er, files) => { if (er) return cb(er); let n = files.length; let errState; if (n === 0) return options.rmdir(p, cb); files.forEach((f) => { rimraf(path11.join(p, f), options, (er2) => { if (errState) { return; } if (er2) return cb(errState = er2); if (--n === 0) { options.rmdir(p, cb); } }); }); }); } function rimrafSync(p, options) { let st; options = options || {}; defaults(options); assert(p, "rimraf: missing path"); assert.strictEqual(typeof p, "string", "rimraf: path should be a string"); assert(options, "rimraf: missing options"); assert.strictEqual(typeof options, "object", "rimraf: options should be object"); try { st = options.lstatSync(p); } catch (er) { if (er.code === "ENOENT") { return; } if (er.code === "EPERM" && isWindows) { fixWinEPERMSync(p, options, er); } } try { if (st && st.isDirectory()) { rmdirSync(p, options, null); } else { options.unlinkSync(p); } } catch (er) { if (er.code === "ENOENT") { return; } else if (er.code === "EPERM") { return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er); } else if (er.code !== "EISDIR") { throw er; } rmdirSync(p, options, er); } } function rmdirSync(p, options, originalEr) { assert(p); assert(options); try { options.rmdirSync(p); } catch (er) { if (er.code === "ENOTDIR") { throw originalEr; } else if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") { rmkidsSync(p, options); } else if (er.code !== "ENOENT") { throw er; } } } function rmkidsSync(p, options) { assert(p); assert(options); options.readdirSync(p).forEach((f) => rimrafSync(path11.join(p, f), options)); if (isWindows) { const startTime = Date.now(); do { try { const ret = options.rmdirSync(p, options); return ret; } catch { } } while (Date.now() - startTime < 500); } else { const ret = options.rmdirSync(p, options); return ret; } } module2.exports = rimraf; rimraf.sync = rimrafSync; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/remove/index.js var require_remove = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/remove/index.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var u = require_universalify().fromCallback; var rimraf = require_rimraf(); function remove7(path11, callback) { if (fs15.rm) return fs15.rm(path11, { recursive: true, force: true }, callback); rimraf(path11, callback); } function removeSync(path11) { if (fs15.rmSync) return fs15.rmSync(path11, { recursive: true, force: true }); rimraf.sync(path11); } module2.exports = { remove: u(remove7), removeSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/empty/index.js var require_empty = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/empty/index.js"(exports2, module2) { "use strict"; var u = require_universalify().fromPromise; var fs15 = require_fs(); var path11 = __require("path"); var mkdir5 = require_mkdirs(); var remove7 = require_remove(); var emptyDir = u(async function emptyDir2(dir) { let items; try { items = await fs15.readdir(dir); } catch { return mkdir5.mkdirs(dir); } return Promise.all(items.map((item) => remove7.remove(path11.join(dir, item)))); }); function emptyDirSync(dir) { let items; try { items = fs15.readdirSync(dir); } catch { return mkdir5.mkdirsSync(dir); } items.forEach((item) => { item = path11.join(dir, item); remove7.removeSync(item); }); } module2.exports = { emptyDirSync, emptydirSync: emptyDirSync, emptyDir, emptydir: emptyDir }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/file.js var require_file = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/file.js"(exports2, module2) { "use strict"; var u = require_universalify().fromCallback; var path11 = __require("path"); var fs15 = require_graceful_fs(); var mkdir5 = require_mkdirs(); function createFile(file, callback) { function makeFile() { fs15.writeFile(file, "", (err) => { if (err) return callback(err); callback(); }); } fs15.stat(file, (err, stats) => { if (!err && stats.isFile()) return callback(); const dir = path11.dirname(file); fs15.stat(dir, (err2, stats2) => { if (err2) { if (err2.code === "ENOENT") { return mkdir5.mkdirs(dir, (err3) => { if (err3) return callback(err3); makeFile(); }); } return callback(err2); } if (stats2.isDirectory()) makeFile(); else { fs15.readdir(dir, (err3) => { if (err3) return callback(err3); }); } }); }); } function createFileSync(file) { let stats; try { stats = fs15.statSync(file); } catch { } if (stats && stats.isFile()) return; const dir = path11.dirname(file); try { if (!fs15.statSync(dir).isDirectory()) { fs15.readdirSync(dir); } } catch (err) { if (err && err.code === "ENOENT") mkdir5.mkdirsSync(dir); else throw err; } fs15.writeFileSync(file, ""); } module2.exports = { createFile: u(createFile), createFileSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/link.js var require_link = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/link.js"(exports2, module2) { "use strict"; var u = require_universalify().fromCallback; var path11 = __require("path"); var fs15 = require_graceful_fs(); var mkdir5 = require_mkdirs(); var pathExists = require_path_exists().pathExists; var { areIdentical } = require_stat(); function createLink(srcpath, dstpath, callback) { function makeLink(srcpath2, dstpath2) { fs15.link(srcpath2, dstpath2, (err) => { if (err) return callback(err); callback(null); }); } fs15.lstat(dstpath, (_, dstStat) => { fs15.lstat(srcpath, (err, srcStat) => { if (err) { err.message = err.message.replace("lstat", "ensureLink"); return callback(err); } if (dstStat && areIdentical(srcStat, dstStat)) return callback(null); const dir = path11.dirname(dstpath); pathExists(dir, (err2, dirExists) => { if (err2) return callback(err2); if (dirExists) return makeLink(srcpath, dstpath); mkdir5.mkdirs(dir, (err3) => { if (err3) return callback(err3); makeLink(srcpath, dstpath); }); }); }); }); } function createLinkSync(srcpath, dstpath) { let dstStat; try { dstStat = fs15.lstatSync(dstpath); } catch { } try { const srcStat = fs15.lstatSync(srcpath); if (dstStat && areIdentical(srcStat, dstStat)) return; } catch (err) { err.message = err.message.replace("lstat", "ensureLink"); throw err; } const dir = path11.dirname(dstpath); const dirExists = fs15.existsSync(dir); if (dirExists) return fs15.linkSync(srcpath, dstpath); mkdir5.mkdirsSync(dir); return fs15.linkSync(srcpath, dstpath); } module2.exports = { createLink: u(createLink), createLinkSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/symlink-paths.js var require_symlink_paths = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/symlink-paths.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var fs15 = require_graceful_fs(); var pathExists = require_path_exists().pathExists; function symlinkPaths(srcpath, dstpath, callback) { if (path11.isAbsolute(srcpath)) { return fs15.lstat(srcpath, (err) => { if (err) { err.message = err.message.replace("lstat", "ensureSymlink"); return callback(err); } return callback(null, { toCwd: srcpath, toDst: srcpath }); }); } else { const dstdir = path11.dirname(dstpath); const relativeToDst = path11.join(dstdir, srcpath); return pathExists(relativeToDst, (err, exists) => { if (err) return callback(err); if (exists) { return callback(null, { toCwd: relativeToDst, toDst: srcpath }); } else { return fs15.lstat(srcpath, (err2) => { if (err2) { err2.message = err2.message.replace("lstat", "ensureSymlink"); return callback(err2); } return callback(null, { toCwd: srcpath, toDst: path11.relative(dstdir, srcpath) }); }); } }); } } function symlinkPathsSync(srcpath, dstpath) { let exists; if (path11.isAbsolute(srcpath)) { exists = fs15.existsSync(srcpath); if (!exists) throw new Error("absolute srcpath does not exist"); return { toCwd: srcpath, toDst: srcpath }; } else { const dstdir = path11.dirname(dstpath); const relativeToDst = path11.join(dstdir, srcpath); exists = fs15.existsSync(relativeToDst); if (exists) { return { toCwd: relativeToDst, toDst: srcpath }; } else { exists = fs15.existsSync(srcpath); if (!exists) throw new Error("relative srcpath does not exist"); return { toCwd: srcpath, toDst: path11.relative(dstdir, srcpath) }; } } } module2.exports = { symlinkPaths, symlinkPathsSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/symlink-type.js var require_symlink_type = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/symlink-type.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); function symlinkType(srcpath, type, callback) { callback = typeof type === "function" ? type : callback; type = typeof type === "function" ? false : type; if (type) return callback(null, type); fs15.lstat(srcpath, (err, stats) => { if (err) return callback(null, "file"); type = stats && stats.isDirectory() ? "dir" : "file"; callback(null, type); }); } function symlinkTypeSync(srcpath, type) { let stats; if (type) return type; try { stats = fs15.lstatSync(srcpath); } catch { return "file"; } return stats && stats.isDirectory() ? "dir" : "file"; } module2.exports = { symlinkType, symlinkTypeSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/symlink.js var require_symlink = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/symlink.js"(exports2, module2) { "use strict"; var u = require_universalify().fromCallback; var path11 = __require("path"); var fs15 = require_fs(); var _mkdirs = require_mkdirs(); var mkdirs = _mkdirs.mkdirs; var mkdirsSync = _mkdirs.mkdirsSync; var _symlinkPaths = require_symlink_paths(); var symlinkPaths = _symlinkPaths.symlinkPaths; var symlinkPathsSync = _symlinkPaths.symlinkPathsSync; var _symlinkType = require_symlink_type(); var symlinkType = _symlinkType.symlinkType; var symlinkTypeSync = _symlinkType.symlinkTypeSync; var pathExists = require_path_exists().pathExists; var { areIdentical } = require_stat(); function createSymlink(srcpath, dstpath, type, callback) { callback = typeof type === "function" ? type : callback; type = typeof type === "function" ? false : type; fs15.lstat(dstpath, (err, stats) => { if (!err && stats.isSymbolicLink()) { Promise.all([ fs15.stat(srcpath), fs15.stat(dstpath) ]).then(([srcStat, dstStat]) => { if (areIdentical(srcStat, dstStat)) return callback(null); _createSymlink(srcpath, dstpath, type, callback); }); } else _createSymlink(srcpath, dstpath, type, callback); }); } function _createSymlink(srcpath, dstpath, type, callback) { symlinkPaths(srcpath, dstpath, (err, relative8) => { if (err) return callback(err); srcpath = relative8.toDst; symlinkType(relative8.toCwd, type, (err2, type2) => { if (err2) return callback(err2); const dir = path11.dirname(dstpath); pathExists(dir, (err3, dirExists) => { if (err3) return callback(err3); if (dirExists) return fs15.symlink(srcpath, dstpath, type2, callback); mkdirs(dir, (err4) => { if (err4) return callback(err4); fs15.symlink(srcpath, dstpath, type2, callback); }); }); }); }); } function createSymlinkSync(srcpath, dstpath, type) { let stats; try { stats = fs15.lstatSync(dstpath); } catch { } if (stats && stats.isSymbolicLink()) { const srcStat = fs15.statSync(srcpath); const dstStat = fs15.statSync(dstpath); if (areIdentical(srcStat, dstStat)) return; } const relative8 = symlinkPathsSync(srcpath, dstpath); srcpath = relative8.toDst; type = symlinkTypeSync(relative8.toCwd, type); const dir = path11.dirname(dstpath); const exists = fs15.existsSync(dir); if (exists) return fs15.symlinkSync(srcpath, dstpath, type); mkdirsSync(dir); return fs15.symlinkSync(srcpath, dstpath, type); } module2.exports = { createSymlink: u(createSymlink), createSymlinkSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/index.js var require_ensure = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/ensure/index.js"(exports2, module2) { "use strict"; var file = require_file(); var link4 = require_link(); var symlink3 = require_symlink(); module2.exports = { // file createFile: file.createFile, createFileSync: file.createFileSync, ensureFile: file.createFile, ensureFileSync: file.createFileSync, // link createLink: link4.createLink, createLinkSync: link4.createLinkSync, ensureLink: link4.createLink, ensureLinkSync: link4.createLinkSync, // symlink createSymlink: symlink3.createSymlink, createSymlinkSync: symlink3.createSymlinkSync, ensureSymlink: symlink3.createSymlink, ensureSymlinkSync: symlink3.createSymlinkSync }; } }); // ../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/utils.js var require_utils2 = __commonJS2({ "../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/utils.js"(exports2, module2) { function stringify2(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) { const EOF = finalEOL ? EOL : ""; const str = JSON.stringify(obj, replacer, spaces); return str.replace(/\n/g, EOL) + EOF; } function stripBom(content) { if (Buffer.isBuffer(content)) content = content.toString("utf8"); return content.replace(/^\uFEFF/, ""); } module2.exports = { stringify: stringify2, stripBom }; } }); // ../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/index.js var require_jsonfile = __commonJS2({ "../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/index.js"(exports2, module2) { var _fs; try { _fs = require_graceful_fs(); } catch (_) { _fs = __require("fs"); } var universalify = require_universalify(); var { stringify: stringify2, stripBom } = require_utils2(); async function _readFile(file, options = {}) { if (typeof options === "string") { options = { encoding: options }; } const fs15 = options.fs || _fs; const shouldThrow = "throws" in options ? options.throws : true; let data = await universalify.fromCallback(fs15.readFile)(file, options); data = stripBom(data); let obj; try { obj = JSON.parse(data, options ? options.reviver : null); } catch (err) { if (shouldThrow) { err.message = `${file}: ${err.message}`; throw err; } else { return null; } } return obj; } var readFile8 = universalify.fromPromise(_readFile); function readFileSync4(file, options = {}) { if (typeof options === "string") { options = { encoding: options }; } const fs15 = options.fs || _fs; const shouldThrow = "throws" in options ? options.throws : true; try { let content = fs15.readFileSync(file, options); content = stripBom(content); return JSON.parse(content, options.reviver); } catch (err) { if (shouldThrow) { err.message = `${file}: ${err.message}`; throw err; } else { return null; } } } async function _writeFile(file, obj, options = {}) { const fs15 = options.fs || _fs; const str = stringify2(obj, options); await universalify.fromCallback(fs15.writeFile)(file, str, options); } var writeFile6 = universalify.fromPromise(_writeFile); function writeFileSync(file, obj, options = {}) { const fs15 = options.fs || _fs; const str = stringify2(obj, options); return fs15.writeFileSync(file, str, options); } var jsonfile = { readFile: readFile8, readFileSync: readFileSync4, writeFile: writeFile6, writeFileSync }; module2.exports = jsonfile; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/jsonfile.js var require_jsonfile2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/jsonfile.js"(exports2, module2) { "use strict"; var jsonFile = require_jsonfile(); module2.exports = { // jsonfile exports readJson: jsonFile.readFile, readJsonSync: jsonFile.readFileSync, writeJson: jsonFile.writeFile, writeJsonSync: jsonFile.writeFileSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/output/index.js var require_output = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/output/index.js"(exports2, module2) { "use strict"; var u = require_universalify().fromCallback; var fs15 = require_graceful_fs(); var path11 = __require("path"); var mkdir5 = require_mkdirs(); var pathExists = require_path_exists().pathExists; function outputFile2(file, data, encoding, callback) { if (typeof encoding === "function") { callback = encoding; encoding = "utf8"; } const dir = path11.dirname(file); pathExists(dir, (err, itDoes) => { if (err) return callback(err); if (itDoes) return fs15.writeFile(file, data, encoding, callback); mkdir5.mkdirs(dir, (err2) => { if (err2) return callback(err2); fs15.writeFile(file, data, encoding, callback); }); }); } function outputFileSync(file, ...args2) { const dir = path11.dirname(file); if (fs15.existsSync(dir)) { return fs15.writeFileSync(file, ...args2); } mkdir5.mkdirsSync(dir); fs15.writeFileSync(file, ...args2); } module2.exports = { outputFile: u(outputFile2), outputFileSync }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/output-json.js var require_output_json = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/output-json.js"(exports2, module2) { "use strict"; var { stringify: stringify2 } = require_utils2(); var { outputFile: outputFile2 } = require_output(); async function outputJson2(file, data, options = {}) { const str = stringify2(data, options); await outputFile2(file, str, options); } module2.exports = outputJson2; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/output-json-sync.js var require_output_json_sync = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/output-json-sync.js"(exports2, module2) { "use strict"; var { stringify: stringify2 } = require_utils2(); var { outputFileSync } = require_output(); function outputJsonSync(file, data, options) { const str = stringify2(data, options); outputFileSync(file, str, options); } module2.exports = outputJsonSync; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/index.js var require_json = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/index.js"(exports2, module2) { "use strict"; var u = require_universalify().fromPromise; var jsonFile = require_jsonfile2(); jsonFile.outputJson = u(require_output_json()); jsonFile.outputJsonSync = require_output_json_sync(); jsonFile.outputJSON = jsonFile.outputJson; jsonFile.outputJSONSync = jsonFile.outputJsonSync; jsonFile.writeJSON = jsonFile.writeJson; jsonFile.writeJSONSync = jsonFile.writeJsonSync; jsonFile.readJSON = jsonFile.readJson; jsonFile.readJSONSync = jsonFile.readJsonSync; module2.exports = jsonFile; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/move-sync/move-sync.js var require_move_sync = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/move-sync/move-sync.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var copySync = require_copy_sync2().copySync; var removeSync = require_remove().removeSync; var mkdirpSync = require_mkdirs().mkdirpSync; var stat2 = require_stat(); function moveSync(src, dest, opts) { opts = opts || {}; const overwrite = opts.overwrite || opts.clobber || false; const { srcStat, isChangingCase = false } = stat2.checkPathsSync(src, dest, "move", opts); stat2.checkParentPathsSync(src, srcStat, dest, "move"); if (!isParentRoot(dest)) mkdirpSync(path11.dirname(dest)); return doRename(src, dest, overwrite, isChangingCase); } function isParentRoot(dest) { const parent = path11.dirname(dest); const parsedPath = path11.parse(parent); return parsedPath.root === parent; } function doRename(src, dest, overwrite, isChangingCase) { if (isChangingCase) return rename(src, dest, overwrite); if (overwrite) { removeSync(dest); return rename(src, dest, overwrite); } if (fs15.existsSync(dest)) throw new Error("dest already exists."); return rename(src, dest, overwrite); } function rename(src, dest, overwrite) { try { fs15.renameSync(src, dest); } catch (err) { if (err.code !== "EXDEV") throw err; return moveAcrossDevice(src, dest, overwrite); } } function moveAcrossDevice(src, dest, overwrite) { const opts = { overwrite, errorOnExist: true }; copySync(src, dest, opts); return removeSync(src); } module2.exports = moveSync; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/move-sync/index.js var require_move_sync2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/move-sync/index.js"(exports2, module2) { "use strict"; module2.exports = { moveSync: require_move_sync() }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/move/move.js var require_move = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/move/move.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var copy3 = require_copy2().copy; var remove7 = require_remove().remove; var mkdirp4 = require_mkdirs().mkdirp; var pathExists = require_path_exists().pathExists; var stat2 = require_stat(); function move3(src, dest, opts, cb) { if (typeof opts === "function") { cb = opts; opts = {}; } const overwrite = opts.overwrite || opts.clobber || false; stat2.checkPaths(src, dest, "move", opts, (err, stats) => { if (err) return cb(err); const { srcStat, isChangingCase = false } = stats; stat2.checkParentPaths(src, srcStat, dest, "move", (err2) => { if (err2) return cb(err2); if (isParentRoot(dest)) return doRename(src, dest, overwrite, isChangingCase, cb); mkdirp4(path11.dirname(dest), (err3) => { if (err3) return cb(err3); return doRename(src, dest, overwrite, isChangingCase, cb); }); }); }); } function isParentRoot(dest) { const parent = path11.dirname(dest); const parsedPath = path11.parse(parent); return parsedPath.root === parent; } function doRename(src, dest, overwrite, isChangingCase, cb) { if (isChangingCase) return rename(src, dest, overwrite, cb); if (overwrite) { return remove7(dest, (err) => { if (err) return cb(err); return rename(src, dest, overwrite, cb); }); } pathExists(dest, (err, destExists) => { if (err) return cb(err); if (destExists) return cb(new Error("dest already exists.")); return rename(src, dest, overwrite, cb); }); } function rename(src, dest, overwrite, cb) { fs15.rename(src, dest, (err) => { if (!err) return cb(); if (err.code !== "EXDEV") return cb(err); return moveAcrossDevice(src, dest, overwrite, cb); }); } function moveAcrossDevice(src, dest, overwrite, cb) { const opts = { overwrite, errorOnExist: true }; copy3(src, dest, opts, (err) => { if (err) return cb(err); return remove7(src, cb); }); } module2.exports = move3; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/move/index.js var require_move2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/move/index.js"(exports2, module2) { "use strict"; var u = require_universalify().fromCallback; module2.exports = { move: u(require_move()) }; } }); // ../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/index.js var require_lib = __commonJS2({ "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/index.js"(exports2, module2) { "use strict"; module2.exports = { // Export promiseified graceful-fs: ...require_fs(), // Export extra methods: ...require_copy_sync2(), ...require_copy2(), ...require_empty(), ...require_ensure(), ...require_json(), ...require_mkdirs(), ...require_move_sync2(), ...require_move2(), ...require_output(), ...require_path_exists(), ...require_remove() }; } }); // ../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js var require_color_name = __commonJS2({ "../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js"(exports2, module2) { "use strict"; module2.exports = { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255, 235, 205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategray": [47, 79, 79], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "grey": [128, 128, 128], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "rebeccapurple": [102, 51, 153], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50] }; } }); // ../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js var require_conversions = __commonJS2({ "../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js"(exports2, module2) { var cssKeywords = require_color_name(); var reverseKeywords = {}; for (const key of Object.keys(cssKeywords)) { reverseKeywords[cssKeywords[key]] = key; } var convert = { rgb: { channels: 3, labels: "rgb" }, hsl: { channels: 3, labels: "hsl" }, hsv: { channels: 3, labels: "hsv" }, hwb: { channels: 3, labels: "hwb" }, cmyk: { channels: 4, labels: "cmyk" }, xyz: { channels: 3, labels: "xyz" }, lab: { channels: 3, labels: "lab" }, lch: { channels: 3, labels: "lch" }, hex: { channels: 1, labels: ["hex"] }, keyword: { channels: 1, labels: ["keyword"] }, ansi16: { channels: 1, labels: ["ansi16"] }, ansi256: { channels: 1, labels: ["ansi256"] }, hcg: { channels: 3, labels: ["h", "c", "g"] }, apple: { channels: 3, labels: ["r16", "g16", "b16"] }, gray: { channels: 1, labels: ["gray"] } }; module2.exports = convert; for (const model of Object.keys(convert)) { if (!("channels" in convert[model])) { throw new Error("missing channels property: " + model); } if (!("labels" in convert[model])) { throw new Error("missing channel labels property: " + model); } if (convert[model].labels.length !== convert[model].channels) { throw new Error("channel and label counts mismatch: " + model); } const { channels, labels } = convert[model]; delete convert[model].channels; delete convert[model].labels; Object.defineProperty(convert[model], "channels", { value: channels }); Object.defineProperty(convert[model], "labels", { value: labels }); } convert.rgb.hsl = function(rgb) { const r = rgb[0] / 255; const g = rgb[1] / 255; const b = rgb[2] / 255; const min = Math.min(r, g, b); const max = Math.max(r, g, b); const delta = max - min; let h; let s; if (max === min) { h = 0; } else if (r === max) { h = (g - b) / delta; } else if (g === max) { h = 2 + (b - r) / delta; } else if (b === max) { h = 4 + (r - g) / delta; } h = Math.min(h * 60, 360); if (h < 0) { h += 360; } const l = (min + max) / 2; if (max === min) { s = 0; } else if (l <= 0.5) { s = delta / (max + min); } else { s = delta / (2 - max - min); } return [h, s * 100, l * 100]; }; convert.rgb.hsv = function(rgb) { let rdif; let gdif; let bdif; let h; let s; const r = rgb[0] / 255; const g = rgb[1] / 255; const b = rgb[2] / 255; const v = Math.max(r, g, b); const diff = v - Math.min(r, g, b); const diffc = function(c) { return (v - c) / 6 / diff + 1 / 2; }; if (diff === 0) { h = 0; s = 0; } else { s = diff / v; rdif = diffc(r); gdif = diffc(g); bdif = diffc(b); if (r === v) { h = bdif - gdif; } else if (g === v) { h = 1 / 3 + rdif - bdif; } else if (b === v) { h = 2 / 3 + gdif - rdif; } if (h < 0) { h += 1; } else if (h > 1) { h -= 1; } } return [ h * 360, s * 100, v * 100 ]; }; convert.rgb.hwb = function(rgb) { const r = rgb[0]; const g = rgb[1]; let b = rgb[2]; const h = convert.rgb.hsl(rgb)[0]; const w = 1 / 255 * Math.min(r, Math.min(g, b)); b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); return [h, w * 100, b * 100]; }; convert.rgb.cmyk = function(rgb) { const r = rgb[0] / 255; const g = rgb[1] / 255; const b = rgb[2] / 255; const k = Math.min(1 - r, 1 - g, 1 - b); const c = (1 - r - k) / (1 - k) || 0; const m = (1 - g - k) / (1 - k) || 0; const y = (1 - b - k) / (1 - k) || 0; return [c * 100, m * 100, y * 100, k * 100]; }; function comparativeDistance(x, y) { return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2; } convert.rgb.keyword = function(rgb) { const reversed = reverseKeywords[rgb]; if (reversed) { return reversed; } let currentClosestDistance = Infinity; let currentClosestKeyword; for (const keyword of Object.keys(cssKeywords)) { const value = cssKeywords[keyword]; const distance2 = comparativeDistance(rgb, value); if (distance2 < currentClosestDistance) { currentClosestDistance = distance2; currentClosestKeyword = keyword; } } return currentClosestKeyword; }; convert.keyword.rgb = function(keyword) { return cssKeywords[keyword]; }; convert.rgb.xyz = function(rgb) { let r = rgb[0] / 255; let g = rgb[1] / 255; let b = rgb[2] / 255; r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92; g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92; b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92; const x = r * 0.4124 + g * 0.3576 + b * 0.1805; const y = r * 0.2126 + g * 0.7152 + b * 0.0722; const z = r * 0.0193 + g * 0.1192 + b * 0.9505; return [x * 100, y * 100, z * 100]; }; convert.rgb.lab = function(rgb) { const xyz = convert.rgb.xyz(rgb); let x = xyz[0]; let y = xyz[1]; let z = xyz[2]; x /= 95.047; y /= 100; z /= 108.883; x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116; y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116; z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116; const l = 116 * y - 16; const a = 500 * (x - y); const b = 200 * (y - z); return [l, a, b]; }; convert.hsl.rgb = function(hsl) { const h = hsl[0] / 360; const s = hsl[1] / 100; const l = hsl[2] / 100; let t2; let t3; let val; if (s === 0) { val = l * 255; return [val, val, val]; } if (l < 0.5) { t2 = l * (1 + s); } else { t2 = l + s - l * s; } const t1 = 2 * l - t2; const rgb = [0, 0, 0]; for (let i = 0; i < 3; i++) { t3 = h + 1 / 3 * -(i - 1); if (t3 < 0) { t3++; } if (t3 > 1) { t3--; } if (6 * t3 < 1) { val = t1 + (t2 - t1) * 6 * t3; } else if (2 * t3 < 1) { val = t2; } else if (3 * t3 < 2) { val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; } else { val = t1; } rgb[i] = val * 255; } return rgb; }; convert.hsl.hsv = function(hsl) { const h = hsl[0]; let s = hsl[1] / 100; let l = hsl[2] / 100; let smin = s; const lmin = Math.max(l, 0.01); l *= 2; s *= l <= 1 ? l : 2 - l; smin *= lmin <= 1 ? lmin : 2 - lmin; const v = (l + s) / 2; const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); return [h, sv * 100, v * 100]; }; convert.hsv.rgb = function(hsv) { const h = hsv[0] / 60; const s = hsv[1] / 100; let v = hsv[2] / 100; const hi = Math.floor(h) % 6; const f = h - Math.floor(h); const p = 255 * v * (1 - s); const q = 255 * v * (1 - s * f); const t = 255 * v * (1 - s * (1 - f)); v *= 255; switch (hi) { case 0: return [v, t, p]; case 1: return [q, v, p]; case 2: return [p, v, t]; case 3: return [p, q, v]; case 4: return [t, p, v]; case 5: return [v, p, q]; } }; convert.hsv.hsl = function(hsv) { const h = hsv[0]; const s = hsv[1] / 100; const v = hsv[2] / 100; const vmin = Math.max(v, 0.01); let sl; let l; l = (2 - s) * v; const lmin = (2 - s) * vmin; sl = s * vmin; sl /= lmin <= 1 ? lmin : 2 - lmin; sl = sl || 0; l /= 2; return [h, sl * 100, l * 100]; }; convert.hwb.rgb = function(hwb) { const h = hwb[0] / 360; let wh = hwb[1] / 100; let bl = hwb[2] / 100; const ratio = wh + bl; let f; if (ratio > 1) { wh /= ratio; bl /= ratio; } const i = Math.floor(6 * h); const v = 1 - bl; f = 6 * h - i; if ((i & 1) !== 0) { f = 1 - f; } const n = wh + f * (v - wh); let r; let g; let b; switch (i) { default: case 6: case 0: r = v; g = n; b = wh; break; case 1: r = n; g = v; b = wh; break; case 2: r = wh; g = v; b = n; break; case 3: r = wh; g = n; b = v; break; case 4: r = n; g = wh; b = v; break; case 5: r = v; g = wh; b = n; break; } return [r * 255, g * 255, b * 255]; }; convert.cmyk.rgb = function(cmyk) { const c = cmyk[0] / 100; const m = cmyk[1] / 100; const y = cmyk[2] / 100; const k = cmyk[3] / 100; const r = 1 - Math.min(1, c * (1 - k) + k); const g = 1 - Math.min(1, m * (1 - k) + k); const b = 1 - Math.min(1, y * (1 - k) + k); return [r * 255, g * 255, b * 255]; }; convert.xyz.rgb = function(xyz) { const x = xyz[0] / 100; const y = xyz[1] / 100; const z = xyz[2] / 100; let r; let g; let b; r = x * 3.2406 + y * -1.5372 + z * -0.4986; g = x * -0.9689 + y * 1.8758 + z * 0.0415; b = x * 0.0557 + y * -0.204 + z * 1.057; r = r > 31308e-7 ? 1.055 * r ** (1 / 2.4) - 0.055 : r * 12.92; g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92; b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92; r = Math.min(Math.max(0, r), 1); g = Math.min(Math.max(0, g), 1); b = Math.min(Math.max(0, b), 1); return [r * 255, g * 255, b * 255]; }; convert.xyz.lab = function(xyz) { let x = xyz[0]; let y = xyz[1]; let z = xyz[2]; x /= 95.047; y /= 100; z /= 108.883; x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116; y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116; z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116; const l = 116 * y - 16; const a = 500 * (x - y); const b = 200 * (y - z); return [l, a, b]; }; convert.lab.xyz = function(lab) { const l = lab[0]; const a = lab[1]; const b = lab[2]; let x; let y; let z; y = (l + 16) / 116; x = a / 500 + y; z = y - b / 200; const y2 = y ** 3; const x2 = x ** 3; const z2 = z ** 3; y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787; x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787; z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787; x *= 95.047; y *= 100; z *= 108.883; return [x, y, z]; }; convert.lab.lch = function(lab) { const l = lab[0]; const a = lab[1]; const b = lab[2]; let h; const hr = Math.atan2(b, a); h = hr * 360 / 2 / Math.PI; if (h < 0) { h += 360; } const c = Math.sqrt(a * a + b * b); return [l, c, h]; }; convert.lch.lab = function(lch) { const l = lch[0]; const c = lch[1]; const h = lch[2]; const hr = h / 360 * 2 * Math.PI; const a = c * Math.cos(hr); const b = c * Math.sin(hr); return [l, a, b]; }; convert.rgb.ansi16 = function(args2, saturation = null) { const [r, g, b] = args2; let value = saturation === null ? convert.rgb.hsv(args2)[2] : saturation; value = Math.round(value / 50); if (value === 0) { return 30; } let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); if (value === 2) { ansi += 60; } return ansi; }; convert.hsv.ansi16 = function(args2) { return convert.rgb.ansi16(convert.hsv.rgb(args2), args2[2]); }; convert.rgb.ansi256 = function(args2) { const r = args2[0]; const g = args2[1]; const b = args2[2]; if (r === g && g === b) { if (r < 8) { return 16; } if (r > 248) { return 231; } return Math.round((r - 8) / 247 * 24) + 232; } const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); return ansi; }; convert.ansi16.rgb = function(args2) { let color = args2 % 10; if (color === 0 || color === 7) { if (args2 > 50) { color += 3.5; } color = color / 10.5 * 255; return [color, color, color]; } const mult = (~~(args2 > 50) + 1) * 0.5; const r = (color & 1) * mult * 255; const g = (color >> 1 & 1) * mult * 255; const b = (color >> 2 & 1) * mult * 255; return [r, g, b]; }; convert.ansi256.rgb = function(args2) { if (args2 >= 232) { const c = (args2 - 232) * 10 + 8; return [c, c, c]; } args2 -= 16; let rem; const r = Math.floor(args2 / 36) / 5 * 255; const g = Math.floor((rem = args2 % 36) / 6) / 5 * 255; const b = rem % 6 / 5 * 255; return [r, g, b]; }; convert.rgb.hex = function(args2) { const integer = ((Math.round(args2[0]) & 255) << 16) + ((Math.round(args2[1]) & 255) << 8) + (Math.round(args2[2]) & 255); const string = integer.toString(16).toUpperCase(); return "000000".substring(string.length) + string; }; convert.hex.rgb = function(args2) { const match = args2.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); if (!match) { return [0, 0, 0]; } let colorString = match[0]; if (match[0].length === 3) { colorString = colorString.split("").map((char) => { return char + char; }).join(""); } const integer = parseInt(colorString, 16); const r = integer >> 16 & 255; const g = integer >> 8 & 255; const b = integer & 255; return [r, g, b]; }; convert.rgb.hcg = function(rgb) { const r = rgb[0] / 255; const g = rgb[1] / 255; const b = rgb[2] / 255; const max = Math.max(Math.max(r, g), b); const min = Math.min(Math.min(r, g), b); const chroma = max - min; let grayscale; let hue; if (chroma < 1) { grayscale = min / (1 - chroma); } else { grayscale = 0; } if (chroma <= 0) { hue = 0; } else if (max === r) { hue = (g - b) / chroma % 6; } else if (max === g) { hue = 2 + (b - r) / chroma; } else { hue = 4 + (r - g) / chroma; } hue /= 6; hue %= 1; return [hue * 360, chroma * 100, grayscale * 100]; }; convert.hsl.hcg = function(hsl) { const s = hsl[1] / 100; const l = hsl[2] / 100; const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l); let f = 0; if (c < 1) { f = (l - 0.5 * c) / (1 - c); } return [hsl[0], c * 100, f * 100]; }; convert.hsv.hcg = function(hsv) { const s = hsv[1] / 100; const v = hsv[2] / 100; const c = s * v; let f = 0; if (c < 1) { f = (v - c) / (1 - c); } return [hsv[0], c * 100, f * 100]; }; convert.hcg.rgb = function(hcg) { const h = hcg[0] / 360; const c = hcg[1] / 100; const g = hcg[2] / 100; if (c === 0) { return [g * 255, g * 255, g * 255]; } const pure = [0, 0, 0]; const hi = h % 1 * 6; const v = hi % 1; const w = 1 - v; let mg = 0; switch (Math.floor(hi)) { case 0: pure[0] = 1; pure[1] = v; pure[2] = 0; break; case 1: pure[0] = w; pure[1] = 1; pure[2] = 0; break; case 2: pure[0] = 0; pure[1] = 1; pure[2] = v; break; case 3: pure[0] = 0; pure[1] = w; pure[2] = 1; break; case 4: pure[0] = v; pure[1] = 0; pure[2] = 1; break; default: pure[0] = 1; pure[1] = 0; pure[2] = w; } mg = (1 - c) * g; return [ (c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255 ]; }; convert.hcg.hsv = function(hcg) { const c = hcg[1] / 100; const g = hcg[2] / 100; const v = c + g * (1 - c); let f = 0; if (v > 0) { f = c / v; } return [hcg[0], f * 100, v * 100]; }; convert.hcg.hsl = function(hcg) { const c = hcg[1] / 100; const g = hcg[2] / 100; const l = g * (1 - c) + 0.5 * c; let s = 0; if (l > 0 && l < 0.5) { s = c / (2 * l); } else if (l >= 0.5 && l < 1) { s = c / (2 * (1 - l)); } return [hcg[0], s * 100, l * 100]; }; convert.hcg.hwb = function(hcg) { const c = hcg[1] / 100; const g = hcg[2] / 100; const v = c + g * (1 - c); return [hcg[0], (v - c) * 100, (1 - v) * 100]; }; convert.hwb.hcg = function(hwb) { const w = hwb[1] / 100; const b = hwb[2] / 100; const v = 1 - b; const c = v - w; let g = 0; if (c < 1) { g = (v - c) / (1 - c); } return [hwb[0], c * 100, g * 100]; }; convert.apple.rgb = function(apple) { return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; }; convert.rgb.apple = function(rgb) { return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; }; convert.gray.rgb = function(args2) { return [args2[0] / 100 * 255, args2[0] / 100 * 255, args2[0] / 100 * 255]; }; convert.gray.hsl = function(args2) { return [0, 0, args2[0]]; }; convert.gray.hsv = convert.gray.hsl; convert.gray.hwb = function(gray5) { return [0, 100, gray5[0]]; }; convert.gray.cmyk = function(gray5) { return [0, 0, 0, gray5[0]]; }; convert.gray.lab = function(gray5) { return [gray5[0], 0, 0]; }; convert.gray.hex = function(gray5) { const val = Math.round(gray5[0] / 100 * 255) & 255; const integer = (val << 16) + (val << 8) + val; const string = integer.toString(16).toUpperCase(); return "000000".substring(string.length) + string; }; convert.rgb.gray = function(rgb) { const val = (rgb[0] + rgb[1] + rgb[2]) / 3; return [val / 255 * 100]; }; } }); // ../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js var require_route = __commonJS2({ "../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js"(exports2, module2) { var conversions = require_conversions(); function buildGraph() { const graph = {}; const models = Object.keys(conversions); for (let len = models.length, i = 0; i < len; i++) { graph[models[i]] = { // http://jsperf.com/1-vs-infinity // micro-opt, but this is simple. distance: -1, parent: null }; } return graph; } function deriveBFS(fromModel) { const graph = buildGraph(); const queue = [fromModel]; graph[fromModel].distance = 0; while (queue.length) { const current = queue.pop(); const adjacents = Object.keys(conversions[current]); for (let len = adjacents.length, i = 0; i < len; i++) { const adjacent = adjacents[i]; const node = graph[adjacent]; if (node.distance === -1) { node.distance = graph[current].distance + 1; node.parent = current; queue.unshift(adjacent); } } } return graph; } function link4(from, to) { return function(args2) { return to(from(args2)); }; } function wrapConversion(toModel, graph) { const path11 = [graph[toModel].parent, toModel]; let fn2 = conversions[graph[toModel].parent][toModel]; let cur = graph[toModel].parent; while (graph[cur].parent) { path11.unshift(graph[cur].parent); fn2 = link4(conversions[graph[cur].parent][cur], fn2); cur = graph[cur].parent; } fn2.conversion = path11; return fn2; } module2.exports = function(fromModel) { const graph = deriveBFS(fromModel); const conversion = {}; const models = Object.keys(graph); for (let len = models.length, i = 0; i < len; i++) { const toModel = models[i]; const node = graph[toModel]; if (node.parent === null) { continue; } conversion[toModel] = wrapConversion(toModel, graph); } return conversion; }; } }); // ../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js var require_color_convert = __commonJS2({ "../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js"(exports2, module2) { var conversions = require_conversions(); var route = require_route(); var convert = {}; var models = Object.keys(conversions); function wrapRaw(fn2) { const wrappedFn = function(...args2) { const arg0 = args2[0]; if (arg0 === void 0 || arg0 === null) { return arg0; } if (arg0.length > 1) { args2 = arg0; } return fn2(args2); }; if ("conversion" in fn2) { wrappedFn.conversion = fn2.conversion; } return wrappedFn; } function wrapRounded(fn2) { const wrappedFn = function(...args2) { const arg0 = args2[0]; if (arg0 === void 0 || arg0 === null) { return arg0; } if (arg0.length > 1) { args2 = arg0; } const result = fn2(args2); if (typeof result === "object") { for (let len = result.length, i = 0; i < len; i++) { result[i] = Math.round(result[i]); } } return result; }; if ("conversion" in fn2) { wrappedFn.conversion = fn2.conversion; } return wrappedFn; } models.forEach((fromModel) => { convert[fromModel] = {}; Object.defineProperty(convert[fromModel], "channels", { value: conversions[fromModel].channels }); Object.defineProperty(convert[fromModel], "labels", { value: conversions[fromModel].labels }); const routes2 = route(fromModel); const routeModels = Object.keys(routes2); routeModels.forEach((toModel) => { const fn2 = routes2[toModel]; convert[fromModel][toModel] = wrapRounded(fn2); convert[fromModel][toModel].raw = wrapRaw(fn2); }); }); module2.exports = convert; } }); // ../../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js var require_ansi_styles = __commonJS2({ "../../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js"(exports2, module2) { "use strict"; var wrapAnsi16 = (fn2, offset) => (...args2) => { const code2 = fn2(...args2); return `\x1B[${code2 + offset}m`; }; var wrapAnsi256 = (fn2, offset) => (...args2) => { const code2 = fn2(...args2); return `\x1B[${38 + offset};5;${code2}m`; }; var wrapAnsi16m = (fn2, offset) => (...args2) => { const rgb = fn2(...args2); return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; }; var ansi2ansi = (n) => n; var rgb2rgb = (r, g, b) => [r, g, b]; var setLazyProperty = (object, property, get) => { Object.defineProperty(object, property, { get: () => { const value = get(); Object.defineProperty(object, property, { value, enumerable: true, configurable: true }); return value; }, enumerable: true, configurable: true }); }; var colorConvert; var makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { if (colorConvert === void 0) { colorConvert = require_color_convert(); } const offset = isBackground ? 10 : 0; const styles = {}; for (const [sourceSpace, suite] of Object.entries(colorConvert)) { const name = sourceSpace === "ansi16" ? "ansi" : sourceSpace; if (sourceSpace === targetSpace) { styles[name] = wrap(identity, offset); } else if (typeof suite === "object") { styles[name] = wrap(suite[targetSpace], offset); } } return styles; }; function assembleStyles() { const codes = /* @__PURE__ */ new Map(); const styles = { modifier: { reset: [0, 0], // 21 isn't widely supported and 22 does the same thing bold: [1, 22], dim: [2, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], hidden: [8, 28], strikethrough: [9, 29] }, color: { black: [30, 39], red: [31, 39], green: [32, 39], yellow: [33, 39], blue: [34, 39], magenta: [35, 39], cyan: [36, 39], white: [37, 39], // Bright color blackBright: [90, 39], redBright: [91, 39], greenBright: [92, 39], yellowBright: [93, 39], blueBright: [94, 39], magentaBright: [95, 39], cyanBright: [96, 39], whiteBright: [97, 39] }, bgColor: { bgBlack: [40, 49], bgRed: [41, 49], bgGreen: [42, 49], bgYellow: [43, 49], bgBlue: [44, 49], bgMagenta: [45, 49], bgCyan: [46, 49], bgWhite: [47, 49], // Bright color bgBlackBright: [100, 49], bgRedBright: [101, 49], bgGreenBright: [102, 49], bgYellowBright: [103, 49], bgBlueBright: [104, 49], bgMagentaBright: [105, 49], bgCyanBright: [106, 49], bgWhiteBright: [107, 49] } }; styles.color.gray = styles.color.blackBright; styles.bgColor.bgGray = styles.bgColor.bgBlackBright; styles.color.grey = styles.color.blackBright; styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; for (const [groupName, group] of Object.entries(styles)) { for (const [styleName, style] of Object.entries(group)) { styles[styleName] = { open: `\x1B[${style[0]}m`, close: `\x1B[${style[1]}m` }; group[styleName] = styles[styleName]; codes.set(style[0], style[1]); } Object.defineProperty(styles, groupName, { value: group, enumerable: false }); } Object.defineProperty(styles, "codes", { value: codes, enumerable: false }); styles.color.close = "\x1B[39m"; styles.bgColor.close = "\x1B[49m"; setLazyProperty(styles.color, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, false)); setLazyProperty(styles.color, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, false)); setLazyProperty(styles.color, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, false)); setLazyProperty(styles.bgColor, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, true)); setLazyProperty(styles.bgColor, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, true)); setLazyProperty(styles.bgColor, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, true)); return styles; } Object.defineProperty(module2, "exports", { enumerable: true, get: assembleStyles }); } }); // ../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js var require_has_flag = __commonJS2({ "../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js"(exports2, module2) { "use strict"; module2.exports = (flag, argv = process.argv) => { const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; const position = argv.indexOf(prefix + flag); const terminatorPosition = argv.indexOf("--"); return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); }; } }); // ../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js var require_supports_color = __commonJS2({ "../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js"(exports2, module2) { "use strict"; var os4 = __require("os"); var tty = __require("tty"); var hasFlag = require_has_flag(); var { env } = process; var forceColor; if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) { forceColor = 0; } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { forceColor = 1; } if ("FORCE_COLOR" in env) { if (env.FORCE_COLOR === "true") { forceColor = 1; } else if (env.FORCE_COLOR === "false") { forceColor = 0; } else { forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); } } function translateLevel(level) { if (level === 0) { return false; } return { level, hasBasic: true, has256: level >= 2, has16m: level >= 3 }; } function supportsColor(haveStream, streamIsTTY) { if (forceColor === 0) { return 0; } if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { return 3; } if (hasFlag("color=256")) { return 2; } if (haveStream && !streamIsTTY && forceColor === void 0) { return 0; } const min = forceColor || 0; if (env.TERM === "dumb") { return min; } if (process.platform === "win32") { const osRelease = os4.release().split("."); if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { return Number(osRelease[2]) >= 14931 ? 3 : 2; } return 1; } if ("CI" in env) { if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { return 1; } return min; } if ("TEAMCITY_VERSION" in env) { return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; } if (env.COLORTERM === "truecolor") { return 3; } if ("TERM_PROGRAM" in env) { const version2 = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); switch (env.TERM_PROGRAM) { case "iTerm.app": return version2 >= 3 ? 3 : 2; case "Apple_Terminal": return 2; } } if (/-256(color)?$/i.test(env.TERM)) { return 2; } if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { return 1; } if ("COLORTERM" in env) { return 1; } return min; } function getSupportLevel(stream) { const level = supportsColor(stream, stream && stream.isTTY); return translateLevel(level); } module2.exports = { supportsColor: getSupportLevel, stdout: translateLevel(supportsColor(true, tty.isatty(1))), stderr: translateLevel(supportsColor(true, tty.isatty(2))) }; } }); // ../../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/util.js var require_util = __commonJS2({ "../../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/util.js"(exports2, module2) { "use strict"; var stringReplaceAll = (string, substring, replacer) => { let index = string.indexOf(substring); if (index === -1) { return string; } const substringLength = substring.length; let endIndex = 0; let returnValue = ""; do { returnValue += string.substr(endIndex, index - endIndex) + substring + replacer; endIndex = index + substringLength; index = string.indexOf(substring, endIndex); } while (index !== -1); returnValue += string.substr(endIndex); return returnValue; }; var stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => { let endIndex = 0; let returnValue = ""; do { const gotCR = string[index - 1] === "\r"; returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? "\r\n" : "\n") + postfix; endIndex = index + 1; index = string.indexOf("\n", endIndex); } while (index !== -1); returnValue += string.substr(endIndex); return returnValue; }; module2.exports = { stringReplaceAll, stringEncaseCRLFWithFirstIndex }; } }); // ../../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/templates.js var require_templates = __commonJS2({ "../../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/templates.js"(exports2, module2) { "use strict"; var TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; var ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi; var ESCAPES = /* @__PURE__ */ new Map([ ["n", "\n"], ["r", "\r"], ["t", " "], ["b", "\b"], ["f", "\f"], ["v", "\v"], ["0", "\0"], ["\\", "\\"], ["e", "\x1B"], ["a", "\x07"] ]); function unescape2(c) { const u = c[0] === "u"; const bracket = c[1] === "{"; if (u && !bracket && c.length === 5 || c[0] === "x" && c.length === 3) { return String.fromCharCode(parseInt(c.slice(1), 16)); } if (u && bracket) { return String.fromCodePoint(parseInt(c.slice(2, -1), 16)); } return ESCAPES.get(c) || c; } function parseArguments2(name, arguments_) { const results = []; const chunks = arguments_.trim().split(/\s*,\s*/g); let matches; for (const chunk of chunks) { const number = Number(chunk); if (!Number.isNaN(number)) { results.push(number); } else if (matches = chunk.match(STRING_REGEX)) { results.push(matches[2].replace(ESCAPE_REGEX, (m, escape2, character) => escape2 ? unescape2(escape2) : character)); } else { throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); } } return results; } function parseStyle(style) { STYLE_REGEX.lastIndex = 0; const results = []; let matches; while ((matches = STYLE_REGEX.exec(style)) !== null) { const name = matches[1]; if (matches[2]) { const args2 = parseArguments2(name, matches[2]); results.push([name].concat(args2)); } else { results.push([name]); } } return results; } function buildStyle(chalk142, styles) { const enabled = {}; for (const layer of styles) { for (const style of layer.styles) { enabled[style[0]] = layer.inverse ? null : style.slice(1); } } let current = chalk142; for (const [styleName, styles2] of Object.entries(enabled)) { if (!Array.isArray(styles2)) { continue; } if (!(styleName in current)) { throw new Error(`Unknown Chalk style: ${styleName}`); } current = styles2.length > 0 ? current[styleName](...styles2) : current[styleName]; } return current; } module2.exports = (chalk142, temporary) => { const styles = []; const chunks = []; let chunk = []; temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close2, character) => { if (escapeCharacter) { chunk.push(unescape2(escapeCharacter)); } else if (style) { const string = chunk.join(""); chunk = []; chunks.push(styles.length === 0 ? string : buildStyle(chalk142, styles)(string)); styles.push({ inverse, styles: parseStyle(style) }); } else if (close2) { if (styles.length === 0) { throw new Error("Found extraneous } in Chalk template literal"); } chunks.push(buildStyle(chalk142, styles)(chunk.join(""))); chunk = []; styles.pop(); } else { chunk.push(character); } }); chunks.push(chunk.join("")); if (styles.length > 0) { const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`; throw new Error(errMessage); } return chunks.join(""); }; } }); // ../../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/index.js var require_source = __commonJS2({ "../../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/index.js"(exports2, module2) { "use strict"; var ansiStyles = require_ansi_styles(); var { stdout: stdoutColor, stderr: stderrColor } = require_supports_color(); var { stringReplaceAll, stringEncaseCRLFWithFirstIndex } = require_util(); var { isArray } = Array; var levelMapping = [ "ansi", "ansi", "ansi256", "ansi16m" ]; var styles = /* @__PURE__ */ Object.create(null); var applyOptions = (object, options = {}) => { if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) { throw new Error("The `level` option should be an integer from 0 to 3"); } const colorLevel = stdoutColor ? stdoutColor.level : 0; object.level = options.level === void 0 ? colorLevel : options.level; }; var ChalkClass = class { constructor(options) { return chalkFactory(options); } }; var chalkFactory = (options) => { const chalk143 = {}; applyOptions(chalk143, options); chalk143.template = (...arguments_) => chalkTag(chalk143.template, ...arguments_); Object.setPrototypeOf(chalk143, Chalk.prototype); Object.setPrototypeOf(chalk143.template, chalk143); chalk143.template.constructor = () => { throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead."); }; chalk143.template.Instance = ChalkClass; return chalk143.template; }; function Chalk(options) { return chalkFactory(options); } for (const [styleName, style] of Object.entries(ansiStyles)) { styles[styleName] = { get() { const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty); Object.defineProperty(this, styleName, { value: builder }); return builder; } }; } styles.visible = { get() { const builder = createBuilder(this, this._styler, true); Object.defineProperty(this, "visible", { value: builder }); return builder; } }; var usedModels = ["rgb", "hex", "keyword", "hsl", "hsv", "hwb", "ansi", "ansi256"]; for (const model of usedModels) { styles[model] = { get() { const { level } = this; return function(...arguments_) { const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler); return createBuilder(this, styler, this._isEmpty); }; } }; } for (const model of usedModels) { const bgModel = "bg" + model[0].toUpperCase() + model.slice(1); styles[bgModel] = { get() { const { level } = this; return function(...arguments_) { const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler); return createBuilder(this, styler, this._isEmpty); }; } }; } var proto = Object.defineProperties(() => { }, { ...styles, level: { enumerable: true, get() { return this._generator.level; }, set(level) { this._generator.level = level; } } }); var createStyler = (open10, close2, parent) => { let openAll; let closeAll; if (parent === void 0) { openAll = open10; closeAll = close2; } else { openAll = parent.openAll + open10; closeAll = close2 + parent.closeAll; } return { open: open10, close: close2, openAll, closeAll, parent }; }; var createBuilder = (self2, _styler, _isEmpty) => { const builder = (...arguments_) => { if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) { return applyStyle(builder, chalkTag(builder, ...arguments_)); } return applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" ")); }; Object.setPrototypeOf(builder, proto); builder._generator = self2; builder._styler = _styler; builder._isEmpty = _isEmpty; return builder; }; var applyStyle = (self2, string) => { if (self2.level <= 0 || !string) { return self2._isEmpty ? "" : string; } let styler = self2._styler; if (styler === void 0) { return string; } const { openAll, closeAll } = styler; if (string.indexOf("\x1B") !== -1) { while (styler !== void 0) { string = stringReplaceAll(string, styler.close, styler.open); styler = styler.parent; } } const lfIndex = string.indexOf("\n"); if (lfIndex !== -1) { string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex); } return openAll + string + closeAll; }; var template; var chalkTag = (chalk143, ...strings) => { const [firstString] = strings; if (!isArray(firstString) || !isArray(firstString.raw)) { return strings.join(" "); } const arguments_ = strings.slice(1); const parts = [firstString.raw[0]]; for (let i = 1; i < firstString.length; i++) { parts.push( String(arguments_[i - 1]).replace(/[{}\\]/g, "\\$&"), String(firstString.raw[i]) ); } if (template === void 0) { template = require_templates(); } return template(chalk143, parts.join("")); }; Object.defineProperties(Chalk.prototype, styles); var chalk142 = Chalk(); chalk142.supportsColor = stdoutColor; chalk142.stderr = Chalk({ level: stderrColor ? stderrColor.level : 0 }); chalk142.stderr.supportsColor = stderrColor; module2.exports = chalk142; } }); // ../../node_modules/.pnpm/epipebomb@1.0.0/node_modules/epipebomb/epipebomb.js var require_epipebomb = __commonJS2({ "../../node_modules/.pnpm/epipebomb@1.0.0/node_modules/epipebomb/epipebomb.js"(exports2, module2) { module2.exports = epipeBomb; function epipeBomb(stream, callback) { if (stream == null) stream = process.stdout; if (callback == null) callback = process.exit; function epipeFilter(err) { if (err.code === "EPIPE") return callback(); if (stream.listeners("error").length <= 1) { stream.removeAllListeners(); stream.emit("error", err); stream.on("error", epipeFilter); } } stream.on("error", epipeFilter); } } }); // ../../node_modules/.pnpm/semver@5.7.2/node_modules/semver/semver.js var require_semver = __commonJS2({ "../../node_modules/.pnpm/semver@5.7.2/node_modules/semver/semver.js"(exports2, module2) { exports2 = module2.exports = SemVer; var debug2; if (typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG)) { debug2 = function() { var args2 = Array.prototype.slice.call(arguments, 0); args2.unshift("SEMVER"); console.log.apply(console, args2); }; } else { debug2 = function() { }; } exports2.SEMVER_SPEC_VERSION = "2.0.0"; var MAX_LENGTH = 256; var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ 9007199254740991; var MAX_SAFE_COMPONENT_LENGTH = 16; var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; var re = exports2.re = []; var safeRe = exports2.safeRe = []; var src = exports2.src = []; var R = 0; var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; var safeRegexReplacements = [ ["\\s", 1], ["\\d", MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] ]; function makeSafeRe(value) { for (var i2 = 0; i2 < safeRegexReplacements.length; i2++) { var token = safeRegexReplacements[i2][0]; var max = safeRegexReplacements[i2][1]; value = value.split(token + "*").join(token + "{0," + max + "}").split(token + "+").join(token + "{1," + max + "}"); } return value; } var NUMERICIDENTIFIER = R++; src[NUMERICIDENTIFIER] = "0|[1-9]\\d*"; var NUMERICIDENTIFIERLOOSE = R++; src[NUMERICIDENTIFIERLOOSE] = "\\d+"; var NONNUMERICIDENTIFIER = R++; src[NONNUMERICIDENTIFIER] = "\\d*[a-zA-Z-]" + LETTERDASHNUMBER + "*"; var MAINVERSION = R++; src[MAINVERSION] = "(" + src[NUMERICIDENTIFIER] + ")\\.(" + src[NUMERICIDENTIFIER] + ")\\.(" + src[NUMERICIDENTIFIER] + ")"; var MAINVERSIONLOOSE = R++; src[MAINVERSIONLOOSE] = "(" + src[NUMERICIDENTIFIERLOOSE] + ")\\.(" + src[NUMERICIDENTIFIERLOOSE] + ")\\.(" + src[NUMERICIDENTIFIERLOOSE] + ")"; var PRERELEASEIDENTIFIER = R++; src[PRERELEASEIDENTIFIER] = "(?:" + src[NUMERICIDENTIFIER] + "|" + src[NONNUMERICIDENTIFIER] + ")"; var PRERELEASEIDENTIFIERLOOSE = R++; src[PRERELEASEIDENTIFIERLOOSE] = "(?:" + src[NUMERICIDENTIFIERLOOSE] + "|" + src[NONNUMERICIDENTIFIER] + ")"; var PRERELEASE = R++; src[PRERELEASE] = "(?:-(" + src[PRERELEASEIDENTIFIER] + "(?:\\." + src[PRERELEASEIDENTIFIER] + ")*))"; var PRERELEASELOOSE = R++; src[PRERELEASELOOSE] = "(?:-?(" + src[PRERELEASEIDENTIFIERLOOSE] + "(?:\\." + src[PRERELEASEIDENTIFIERLOOSE] + ")*))"; var BUILDIDENTIFIER = R++; src[BUILDIDENTIFIER] = LETTERDASHNUMBER + "+"; var BUILD = R++; src[BUILD] = "(?:\\+(" + src[BUILDIDENTIFIER] + "(?:\\." + src[BUILDIDENTIFIER] + ")*))"; var FULL = R++; var FULLPLAIN = "v?" + src[MAINVERSION] + src[PRERELEASE] + "?" + src[BUILD] + "?"; src[FULL] = "^" + FULLPLAIN + "$"; var LOOSEPLAIN = "[v=\\s]*" + src[MAINVERSIONLOOSE] + src[PRERELEASELOOSE] + "?" + src[BUILD] + "?"; var LOOSE = R++; src[LOOSE] = "^" + LOOSEPLAIN + "$"; var GTLT = R++; src[GTLT] = "((?:<|>)?=?)"; var XRANGEIDENTIFIERLOOSE = R++; src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + "|x|X|\\*"; var XRANGEIDENTIFIER = R++; src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + "|x|X|\\*"; var XRANGEPLAIN = R++; src[XRANGEPLAIN] = "[v=\\s]*(" + src[XRANGEIDENTIFIER] + ")(?:\\.(" + src[XRANGEIDENTIFIER] + ")(?:\\.(" + src[XRANGEIDENTIFIER] + ")(?:" + src[PRERELEASE] + ")?" + src[BUILD] + "?)?)?"; var XRANGEPLAINLOOSE = R++; src[XRANGEPLAINLOOSE] = "[v=\\s]*(" + src[XRANGEIDENTIFIERLOOSE] + ")(?:\\.(" + src[XRANGEIDENTIFIERLOOSE] + ")(?:\\.(" + src[XRANGEIDENTIFIERLOOSE] + ")(?:" + src[PRERELEASELOOSE] + ")?" + src[BUILD] + "?)?)?"; var XRANGE = R++; src[XRANGE] = "^" + src[GTLT] + "\\s*" + src[XRANGEPLAIN] + "$"; var XRANGELOOSE = R++; src[XRANGELOOSE] = "^" + src[GTLT] + "\\s*" + src[XRANGEPLAINLOOSE] + "$"; var COERCE = R++; src[COERCE] = "(?:^|[^\\d])(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "})(?:\\.(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "}))?(?:\\.(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "}))?(?:$|[^\\d])"; var LONETILDE = R++; src[LONETILDE] = "(?:~>?)"; var TILDETRIM = R++; src[TILDETRIM] = "(\\s*)" + src[LONETILDE] + "\\s+"; re[TILDETRIM] = new RegExp(src[TILDETRIM], "g"); safeRe[TILDETRIM] = new RegExp(makeSafeRe(src[TILDETRIM]), "g"); var tildeTrimReplace = "$1~"; var TILDE = R++; src[TILDE] = "^" + src[LONETILDE] + src[XRANGEPLAIN] + "$"; var TILDELOOSE = R++; src[TILDELOOSE] = "^" + src[LONETILDE] + src[XRANGEPLAINLOOSE] + "$"; var LONECARET = R++; src[LONECARET] = "(?:\\^)"; var CARETTRIM = R++; src[CARETTRIM] = "(\\s*)" + src[LONECARET] + "\\s+"; re[CARETTRIM] = new RegExp(src[CARETTRIM], "g"); safeRe[CARETTRIM] = new RegExp(makeSafeRe(src[CARETTRIM]), "g"); var caretTrimReplace = "$1^"; var CARET = R++; src[CARET] = "^" + src[LONECARET] + src[XRANGEPLAIN] + "$"; var CARETLOOSE = R++; src[CARETLOOSE] = "^" + src[LONECARET] + src[XRANGEPLAINLOOSE] + "$"; var COMPARATORLOOSE = R++; src[COMPARATORLOOSE] = "^" + src[GTLT] + "\\s*(" + LOOSEPLAIN + ")$|^$"; var COMPARATOR = R++; src[COMPARATOR] = "^" + src[GTLT] + "\\s*(" + FULLPLAIN + ")$|^$"; var COMPARATORTRIM = R++; src[COMPARATORTRIM] = "(\\s*)" + src[GTLT] + "\\s*(" + LOOSEPLAIN + "|" + src[XRANGEPLAIN] + ")"; re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], "g"); safeRe[COMPARATORTRIM] = new RegExp(makeSafeRe(src[COMPARATORTRIM]), "g"); var comparatorTrimReplace = "$1$2$3"; var HYPHENRANGE = R++; src[HYPHENRANGE] = "^\\s*(" + src[XRANGEPLAIN] + ")\\s+-\\s+(" + src[XRANGEPLAIN] + ")\\s*$"; var HYPHENRANGELOOSE = R++; src[HYPHENRANGELOOSE] = "^\\s*(" + src[XRANGEPLAINLOOSE] + ")\\s+-\\s+(" + src[XRANGEPLAINLOOSE] + ")\\s*$"; var STAR = R++; src[STAR] = "(<|>)?=?\\s*\\*"; for (i = 0; i < R; i++) { debug2(i, src[i]); if (!re[i]) { re[i] = new RegExp(src[i]); safeRe[i] = new RegExp(makeSafeRe(src[i])); } } var i; exports2.parse = parse11; function parse11(version2, options) { if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } if (version2 instanceof SemVer) { return version2; } if (typeof version2 !== "string") { return null; } if (version2.length > MAX_LENGTH) { return null; } var r = options.loose ? safeRe[LOOSE] : safeRe[FULL]; if (!r.test(version2)) { return null; } try { return new SemVer(version2, options); } catch (er) { return null; } } exports2.valid = valid; function valid(version2, options) { var v = parse11(version2, options); return v ? v.version : null; } exports2.clean = clean; function clean(version2, options) { var s = parse11(version2.trim().replace(/^[=v]+/, ""), options); return s ? s.version : null; } exports2.SemVer = SemVer; function SemVer(version2, options) { if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } if (version2 instanceof SemVer) { if (version2.loose === options.loose) { return version2; } else { version2 = version2.version; } } else if (typeof version2 !== "string") { throw new TypeError("Invalid Version: " + version2); } if (version2.length > MAX_LENGTH) { throw new TypeError("version is longer than " + MAX_LENGTH + " characters"); } if (!(this instanceof SemVer)) { return new SemVer(version2, options); } debug2("SemVer", version2, options); this.options = options; this.loose = !!options.loose; var m = version2.trim().match(options.loose ? safeRe[LOOSE] : safeRe[FULL]); if (!m) { throw new TypeError("Invalid Version: " + version2); } this.raw = version2; this.major = +m[1]; this.minor = +m[2]; this.patch = +m[3]; if (this.major > MAX_SAFE_INTEGER || this.major < 0) { throw new TypeError("Invalid major version"); } if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { throw new TypeError("Invalid minor version"); } if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { throw new TypeError("Invalid patch version"); } if (!m[4]) { this.prerelease = []; } else { this.prerelease = m[4].split(".").map(function(id) { if (/^[0-9]+$/.test(id)) { var num = +id; if (num >= 0 && num < MAX_SAFE_INTEGER) { return num; } } return id; }); } this.build = m[5] ? m[5].split(".") : []; this.format(); } SemVer.prototype.format = function() { this.version = this.major + "." + this.minor + "." + this.patch; if (this.prerelease.length) { this.version += "-" + this.prerelease.join("."); } return this.version; }; SemVer.prototype.toString = function() { return this.version; }; SemVer.prototype.compare = function(other) { debug2("SemVer.compare", this.version, this.options, other); if (!(other instanceof SemVer)) { other = new SemVer(other, this.options); } return this.compareMain(other) || this.comparePre(other); }; SemVer.prototype.compareMain = function(other) { if (!(other instanceof SemVer)) { other = new SemVer(other, this.options); } return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch); }; SemVer.prototype.comparePre = function(other) { if (!(other instanceof SemVer)) { other = new SemVer(other, this.options); } if (this.prerelease.length && !other.prerelease.length) { return -1; } else if (!this.prerelease.length && other.prerelease.length) { return 1; } else if (!this.prerelease.length && !other.prerelease.length) { return 0; } var i2 = 0; do { var a = this.prerelease[i2]; var b = other.prerelease[i2]; debug2("prerelease compare", i2, a, b); if (a === void 0 && b === void 0) { return 0; } else if (b === void 0) { return 1; } else if (a === void 0) { return -1; } else if (a === b) { continue; } else { return compareIdentifiers(a, b); } } while (++i2); }; SemVer.prototype.inc = function(release, identifier) { switch (release) { case "premajor": this.prerelease.length = 0; this.patch = 0; this.minor = 0; this.major++; this.inc("pre", identifier); break; case "preminor": this.prerelease.length = 0; this.patch = 0; this.minor++; this.inc("pre", identifier); break; case "prepatch": this.prerelease.length = 0; this.inc("patch", identifier); this.inc("pre", identifier); break; case "prerelease": if (this.prerelease.length === 0) { this.inc("patch", identifier); } this.inc("pre", identifier); break; case "major": if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { this.major++; } this.minor = 0; this.patch = 0; this.prerelease = []; break; case "minor": if (this.patch !== 0 || this.prerelease.length === 0) { this.minor++; } this.patch = 0; this.prerelease = []; break; case "patch": if (this.prerelease.length === 0) { this.patch++; } this.prerelease = []; break; case "pre": if (this.prerelease.length === 0) { this.prerelease = [0]; } else { var i2 = this.prerelease.length; while (--i2 >= 0) { if (typeof this.prerelease[i2] === "number") { this.prerelease[i2]++; i2 = -2; } } if (i2 === -1) { this.prerelease.push(0); } } if (identifier) { if (this.prerelease[0] === identifier) { if (isNaN(this.prerelease[1])) { this.prerelease = [identifier, 0]; } } else { this.prerelease = [identifier, 0]; } } break; default: throw new Error("invalid increment argument: " + release); } this.format(); this.raw = this.version; return this; }; exports2.inc = inc; function inc(version2, release, loose, identifier) { if (typeof loose === "string") { identifier = loose; loose = void 0; } try { return new SemVer(version2, loose).inc(release, identifier).version; } catch (er) { return null; } } exports2.diff = diff; function diff(version1, version2) { if (eq(version1, version2)) { return null; } else { var v1 = parse11(version1); var v2 = parse11(version2); var prefix = ""; if (v1.prerelease.length || v2.prerelease.length) { prefix = "pre"; var defaultResult = "prerelease"; } for (var key in v1) { if (key === "major" || key === "minor" || key === "patch") { if (v1[key] !== v2[key]) { return prefix + key; } } } return defaultResult; } } exports2.compareIdentifiers = compareIdentifiers; var numeric = /^[0-9]+$/; function compareIdentifiers(a, b) { var anum = numeric.test(a); var bnum = numeric.test(b); if (anum && bnum) { a = +a; b = +b; } return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; } exports2.rcompareIdentifiers = rcompareIdentifiers; function rcompareIdentifiers(a, b) { return compareIdentifiers(b, a); } exports2.major = major; function major(a, loose) { return new SemVer(a, loose).major; } exports2.minor = minor; function minor(a, loose) { return new SemVer(a, loose).minor; } exports2.patch = patch; function patch(a, loose) { return new SemVer(a, loose).patch; } exports2.compare = compare; function compare(a, b, loose) { return new SemVer(a, loose).compare(new SemVer(b, loose)); } exports2.compareLoose = compareLoose; function compareLoose(a, b) { return compare(a, b, true); } exports2.rcompare = rcompare; function rcompare(a, b, loose) { return compare(b, a, loose); } exports2.sort = sort; function sort(list10, loose) { return list10.sort(function(a, b) { return exports2.compare(a, b, loose); }); } exports2.rsort = rsort; function rsort(list10, loose) { return list10.sort(function(a, b) { return exports2.rcompare(a, b, loose); }); } exports2.gt = gt; function gt(a, b, loose) { return compare(a, b, loose) > 0; } exports2.lt = lt; function lt(a, b, loose) { return compare(a, b, loose) < 0; } exports2.eq = eq; function eq(a, b, loose) { return compare(a, b, loose) === 0; } exports2.neq = neq; function neq(a, b, loose) { return compare(a, b, loose) !== 0; } exports2.gte = gte; function gte(a, b, loose) { return compare(a, b, loose) >= 0; } exports2.lte = lte; function lte(a, b, loose) { return compare(a, b, loose) <= 0; } exports2.cmp = cmp; function cmp(a, op, b, loose) { switch (op) { case "===": if (typeof a === "object") a = a.version; if (typeof b === "object") b = b.version; return a === b; case "!==": if (typeof a === "object") a = a.version; if (typeof b === "object") b = b.version; return a !== b; case "": case "=": case "==": return eq(a, b, loose); case "!=": return neq(a, b, loose); case ">": return gt(a, b, loose); case ">=": return gte(a, b, loose); case "<": return lt(a, b, loose); case "<=": return lte(a, b, loose); default: throw new TypeError("Invalid operator: " + op); } } exports2.Comparator = Comparator; function Comparator(comp, options) { if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } if (comp instanceof Comparator) { if (comp.loose === !!options.loose) { return comp; } else { comp = comp.value; } } if (!(this instanceof Comparator)) { return new Comparator(comp, options); } comp = comp.trim().split(/\s+/).join(" "); debug2("comparator", comp, options); this.options = options; this.loose = !!options.loose; this.parse(comp); if (this.semver === ANY) { this.value = ""; } else { this.value = this.operator + this.semver.version; } debug2("comp", this); } var ANY = {}; Comparator.prototype.parse = function(comp) { var r = this.options.loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR]; var m = comp.match(r); if (!m) { throw new TypeError("Invalid comparator: " + comp); } this.operator = m[1]; if (this.operator === "=") { this.operator = ""; } if (!m[2]) { this.semver = ANY; } else { this.semver = new SemVer(m[2], this.options.loose); } }; Comparator.prototype.toString = function() { return this.value; }; Comparator.prototype.test = function(version2) { debug2("Comparator.test", version2, this.options.loose); if (this.semver === ANY) { return true; } if (typeof version2 === "string") { version2 = new SemVer(version2, this.options); } return cmp(version2, this.operator, this.semver, this.options); }; Comparator.prototype.intersects = function(comp, options) { if (!(comp instanceof Comparator)) { throw new TypeError("a Comparator is required"); } if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } var rangeTmp; if (this.operator === "") { rangeTmp = new Range(comp.value, options); return satisfies2(this.value, rangeTmp, options); } else if (comp.operator === "") { rangeTmp = new Range(this.value, options); return satisfies2(comp.semver, rangeTmp, options); } var sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">"); var sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<"); var sameSemVer = this.semver.version === comp.semver.version; var differentDirectionsInclusive = (this.operator === ">=" || this.operator === "<=") && (comp.operator === ">=" || comp.operator === "<="); var oppositeDirectionsLessThan = cmp(this.semver, "<", comp.semver, options) && ((this.operator === ">=" || this.operator === ">") && (comp.operator === "<=" || comp.operator === "<")); var oppositeDirectionsGreaterThan = cmp(this.semver, ">", comp.semver, options) && ((this.operator === "<=" || this.operator === "<") && (comp.operator === ">=" || comp.operator === ">")); return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan; }; exports2.Range = Range; function Range(range, options) { if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } if (range instanceof Range) { if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { return range; } else { return new Range(range.raw, options); } } if (range instanceof Comparator) { return new Range(range.value, options); } if (!(this instanceof Range)) { return new Range(range, options); } this.options = options; this.loose = !!options.loose; this.includePrerelease = !!options.includePrerelease; this.raw = range.trim().split(/\s+/).join(" "); this.set = this.raw.split("||").map(function(range2) { return this.parseRange(range2.trim()); }, this).filter(function(c) { return c.length; }); if (!this.set.length) { throw new TypeError("Invalid SemVer Range: " + this.raw); } this.format(); } Range.prototype.format = function() { this.range = this.set.map(function(comps) { return comps.join(" ").trim(); }).join("||").trim(); return this.range; }; Range.prototype.toString = function() { return this.range; }; Range.prototype.parseRange = function(range) { var loose = this.options.loose; var hr = loose ? safeRe[HYPHENRANGELOOSE] : safeRe[HYPHENRANGE]; range = range.replace(hr, hyphenReplace); debug2("hyphen replace", range); range = range.replace(safeRe[COMPARATORTRIM], comparatorTrimReplace); debug2("comparator trim", range, safeRe[COMPARATORTRIM]); range = range.replace(safeRe[TILDETRIM], tildeTrimReplace); range = range.replace(safeRe[CARETTRIM], caretTrimReplace); var compRe = loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR]; var set2 = range.split(" ").map(function(comp) { return parseComparator(comp, this.options); }, this).join(" ").split(/\s+/); if (this.options.loose) { set2 = set2.filter(function(comp) { return !!comp.match(compRe); }); } set2 = set2.map(function(comp) { return new Comparator(comp, this.options); }, this); return set2; }; Range.prototype.intersects = function(range, options) { if (!(range instanceof Range)) { throw new TypeError("a Range is required"); } return this.set.some(function(thisComparators) { return thisComparators.every(function(thisComparator) { return range.set.some(function(rangeComparators) { return rangeComparators.every(function(rangeComparator) { return thisComparator.intersects(rangeComparator, options); }); }); }); }); }; exports2.toComparators = toComparators; function toComparators(range, options) { return new Range(range, options).set.map(function(comp) { return comp.map(function(c) { return c.value; }).join(" ").trim().split(" "); }); } function parseComparator(comp, options) { debug2("comp", comp, options); comp = replaceCarets(comp, options); debug2("caret", comp); comp = replaceTildes(comp, options); debug2("tildes", comp); comp = replaceXRanges(comp, options); debug2("xrange", comp); comp = replaceStars(comp, options); debug2("stars", comp); return comp; } function isX(id) { return !id || id.toLowerCase() === "x" || id === "*"; } function replaceTildes(comp, options) { return comp.trim().split(/\s+/).map(function(comp2) { return replaceTilde(comp2, options); }).join(" "); } function replaceTilde(comp, options) { var r = options.loose ? safeRe[TILDELOOSE] : safeRe[TILDE]; return comp.replace(r, function(_, M, m, p, pr) { debug2("tilde", comp, _, M, m, p, pr); var ret; if (isX(M)) { ret = ""; } else if (isX(m)) { ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0"; } else if (isX(p)) { ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0"; } else if (pr) { debug2("replaceTilde pr", pr); ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + (+m + 1) + ".0"; } else { ret = ">=" + M + "." + m + "." + p + " <" + M + "." + (+m + 1) + ".0"; } debug2("tilde return", ret); return ret; }); } function replaceCarets(comp, options) { return comp.trim().split(/\s+/).map(function(comp2) { return replaceCaret(comp2, options); }).join(" "); } function replaceCaret(comp, options) { debug2("caret", comp, options); var r = options.loose ? safeRe[CARETLOOSE] : safeRe[CARET]; return comp.replace(r, function(_, M, m, p, pr) { debug2("caret", comp, _, M, m, p, pr); var ret; if (isX(M)) { ret = ""; } else if (isX(m)) { ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0"; } else if (isX(p)) { if (M === "0") { ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0"; } else { ret = ">=" + M + "." + m + ".0 <" + (+M + 1) + ".0.0"; } } else if (pr) { debug2("replaceCaret pr", pr); if (M === "0") { if (m === "0") { ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + m + "." + (+p + 1); } else { ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + (+m + 1) + ".0"; } } else { ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + (+M + 1) + ".0.0"; } } else { debug2("no pr"); if (M === "0") { if (m === "0") { ret = ">=" + M + "." + m + "." + p + " <" + M + "." + m + "." + (+p + 1); } else { ret = ">=" + M + "." + m + "." + p + " <" + M + "." + (+m + 1) + ".0"; } } else { ret = ">=" + M + "." + m + "." + p + " <" + (+M + 1) + ".0.0"; } } debug2("caret return", ret); return ret; }); } function replaceXRanges(comp, options) { debug2("replaceXRanges", comp, options); return comp.split(/\s+/).map(function(comp2) { return replaceXRange(comp2, options); }).join(" "); } function replaceXRange(comp, options) { comp = comp.trim(); var r = options.loose ? safeRe[XRANGELOOSE] : safeRe[XRANGE]; return comp.replace(r, function(ret, gtlt, M, m, p, pr) { debug2("xRange", comp, ret, gtlt, M, m, p, pr); var xM = isX(M); var xm = xM || isX(m); var xp = xm || isX(p); var anyX = xp; if (gtlt === "=" && anyX) { gtlt = ""; } if (xM) { if (gtlt === ">" || gtlt === "<") { ret = "<0.0.0"; } else { ret = "*"; } } else if (gtlt && anyX) { if (xm) { m = 0; } p = 0; if (gtlt === ">") { gtlt = ">="; if (xm) { M = +M + 1; m = 0; p = 0; } else { m = +m + 1; p = 0; } } else if (gtlt === "<=") { gtlt = "<"; if (xm) { M = +M + 1; } else { m = +m + 1; } } ret = gtlt + M + "." + m + "." + p; } else if (xm) { ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0"; } else if (xp) { ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0"; } debug2("xRange return", ret); return ret; }); } function replaceStars(comp, options) { debug2("replaceStars", comp, options); return comp.trim().replace(safeRe[STAR], ""); } function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) { if (isX(fM)) { from = ""; } else if (isX(fm)) { from = ">=" + fM + ".0.0"; } else if (isX(fp)) { from = ">=" + fM + "." + fm + ".0"; } else { from = ">=" + from; } if (isX(tM)) { to = ""; } else if (isX(tm)) { to = "<" + (+tM + 1) + ".0.0"; } else if (isX(tp)) { to = "<" + tM + "." + (+tm + 1) + ".0"; } else if (tpr) { to = "<=" + tM + "." + tm + "." + tp + "-" + tpr; } else { to = "<=" + to; } return (from + " " + to).trim(); } Range.prototype.test = function(version2) { if (!version2) { return false; } if (typeof version2 === "string") { version2 = new SemVer(version2, this.options); } for (var i2 = 0; i2 < this.set.length; i2++) { if (testSet(this.set[i2], version2, this.options)) { return true; } } return false; }; function testSet(set2, version2, options) { for (var i2 = 0; i2 < set2.length; i2++) { if (!set2[i2].test(version2)) { return false; } } if (version2.prerelease.length && !options.includePrerelease) { for (i2 = 0; i2 < set2.length; i2++) { debug2(set2[i2].semver); if (set2[i2].semver === ANY) { continue; } if (set2[i2].semver.prerelease.length > 0) { var allowed = set2[i2].semver; if (allowed.major === version2.major && allowed.minor === version2.minor && allowed.patch === version2.patch) { return true; } } } return false; } return true; } exports2.satisfies = satisfies2; function satisfies2(version2, range, options) { try { range = new Range(range, options); } catch (er) { return false; } return range.test(version2); } exports2.maxSatisfying = maxSatisfying; function maxSatisfying(versions, range, options) { var max = null; var maxSV = null; try { var rangeObj = new Range(range, options); } catch (er) { return null; } versions.forEach(function(v) { if (rangeObj.test(v)) { if (!max || maxSV.compare(v) === -1) { max = v; maxSV = new SemVer(max, options); } } }); return max; } exports2.minSatisfying = minSatisfying; function minSatisfying(versions, range, options) { var min = null; var minSV = null; try { var rangeObj = new Range(range, options); } catch (er) { return null; } versions.forEach(function(v) { if (rangeObj.test(v)) { if (!min || minSV.compare(v) === 1) { min = v; minSV = new SemVer(min, options); } } }); return min; } exports2.minVersion = minVersion; function minVersion(range, loose) { range = new Range(range, loose); var minver = new SemVer("0.0.0"); if (range.test(minver)) { return minver; } minver = new SemVer("0.0.0-0"); if (range.test(minver)) { return minver; } minver = null; for (var i2 = 0; i2 < range.set.length; ++i2) { var comparators = range.set[i2]; comparators.forEach(function(comparator) { var compver = new SemVer(comparator.semver.version); switch (comparator.operator) { case ">": if (compver.prerelease.length === 0) { compver.patch++; } else { compver.prerelease.push(0); } compver.raw = compver.format(); case "": case ">=": if (!minver || gt(minver, compver)) { minver = compver; } break; case "<": case "<=": break; default: throw new Error("Unexpected operation: " + comparator.operator); } }); } if (minver && range.test(minver)) { return minver; } return null; } exports2.validRange = validRange; function validRange(range, options) { try { return new Range(range, options).range || "*"; } catch (er) { return null; } } exports2.ltr = ltr; function ltr(version2, range, options) { return outside(version2, range, "<", options); } exports2.gtr = gtr; function gtr(version2, range, options) { return outside(version2, range, ">", options); } exports2.outside = outside; function outside(version2, range, hilo, options) { version2 = new SemVer(version2, options); range = new Range(range, options); var gtfn, ltefn, ltfn, comp, ecomp; switch (hilo) { case ">": gtfn = gt; ltefn = lte; ltfn = lt; comp = ">"; ecomp = ">="; break; case "<": gtfn = lt; ltefn = gte; ltfn = gt; comp = "<"; ecomp = "<="; break; default: throw new TypeError('Must provide a hilo val of "<" or ">"'); } if (satisfies2(version2, range, options)) { return false; } for (var i2 = 0; i2 < range.set.length; ++i2) { var comparators = range.set[i2]; var high = null; var low = null; comparators.forEach(function(comparator) { if (comparator.semver === ANY) { comparator = new Comparator(">=0.0.0"); } high = high || comparator; low = low || comparator; if (gtfn(comparator.semver, high.semver, options)) { high = comparator; } else if (ltfn(comparator.semver, low.semver, options)) { low = comparator; } }); if (high.operator === comp || high.operator === ecomp) { return false; } if ((!low.operator || low.operator === comp) && ltefn(version2, low.semver)) { return false; } else if (low.operator === ecomp && ltfn(version2, low.semver)) { return false; } } return true; } exports2.prerelease = prerelease; function prerelease(version2, options) { var parsed = parse11(version2, options); return parsed && parsed.prerelease.length ? parsed.prerelease : null; } exports2.intersects = intersects; function intersects(r1, r2, options) { r1 = new Range(r1, options); r2 = new Range(r2, options); return r1.intersects(r2); } exports2.coerce = coerce; function coerce(version2) { if (version2 instanceof SemVer) { return version2; } if (typeof version2 !== "string") { return null; } var match = version2.match(safeRe[COERCE]); if (match == null) { return null; } return parse11(match[1] + "." + (match[2] || "0") + "." + (match[3] || "0")); } } }); // ../../node_modules/.pnpm/os-paths@4.4.0/node_modules/os-paths/src/lib/index.js var require_lib2 = __commonJS2({ "../../node_modules/.pnpm/os-paths@4.4.0/node_modules/os-paths/src/lib/index.js"(exports2, module2) { "use strict"; var os4 = __require("os"); var paths = __require("path"); var isWinOS = /^win/i.test(process.platform); function normalize_path(path11) { return paths.normalize(paths.join(path11, ".")); } var base = () => { const { env } = process; const object = {}; object.home = () => normalize_path(os4.homedir ? os4.homedir() : env.HOME); object.temp = () => normalize_path(os4.tmpdir ? os4.tmpdir() : env.TMPDIR || env.TEMP || env.TMP); return object; }; var windows = () => { const { env } = process; const object = {}; object.home = () => normalize_path( os4.homedir ? os4.homedir() : env.USERPROFILE || paths.join(env.HOMEDRIVE, env.HOMEPATH) || env.HOME ); object.temp = () => normalize_path( os4.tmpdir ? os4.tmpdir() : env.TEMP || env.TMP || paths.join(env.LOCALAPPDATA || env.SystemRoot || env.windir, "Temp") ); return object; }; var _OSPaths = class __OSPaths { constructor() { const OSPaths = function() { return new __OSPaths(); }; this._fn = OSPaths; const extension = isWinOS ? windows() : base(); Object.keys(extension).forEach((key) => { this._fn[key] = extension[key]; }); return this._fn; } }; module2.exports = new _OSPaths(); } }); // ../../node_modules/.pnpm/xdg-portable@7.3.0/node_modules/xdg-portable/src/lib/index.js var require_lib3 = __commonJS2({ "../../node_modules/.pnpm/xdg-portable@7.3.0/node_modules/xdg-portable/src/lib/index.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var osPaths = require_lib2(); var linux = () => { const object = {}; object.cache = () => process.env.XDG_CACHE_HOME || path11.join(osPaths.home() || osPaths.temp(), ".cache"); object.config = () => process.env.XDG_CONFIG_HOME || path11.join(osPaths.home() || osPaths.temp(), ".config"); object.data = () => process.env.XDG_DATA_HOME || path11.join(osPaths.home() || osPaths.temp(), ".local", "share"); object.runtime = () => process.env.XDG_RUNTIME_DIR || void 0; object.state = () => process.env.XDG_STATE_HOME || path11.join(osPaths.home() || osPaths.temp(), ".local", "state"); return object; }; var macos = () => { const object = {}; object.cache = () => process.env.XDG_CACHE_HOME || path11.join(path11.join(osPaths.home() || osPaths.temp(), "Library"), "Caches"); object.config = () => process.env.XDG_CONFIG_HOME || path11.join(path11.join(osPaths.home() || osPaths.temp(), "Library"), "Preferences"); object.data = () => process.env.XDG_DATA_HOME || path11.join(path11.join(osPaths.home() || osPaths.temp(), "Library"), "Application Support"); object.runtime = () => process.env.XDG_RUNTIME_DIR || void 0; object.state = () => process.env.XDG_STATE_HOME || path11.join(path11.join(osPaths.home() || osPaths.temp(), "Library"), "State"); return object; }; var windows = () => { const object = {}; object.cache = () => { const localAppData = process.env.LOCALAPPDATA || path11.join(osPaths.home() || osPaths.temp(), "AppData", "Local"); return process.env.XDG_CACHE_HOME || path11.join(localAppData, "xdg.cache"); }; object.config = () => { const appData = process.env.APPDATA || path11.join(osPaths.home() || osPaths.temp(), "AppData", "Roaming"); return process.env.XDG_CONFIG_HOME || path11.join(appData, "xdg.config"); }; object.data = () => { const appData = process.env.APPDATA || path11.join(osPaths.home() || osPaths.temp(), "AppData", "Roaming"); return process.env.XDG_DATA_HOME || path11.join(appData, "xdg.data"); }; object.runtime = () => process.env.XDG_RUNTIME_DIR || void 0; object.state = () => { const localAppData = process.env.LOCALAPPDATA || path11.join(osPaths.home() || osPaths.temp(), "AppData", "Local"); return process.env.XDG_STATE_HOME || path11.join(localAppData, "xdg.state"); }; return object; }; var _XDGPortable = () => { const XDGPortable = function() { return _XDGPortable(); }; let extension = {}; if (/^darwin$/i.test(process.platform)) { extension = macos(); } else if (/^win/i.test(process.platform)) { extension = windows(); } else { extension = linux(); } extension.configDirs = () => { const dirs = []; dirs.push(extension.config()); if (process.env.XDG_CONFIG_DIRS) { dirs.push(...process.env.XDG_CONFIG_DIRS.split(path11.delimiter)); } return dirs; }; extension.dataDirs = () => { const dirs = []; dirs.push(extension.data()); if (process.env.XDG_DATA_DIRS) { dirs.push(...process.env.XDG_DATA_DIRS.split(path11.delimiter)); } return dirs; }; Object.keys(extension).forEach((key) => { XDGPortable[key] = extension[key]; }); return XDGPortable; }; module2.exports = _XDGPortable(); } }); // ../../node_modules/.pnpm/xdg-app-paths@5.1.0/node_modules/xdg-app-paths/index.js var require_xdg_app_paths = __commonJS2({ "../../node_modules/.pnpm/xdg-app-paths@5.1.0/node_modules/xdg-app-paths/index.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var os4 = __require("os"); var xdg = require_lib3(); var isWinOS = /^win/i.test(process.platform); function _normalizeOptions(options, isolated) { options = options || {}; if (typeof options !== "object") { options = { isolated: options }; } options.isolated = options.isolated === void 0 || options.isolated === null ? isolated : options.isolated; if (typeof options.isolated !== "boolean") { throw new TypeError(`Expected boolean for "isolated" argument, got ${typeof options.isolated}`); } return options; } var base = (name, isolated) => { const object = {}; object.cache = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return path11.join(xdg.cache(), options.isolated ? name : ""); }; object.config = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return path11.join(xdg.config(), options.isolated ? name : ""); }; object.data = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return path11.join(xdg.data(), options.isolated ? name : ""); }; object.runtime = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return xdg.runtime() ? path11.join(xdg.runtime(), options.isolated ? name : "") : void 0; }; object.state = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return path11.join(xdg.state(), options.isolated ? name : ""); }; object.configDirs = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return xdg.configDirs().map((s) => path11.join(s, options.isolated ? name : "")); }; object.dataDirs = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return xdg.dataDirs().map((s) => path11.join(s, options.isolated ? name : "")); }; return object; }; var windows = (name, isolated) => { const { env } = process; const homedir5 = os4.homedir(); const tmpdir = os4.tmpdir(); const appData = env.APPDATA || path11.join(homedir5 || tmpdir, "AppData", "Roaming"); const localAppData = env.LOCALAPPDATA || path11.join(homedir5 || tmpdir, "AppData", "Local"); const object = {}; object.cache = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return !options.isolated || env.XDG_CACHE_HOME ? path11.join(xdg.cache(), options.isolated ? name : "") : path11.join(localAppData, options.isolated ? name : "", "Cache"); }; object.config = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); const config2 = !options.isolated || env.XDG_CONFIG_HOME ? path11.join(xdg.config(), options.isolated ? name : "") : path11.join(appData, options.isolated ? name : "", "Config"); return config2; }; object.data = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); const data = !options.isolated || env.XDG_DATA_HOME ? path11.join(xdg.data(), options.isolated ? name : "") : path11.join(appData, options.isolated ? name : "", "Data"); return data; }; object.runtime = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return xdg.runtime() ? path11.join(xdg.runtime(), options.isolated ? name : "") : void 0; }; object.state = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); return !options.isolated || env.XDG_STATE_HOME ? path11.join(xdg.state(), options.isolated ? name : "") : path11.join(localAppData, options.isolated ? name : "", "State"); }; object.configDirs = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); const dirs = [object.config(options)]; if (env.XDG_CONFIG_DIRS) { dirs.push(...env.XDG_CONFIG_DIRS.split(path11.delimiter).map((s) => path11.join(s, options.isolated ? name : ""))); } return dirs; }; object.dataDirs = (options = { isolated: null }) => { options = _normalizeOptions(options, isolated); const dirs = [object.data(options)]; if (env.XDG_DATA_DIRS) { dirs.push(...env.XDG_DATA_DIRS.split(path11.delimiter).map((s) => path11.join(s, options.isolated ? name : ""))); } return dirs; }; return object; }; var _XDGAppPaths = class __XDGAppPaths { constructor(options = { name: null, suffix: null, isolated: true }) { const XDGAppPaths3 = function(options2 = { name: null, suffix: null, isolated: true }) { return new __XDGAppPaths(options2); }; this._fn = XDGAppPaths3; options = options || {}; if (typeof options !== "object") { options = { name: options }; } let name = options.name || ""; if (typeof name !== "string") { throw new TypeError(`Expected string for "name" argument, got ${typeof name}`); } const suffix = options.suffix || ""; if (typeof suffix !== "string") { throw new TypeError(`Expected string for "suffix" argument, got ${typeof suffix}`); } const isolated = options.isolated === void 0 || options.isolated === null ? true : options.isolated; if (typeof isolated !== "boolean") { throw new TypeError(`Expected boolean for "isolated" argument, got ${typeof isolated}`); } if (!name) { name = path11.parse(process.pkg ? process.execPath : __require.main ? __require.main.filename : process.argv[0]).name; } if (suffix) { name += suffix; } this._fn.$name = () => name; this._fn.$isolated = () => isolated; const extension = isWinOS ? windows(name, isolated) : base(name, isolated); Object.keys(extension).forEach((key) => { this._fn[key] = extension[key]; }); return this._fn; } }; module2.exports = new _XDGAppPaths(); } }); // ../../node_modules/.pnpm/ansi-escapes@4.3.2/node_modules/ansi-escapes/index.js var require_ansi_escapes = __commonJS2({ "../../node_modules/.pnpm/ansi-escapes@4.3.2/node_modules/ansi-escapes/index.js"(exports2, module2) { "use strict"; var ansiEscapes8 = module2.exports; module2.exports.default = ansiEscapes8; var ESC = "\x1B["; var OSC = "\x1B]"; var BEL = "\x07"; var SEP = ";"; var isTerminalApp = process.env.TERM_PROGRAM === "Apple_Terminal"; ansiEscapes8.cursorTo = (x, y) => { if (typeof x !== "number") { throw new TypeError("The `x` argument is required"); } if (typeof y !== "number") { return ESC + (x + 1) + "G"; } return ESC + (y + 1) + ";" + (x + 1) + "H"; }; ansiEscapes8.cursorMove = (x, y) => { if (typeof x !== "number") { throw new TypeError("The `x` argument is required"); } let ret = ""; if (x < 0) { ret += ESC + -x + "D"; } else if (x > 0) { ret += ESC + x + "C"; } if (y < 0) { ret += ESC + -y + "A"; } else if (y > 0) { ret += ESC + y + "B"; } return ret; }; ansiEscapes8.cursorUp = (count = 1) => ESC + count + "A"; ansiEscapes8.cursorDown = (count = 1) => ESC + count + "B"; ansiEscapes8.cursorForward = (count = 1) => ESC + count + "C"; ansiEscapes8.cursorBackward = (count = 1) => ESC + count + "D"; ansiEscapes8.cursorLeft = ESC + "G"; ansiEscapes8.cursorSavePosition = isTerminalApp ? "\x1B7" : ESC + "s"; ansiEscapes8.cursorRestorePosition = isTerminalApp ? "\x1B8" : ESC + "u"; ansiEscapes8.cursorGetPosition = ESC + "6n"; ansiEscapes8.cursorNextLine = ESC + "E"; ansiEscapes8.cursorPrevLine = ESC + "F"; ansiEscapes8.cursorHide = ESC + "?25l"; ansiEscapes8.cursorShow = ESC + "?25h"; ansiEscapes8.eraseLines = (count) => { let clear = ""; for (let i = 0; i < count; i++) { clear += ansiEscapes8.eraseLine + (i < count - 1 ? ansiEscapes8.cursorUp() : ""); } if (count) { clear += ansiEscapes8.cursorLeft; } return clear; }; ansiEscapes8.eraseEndLine = ESC + "K"; ansiEscapes8.eraseStartLine = ESC + "1K"; ansiEscapes8.eraseLine = ESC + "2K"; ansiEscapes8.eraseDown = ESC + "J"; ansiEscapes8.eraseUp = ESC + "1J"; ansiEscapes8.eraseScreen = ESC + "2J"; ansiEscapes8.scrollUp = ESC + "S"; ansiEscapes8.scrollDown = ESC + "T"; ansiEscapes8.clearScreen = "\x1Bc"; ansiEscapes8.clearTerminal = process.platform === "win32" ? `${ansiEscapes8.eraseScreen}${ESC}0f` : ( // 1. Erases the screen (Only done in case `2` is not supported) // 2. Erases the whole screen including scrollback buffer // 3. Moves cursor to the top-left position // More info: https://www.real-world-systems.com/docs/ANSIcode.html `${ansiEscapes8.eraseScreen}${ESC}3J${ESC}H` ); ansiEscapes8.beep = BEL; ansiEscapes8.link = (text, url3) => { return [ OSC, "8", SEP, SEP, url3, BEL, text, OSC, "8", SEP, SEP, BEL ].join(""); }; ansiEscapes8.image = (buffer, options = {}) => { let ret = `${OSC}1337;File=inline=1`; if (options.width) { ret += `;width=${options.width}`; } if (options.height) { ret += `;height=${options.height}`; } if (options.preserveAspectRatio === false) { ret += ";preserveAspectRatio=0"; } return ret + ":" + buffer.toString("base64") + BEL; }; ansiEscapes8.iTerm = { setCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`, annotation: (message2, options = {}) => { let ret = `${OSC}1337;`; const hasX = typeof options.x !== "undefined"; const hasY = typeof options.y !== "undefined"; if ((hasX || hasY) && !(hasX && hasY && typeof options.length !== "undefined")) { throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined"); } message2 = message2.replace(/\|/g, ""); ret += options.isHidden ? "AddHiddenAnnotation=" : "AddAnnotation="; if (options.length > 0) { ret += (hasX ? [message2, options.length, options.x, options.y] : [options.length, message2]).join("|"); } else { ret += message2; } return ret + BEL; } }; } }); // ../../node_modules/.pnpm/supports-hyperlinks@3.0.0/node_modules/supports-hyperlinks/index.js var require_supports_hyperlinks = __commonJS2({ "../../node_modules/.pnpm/supports-hyperlinks@3.0.0/node_modules/supports-hyperlinks/index.js"(exports2, module2) { "use strict"; var supportsColor = require_supports_color(); var hasFlag = require_has_flag(); function parseVersion(versionString) { if (/^\d{3,4}$/.test(versionString)) { const m = /(\d{1,2})(\d{2})/.exec(versionString) || []; return { major: 0, minor: parseInt(m[1], 10), patch: parseInt(m[2], 10) }; } const versions = (versionString || "").split(".").map((n) => parseInt(n, 10)); return { major: versions[0], minor: versions[1], patch: versions[2] }; } function supportsHyperlink(stream) { const { CI, FORCE_HYPERLINK, NETLIFY, TEAMCITY_VERSION, TERM_PROGRAM, TERM_PROGRAM_VERSION, VTE_VERSION } = process.env; if (FORCE_HYPERLINK) { return !(FORCE_HYPERLINK.length > 0 && parseInt(FORCE_HYPERLINK, 10) === 0); } if (hasFlag("no-hyperlink") || hasFlag("no-hyperlinks") || hasFlag("hyperlink=false") || hasFlag("hyperlink=never")) { return false; } if (hasFlag("hyperlink=true") || hasFlag("hyperlink=always")) { return true; } if (NETLIFY) { return true; } if (!supportsColor.supportsColor(stream)) { return false; } if (stream && !stream.isTTY) { return false; } if (process.platform === "win32") { return false; } if (CI) { return false; } if (TEAMCITY_VERSION) { return false; } if (TERM_PROGRAM) { const version2 = parseVersion(TERM_PROGRAM_VERSION || ""); switch (TERM_PROGRAM) { case "iTerm.app": if (version2.major === 3) { return version2.minor >= 1; } return version2.major > 3; case "WezTerm": return version2.major >= 20200620; case "vscode": return version2.major > 1 || version2.major === 1 && version2.minor >= 72; } } if (VTE_VERSION) { if (VTE_VERSION === "0.50.0") { return false; } const version2 = parseVersion(VTE_VERSION); return version2.major > 0 || version2.minor >= 50; } return false; } module2.exports = { supportsHyperlink, stdout: supportsHyperlink(process.stdout), stderr: supportsHyperlink(process.stderr) }; } }); // src/util/output/link.ts var import_chalk, link, link_default; var init_link = __esm({ "src/util/output/link.ts"() { "use strict"; import_chalk = __toESM3(require_source(), 1); link = import_chalk.default.cyan.underline; link_default = link; } }); // ../../node_modules/.pnpm/escape-string-regexp@1.0.5/node_modules/escape-string-regexp/index.js var require_escape_string_regexp = __commonJS2({ "../../node_modules/.pnpm/escape-string-regexp@1.0.5/node_modules/escape-string-regexp/index.js"(exports2, module2) { "use strict"; var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; module2.exports = function(str) { if (typeof str !== "string") { throw new TypeError("Expected a string"); } return str.replace(matchOperatorsRe, "\\$&"); }; } }); // ../../node_modules/.pnpm/color-name@1.1.3/node_modules/color-name/index.js var require_color_name2 = __commonJS2({ "../../node_modules/.pnpm/color-name@1.1.3/node_modules/color-name/index.js"(exports2, module2) { "use strict"; module2.exports = { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255, 235, 205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategray": [47, 79, 79], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "grey": [128, 128, 128], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "rebeccapurple": [102, 51, 153], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50] }; } }); // ../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/conversions.js var require_conversions2 = __commonJS2({ "../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/conversions.js"(exports2, module2) { var cssKeywords = require_color_name2(); var reverseKeywords = {}; for (key in cssKeywords) { if (cssKeywords.hasOwnProperty(key)) { reverseKeywords[cssKeywords[key]] = key; } } var key; var convert = module2.exports = { rgb: { channels: 3, labels: "rgb" }, hsl: { channels: 3, labels: "hsl" }, hsv: { channels: 3, labels: "hsv" }, hwb: { channels: 3, labels: "hwb" }, cmyk: { channels: 4, labels: "cmyk" }, xyz: { channels: 3, labels: "xyz" }, lab: { channels: 3, labels: "lab" }, lch: { channels: 3, labels: "lch" }, hex: { channels: 1, labels: ["hex"] }, keyword: { channels: 1, labels: ["keyword"] }, ansi16: { channels: 1, labels: ["ansi16"] }, ansi256: { channels: 1, labels: ["ansi256"] }, hcg: { channels: 3, labels: ["h", "c", "g"] }, apple: { channels: 3, labels: ["r16", "g16", "b16"] }, gray: { channels: 1, labels: ["gray"] } }; for (model in convert) { if (convert.hasOwnProperty(model)) { if (!("channels" in convert[model])) { throw new Error("missing channels property: " + model); } if (!("labels" in convert[model])) { throw new Error("missing channel labels property: " + model); } if (convert[model].labels.length !== convert[model].channels) { throw new Error("channel and label counts mismatch: " + model); } channels = convert[model].channels; labels = convert[model].labels; delete convert[model].channels; delete convert[model].labels; Object.defineProperty(convert[model], "channels", { value: channels }); Object.defineProperty(convert[model], "labels", { value: labels }); } } var channels; var labels; var model; convert.rgb.hsl = function(rgb) { var r = rgb[0] / 255; var g = rgb[1] / 255; var b = rgb[2] / 255; var min = Math.min(r, g, b); var max = Math.max(r, g, b); var delta = max - min; var h; var s; var l; if (max === min) { h = 0; } else if (r === max) { h = (g - b) / delta; } else if (g === max) { h = 2 + (b - r) / delta; } else if (b === max) { h = 4 + (r - g) / delta; } h = Math.min(h * 60, 360); if (h < 0) { h += 360; } l = (min + max) / 2; if (max === min) { s = 0; } else if (l <= 0.5) { s = delta / (max + min); } else { s = delta / (2 - max - min); } return [h, s * 100, l * 100]; }; convert.rgb.hsv = function(rgb) { var rdif; var gdif; var bdif; var h; var s; var r = rgb[0] / 255; var g = rgb[1] / 255; var b = rgb[2] / 255; var v = Math.max(r, g, b); var diff = v - Math.min(r, g, b); var diffc = function(c) { return (v - c) / 6 / diff + 1 / 2; }; if (diff === 0) { h = s = 0; } else { s = diff / v; rdif = diffc(r); gdif = diffc(g); bdif = diffc(b); if (r === v) { h = bdif - gdif; } else if (g === v) { h = 1 / 3 + rdif - bdif; } else if (b === v) { h = 2 / 3 + gdif - rdif; } if (h < 0) { h += 1; } else if (h > 1) { h -= 1; } } return [ h * 360, s * 100, v * 100 ]; }; convert.rgb.hwb = function(rgb) { var r = rgb[0]; var g = rgb[1]; var b = rgb[2]; var h = convert.rgb.hsl(rgb)[0]; var w = 1 / 255 * Math.min(r, Math.min(g, b)); b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); return [h, w * 100, b * 100]; }; convert.rgb.cmyk = function(rgb) { var r = rgb[0] / 255; var g = rgb[1] / 255; var b = rgb[2] / 255; var c; var m; var y; var k; k = Math.min(1 - r, 1 - g, 1 - b); c = (1 - r - k) / (1 - k) || 0; m = (1 - g - k) / (1 - k) || 0; y = (1 - b - k) / (1 - k) || 0; return [c * 100, m * 100, y * 100, k * 100]; }; function comparativeDistance(x, y) { return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2); } convert.rgb.keyword = function(rgb) { var reversed = reverseKeywords[rgb]; if (reversed) { return reversed; } var currentClosestDistance = Infinity; var currentClosestKeyword; for (var keyword in cssKeywords) { if (cssKeywords.hasOwnProperty(keyword)) { var value = cssKeywords[keyword]; var distance2 = comparativeDistance(rgb, value); if (distance2 < currentClosestDistance) { currentClosestDistance = distance2; currentClosestKeyword = keyword; } } } return currentClosestKeyword; }; convert.keyword.rgb = function(keyword) { return cssKeywords[keyword]; }; convert.rgb.xyz = function(rgb) { var r = rgb[0] / 255; var g = rgb[1] / 255; var b = rgb[2] / 255; r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92; g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92; b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92; var x = r * 0.4124 + g * 0.3576 + b * 0.1805; var y = r * 0.2126 + g * 0.7152 + b * 0.0722; var z = r * 0.0193 + g * 0.1192 + b * 0.9505; return [x * 100, y * 100, z * 100]; }; convert.rgb.lab = function(rgb) { var xyz = convert.rgb.xyz(rgb); var x = xyz[0]; var y = xyz[1]; var z = xyz[2]; var l; var a; var b; x /= 95.047; y /= 100; z /= 108.883; x = x > 8856e-6 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116; y = y > 8856e-6 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116; z = z > 8856e-6 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116; l = 116 * y - 16; a = 500 * (x - y); b = 200 * (y - z); return [l, a, b]; }; convert.hsl.rgb = function(hsl) { var h = hsl[0] / 360; var s = hsl[1] / 100; var l = hsl[2] / 100; var t1; var t2; var t3; var rgb; var val; if (s === 0) { val = l * 255; return [val, val, val]; } if (l < 0.5) { t2 = l * (1 + s); } else { t2 = l + s - l * s; } t1 = 2 * l - t2; rgb = [0, 0, 0]; for (var i = 0; i < 3; i++) { t3 = h + 1 / 3 * -(i - 1); if (t3 < 0) { t3++; } if (t3 > 1) { t3--; } if (6 * t3 < 1) { val = t1 + (t2 - t1) * 6 * t3; } else if (2 * t3 < 1) { val = t2; } else if (3 * t3 < 2) { val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; } else { val = t1; } rgb[i] = val * 255; } return rgb; }; convert.hsl.hsv = function(hsl) { var h = hsl[0]; var s = hsl[1] / 100; var l = hsl[2] / 100; var smin = s; var lmin = Math.max(l, 0.01); var sv; var v; l *= 2; s *= l <= 1 ? l : 2 - l; smin *= lmin <= 1 ? lmin : 2 - lmin; v = (l + s) / 2; sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); return [h, sv * 100, v * 100]; }; convert.hsv.rgb = function(hsv) { var h = hsv[0] / 60; var s = hsv[1] / 100; var v = hsv[2] / 100; var hi = Math.floor(h) % 6; var f = h - Math.floor(h); var p = 255 * v * (1 - s); var q = 255 * v * (1 - s * f); var t = 255 * v * (1 - s * (1 - f)); v *= 255; switch (hi) { case 0: return [v, t, p]; case 1: return [q, v, p]; case 2: return [p, v, t]; case 3: return [p, q, v]; case 4: return [t, p, v]; case 5: return [v, p, q]; } }; convert.hsv.hsl = function(hsv) { var h = hsv[0]; var s = hsv[1] / 100; var v = hsv[2] / 100; var vmin = Math.max(v, 0.01); var lmin; var sl; var l; l = (2 - s) * v; lmin = (2 - s) * vmin; sl = s * vmin; sl /= lmin <= 1 ? lmin : 2 - lmin; sl = sl || 0; l /= 2; return [h, sl * 100, l * 100]; }; convert.hwb.rgb = function(hwb) { var h = hwb[0] / 360; var wh = hwb[1] / 100; var bl = hwb[2] / 100; var ratio = wh + bl; var i; var v; var f; var n; if (ratio > 1) { wh /= ratio; bl /= ratio; } i = Math.floor(6 * h); v = 1 - bl; f = 6 * h - i; if ((i & 1) !== 0) { f = 1 - f; } n = wh + f * (v - wh); var r; var g; var b; switch (i) { default: case 6: case 0: r = v; g = n; b = wh; break; case 1: r = n; g = v; b = wh; break; case 2: r = wh; g = v; b = n; break; case 3: r = wh; g = n; b = v; break; case 4: r = n; g = wh; b = v; break; case 5: r = v; g = wh; b = n; break; } return [r * 255, g * 255, b * 255]; }; convert.cmyk.rgb = function(cmyk) { var c = cmyk[0] / 100; var m = cmyk[1] / 100; var y = cmyk[2] / 100; var k = cmyk[3] / 100; var r; var g; var b; r = 1 - Math.min(1, c * (1 - k) + k); g = 1 - Math.min(1, m * (1 - k) + k); b = 1 - Math.min(1, y * (1 - k) + k); return [r * 255, g * 255, b * 255]; }; convert.xyz.rgb = function(xyz) { var x = xyz[0] / 100; var y = xyz[1] / 100; var z = xyz[2] / 100; var r; var g; var b; r = x * 3.2406 + y * -1.5372 + z * -0.4986; g = x * -0.9689 + y * 1.8758 + z * 0.0415; b = x * 0.0557 + y * -0.204 + z * 1.057; r = r > 31308e-7 ? 1.055 * Math.pow(r, 1 / 2.4) - 0.055 : r * 12.92; g = g > 31308e-7 ? 1.055 * Math.pow(g, 1 / 2.4) - 0.055 : g * 12.92; b = b > 31308e-7 ? 1.055 * Math.pow(b, 1 / 2.4) - 0.055 : b * 12.92; r = Math.min(Math.max(0, r), 1); g = Math.min(Math.max(0, g), 1); b = Math.min(Math.max(0, b), 1); return [r * 255, g * 255, b * 255]; }; convert.xyz.lab = function(xyz) { var x = xyz[0]; var y = xyz[1]; var z = xyz[2]; var l; var a; var b; x /= 95.047; y /= 100; z /= 108.883; x = x > 8856e-6 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116; y = y > 8856e-6 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116; z = z > 8856e-6 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116; l = 116 * y - 16; a = 500 * (x - y); b = 200 * (y - z); return [l, a, b]; }; convert.lab.xyz = function(lab) { var l = lab[0]; var a = lab[1]; var b = lab[2]; var x; var y; var z; y = (l + 16) / 116; x = a / 500 + y; z = y - b / 200; var y2 = Math.pow(y, 3); var x2 = Math.pow(x, 3); var z2 = Math.pow(z, 3); y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787; x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787; z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787; x *= 95.047; y *= 100; z *= 108.883; return [x, y, z]; }; convert.lab.lch = function(lab) { var l = lab[0]; var a = lab[1]; var b = lab[2]; var hr; var h; var c; hr = Math.atan2(b, a); h = hr * 360 / 2 / Math.PI; if (h < 0) { h += 360; } c = Math.sqrt(a * a + b * b); return [l, c, h]; }; convert.lch.lab = function(lch) { var l = lch[0]; var c = lch[1]; var h = lch[2]; var a; var b; var hr; hr = h / 360 * 2 * Math.PI; a = c * Math.cos(hr); b = c * Math.sin(hr); return [l, a, b]; }; convert.rgb.ansi16 = function(args2) { var r = args2[0]; var g = args2[1]; var b = args2[2]; var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args2)[2]; value = Math.round(value / 50); if (value === 0) { return 30; } var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); if (value === 2) { ansi += 60; } return ansi; }; convert.hsv.ansi16 = function(args2) { return convert.rgb.ansi16(convert.hsv.rgb(args2), args2[2]); }; convert.rgb.ansi256 = function(args2) { var r = args2[0]; var g = args2[1]; var b = args2[2]; if (r === g && g === b) { if (r < 8) { return 16; } if (r > 248) { return 231; } return Math.round((r - 8) / 247 * 24) + 232; } var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); return ansi; }; convert.ansi16.rgb = function(args2) { var color = args2 % 10; if (color === 0 || color === 7) { if (args2 > 50) { color += 3.5; } color = color / 10.5 * 255; return [color, color, color]; } var mult = (~~(args2 > 50) + 1) * 0.5; var r = (color & 1) * mult * 255; var g = (color >> 1 & 1) * mult * 255; var b = (color >> 2 & 1) * mult * 255; return [r, g, b]; }; convert.ansi256.rgb = function(args2) { if (args2 >= 232) { var c = (args2 - 232) * 10 + 8; return [c, c, c]; } args2 -= 16; var rem; var r = Math.floor(args2 / 36) / 5 * 255; var g = Math.floor((rem = args2 % 36) / 6) / 5 * 255; var b = rem % 6 / 5 * 255; return [r, g, b]; }; convert.rgb.hex = function(args2) { var integer = ((Math.round(args2[0]) & 255) << 16) + ((Math.round(args2[1]) & 255) << 8) + (Math.round(args2[2]) & 255); var string = integer.toString(16).toUpperCase(); return "000000".substring(string.length) + string; }; convert.hex.rgb = function(args2) { var match = args2.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); if (!match) { return [0, 0, 0]; } var colorString = match[0]; if (match[0].length === 3) { colorString = colorString.split("").map(function(char) { return char + char; }).join(""); } var integer = parseInt(colorString, 16); var r = integer >> 16 & 255; var g = integer >> 8 & 255; var b = integer & 255; return [r, g, b]; }; convert.rgb.hcg = function(rgb) { var r = rgb[0] / 255; var g = rgb[1] / 255; var b = rgb[2] / 255; var max = Math.max(Math.max(r, g), b); var min = Math.min(Math.min(r, g), b); var chroma = max - min; var grayscale; var hue; if (chroma < 1) { grayscale = min / (1 - chroma); } else { grayscale = 0; } if (chroma <= 0) { hue = 0; } else if (max === r) { hue = (g - b) / chroma % 6; } else if (max === g) { hue = 2 + (b - r) / chroma; } else { hue = 4 + (r - g) / chroma + 4; } hue /= 6; hue %= 1; return [hue * 360, chroma * 100, grayscale * 100]; }; convert.hsl.hcg = function(hsl) { var s = hsl[1] / 100; var l = hsl[2] / 100; var c = 1; var f = 0; if (l < 0.5) { c = 2 * s * l; } else { c = 2 * s * (1 - l); } if (c < 1) { f = (l - 0.5 * c) / (1 - c); } return [hsl[0], c * 100, f * 100]; }; convert.hsv.hcg = function(hsv) { var s = hsv[1] / 100; var v = hsv[2] / 100; var c = s * v; var f = 0; if (c < 1) { f = (v - c) / (1 - c); } return [hsv[0], c * 100, f * 100]; }; convert.hcg.rgb = function(hcg) { var h = hcg[0] / 360; var c = hcg[1] / 100; var g = hcg[2] / 100; if (c === 0) { return [g * 255, g * 255, g * 255]; } var pure = [0, 0, 0]; var hi = h % 1 * 6; var v = hi % 1; var w = 1 - v; var mg = 0; switch (Math.floor(hi)) { case 0: pure[0] = 1; pure[1] = v; pure[2] = 0; break; case 1: pure[0] = w; pure[1] = 1; pure[2] = 0; break; case 2: pure[0] = 0; pure[1] = 1; pure[2] = v; break; case 3: pure[0] = 0; pure[1] = w; pure[2] = 1; break; case 4: pure[0] = v; pure[1] = 0; pure[2] = 1; break; default: pure[0] = 1; pure[1] = 0; pure[2] = w; } mg = (1 - c) * g; return [ (c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255 ]; }; convert.hcg.hsv = function(hcg) { var c = hcg[1] / 100; var g = hcg[2] / 100; var v = c + g * (1 - c); var f = 0; if (v > 0) { f = c / v; } return [hcg[0], f * 100, v * 100]; }; convert.hcg.hsl = function(hcg) { var c = hcg[1] / 100; var g = hcg[2] / 100; var l = g * (1 - c) + 0.5 * c; var s = 0; if (l > 0 && l < 0.5) { s = c / (2 * l); } else if (l >= 0.5 && l < 1) { s = c / (2 * (1 - l)); } return [hcg[0], s * 100, l * 100]; }; convert.hcg.hwb = function(hcg) { var c = hcg[1] / 100; var g = hcg[2] / 100; var v = c + g * (1 - c); return [hcg[0], (v - c) * 100, (1 - v) * 100]; }; convert.hwb.hcg = function(hwb) { var w = hwb[1] / 100; var b = hwb[2] / 100; var v = 1 - b; var c = v - w; var g = 0; if (c < 1) { g = (v - c) / (1 - c); } return [hwb[0], c * 100, g * 100]; }; convert.apple.rgb = function(apple) { return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; }; convert.rgb.apple = function(rgb) { return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; }; convert.gray.rgb = function(args2) { return [args2[0] / 100 * 255, args2[0] / 100 * 255, args2[0] / 100 * 255]; }; convert.gray.hsl = convert.gray.hsv = function(args2) { return [0, 0, args2[0]]; }; convert.gray.hwb = function(gray5) { return [0, 100, gray5[0]]; }; convert.gray.cmyk = function(gray5) { return [0, 0, 0, gray5[0]]; }; convert.gray.lab = function(gray5) { return [gray5[0], 0, 0]; }; convert.gray.hex = function(gray5) { var val = Math.round(gray5[0] / 100 * 255) & 255; var integer = (val << 16) + (val << 8) + val; var string = integer.toString(16).toUpperCase(); return "000000".substring(string.length) + string; }; convert.rgb.gray = function(rgb) { var val = (rgb[0] + rgb[1] + rgb[2]) / 3; return [val / 255 * 100]; }; } }); // ../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/route.js var require_route2 = __commonJS2({ "../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/route.js"(exports2, module2) { var conversions = require_conversions2(); function buildGraph() { var graph = {}; var models = Object.keys(conversions); for (var len = models.length, i = 0; i < len; i++) { graph[models[i]] = { // http://jsperf.com/1-vs-infinity // micro-opt, but this is simple. distance: -1, parent: null }; } return graph; } function deriveBFS(fromModel) { var graph = buildGraph(); var queue = [fromModel]; graph[fromModel].distance = 0; while (queue.length) { var current = queue.pop(); var adjacents = Object.keys(conversions[current]); for (var len = adjacents.length, i = 0; i < len; i++) { var adjacent = adjacents[i]; var node = graph[adjacent]; if (node.distance === -1) { node.distance = graph[current].distance + 1; node.parent = current; queue.unshift(adjacent); } } } return graph; } function link4(from, to) { return function(args2) { return to(from(args2)); }; } function wrapConversion(toModel, graph) { var path11 = [graph[toModel].parent, toModel]; var fn2 = conversions[graph[toModel].parent][toModel]; var cur = graph[toModel].parent; while (graph[cur].parent) { path11.unshift(graph[cur].parent); fn2 = link4(conversions[graph[cur].parent][cur], fn2); cur = graph[cur].parent; } fn2.conversion = path11; return fn2; } module2.exports = function(fromModel) { var graph = deriveBFS(fromModel); var conversion = {}; var models = Object.keys(graph); for (var len = models.length, i = 0; i < len; i++) { var toModel = models[i]; var node = graph[toModel]; if (node.parent === null) { continue; } conversion[toModel] = wrapConversion(toModel, graph); } return conversion; }; } }); // ../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/index.js var require_color_convert2 = __commonJS2({ "../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/index.js"(exports2, module2) { var conversions = require_conversions2(); var route = require_route2(); var convert = {}; var models = Object.keys(conversions); function wrapRaw(fn2) { var wrappedFn = function(args2) { if (args2 === void 0 || args2 === null) { return args2; } if (arguments.length > 1) { args2 = Array.prototype.slice.call(arguments); } return fn2(args2); }; if ("conversion" in fn2) { wrappedFn.conversion = fn2.conversion; } return wrappedFn; } function wrapRounded(fn2) { var wrappedFn = function(args2) { if (args2 === void 0 || args2 === null) { return args2; } if (arguments.length > 1) { args2 = Array.prototype.slice.call(arguments); } var result = fn2(args2); if (typeof result === "object") { for (var len = result.length, i = 0; i < len; i++) { result[i] = Math.round(result[i]); } } return result; }; if ("conversion" in fn2) { wrappedFn.conversion = fn2.conversion; } return wrappedFn; } models.forEach(function(fromModel) { convert[fromModel] = {}; Object.defineProperty(convert[fromModel], "channels", { value: conversions[fromModel].channels }); Object.defineProperty(convert[fromModel], "labels", { value: conversions[fromModel].labels }); var routes2 = route(fromModel); var routeModels = Object.keys(routes2); routeModels.forEach(function(toModel) { var fn2 = routes2[toModel]; convert[fromModel][toModel] = wrapRounded(fn2); convert[fromModel][toModel].raw = wrapRaw(fn2); }); }); module2.exports = convert; } }); // ../../node_modules/.pnpm/ansi-styles@3.2.1/node_modules/ansi-styles/index.js var require_ansi_styles2 = __commonJS2({ "../../node_modules/.pnpm/ansi-styles@3.2.1/node_modules/ansi-styles/index.js"(exports2, module2) { "use strict"; var colorConvert = require_color_convert2(); var wrapAnsi16 = (fn2, offset) => function() { const code2 = fn2.apply(colorConvert, arguments); return `\x1B[${code2 + offset}m`; }; var wrapAnsi256 = (fn2, offset) => function() { const code2 = fn2.apply(colorConvert, arguments); return `\x1B[${38 + offset};5;${code2}m`; }; var wrapAnsi16m = (fn2, offset) => function() { const rgb = fn2.apply(colorConvert, arguments); return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; }; function assembleStyles() { const codes = /* @__PURE__ */ new Map(); const styles = { modifier: { reset: [0, 0], // 21 isn't widely supported and 22 does the same thing bold: [1, 22], dim: [2, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], hidden: [8, 28], strikethrough: [9, 29] }, color: { black: [30, 39], red: [31, 39], green: [32, 39], yellow: [33, 39], blue: [34, 39], magenta: [35, 39], cyan: [36, 39], white: [37, 39], gray: [90, 39], // Bright color redBright: [91, 39], greenBright: [92, 39], yellowBright: [93, 39], blueBright: [94, 39], magentaBright: [95, 39], cyanBright: [96, 39], whiteBright: [97, 39] }, bgColor: { bgBlack: [40, 49], bgRed: [41, 49], bgGreen: [42, 49], bgYellow: [43, 49], bgBlue: [44, 49], bgMagenta: [45, 49], bgCyan: [46, 49], bgWhite: [47, 49], // Bright color bgBlackBright: [100, 49], bgRedBright: [101, 49], bgGreenBright: [102, 49], bgYellowBright: [103, 49], bgBlueBright: [104, 49], bgMagentaBright: [105, 49], bgCyanBright: [106, 49], bgWhiteBright: [107, 49] } }; styles.color.grey = styles.color.gray; for (const groupName of Object.keys(styles)) { const group = styles[groupName]; for (const styleName of Object.keys(group)) { const style = group[styleName]; styles[styleName] = { open: `\x1B[${style[0]}m`, close: `\x1B[${style[1]}m` }; group[styleName] = styles[styleName]; codes.set(style[0], style[1]); } Object.defineProperty(styles, groupName, { value: group, enumerable: false }); Object.defineProperty(styles, "codes", { value: codes, enumerable: false }); } const ansi2ansi = (n) => n; const rgb2rgb = (r, g, b) => [r, g, b]; styles.color.close = "\x1B[39m"; styles.bgColor.close = "\x1B[49m"; styles.color.ansi = { ansi: wrapAnsi16(ansi2ansi, 0) }; styles.color.ansi256 = { ansi256: wrapAnsi256(ansi2ansi, 0) }; styles.color.ansi16m = { rgb: wrapAnsi16m(rgb2rgb, 0) }; styles.bgColor.ansi = { ansi: wrapAnsi16(ansi2ansi, 10) }; styles.bgColor.ansi256 = { ansi256: wrapAnsi256(ansi2ansi, 10) }; styles.bgColor.ansi16m = { rgb: wrapAnsi16m(rgb2rgb, 10) }; for (let key of Object.keys(colorConvert)) { if (typeof colorConvert[key] !== "object") { continue; } const suite = colorConvert[key]; if (key === "ansi16") { key = "ansi"; } if ("ansi16" in suite) { styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); } if ("ansi256" in suite) { styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); } if ("rgb" in suite) { styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); } } return styles; } Object.defineProperty(module2, "exports", { enumerable: true, get: assembleStyles }); } }); // ../../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js var require_has_flag2 = __commonJS2({ "../../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js"(exports2, module2) { "use strict"; module2.exports = (flag, argv) => { argv = argv || process.argv; const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; const pos = argv.indexOf(prefix + flag); const terminatorPos = argv.indexOf("--"); return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); }; } }); // ../../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js var require_supports_color2 = __commonJS2({ "../../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js"(exports2, module2) { "use strict"; var os4 = __require("os"); var hasFlag = require_has_flag2(); var env = process.env; var forceColor; if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) { forceColor = false; } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { forceColor = true; } if ("FORCE_COLOR" in env) { forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; } function translateLevel(level) { if (level === 0) { return false; } return { level, hasBasic: true, has256: level >= 2, has16m: level >= 3 }; } function supportsColor(stream) { if (forceColor === false) { return 0; } if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { return 3; } if (hasFlag("color=256")) { return 2; } if (stream && !stream.isTTY && forceColor !== true) { return 0; } const min = forceColor ? 1 : 0; if (process.platform === "win32") { const osRelease = os4.release().split("."); if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { return Number(osRelease[2]) >= 14931 ? 3 : 2; } return 1; } if ("CI" in env) { if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some((sign) => sign in env) || env.CI_NAME === "codeship") { return 1; } return min; } if ("TEAMCITY_VERSION" in env) { return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; } if (env.COLORTERM === "truecolor") { return 3; } if ("TERM_PROGRAM" in env) { const version2 = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); switch (env.TERM_PROGRAM) { case "iTerm.app": return version2 >= 3 ? 3 : 2; case "Apple_Terminal": return 2; } } if (/-256(color)?$/i.test(env.TERM)) { return 2; } if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { return 1; } if ("COLORTERM" in env) { return 1; } if (env.TERM === "dumb") { return min; } return min; } function getSupportLevel(stream) { const level = supportsColor(stream); return translateLevel(level); } module2.exports = { supportsColor: getSupportLevel, stdout: getSupportLevel(process.stdout), stderr: getSupportLevel(process.stderr) }; } }); // ../../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/templates.js var require_templates2 = __commonJS2({ "../../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/templates.js"(exports2, module2) { "use strict"; var TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; var ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi; var ESCAPES = /* @__PURE__ */ new Map([ ["n", "\n"], ["r", "\r"], ["t", " "], ["b", "\b"], ["f", "\f"], ["v", "\v"], ["0", "\0"], ["\\", "\\"], ["e", "\x1B"], ["a", "\x07"] ]); function unescape2(c) { if (c[0] === "u" && c.length === 5 || c[0] === "x" && c.length === 3) { return String.fromCharCode(parseInt(c.slice(1), 16)); } return ESCAPES.get(c) || c; } function parseArguments2(name, args2) { const results = []; const chunks = args2.trim().split(/\s*,\s*/g); let matches; for (const chunk of chunks) { if (!isNaN(chunk)) { results.push(Number(chunk)); } else if (matches = chunk.match(STRING_REGEX)) { results.push(matches[2].replace(ESCAPE_REGEX, (m, escape2, chr) => escape2 ? unescape2(escape2) : chr)); } else { throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); } } return results; } function parseStyle(style) { STYLE_REGEX.lastIndex = 0; const results = []; let matches; while ((matches = STYLE_REGEX.exec(style)) !== null) { const name = matches[1]; if (matches[2]) { const args2 = parseArguments2(name, matches[2]); results.push([name].concat(args2)); } else { results.push([name]); } } return results; } function buildStyle(chalk142, styles) { const enabled = {}; for (const layer of styles) { for (const style of layer.styles) { enabled[style[0]] = layer.inverse ? null : style.slice(1); } } let current = chalk142; for (const styleName of Object.keys(enabled)) { if (Array.isArray(enabled[styleName])) { if (!(styleName in current)) { throw new Error(`Unknown Chalk style: ${styleName}`); } if (enabled[styleName].length > 0) { current = current[styleName].apply(current, enabled[styleName]); } else { current = current[styleName]; } } } return current; } module2.exports = (chalk142, tmp) => { const styles = []; const chunks = []; let chunk = []; tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close2, chr) => { if (escapeChar) { chunk.push(unescape2(escapeChar)); } else if (style) { const str = chunk.join(""); chunk = []; chunks.push(styles.length === 0 ? str : buildStyle(chalk142, styles)(str)); styles.push({ inverse, styles: parseStyle(style) }); } else if (close2) { if (styles.length === 0) { throw new Error("Found extraneous } in Chalk template literal"); } chunks.push(buildStyle(chalk142, styles)(chunk.join(""))); chunk = []; styles.pop(); } else { chunk.push(chr); } }); chunks.push(chunk.join("")); if (styles.length > 0) { const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`; throw new Error(errMsg); } return chunks.join(""); }; } }); // ../../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/index.js var require_chalk = __commonJS2({ "../../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/index.js"(exports2, module2) { "use strict"; var escapeStringRegexp = require_escape_string_regexp(); var ansiStyles = require_ansi_styles2(); var stdoutColor = require_supports_color2().stdout; var template = require_templates2(); var isSimpleWindowsTerm = process.platform === "win32" && !(process.env.TERM || "").toLowerCase().startsWith("xterm"); var levelMapping = ["ansi", "ansi", "ansi256", "ansi16m"]; var skipModels = /* @__PURE__ */ new Set(["gray"]); var styles = /* @__PURE__ */ Object.create(null); function applyOptions(obj, options) { options = options || {}; const scLevel = stdoutColor ? stdoutColor.level : 0; obj.level = options.level === void 0 ? scLevel : options.level; obj.enabled = "enabled" in options ? options.enabled : obj.level > 0; } function Chalk(options) { if (!this || !(this instanceof Chalk) || this.template) { const chalk142 = {}; applyOptions(chalk142, options); chalk142.template = function() { const args2 = [].slice.call(arguments); return chalkTag.apply(null, [chalk142.template].concat(args2)); }; Object.setPrototypeOf(chalk142, Chalk.prototype); Object.setPrototypeOf(chalk142.template, chalk142); chalk142.template.constructor = Chalk; return chalk142.template; } applyOptions(this, options); } if (isSimpleWindowsTerm) { ansiStyles.blue.open = "\x1B[94m"; } for (const key of Object.keys(ansiStyles)) { ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), "g"); styles[key] = { get() { const codes = ansiStyles[key]; return build2.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); } }; } styles.visible = { get() { return build2.call(this, this._styles || [], true, "visible"); } }; ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), "g"); for (const model of Object.keys(ansiStyles.color.ansi)) { if (skipModels.has(model)) { continue; } styles[model] = { get() { const level = this.level; return function() { const open10 = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); const codes = { open: open10, close: ansiStyles.color.close, closeRe: ansiStyles.color.closeRe }; return build2.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); }; } }; } ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), "g"); for (const model of Object.keys(ansiStyles.bgColor.ansi)) { if (skipModels.has(model)) { continue; } const bgModel = "bg" + model[0].toUpperCase() + model.slice(1); styles[bgModel] = { get() { const level = this.level; return function() { const open10 = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); const codes = { open: open10, close: ansiStyles.bgColor.close, closeRe: ansiStyles.bgColor.closeRe }; return build2.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); }; } }; } var proto = Object.defineProperties(() => { }, styles); function build2(_styles, _empty, key) { const builder = function() { return applyStyle.apply(builder, arguments); }; builder._styles = _styles; builder._empty = _empty; const self2 = this; Object.defineProperty(builder, "level", { enumerable: true, get() { return self2.level; }, set(level) { self2.level = level; } }); Object.defineProperty(builder, "enabled", { enumerable: true, get() { return self2.enabled; }, set(enabled) { self2.enabled = enabled; } }); builder.hasGrey = this.hasGrey || key === "gray" || key === "grey"; builder.__proto__ = proto; return builder; } function applyStyle() { const args2 = arguments; const argsLen = args2.length; let str = String(arguments[0]); if (argsLen === 0) { return ""; } if (argsLen > 1) { for (let a = 1; a < argsLen; a++) { str += " " + args2[a]; } } if (!this.enabled || this.level <= 0 || !str) { return this._empty ? "" : str; } const originalDim = ansiStyles.dim.open; if (isSimpleWindowsTerm && this.hasGrey) { ansiStyles.dim.open = ""; } for (const code2 of this._styles.slice().reverse()) { str = code2.open + str.replace(code2.closeRe, code2.open) + code2.close; str = str.replace(/\r?\n/g, `${code2.close}$&${code2.open}`); } ansiStyles.dim.open = originalDim; return str; } function chalkTag(chalk142, strings) { if (!Array.isArray(strings)) { return [].slice.call(arguments, 1).join(" "); } const args2 = [].slice.call(arguments, 2); const parts = [strings.raw[0]]; for (let i = 1; i < strings.length; i++) { parts.push(String(args2[i - 1]).replace(/[{}\\]/g, "\\$&")); parts.push(String(strings.raw[i])); } return template(chalk142, parts.join("")); } Object.defineProperties(Chalk.prototype, styles); module2.exports = Chalk(); module2.exports.supportsColor = stdoutColor; module2.exports.default = module2.exports; } }); // ../../node_modules/.pnpm/mimic-fn@1.2.0/node_modules/mimic-fn/index.js var require_mimic_fn = __commonJS2({ "../../node_modules/.pnpm/mimic-fn@1.2.0/node_modules/mimic-fn/index.js"(exports2, module2) { "use strict"; module2.exports = (to, from) => { for (const prop of Object.getOwnPropertyNames(from).concat(Object.getOwnPropertySymbols(from))) { Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop)); } return to; }; } }); // ../../node_modules/.pnpm/onetime@2.0.1/node_modules/onetime/index.js var require_onetime = __commonJS2({ "../../node_modules/.pnpm/onetime@2.0.1/node_modules/onetime/index.js"(exports2, module2) { "use strict"; var mimicFn = require_mimic_fn(); module2.exports = (fn2, opts) => { if (opts === true) { throw new TypeError("The second argument is now an options object"); } if (typeof fn2 !== "function") { throw new TypeError("Expected a function"); } opts = opts || {}; let ret; let called = false; const fnName = fn2.displayName || fn2.name || ""; const onetime = function() { if (called) { if (opts.throw === true) { throw new Error(`Function \`${fnName}\` can only be called once`); } return ret; } called = true; ret = fn2.apply(this, arguments); fn2 = null; return ret; }; mimicFn(onetime, fn2); return onetime; }; } }); // ../../node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js var require_signals = __commonJS2({ "../../node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js"(exports2, module2) { module2.exports = [ "SIGABRT", "SIGALRM", "SIGHUP", "SIGINT", "SIGTERM" ]; if (process.platform !== "win32") { module2.exports.push( "SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT" // should detect profiler and enable/disable accordingly. // see #21 // 'SIGPROF' ); } if (process.platform === "linux") { module2.exports.push( "SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT", "SIGUNUSED" ); } } }); // ../../node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js var require_signal_exit = __commonJS2({ "../../node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js"(exports2, module2) { var process4 = global.process; var processOk2 = function(process5) { return process5 && typeof process5 === "object" && typeof process5.removeListener === "function" && typeof process5.emit === "function" && typeof process5.reallyExit === "function" && typeof process5.listeners === "function" && typeof process5.kill === "function" && typeof process5.pid === "number" && typeof process5.on === "function"; }; if (!processOk2(process4)) { module2.exports = function() { return function() { }; }; } else { assert = __require("assert"); signals2 = require_signals(); isWin = /^win/i.test(process4.platform); EE = __require("events"); if (typeof EE !== "function") { EE = EE.EventEmitter; } if (process4.__signal_exit_emitter__) { emitter = process4.__signal_exit_emitter__; } else { emitter = process4.__signal_exit_emitter__ = new EE(); emitter.count = 0; emitter.emitted = {}; } if (!emitter.infinite) { emitter.setMaxListeners(Infinity); emitter.infinite = true; } module2.exports = function(cb, opts) { if (!processOk2(global.process)) { return function() { }; } assert.equal(typeof cb, "function", "a callback must be provided for exit handler"); if (loaded === false) { load3(); } var ev = "exit"; if (opts && opts.alwaysLast) { ev = "afterexit"; } var remove7 = function() { emitter.removeListener(ev, cb); if (emitter.listeners("exit").length === 0 && emitter.listeners("afterexit").length === 0) { unload2(); } }; emitter.on(ev, cb); return remove7; }; unload2 = function unload3() { if (!loaded || !processOk2(global.process)) { return; } loaded = false; signals2.forEach(function(sig) { try { process4.removeListener(sig, sigListeners[sig]); } catch (er) { } }); process4.emit = originalProcessEmit; process4.reallyExit = originalProcessReallyExit; emitter.count -= 1; }; module2.exports.unload = unload2; emit = function emit2(event, code2, signal) { if (emitter.emitted[event]) { return; } emitter.emitted[event] = true; emitter.emit(event, code2, signal); }; sigListeners = {}; signals2.forEach(function(sig) { sigListeners[sig] = function listener() { if (!processOk2(global.process)) { return; } var listeners = process4.listeners(sig); if (listeners.length === emitter.count) { unload2(); emit("exit", null, sig); emit("afterexit", null, sig); if (isWin && sig === "SIGHUP") { sig = "SIGINT"; } process4.kill(process4.pid, sig); } }; }); module2.exports.signals = function() { return signals2; }; loaded = false; load3 = function load4() { if (loaded || !processOk2(global.process)) { return; } loaded = true; emitter.count += 1; signals2 = signals2.filter(function(sig) { try { process4.on(sig, sigListeners[sig]); return true; } catch (er) { return false; } }); process4.emit = processEmit; process4.reallyExit = processReallyExit; }; module2.exports.load = load3; originalProcessReallyExit = process4.reallyExit; processReallyExit = function processReallyExit2(code2) { if (!processOk2(global.process)) { return; } process4.exitCode = code2 || /* istanbul ignore next */ 0; emit("exit", process4.exitCode, null); emit("afterexit", process4.exitCode, null); originalProcessReallyExit.call(process4, process4.exitCode); }; originalProcessEmit = process4.emit; processEmit = function processEmit2(ev, arg2) { if (ev === "exit" && processOk2(global.process)) { if (arg2 !== void 0) { process4.exitCode = arg2; } var ret = originalProcessEmit.apply(this, arguments); emit("exit", process4.exitCode, null); emit("afterexit", process4.exitCode, null); return ret; } else { return originalProcessEmit.apply(this, arguments); } }; } var assert; var signals2; var isWin; var EE; var emitter; var unload2; var emit; var sigListeners; var loaded; var load3; var originalProcessReallyExit; var processReallyExit; var originalProcessEmit; var processEmit; } }); // ../../node_modules/.pnpm/restore-cursor@2.0.0/node_modules/restore-cursor/index.js var require_restore_cursor = __commonJS2({ "../../node_modules/.pnpm/restore-cursor@2.0.0/node_modules/restore-cursor/index.js"(exports2, module2) { "use strict"; var onetime = require_onetime(); var signalExit = require_signal_exit(); module2.exports = onetime(() => { signalExit(() => { process.stderr.write("\x1B[?25h"); }, { alwaysLast: true }); }); } }); // ../../node_modules/.pnpm/cli-cursor@2.1.0/node_modules/cli-cursor/index.js var require_cli_cursor = __commonJS2({ "../../node_modules/.pnpm/cli-cursor@2.1.0/node_modules/cli-cursor/index.js"(exports2) { "use strict"; var restoreCursor = require_restore_cursor(); var hidden = false; exports2.show = (stream) => { const s = stream || process.stderr; if (!s.isTTY) { return; } hidden = false; s.write("\x1B[?25h"); }; exports2.hide = (stream) => { const s = stream || process.stderr; if (!s.isTTY) { return; } restoreCursor(); hidden = true; s.write("\x1B[?25l"); }; exports2.toggle = (force, stream) => { if (force !== void 0) { hidden = force; } if (hidden) { exports2.show(stream); } else { exports2.hide(stream); } }; } }); // ../../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json var require_spinners = __commonJS2({ "../../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json"(exports2, module2) { module2.exports = { dots: { interval: 80, frames: [ "\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F" ] }, dots2: { interval: 80, frames: [ "\u28FE", "\u28FD", "\u28FB", "\u28BF", "\u287F", "\u28DF", "\u28EF", "\u28F7" ] }, dots3: { interval: 80, frames: [ "\u280B", "\u2819", "\u281A", "\u281E", "\u2816", "\u2826", "\u2834", "\u2832", "\u2833", "\u2813" ] }, dots4: { interval: 80, frames: [ "\u2804", "\u2806", "\u2807", "\u280B", "\u2819", "\u2838", "\u2830", "\u2820", "\u2830", "\u2838", "\u2819", "\u280B", "\u2807", "\u2806" ] }, dots5: { interval: 80, frames: [ "\u280B", "\u2819", "\u281A", "\u2812", "\u2802", "\u2802", "\u2812", "\u2832", "\u2834", "\u2826", "\u2816", "\u2812", "\u2810", "\u2810", "\u2812", "\u2813", "\u280B" ] }, dots6: { interval: 80, frames: [ "\u2801", "\u2809", "\u2819", "\u281A", "\u2812", "\u2802", "\u2802", "\u2812", "\u2832", "\u2834", "\u2824", "\u2804", "\u2804", "\u2824", "\u2834", "\u2832", "\u2812", "\u2802", "\u2802", "\u2812", "\u281A", "\u2819", "\u2809", "\u2801" ] }, dots7: { interval: 80, frames: [ "\u2808", "\u2809", "\u280B", "\u2813", "\u2812", "\u2810", "\u2810", "\u2812", "\u2816", "\u2826", "\u2824", "\u2820", "\u2820", "\u2824", "\u2826", "\u2816", "\u2812", "\u2810", "\u2810", "\u2812", "\u2813", "\u280B", "\u2809", "\u2808" ] }, dots8: { interval: 80, frames: [ "\u2801", "\u2801", "\u2809", "\u2819", "\u281A", "\u2812", "\u2802", "\u2802", "\u2812", "\u2832", "\u2834", "\u2824", "\u2804", "\u2804", "\u2824", "\u2820", "\u2820", "\u2824", "\u2826", "\u2816", "\u2812", "\u2810", "\u2810", "\u2812", "\u2813", "\u280B", "\u2809", "\u2808", "\u2808" ] }, dots9: { interval: 80, frames: [ "\u28B9", "\u28BA", "\u28BC", "\u28F8", "\u28C7", "\u2867", "\u2857", "\u284F" ] }, dots10: { interval: 80, frames: [ "\u2884", "\u2882", "\u2881", "\u2841", "\u2848", "\u2850", "\u2860" ] }, dots11: { interval: 100, frames: [ "\u2801", "\u2802", "\u2804", "\u2840", "\u2880", "\u2820", "\u2810", "\u2808" ] }, dots12: { interval: 80, frames: [ "\u2880\u2800", "\u2840\u2800", "\u2804\u2800", "\u2882\u2800", "\u2842\u2800", "\u2805\u2800", "\u2883\u2800", "\u2843\u2800", "\u280D\u2800", "\u288B\u2800", "\u284B\u2800", "\u280D\u2801", "\u288B\u2801", "\u284B\u2801", "\u280D\u2809", "\u280B\u2809", "\u280B\u2809", "\u2809\u2819", "\u2809\u2819", "\u2809\u2829", "\u2808\u2899", "\u2808\u2859", "\u2888\u2829", "\u2840\u2899", "\u2804\u2859", "\u2882\u2829", "\u2842\u2898", "\u2805\u2858", "\u2883\u2828", "\u2843\u2890", "\u280D\u2850", "\u288B\u2820", "\u284B\u2880", "\u280D\u2841", "\u288B\u2801", "\u284B\u2801", "\u280D\u2809", "\u280B\u2809", "\u280B\u2809", "\u2809\u2819", "\u2809\u2819", "\u2809\u2829", "\u2808\u2899", "\u2808\u2859", "\u2808\u2829", "\u2800\u2899", "\u2800\u2859", "\u2800\u2829", "\u2800\u2898", "\u2800\u2858", "\u2800\u2828", "\u2800\u2890", "\u2800\u2850", "\u2800\u2820", "\u2800\u2880", "\u2800\u2840" ] }, dots13: { interval: 80, frames: [ "\u28FC", "\u28F9", "\u28BB", "\u283F", "\u285F", "\u28CF", "\u28E7", "\u28F6" ] }, dots8Bit: { interval: 80, frames: [ "\u2800", "\u2801", "\u2802", "\u2803", "\u2804", "\u2805", "\u2806", "\u2807", "\u2840", "\u2841", "\u2842", "\u2843", "\u2844", "\u2845", "\u2846", "\u2847", "\u2808", "\u2809", "\u280A", "\u280B", "\u280C", "\u280D", "\u280E", "\u280F", "\u2848", "\u2849", "\u284A", "\u284B", "\u284C", "\u284D", "\u284E", "\u284F", "\u2810", "\u2811", "\u2812", "\u2813", "\u2814", "\u2815", "\u2816", "\u2817", "\u2850", "\u2851", "\u2852", "\u2853", "\u2854", "\u2855", "\u2856", "\u2857", "\u2818", "\u2819", "\u281A", "\u281B", "\u281C", "\u281D", "\u281E", "\u281F", "\u2858", "\u2859", "\u285A", "\u285B", "\u285C", "\u285D", "\u285E", "\u285F", "\u2820", "\u2821", "\u2822", "\u2823", "\u2824", "\u2825", "\u2826", "\u2827", "\u2860", "\u2861", "\u2862", "\u2863", "\u2864", "\u2865", "\u2866", "\u2867", "\u2828", "\u2829", "\u282A", "\u282B", "\u282C", "\u282D", "\u282E", "\u282F", "\u2868", "\u2869", "\u286A", "\u286B", "\u286C", "\u286D", "\u286E", "\u286F", "\u2830", "\u2831", "\u2832", "\u2833", "\u2834", "\u2835", "\u2836", "\u2837", "\u2870", "\u2871", "\u2872", "\u2873", "\u2874", "\u2875", "\u2876", "\u2877", "\u2838", "\u2839", "\u283A", "\u283B", "\u283C", "\u283D", "\u283E", "\u283F", "\u2878", "\u2879", "\u287A", "\u287B", "\u287C", "\u287D", "\u287E", "\u287F", "\u2880", "\u2881", "\u2882", "\u2883", "\u2884", "\u2885", "\u2886", "\u2887", "\u28C0", "\u28C1", "\u28C2", "\u28C3", "\u28C4", "\u28C5", "\u28C6", "\u28C7", "\u2888", "\u2889", "\u288A", "\u288B", "\u288C", "\u288D", "\u288E", "\u288F", "\u28C8", "\u28C9", "\u28CA", "\u28CB", "\u28CC", "\u28CD", "\u28CE", "\u28CF", "\u2890", "\u2891", "\u2892", "\u2893", "\u2894", "\u2895", "\u2896", "\u2897", "\u28D0", "\u28D1", "\u28D2", "\u28D3", "\u28D4", "\u28D5", "\u28D6", "\u28D7", "\u2898", "\u2899", "\u289A", "\u289B", "\u289C", "\u289D", "\u289E", "\u289F", "\u28D8", "\u28D9", "\u28DA", "\u28DB", "\u28DC", "\u28DD", "\u28DE", "\u28DF", "\u28A0", "\u28A1", "\u28A2", "\u28A3", "\u28A4", "\u28A5", "\u28A6", "\u28A7", "\u28E0", "\u28E1", "\u28E2", "\u28E3", "\u28E4", "\u28E5", "\u28E6", "\u28E7", "\u28A8", "\u28A9", "\u28AA", "\u28AB", "\u28AC", "\u28AD", "\u28AE", "\u28AF", "\u28E8", "\u28E9", "\u28EA", "\u28EB", "\u28EC", "\u28ED", "\u28EE", "\u28EF", "\u28B0", "\u28B1", "\u28B2", "\u28B3", "\u28B4", "\u28B5", "\u28B6", "\u28B7", "\u28F0", "\u28F1", "\u28F2", "\u28F3", "\u28F4", "\u28F5", "\u28F6", "\u28F7", "\u28B8", "\u28B9", "\u28BA", "\u28BB", "\u28BC", "\u28BD", "\u28BE", "\u28BF", "\u28F8", "\u28F9", "\u28FA", "\u28FB", "\u28FC", "\u28FD", "\u28FE", "\u28FF" ] }, sand: { interval: 80, frames: [ "\u2801", "\u2802", "\u2804", "\u2840", "\u2848", "\u2850", "\u2860", "\u28C0", "\u28C1", "\u28C2", "\u28C4", "\u28CC", "\u28D4", "\u28E4", "\u28E5", "\u28E6", "\u28EE", "\u28F6", "\u28F7", "\u28FF", "\u287F", "\u283F", "\u289F", "\u281F", "\u285B", "\u281B", "\u282B", "\u288B", "\u280B", "\u280D", "\u2849", "\u2809", "\u2811", "\u2821", "\u2881" ] }, line: { interval: 130, frames: [ "-", "\\", "|", "/" ] }, line2: { interval: 100, frames: [ "\u2802", "-", "\u2013", "\u2014", "\u2013", "-" ] }, pipe: { interval: 100, frames: [ "\u2524", "\u2518", "\u2534", "\u2514", "\u251C", "\u250C", "\u252C", "\u2510" ] }, simpleDots: { interval: 400, frames: [ ". ", ".. ", "...", " " ] }, simpleDotsScrolling: { interval: 200, frames: [ ". ", ".. ", "...", " ..", " .", " " ] }, star: { interval: 70, frames: [ "\u2736", "\u2738", "\u2739", "\u273A", "\u2739", "\u2737" ] }, star2: { interval: 80, frames: [ "+", "x", "*" ] }, flip: { interval: 70, frames: [ "_", "_", "_", "-", "`", "`", "'", "\xB4", "-", "_", "_", "_" ] }, hamburger: { interval: 100, frames: [ "\u2631", "\u2632", "\u2634" ] }, growVertical: { interval: 120, frames: [ "\u2581", "\u2583", "\u2584", "\u2585", "\u2586", "\u2587", "\u2586", "\u2585", "\u2584", "\u2583" ] }, growHorizontal: { interval: 120, frames: [ "\u258F", "\u258E", "\u258D", "\u258C", "\u258B", "\u258A", "\u2589", "\u258A", "\u258B", "\u258C", "\u258D", "\u258E" ] }, balloon: { interval: 140, frames: [ " ", ".", "o", "O", "@", "*", " " ] }, balloon2: { interval: 120, frames: [ ".", "o", "O", "\xB0", "O", "o", "." ] }, noise: { interval: 100, frames: [ "\u2593", "\u2592", "\u2591" ] }, bounce: { interval: 120, frames: [ "\u2801", "\u2802", "\u2804", "\u2802" ] }, boxBounce: { interval: 120, frames: [ "\u2596", "\u2598", "\u259D", "\u2597" ] }, boxBounce2: { interval: 100, frames: [ "\u258C", "\u2580", "\u2590", "\u2584" ] }, triangle: { interval: 50, frames: [ "\u25E2", "\u25E3", "\u25E4", "\u25E5" ] }, binary: { interval: 80, frames: [ "010010", "001100", "100101", "111010", "111101", "010111", "101011", "111000", "110011", "110101" ] }, arc: { interval: 100, frames: [ "\u25DC", "\u25E0", "\u25DD", "\u25DE", "\u25E1", "\u25DF" ] }, circle: { interval: 120, frames: [ "\u25E1", "\u2299", "\u25E0" ] }, squareCorners: { interval: 180, frames: [ "\u25F0", "\u25F3", "\u25F2", "\u25F1" ] }, circleQuarters: { interval: 120, frames: [ "\u25F4", "\u25F7", "\u25F6", "\u25F5" ] }, circleHalves: { interval: 50, frames: [ "\u25D0", "\u25D3", "\u25D1", "\u25D2" ] }, squish: { interval: 100, frames: [ "\u256B", "\u256A" ] }, toggle: { interval: 250, frames: [ "\u22B6", "\u22B7" ] }, toggle2: { interval: 80, frames: [ "\u25AB", "\u25AA" ] }, toggle3: { interval: 120, frames: [ "\u25A1", "\u25A0" ] }, toggle4: { interval: 100, frames: [ "\u25A0", "\u25A1", "\u25AA", "\u25AB" ] }, toggle5: { interval: 100, frames: [ "\u25AE", "\u25AF" ] }, toggle6: { interval: 300, frames: [ "\u101D", "\u1040" ] }, toggle7: { interval: 80, frames: [ "\u29BE", "\u29BF" ] }, toggle8: { interval: 100, frames: [ "\u25CD", "\u25CC" ] }, toggle9: { interval: 100, frames: [ "\u25C9", "\u25CE" ] }, toggle10: { interval: 100, frames: [ "\u3282", "\u3280", "\u3281" ] }, toggle11: { interval: 50, frames: [ "\u29C7", "\u29C6" ] }, toggle12: { interval: 120, frames: [ "\u2617", "\u2616" ] }, toggle13: { interval: 80, frames: [ "=", "*", "-" ] }, arrow: { interval: 100, frames: [ "\u2190", "\u2196", "\u2191", "\u2197", "\u2192", "\u2198", "\u2193", "\u2199" ] }, arrow2: { interval: 80, frames: [ "\u2B06\uFE0F ", "\u2197\uFE0F ", "\u27A1\uFE0F ", "\u2198\uFE0F ", "\u2B07\uFE0F ", "\u2199\uFE0F ", "\u2B05\uFE0F ", "\u2196\uFE0F " ] }, arrow3: { interval: 120, frames: [ "\u25B9\u25B9\u25B9\u25B9\u25B9", "\u25B8\u25B9\u25B9\u25B9\u25B9", "\u25B9\u25B8\u25B9\u25B9\u25B9", "\u25B9\u25B9\u25B8\u25B9\u25B9", "\u25B9\u25B9\u25B9\u25B8\u25B9", "\u25B9\u25B9\u25B9\u25B9\u25B8" ] }, bouncingBar: { interval: 80, frames: [ "[ ]", "[= ]", "[== ]", "[=== ]", "[====]", "[ ===]", "[ ==]", "[ =]", "[ ]", "[ =]", "[ ==]", "[ ===]", "[====]", "[=== ]", "[== ]", "[= ]" ] }, bouncingBall: { interval: 80, frames: [ "( \u25CF )", "( \u25CF )", "( \u25CF )", "( \u25CF )", "( \u25CF)", "( \u25CF )", "( \u25CF )", "( \u25CF )", "( \u25CF )", "(\u25CF )" ] }, smiley: { interval: 200, frames: [ "\u{1F604} ", "\u{1F61D} " ] }, monkey: { interval: 300, frames: [ "\u{1F648} ", "\u{1F648} ", "\u{1F649} ", "\u{1F64A} " ] }, hearts: { interval: 100, frames: [ "\u{1F49B} ", "\u{1F499} ", "\u{1F49C} ", "\u{1F49A} ", "\u2764\uFE0F " ] }, clock: { interval: 100, frames: [ "\u{1F55B} ", "\u{1F550} ", "\u{1F551} ", "\u{1F552} ", "\u{1F553} ", "\u{1F554} ", "\u{1F555} ", "\u{1F556} ", "\u{1F557} ", "\u{1F558} ", "\u{1F559} ", "\u{1F55A} " ] }, earth: { interval: 180, frames: [ "\u{1F30D} ", "\u{1F30E} ", "\u{1F30F} " ] }, material: { interval: 17, frames: [ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581", "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581", "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581", "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581", "\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581", "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581", "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581", "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581", "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588", "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588", "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588", "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588", "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588", "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588", "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588", "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588", "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581", "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581", "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581", "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581", "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581", "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581" ] }, moon: { interval: 80, frames: [ "\u{1F311} ", "\u{1F312} ", "\u{1F313} ", "\u{1F314} ", "\u{1F315} ", "\u{1F316} ", "\u{1F317} ", "\u{1F318} " ] }, runner: { interval: 140, frames: [ "\u{1F6B6} ", "\u{1F3C3} " ] }, pong: { interval: 80, frames: [ "\u2590\u2802 \u258C", "\u2590\u2808 \u258C", "\u2590 \u2802 \u258C", "\u2590 \u2820 \u258C", "\u2590 \u2840 \u258C", "\u2590 \u2820 \u258C", "\u2590 \u2802 \u258C", "\u2590 \u2808 \u258C", "\u2590 \u2802 \u258C", "\u2590 \u2820 \u258C", "\u2590 \u2840 \u258C", "\u2590 \u2820 \u258C", "\u2590 \u2802 \u258C", "\u2590 \u2808 \u258C", "\u2590 \u2802\u258C", "\u2590 \u2820\u258C", "\u2590 \u2840\u258C", "\u2590 \u2820 \u258C", "\u2590 \u2802 \u258C", "\u2590 \u2808 \u258C", "\u2590 \u2802 \u258C", "\u2590 \u2820 \u258C", "\u2590 \u2840 \u258C", "\u2590 \u2820 \u258C", "\u2590 \u2802 \u258C", "\u2590 \u2808 \u258C", "\u2590 \u2802 \u258C", "\u2590 \u2820 \u258C", "\u2590 \u2840 \u258C", "\u2590\u2820 \u258C" ] }, shark: { interval: 120, frames: [ "\u2590|\\____________\u258C", "\u2590_|\\___________\u258C", "\u2590__|\\__________\u258C", "\u2590___|\\_________\u258C", "\u2590____|\\________\u258C", "\u2590_____|\\_______\u258C", "\u2590______|\\______\u258C", "\u2590_______|\\_____\u258C", "\u2590________|\\____\u258C", "\u2590_________|\\___\u258C", "\u2590__________|\\__\u258C", "\u2590___________|\\_\u258C", "\u2590____________|\\\u258C", "\u2590____________/|\u258C", "\u2590___________/|_\u258C", "\u2590__________/|__\u258C", "\u2590_________/|___\u258C", "\u2590________/|____\u258C", "\u2590_______/|_____\u258C", "\u2590______/|______\u258C", "\u2590_____/|_______\u258C", "\u2590____/|________\u258C", "\u2590___/|_________\u258C", "\u2590__/|__________\u258C", "\u2590_/|___________\u258C", "\u2590/|____________\u258C" ] }, dqpb: { interval: 100, frames: [ "d", "q", "p", "b" ] }, weather: { interval: 100, frames: [ "\u2600\uFE0F ", "\u2600\uFE0F ", "\u2600\uFE0F ", "\u{1F324} ", "\u26C5\uFE0F ", "\u{1F325} ", "\u2601\uFE0F ", "\u{1F327} ", "\u{1F328} ", "\u{1F327} ", "\u{1F328} ", "\u{1F327} ", "\u{1F328} ", "\u26C8 ", "\u{1F328} ", "\u{1F327} ", "\u{1F328} ", "\u2601\uFE0F ", "\u{1F325} ", "\u26C5\uFE0F ", "\u{1F324} ", "\u2600\uFE0F ", "\u2600\uFE0F " ] }, christmas: { interval: 400, frames: [ "\u{1F332}", "\u{1F384}" ] }, grenade: { interval: 80, frames: [ "\u060C ", "\u2032 ", " \xB4 ", " \u203E ", " \u2E0C", " \u2E0A", " |", " \u204E", " \u2055", " \u0DF4 ", " \u2053", " ", " ", " " ] }, point: { interval: 125, frames: [ "\u2219\u2219\u2219", "\u25CF\u2219\u2219", "\u2219\u25CF\u2219", "\u2219\u2219\u25CF", "\u2219\u2219\u2219" ] }, layer: { interval: 150, frames: [ "-", "=", "\u2261" ] }, betaWave: { interval: 80, frames: [ "\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2", "\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2", "\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2", "\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2", "\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2", "\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2", "\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1" ] }, fingerDance: { interval: 160, frames: [ "\u{1F918} ", "\u{1F91F} ", "\u{1F596} ", "\u270B ", "\u{1F91A} ", "\u{1F446} " ] }, fistBump: { interval: 80, frames: [ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ", "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ", "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ", "\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ", "\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ", "\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ", "\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 " ] }, soccerHeader: { interval: 80, frames: [ " \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ", "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} " ] }, mindblown: { interval: 160, frames: [ "\u{1F610} ", "\u{1F610} ", "\u{1F62E} ", "\u{1F62E} ", "\u{1F626} ", "\u{1F626} ", "\u{1F627} ", "\u{1F627} ", "\u{1F92F} ", "\u{1F4A5} ", "\u2728 ", "\u3000 ", "\u3000 ", "\u3000 " ] }, speaker: { interval: 160, frames: [ "\u{1F508} ", "\u{1F509} ", "\u{1F50A} ", "\u{1F509} " ] }, orangePulse: { interval: 100, frames: [ "\u{1F538} ", "\u{1F536} ", "\u{1F7E0} ", "\u{1F7E0} ", "\u{1F536} " ] }, bluePulse: { interval: 100, frames: [ "\u{1F539} ", "\u{1F537} ", "\u{1F535} ", "\u{1F535} ", "\u{1F537} " ] }, orangeBluePulse: { interval: 100, frames: [ "\u{1F538} ", "\u{1F536} ", "\u{1F7E0} ", "\u{1F7E0} ", "\u{1F536} ", "\u{1F539} ", "\u{1F537} ", "\u{1F535} ", "\u{1F535} ", "\u{1F537} " ] }, timeTravel: { interval: 100, frames: [ "\u{1F55B} ", "\u{1F55A} ", "\u{1F559} ", "\u{1F558} ", "\u{1F557} ", "\u{1F556} ", "\u{1F555} ", "\u{1F554} ", "\u{1F553} ", "\u{1F552} ", "\u{1F551} ", "\u{1F550} " ] }, aesthetic: { interval: 80, frames: [ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1", "\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1", "\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1", "\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1", "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1", "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1", "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0", "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1" ] }, dwarfFortress: { interval: 80, frames: [ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", "\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A \u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ", " \u263A \u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2588\u2588\xA3\xA3\xA3 ", " \u263A\u2593\u2588\xA3\xA3\xA3 ", " \u263A\u2593\u2588\xA3\xA3\xA3 ", " \u263A\u2592\u2588\xA3\xA3\xA3 ", " \u263A\u2592\u2588\xA3\xA3\xA3 ", " \u263A\u2591\u2588\xA3\xA3\xA3 ", " \u263A\u2591\u2588\xA3\xA3\xA3 ", " \u263A \u2588\xA3\xA3\xA3 ", " \u263A\u2588\xA3\xA3\xA3 ", " \u263A\u2588\xA3\xA3\xA3 ", " \u263A\u2593\xA3\xA3\xA3 ", " \u263A\u2593\xA3\xA3\xA3 ", " \u263A\u2592\xA3\xA3\xA3 ", " \u263A\u2592\xA3\xA3\xA3 ", " \u263A\u2591\xA3\xA3\xA3 ", " \u263A\u2591\xA3\xA3\xA3 ", " \u263A \xA3\xA3\xA3 ", " \u263A\xA3\xA3\xA3 ", " \u263A\xA3\xA3\xA3 ", " \u263A\u2593\xA3\xA3 ", " \u263A\u2593\xA3\xA3 ", " \u263A\u2592\xA3\xA3 ", " \u263A\u2592\xA3\xA3 ", " \u263A\u2591\xA3\xA3 ", " \u263A\u2591\xA3\xA3 ", " \u263A \xA3\xA3 ", " \u263A\xA3\xA3 ", " \u263A\xA3\xA3 ", " \u263A\u2593\xA3 ", " \u263A\u2593\xA3 ", " \u263A\u2592\xA3 ", " \u263A\u2592\xA3 ", " \u263A\u2591\xA3 ", " \u263A\u2591\xA3 ", " \u263A \xA3 ", " \u263A\xA3 ", " \u263A\xA3 ", " \u263A\u2593 ", " \u263A\u2593 ", " \u263A\u2592 ", " \u263A\u2592 ", " \u263A\u2591 ", " \u263A\u2591 ", " \u263A ", " \u263A &", " \u263A \u263C&", " \u263A \u263C &", " \u263A\u263C &", " \u263A\u263C & ", " \u203C & ", " \u263A & ", " \u203C & ", " \u263A & ", " \u203C & ", " \u263A & ", "\u203C & ", " & ", " & ", " & \u2591 ", " & \u2592 ", " & \u2593 ", " & \xA3 ", " & \u2591\xA3 ", " & \u2592\xA3 ", " & \u2593\xA3 ", " & \xA3\xA3 ", " & \u2591\xA3\xA3 ", " & \u2592\xA3\xA3 ", "& \u2593\xA3\xA3 ", "& \xA3\xA3\xA3 ", " \u2591\xA3\xA3\xA3 ", " \u2592\xA3\xA3\xA3 ", " \u2593\xA3\xA3\xA3 ", " \u2588\xA3\xA3\xA3 ", " \u2591\u2588\xA3\xA3\xA3 ", " \u2592\u2588\xA3\xA3\xA3 ", " \u2593\u2588\xA3\xA3\xA3 ", " \u2588\u2588\xA3\xA3\xA3 ", " \u2591\u2588\u2588\xA3\xA3\xA3 ", " \u2592\u2588\u2588\xA3\xA3\xA3 ", " \u2593\u2588\u2588\xA3\xA3\xA3 ", " \u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2591\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2592\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2593\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ", " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 " ] } }; } }); // ../../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/index.js var require_cli_spinners = __commonJS2({ "../../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/index.js"(exports2, module2) { "use strict"; var spinners2 = Object.assign({}, require_spinners()); var spinnersList = Object.keys(spinners2); Object.defineProperty(spinners2, "random", { get() { const randomIndex = Math.floor(Math.random() * spinnersList.length); const spinnerName = spinnersList[randomIndex]; return spinners2[spinnerName]; } }); module2.exports = spinners2; } }); // ../../node_modules/.pnpm/log-symbols@2.2.0/node_modules/log-symbols/index.js var require_log_symbols = __commonJS2({ "../../node_modules/.pnpm/log-symbols@2.2.0/node_modules/log-symbols/index.js"(exports2, module2) { "use strict"; var chalk142 = require_chalk(); var isSupported = process.platform !== "win32" || process.env.CI || process.env.TERM === "xterm-256color"; var main19 = { info: chalk142.blue("\u2139"), success: chalk142.green("\u2714"), warning: chalk142.yellow("\u26A0"), error: chalk142.red("\u2716") }; var fallbacks = { info: chalk142.blue("i"), success: chalk142.green("\u221A"), warning: chalk142.yellow("\u203C"), error: chalk142.red("\xD7") }; module2.exports = isSupported ? main19 : fallbacks; } }); // ../../node_modules/.pnpm/ansi-regex@4.1.1/node_modules/ansi-regex/index.js var require_ansi_regex = __commonJS2({ "../../node_modules/.pnpm/ansi-regex@4.1.1/node_modules/ansi-regex/index.js"(exports2, module2) { "use strict"; module2.exports = (options) => { options = Object.assign({ onlyFirst: false }, options); const pattern = [ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))" ].join("|"); return new RegExp(pattern, options.onlyFirst ? void 0 : "g"); }; } }); // ../../node_modules/.pnpm/strip-ansi@5.2.0/node_modules/strip-ansi/index.js var require_strip_ansi = __commonJS2({ "../../node_modules/.pnpm/strip-ansi@5.2.0/node_modules/strip-ansi/index.js"(exports2, module2) { "use strict"; var ansiRegex = require_ansi_regex(); var stripAnsi7 = (string) => typeof string === "string" ? string.replace(ansiRegex(), "") : string; module2.exports = stripAnsi7; module2.exports.default = stripAnsi7; } }); // ../../node_modules/.pnpm/clone@1.0.4/node_modules/clone/clone.js var require_clone2 = __commonJS2({ "../../node_modules/.pnpm/clone@1.0.4/node_modules/clone/clone.js"(exports2, module2) { var clone = function() { "use strict"; function clone2(parent, circular, depth, prototype) { var filter; if (typeof circular === "object") { depth = circular.depth; prototype = circular.prototype; filter = circular.filter; circular = circular.circular; } var allParents = []; var allChildren = []; var useBuffer = typeof Buffer != "undefined"; if (typeof circular == "undefined") circular = true; if (typeof depth == "undefined") depth = Infinity; function _clone(parent2, depth2) { if (parent2 === null) return null; if (depth2 == 0) return parent2; var child; var proto; if (typeof parent2 != "object") { return parent2; } if (clone2.__isArray(parent2)) { child = []; } else if (clone2.__isRegExp(parent2)) { child = new RegExp(parent2.source, __getRegExpFlags(parent2)); if (parent2.lastIndex) child.lastIndex = parent2.lastIndex; } else if (clone2.__isDate(parent2)) { child = new Date(parent2.getTime()); } else if (useBuffer && Buffer.isBuffer(parent2)) { if (Buffer.allocUnsafe) { child = Buffer.allocUnsafe(parent2.length); } else { child = new Buffer(parent2.length); } parent2.copy(child); return child; } else { if (typeof prototype == "undefined") { proto = Object.getPrototypeOf(parent2); child = Object.create(proto); } else { child = Object.create(prototype); proto = prototype; } } if (circular) { var index = allParents.indexOf(parent2); if (index != -1) { return allChildren[index]; } allParents.push(parent2); allChildren.push(child); } for (var i in parent2) { var attrs; if (proto) { attrs = Object.getOwnPropertyDescriptor(proto, i); } if (attrs && attrs.set == null) { continue; } child[i] = _clone(parent2[i], depth2 - 1); } return child; } return _clone(parent, depth); } clone2.clonePrototype = function clonePrototype(parent) { if (parent === null) return null; var c = function() { }; c.prototype = parent; return new c(); }; function __objToStr(o) { return Object.prototype.toString.call(o); } ; clone2.__objToStr = __objToStr; function __isDate(o) { return typeof o === "object" && __objToStr(o) === "[object Date]"; } ; clone2.__isDate = __isDate; function __isArray(o) { return typeof o === "object" && __objToStr(o) === "[object Array]"; } ; clone2.__isArray = __isArray; function __isRegExp(o) { return typeof o === "object" && __objToStr(o) === "[object RegExp]"; } ; clone2.__isRegExp = __isRegExp; function __getRegExpFlags(re) { var flags = ""; if (re.global) flags += "g"; if (re.ignoreCase) flags += "i"; if (re.multiline) flags += "m"; return flags; } ; clone2.__getRegExpFlags = __getRegExpFlags; return clone2; }(); if (typeof module2 === "object" && module2.exports) { module2.exports = clone; } } }); // ../../node_modules/.pnpm/defaults@1.0.4/node_modules/defaults/index.js var require_defaults = __commonJS2({ "../../node_modules/.pnpm/defaults@1.0.4/node_modules/defaults/index.js"(exports2, module2) { var clone = require_clone2(); module2.exports = function(options, defaults) { options = options || {}; Object.keys(defaults).forEach(function(key) { if (typeof options[key] === "undefined") { options[key] = clone(defaults[key]); } }); return options; }; } }); // ../../node_modules/.pnpm/wcwidth@1.0.1/node_modules/wcwidth/combining.js var require_combining = __commonJS2({ "../../node_modules/.pnpm/wcwidth@1.0.1/node_modules/wcwidth/combining.js"(exports2, module2) { module2.exports = [ [768, 879], [1155, 1158], [1160, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1536, 1539], [1552, 1557], [1611, 1630], [1648, 1648], [1750, 1764], [1767, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2305, 2306], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2388], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2672, 2673], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2883], [2893, 2893], [2902, 2902], [2946, 2946], [3008, 3008], [3021, 3021], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3393, 3395], [3405, 3405], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3769], [3771, 3772], [3784, 3789], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3984, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4146], [4150, 4151], [4153, 4153], [4184, 4185], [4448, 4607], [4959, 4959], [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6157], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7616, 7626], [7678, 7679], [8203, 8207], [8234, 8238], [8288, 8291], [8298, 8303], [8400, 8431], [12330, 12335], [12441, 12442], [43014, 43014], [43019, 43019], [43045, 43046], [64286, 64286], [65024, 65039], [65056, 65059], [65279, 65279], [65529, 65531], [68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [917505, 917505], [917536, 917631], [917760, 917999] ]; } }); // ../../node_modules/.pnpm/wcwidth@1.0.1/node_modules/wcwidth/index.js var require_wcwidth = __commonJS2({ "../../node_modules/.pnpm/wcwidth@1.0.1/node_modules/wcwidth/index.js"(exports2, module2) { "use strict"; var defaults = require_defaults(); var combining = require_combining(); var DEFAULTS = { nul: 0, control: 0 }; module2.exports = function wcwidth2(str) { return wcswidth(str, DEFAULTS); }; module2.exports.config = function(opts) { opts = defaults(opts || {}, DEFAULTS); return function wcwidth2(str) { return wcswidth(str, opts); }; }; function wcswidth(str, opts) { if (typeof str !== "string") return wcwidth(str, opts); var s = 0; for (var i = 0; i < str.length; i++) { var n = wcwidth(str.charCodeAt(i), opts); if (n < 0) return -1; s += n; } return s; } function wcwidth(ucs, opts) { if (ucs === 0) return opts.nul; if (ucs < 32 || ucs >= 127 && ucs < 160) return opts.control; if (bisearch(ucs)) return 0; return 1 + (ucs >= 4352 && (ucs <= 4447 || // Hangul Jamo init. consonants ucs == 9001 || ucs == 9002 || ucs >= 11904 && ucs <= 42191 && ucs != 12351 || // CJK ... Yi ucs >= 44032 && ucs <= 55203 || // Hangul Syllables ucs >= 63744 && ucs <= 64255 || // CJK Compatibility Ideographs ucs >= 65040 && ucs <= 65049 || // Vertical forms ucs >= 65072 && ucs <= 65135 || // CJK Compatibility Forms ucs >= 65280 && ucs <= 65376 || // Fullwidth Forms ucs >= 65504 && ucs <= 65510 || ucs >= 131072 && ucs <= 196605 || ucs >= 196608 && ucs <= 262141)); } function bisearch(ucs) { var min = 0; var max = combining.length - 1; var mid; if (ucs < combining[0][0] || ucs > combining[max][1]) return false; while (max >= min) { mid = Math.floor((min + max) / 2); if (ucs > combining[mid][1]) min = mid + 1; else if (ucs < combining[mid][0]) max = mid - 1; else return true; } return false; } } }); // ../../node_modules/.pnpm/ora@3.4.0/node_modules/ora/index.js var require_ora = __commonJS2({ "../../node_modules/.pnpm/ora@3.4.0/node_modules/ora/index.js"(exports2, module2) { "use strict"; var chalk142 = require_chalk(); var cliCursor = require_cli_cursor(); var cliSpinners = require_cli_spinners(); var logSymbols = require_log_symbols(); var stripAnsi7 = require_strip_ansi(); var wcwidth = require_wcwidth(); var TEXT = Symbol("text"); var PREFIX_TEXT = Symbol("prefixText"); var Ora = class { constructor(options) { if (typeof options === "string") { options = { text: options }; } this.options = Object.assign({ text: "", color: "cyan", stream: process.stderr }, options); this.spinner = this.options.spinner; this.color = this.options.color; this.hideCursor = this.options.hideCursor !== false; this.interval = this.options.interval || this.spinner.interval || 100; this.stream = this.options.stream; this.id = null; this.isEnabled = typeof this.options.isEnabled === "boolean" ? this.options.isEnabled : this.stream && this.stream.isTTY && !process.env.CI; this.text = this.options.text; this.prefixText = this.options.prefixText; this.linesToClear = 0; this.indent = this.options.indent; } get indent() { return this._indent; } set indent(indent = 0) { if (!(indent >= 0 && Number.isInteger(indent))) { throw new Error("The `indent` option must be an integer from 0 and up"); } this._indent = indent; } get spinner() { return this._spinner; } set spinner(spinner) { this.frameIndex = 0; if (typeof spinner === "object") { if (spinner.frames === void 0) { throw new Error("The given spinner must have a `frames` property"); } this._spinner = spinner; } else if (process.platform === "win32") { this._spinner = cliSpinners.line; } else if (spinner === void 0) { this._spinner = cliSpinners.dots; } else if (cliSpinners[spinner]) { this._spinner = cliSpinners[spinner]; } else { throw new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/master/spinners.json for a full list.`); } } get text() { return this[TEXT]; } get prefixText() { return this[PREFIX_TEXT]; } get isSpinning() { return this.id !== null; } updateLineCount() { const columns = this.stream.columns || 80; const fullPrefixText = typeof this[PREFIX_TEXT] === "string" ? this[PREFIX_TEXT] + "-" : ""; this.lineCount = stripAnsi7(fullPrefixText + "--" + this[TEXT]).split("\n").reduce((count, line) => { return count + Math.max(1, Math.ceil(wcwidth(line) / columns)); }, 0); } set text(value) { this[TEXT] = value; this.updateLineCount(); } set prefixText(value) { this[PREFIX_TEXT] = value; this.updateLineCount(); } frame() { const { frames } = this.spinner; let frame = frames[this.frameIndex]; if (this.color) { frame = chalk142[this.color](frame); } this.frameIndex = ++this.frameIndex % frames.length; const fullPrefixText = typeof this.prefixText === "string" ? this.prefixText + " " : ""; const fullText = typeof this.text === "string" ? " " + this.text : ""; return fullPrefixText + frame + fullText; } clear() { if (!this.isEnabled || !this.stream.isTTY) { return this; } for (let i = 0; i < this.linesToClear; i++) { if (i > 0) { this.stream.moveCursor(0, -1); } this.stream.clearLine(); this.stream.cursorTo(this.indent); } this.linesToClear = 0; return this; } render() { this.clear(); this.stream.write(this.frame()); this.linesToClear = this.lineCount; return this; } start(text) { if (text) { this.text = text; } if (!this.isEnabled) { this.stream.write(`- ${this.text} `); return this; } if (this.isSpinning) { return this; } if (this.hideCursor) { cliCursor.hide(this.stream); } this.render(); this.id = setInterval(this.render.bind(this), this.interval); return this; } stop() { if (!this.isEnabled) { return this; } clearInterval(this.id); this.id = null; this.frameIndex = 0; this.clear(); if (this.hideCursor) { cliCursor.show(this.stream); } return this; } succeed(text) { return this.stopAndPersist({ symbol: logSymbols.success, text }); } fail(text) { return this.stopAndPersist({ symbol: logSymbols.error, text }); } warn(text) { return this.stopAndPersist({ symbol: logSymbols.warning, text }); } info(text) { return this.stopAndPersist({ symbol: logSymbols.info, text }); } stopAndPersist(options = {}) { const prefixText = options.prefixText || this.prefixText; const fullPrefixText = typeof prefixText === "string" ? prefixText + " " : ""; const text = options.text || this.text; const fullText = typeof text === "string" ? " " + text : ""; this.stop(); this.stream.write(`${fullPrefixText}${options.symbol || " "}${fullText} `); return this; } }; var oraFactory = function(opts) { return new Ora(opts); }; module2.exports = oraFactory; module2.exports.default = oraFactory; module2.exports.promise = (action, options) => { if (typeof action.then !== "function") { throw new TypeError("Parameter `action` must be a Promise"); } const spinner = new Ora(options); spinner.start(); action.then( () => { spinner.succeed(); }, () => { spinner.fail(); } ); return spinner; }; } }); // src/util/output/erase-lines.ts function eraseLines(numberOfLines) { return import_ansi_escapes.default.eraseLines(numberOfLines); } var import_ansi_escapes; var init_erase_lines = __esm({ "src/util/output/erase-lines.ts"() { "use strict"; import_ansi_escapes = __toESM3(require_ansi_escapes(), 1); } }); // src/util/output/wait.ts function wait(opts, delay = 300) { let text = opts.text; let spinner = null; if (typeof text !== "string") { throw new Error(`"text" is required for Ora spinner`); } const timeout = setTimeout(() => { spinner = (0, import_ora.default)(opts); spinner.text = import_chalk2.default.gray(text); spinner.color = "gray"; spinner.start(); }, delay); const stop = () => { clearTimeout(timeout); if (spinner) { spinner.stop(); spinner = null; process.stderr.write(eraseLines(1)); } }; stop.text = text; Object.defineProperty(stop, "text", { get() { return text; }, set(v) { text = v; if (spinner) { spinner.text = import_chalk2.default.gray(v); } } }); return stop; } var import_ora, import_chalk2; var init_wait = __esm({ "src/util/output/wait.ts"() { "use strict"; import_ora = __toESM3(require_ora(), 1); import_chalk2 = __toESM3(require_source(), 1); init_erase_lines(); } }); // src/util/emoji.ts function emoji(label) { return emojiLabels[label]; } function prependEmoji(message2, emoji2) { if (emoji2 && process.stdout.isTTY) { return `${emoji2} ${message2}`; } return message2; } function removeEmoji(message2) { const result = message2.replace(stripEmojiRegex, "").trimStart(); return result; } var emojiLabels, stripEmojiRegex; var init_emoji = __esm({ "src/util/emoji.ts"() { "use strict"; emojiLabels = { notice: "\u{1F4DD}", tip: "\u{1F4A1}", warning: "\u2757\uFE0F", link: "\u{1F517}", inspect: "\u{1F50D}", success: "\u2705", locked: "\u{1F512}", loading: "\u23F3" }; stripEmojiRegex = new RegExp(Object.values(emojiLabels).join("|"), "gi"); } }); // src/util/output/create-output.ts import { inspect } from "util"; function getNoColor(noColorArg) { const noColor = process.env.FORCE_COLOR === "0" || process.env.NO_COLOR === "1" || noColorArg; return !!noColor; } function debugToString(debug2) { if (typeof debug2 === "string") { return debug2; } return inspect(debug2); } var import_chalk3, ansiEscapes2, import_supports_hyperlinks, import_error_utils, IS_TEST, defaultChalkColorLevel, Output; var init_create_output = __esm({ "src/util/output/create-output.ts"() { "use strict"; import_chalk3 = __toESM3(require_source(), 1); ansiEscapes2 = __toESM3(require_ansi_escapes(), 1); import_supports_hyperlinks = __toESM3(require_supports_hyperlinks(), 1); init_link(); init_wait(); import_error_utils = __toESM3(require_dist2(), 1); init_emoji(); IS_TEST = process.env.NODE_ENV === "test"; defaultChalkColorLevel = 0; Output = class { constructor(stream, options = {}) { this.isDebugEnabled = () => { return this.debugEnabled; }; this.print = (str) => { if (this.colorDisabled) { str = removeEmoji(str); } this.stopSpinner(); this.stream.write(str); }; this.log = (str, color = import_chalk3.default.grey) => { this.print(`${color(">")} ${str} `); }; this.dim = (str, color = import_chalk3.default.grey) => { this.print(`${color(`> ${str}`)} `); }; this.warn = (str, slug = null, link4 = null, action = "Learn More") => { const details = slug ? `https://err.sh/vercel/${slug}` : link4; this.print( import_chalk3.default.yellow( import_chalk3.default.bold("WARN! ") + str + (details ? ` ${action}: ${link_default(details)}` : "") ) ); this.print("\n"); }; this.note = (str) => { this.log(import_chalk3.default`{yellow.bold NOTE:} ${str}`); }; this.error = (str, slug, link4, action = "Learn More") => { this.print(`${import_chalk3.default.red(`Error:`)} ${str} `); const details = slug ? `https://err.sh/vercel/${slug}` : link4; if (details) { this.print(`${import_chalk3.default.bold(action)}: ${link_default(details)} `); } }; this.prettyError = (err) => { return this.error( (0, import_error_utils.errorToString)(err), void 0, err.link, err.action ); }; this.ready = (str) => { this.print(`${import_chalk3.default.cyan("> Ready!")} ${str} `); }; this.success = (str) => { this.print(`${import_chalk3.default.cyan("> Success!")} ${str} `); }; this.debug = (debug2) => { if (this.debugEnabled) { this.log( `${import_chalk3.default.bold("[debug]")} ${import_chalk3.default.gray( `[${(/* @__PURE__ */ new Date()).toISOString()}]` )} ${debugToString(debug2)}` ); } }; this.spinner = (message2, delay = 300) => { if (this.debugEnabled) { this.debug(`Spinner invoked (${message2}) with a ${delay}ms delay`); return; } if (IS_TEST || !this.stream.isTTY) { this.print(`${message2} `); } else { this.spinnerMessage = message2; if (this._spinner) { this._spinner.text = message2; } else { this._spinner = wait( { text: message2, stream: this.stream }, delay ); } } }; this.stopSpinner = () => { if (this.debugEnabled && this.spinnerMessage) { const msg = `Spinner stopped (${this.spinnerMessage})`; this.spinnerMessage = ""; this.debug(msg); } if (this._spinner) { this._spinner(); this._spinner = null; this.spinnerMessage = ""; } }; this.time = async (label, fn2) => { const promise = typeof fn2 === "function" ? fn2() : fn2; if (this.debugEnabled) { const startLabel = typeof label === "function" ? label() : label; this.debug(startLabel); const start = Date.now(); const r = await promise; const endLabel = typeof label === "function" ? label(r) : label; const duration = Date.now() - start; const durationPretty = duration < 1e3 ? `${duration}ms` : `${(duration / 1e3).toFixed(2)}s`; this.debug(`${endLabel} ${import_chalk3.default.gray(`[${durationPretty}]`)}`); return r; } return promise; }; /** * Returns an ANSI formatted hyperlink when support has been enabled. */ this.link = (text, url3, { fallback, color = import_chalk3.default.cyan } = {}) => { if (!this.supportsHyperlink) { if (fallback === false) { return link_default(text); } return typeof fallback === "function" ? fallback() : `${text} (${link_default(url3)})`; } return ansiEscapes2.link(color ? color(text) : text, url3); }; this.spinnerMessage = ""; this._spinner = null; this.initialize({ ...options, stream }); } /** * Parts of the constructor logic that can be called again after construction * to change some values. */ initialize({ stream, debug: debugEnabled, supportsHyperlink, noColor } = {}) { if (stream !== void 0) { this.stream = stream; } if (debugEnabled !== void 0) { this.debugEnabled = debugEnabled; } if (supportsHyperlink === void 0) { this.supportsHyperlink = (0, import_supports_hyperlinks.supportsHyperlink)(this.stream); } else { this.supportsHyperlink = supportsHyperlink; } if (noColor !== void 0) { this.colorDisabled = getNoColor(noColor); if (this.colorDisabled) { defaultChalkColorLevel = import_chalk3.default.level; import_chalk3.default.level = 0; } else { import_chalk3.default.level = defaultChalkColorLevel; } } } }; } }); // src/util/output/index.ts var init_output = __esm({ "src/util/output/index.ts"() { "use strict"; init_create_output(); init_wait(); } }); // src/output-manager.ts var output, output_manager_default; var init_output_manager = __esm({ "src/output-manager.ts"() { "use strict"; init_output(); output = new Output(process.stderr, { debug: false }); output_manager_default = output; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/is.js var require_is = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/is.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var objectToString = Object.prototype.toString; function isError14(wat) { switch (objectToString.call(wat)) { case "[object Error]": case "[object Exception]": case "[object DOMException]": return true; default: return isInstanceOf(wat, Error); } } function isBuiltin(wat, className) { return objectToString.call(wat) === `[object ${className}]`; } function isErrorEvent(wat) { return isBuiltin(wat, "ErrorEvent"); } function isDOMError(wat) { return isBuiltin(wat, "DOMError"); } function isDOMException(wat) { return isBuiltin(wat, "DOMException"); } function isString(wat) { return isBuiltin(wat, "String"); } function isParameterizedString(wat) { return typeof wat === "object" && wat !== null && "__sentry_template_string__" in wat && "__sentry_template_values__" in wat; } function isPrimitive(wat) { return wat === null || isParameterizedString(wat) || typeof wat !== "object" && typeof wat !== "function"; } function isPlainObject2(wat) { return isBuiltin(wat, "Object"); } function isEvent(wat) { return typeof Event !== "undefined" && isInstanceOf(wat, Event); } function isElement(wat) { return typeof Element !== "undefined" && isInstanceOf(wat, Element); } function isRegExp(wat) { return isBuiltin(wat, "RegExp"); } function isThenable(wat) { return Boolean(wat && wat.then && typeof wat.then === "function"); } function isSyntheticEvent(wat) { return isPlainObject2(wat) && "nativeEvent" in wat && "preventDefault" in wat && "stopPropagation" in wat; } function isNaN2(wat) { return typeof wat === "number" && wat !== wat; } function isInstanceOf(wat, base) { try { return wat instanceof base; } catch (_e) { return false; } } function isVueViewModel(wat) { return !!(typeof wat === "object" && wat !== null && (wat.__isVue || wat._isVue)); } exports2.isDOMError = isDOMError; exports2.isDOMException = isDOMException; exports2.isElement = isElement; exports2.isError = isError14; exports2.isErrorEvent = isErrorEvent; exports2.isEvent = isEvent; exports2.isInstanceOf = isInstanceOf; exports2.isNaN = isNaN2; exports2.isParameterizedString = isParameterizedString; exports2.isPlainObject = isPlainObject2; exports2.isPrimitive = isPrimitive; exports2.isRegExp = isRegExp; exports2.isString = isString; exports2.isSyntheticEvent = isSyntheticEvent; exports2.isThenable = isThenable; exports2.isVueViewModel = isVueViewModel; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/string.js var require_string = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/string.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var is = require_is(); function truncate(str, max = 0) { if (typeof str !== "string" || max === 0) { return str; } return str.length <= max ? str : `${str.slice(0, max)}...`; } function snipLine(line, colno) { let newLine = line; const lineLength = newLine.length; if (lineLength <= 150) { return newLine; } if (colno > lineLength) { colno = lineLength; } let start = Math.max(colno - 60, 0); if (start < 5) { start = 0; } let end = Math.min(start + 140, lineLength); if (end > lineLength - 5) { end = lineLength; } if (end === lineLength) { start = Math.max(end - 140, 0); } newLine = newLine.slice(start, end); if (start > 0) { newLine = `'{snip} ${newLine}`; } if (end < lineLength) { newLine += " {snip}"; } return newLine; } function safeJoin(input, delimiter3) { if (!Array.isArray(input)) { return ""; } const output2 = []; for (let i = 0; i < input.length; i++) { const value = input[i]; try { if (is.isVueViewModel(value)) { output2.push("[VueViewModel]"); } else { output2.push(String(value)); } } catch (e2) { output2.push("[value cannot be serialized]"); } } return output2.join(delimiter3); } function isMatchingPattern(value, pattern, requireExactStringMatch = false) { if (!is.isString(value)) { return false; } if (is.isRegExp(pattern)) { return pattern.test(value); } if (is.isString(pattern)) { return requireExactStringMatch ? value === pattern : value.includes(pattern); } return false; } function stringMatchesSomePattern(testString, patterns = [], requireExactStringMatch = false) { return patterns.some((pattern) => isMatchingPattern(testString, pattern, requireExactStringMatch)); } exports2.isMatchingPattern = isMatchingPattern; exports2.safeJoin = safeJoin; exports2.snipLine = snipLine; exports2.stringMatchesSomePattern = stringMatchesSomePattern; exports2.truncate = truncate; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/aggregate-errors.js var require_aggregate_errors = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/aggregate-errors.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var is = require_is(); var string = require_string(); function applyAggregateErrorsToEvent(exceptionFromErrorImplementation, parser, maxValueLimit = 250, key, limit, event, hint) { if (!event.exception || !event.exception.values || !hint || !is.isInstanceOf(hint.originalException, Error)) { return; } const originalException = event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : void 0; if (originalException) { event.exception.values = truncateAggregateExceptions( aggregateExceptionsFromError( exceptionFromErrorImplementation, parser, limit, hint.originalException, key, event.exception.values, originalException, 0 ), maxValueLimit ); } } function aggregateExceptionsFromError(exceptionFromErrorImplementation, parser, limit, error3, key, prevExceptions, exception, exceptionId) { if (prevExceptions.length >= limit + 1) { return prevExceptions; } let newExceptions = [...prevExceptions]; if (is.isInstanceOf(error3[key], Error)) { applyExceptionGroupFieldsForParentException(exception, exceptionId); const newException = exceptionFromErrorImplementation(parser, error3[key]); const newExceptionId = newExceptions.length; applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId); newExceptions = aggregateExceptionsFromError( exceptionFromErrorImplementation, parser, limit, error3[key], key, [newException, ...newExceptions], newException, newExceptionId ); } if (Array.isArray(error3.errors)) { error3.errors.forEach((childError, i) => { if (is.isInstanceOf(childError, Error)) { applyExceptionGroupFieldsForParentException(exception, exceptionId); const newException = exceptionFromErrorImplementation(parser, childError); const newExceptionId = newExceptions.length; applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId); newExceptions = aggregateExceptionsFromError( exceptionFromErrorImplementation, parser, limit, childError, key, [newException, ...newExceptions], newException, newExceptionId ); } }); } return newExceptions; } function applyExceptionGroupFieldsForParentException(exception, exceptionId) { exception.mechanism = exception.mechanism || { type: "generic", handled: true }; exception.mechanism = { ...exception.mechanism, ...exception.type === "AggregateError" && { is_exception_group: true }, exception_id: exceptionId }; } function applyExceptionGroupFieldsForChildException(exception, source, exceptionId, parentId) { exception.mechanism = exception.mechanism || { type: "generic", handled: true }; exception.mechanism = { ...exception.mechanism, type: "chained", source, exception_id: exceptionId, parent_id: parentId }; } function truncateAggregateExceptions(exceptions, maxValueLength) { return exceptions.map((exception) => { if (exception.value) { exception.value = string.truncate(exception.value, maxValueLength); } return exception; }); } exports2.applyAggregateErrorsToEvent = applyAggregateErrorsToEvent; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/worldwide.js var require_worldwide = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/worldwide.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function isGlobalObj(obj) { return obj && obj.Math == Math ? obj : void 0; } var GLOBAL_OBJ = typeof globalThis == "object" && isGlobalObj(globalThis) || // eslint-disable-next-line no-restricted-globals typeof window == "object" && isGlobalObj(window) || typeof self == "object" && isGlobalObj(self) || typeof global == "object" && isGlobalObj(global) || function() { return this; }() || {}; function getGlobalObject() { return GLOBAL_OBJ; } function getGlobalSingleton(name, creator, obj) { const gbl = obj || GLOBAL_OBJ; const __SENTRY__ = gbl.__SENTRY__ = gbl.__SENTRY__ || {}; const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator()); return singleton; } exports2.GLOBAL_OBJ = GLOBAL_OBJ; exports2.getGlobalObject = getGlobalObject; exports2.getGlobalSingleton = getGlobalSingleton; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/browser.js var require_browser = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/browser.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var is = require_is(); var worldwide = require_worldwide(); var WINDOW = worldwide.getGlobalObject(); var DEFAULT_MAX_STRING_LENGTH = 80; function htmlTreeAsString(elem, options = {}) { if (!elem) { return ""; } try { let currentElem = elem; const MAX_TRAVERSE_HEIGHT = 5; const out = []; let height3 = 0; let len = 0; const separator = " > "; const sepLength = separator.length; let nextStr; const keyAttrs = Array.isArray(options) ? options : options.keyAttrs; const maxStringLength = !Array.isArray(options) && options.maxStringLength || DEFAULT_MAX_STRING_LENGTH; while (currentElem && height3++ < MAX_TRAVERSE_HEIGHT) { nextStr = _htmlElementAsString(currentElem, keyAttrs); if (nextStr === "html" || height3 > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength) { break; } out.push(nextStr); len += nextStr.length; currentElem = currentElem.parentNode; } return out.reverse().join(separator); } catch (_oO) { return ""; } } function _htmlElementAsString(el, keyAttrs) { const elem = el; const out = []; let className; let classes; let key; let attr; let i; if (!elem || !elem.tagName) { return ""; } if (WINDOW.HTMLElement) { if (elem instanceof HTMLElement && elem.dataset && elem.dataset["sentryComponent"]) { return elem.dataset["sentryComponent"]; } } out.push(elem.tagName.toLowerCase()); const keyAttrPairs = keyAttrs && keyAttrs.length ? keyAttrs.filter((keyAttr) => elem.getAttribute(keyAttr)).map((keyAttr) => [keyAttr, elem.getAttribute(keyAttr)]) : null; if (keyAttrPairs && keyAttrPairs.length) { keyAttrPairs.forEach((keyAttrPair) => { out.push(`[${keyAttrPair[0]}="${keyAttrPair[1]}"]`); }); } else { if (elem.id) { out.push(`#${elem.id}`); } className = elem.className; if (className && is.isString(className)) { classes = className.split(/\s+/); for (i = 0; i < classes.length; i++) { out.push(`.${classes[i]}`); } } } const allowedAttrs = ["aria-label", "type", "name", "title", "alt"]; for (i = 0; i < allowedAttrs.length; i++) { key = allowedAttrs[i]; attr = elem.getAttribute(key); if (attr) { out.push(`[${key}="${attr}"]`); } } return out.join(""); } function getLocationHref() { try { return WINDOW.document.location.href; } catch (oO) { return ""; } } function getDomElement(selector) { if (WINDOW.document && WINDOW.document.querySelector) { return WINDOW.document.querySelector(selector); } return null; } function getComponentName(elem) { if (!WINDOW.HTMLElement) { return null; } let currentElem = elem; const MAX_TRAVERSE_HEIGHT = 5; for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) { if (!currentElem) { return null; } if (currentElem instanceof HTMLElement && currentElem.dataset["sentryComponent"]) { return currentElem.dataset["sentryComponent"]; } currentElem = currentElem.parentNode; } return null; } exports2.getComponentName = getComponentName; exports2.getDomElement = getDomElement; exports2.getLocationHref = getLocationHref; exports2.htmlTreeAsString = htmlTreeAsString; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/debug-build.js var require_debug_build = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/debug-build.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var DEBUG_BUILD = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__; exports2.DEBUG_BUILD = DEBUG_BUILD; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/logger.js var require_logger = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/logger.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var debugBuild = require_debug_build(); var worldwide = require_worldwide(); var PREFIX = "Sentry Logger "; var CONSOLE_LEVELS = [ "debug", "info", "warn", "error", "log", "assert", "trace" ]; var originalConsoleMethods = {}; function consoleSandbox(callback) { if (!("console" in worldwide.GLOBAL_OBJ)) { return callback(); } const console2 = worldwide.GLOBAL_OBJ.console; const wrappedFuncs = {}; const wrappedLevels = Object.keys(originalConsoleMethods); wrappedLevels.forEach((level) => { const originalConsoleMethod = originalConsoleMethods[level]; wrappedFuncs[level] = console2[level]; console2[level] = originalConsoleMethod; }); try { return callback(); } finally { wrappedLevels.forEach((level) => { console2[level] = wrappedFuncs[level]; }); } } function makeLogger() { let enabled = false; const logger2 = { enable: () => { enabled = true; }, disable: () => { enabled = false; }, isEnabled: () => enabled }; if (debugBuild.DEBUG_BUILD) { CONSOLE_LEVELS.forEach((name) => { logger2[name] = (...args2) => { if (enabled) { consoleSandbox(() => { worldwide.GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args2); }); } }; }); } else { CONSOLE_LEVELS.forEach((name) => { logger2[name] = () => void 0; }); } return logger2; } var logger = makeLogger(); exports2.CONSOLE_LEVELS = CONSOLE_LEVELS; exports2.consoleSandbox = consoleSandbox; exports2.logger = logger; exports2.originalConsoleMethods = originalConsoleMethods; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/dsn.js var require_dsn = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/dsn.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var debugBuild = require_debug_build(); var logger = require_logger(); var DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/; function isValidProtocol(protocol) { return protocol === "http" || protocol === "https"; } function dsnToString(dsn, withPassword = false) { const { host, path: path11, pass, port, projectId, protocol, publicKey } = dsn; return `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ""}@${host}${port ? `:${port}` : ""}/${path11 ? `${path11}/` : path11}${projectId}`; } function dsnFromString(str) { const match = DSN_REGEX.exec(str); if (!match) { logger.consoleSandbox(() => { console.error(`Invalid Sentry Dsn: ${str}`); }); return void 0; } const [protocol, publicKey, pass = "", host, port = "", lastPath] = match.slice(1); let path11 = ""; let projectId = lastPath; const split4 = projectId.split("/"); if (split4.length > 1) { path11 = split4.slice(0, -1).join("/"); projectId = split4.pop(); } if (projectId) { const projectMatch = projectId.match(/^\d+/); if (projectMatch) { projectId = projectMatch[0]; } } return dsnFromComponents({ host, pass, path: path11, projectId, port, protocol, publicKey }); } function dsnFromComponents(components) { return { protocol: components.protocol, publicKey: components.publicKey || "", pass: components.pass || "", host: components.host, port: components.port || "", path: components.path || "", projectId: components.projectId }; } function validateDsn(dsn) { if (!debugBuild.DEBUG_BUILD) { return true; } const { port, projectId, protocol } = dsn; const requiredComponents = ["protocol", "publicKey", "host", "projectId"]; const hasMissingRequiredComponent = requiredComponents.find((component) => { if (!dsn[component]) { logger.logger.error(`Invalid Sentry Dsn: ${component} missing`); return true; } return false; }); if (hasMissingRequiredComponent) { return false; } if (!projectId.match(/^\d+$/)) { logger.logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`); return false; } if (!isValidProtocol(protocol)) { logger.logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`); return false; } if (port && isNaN(parseInt(port, 10))) { logger.logger.error(`Invalid Sentry Dsn: Invalid port ${port}`); return false; } return true; } function makeDsn(from) { const components = typeof from === "string" ? dsnFromString(from) : dsnFromComponents(from); if (!components || !validateDsn(components)) { return void 0; } return components; } exports2.dsnFromString = dsnFromString; exports2.dsnToString = dsnToString; exports2.makeDsn = makeDsn; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/error.js var require_error = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/error.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var SentryError = class extends Error { /** Display name of this error instance. */ constructor(message2, logLevel = "warn") { super(message2); this.message = message2; this.name = new.target.prototype.constructor.name; Object.setPrototypeOf(this, new.target.prototype); this.logLevel = logLevel; } }; exports2.SentryError = SentryError; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/object.js var require_object = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/object.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var browser = require_browser(); var debugBuild = require_debug_build(); var is = require_is(); var logger = require_logger(); var string = require_string(); function fill(source, name, replacementFactory) { if (!(name in source)) { return; } const original = source[name]; const wrapped = replacementFactory(original); if (typeof wrapped === "function") { markFunctionWrapped(wrapped, original); } source[name] = wrapped; } function addNonEnumerableProperty(obj, name, value) { try { Object.defineProperty(obj, name, { // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it value, writable: true, configurable: true }); } catch (o_O) { debugBuild.DEBUG_BUILD && logger.logger.log(`Failed to add non-enumerable property "${name}" to object`, obj); } } function markFunctionWrapped(wrapped, original) { try { const proto = original.prototype || {}; wrapped.prototype = original.prototype = proto; addNonEnumerableProperty(wrapped, "__sentry_original__", original); } catch (o_O) { } } function getOriginalFunction(func) { return func.__sentry_original__; } function urlEncode(object) { return Object.keys(object).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`).join("&"); } function convertToPlainObject(value) { if (is.isError(value)) { return { message: value.message, name: value.name, stack: value.stack, ...getOwnProperties(value) }; } else if (is.isEvent(value)) { const newObj = { type: value.type, target: serializeEventTarget(value.target), currentTarget: serializeEventTarget(value.currentTarget), ...getOwnProperties(value) }; if (typeof CustomEvent !== "undefined" && is.isInstanceOf(value, CustomEvent)) { newObj.detail = value.detail; } return newObj; } else { return value; } } function serializeEventTarget(target) { try { return is.isElement(target) ? browser.htmlTreeAsString(target) : Object.prototype.toString.call(target); } catch (_oO) { return ""; } } function getOwnProperties(obj) { if (typeof obj === "object" && obj !== null) { const extractedProps = {}; for (const property in obj) { if (Object.prototype.hasOwnProperty.call(obj, property)) { extractedProps[property] = obj[property]; } } return extractedProps; } else { return {}; } } function extractExceptionKeysForMessage(exception, maxLength = 40) { const keys = Object.keys(convertToPlainObject(exception)); keys.sort(); if (!keys.length) { return "[object has no keys]"; } if (keys[0].length >= maxLength) { return string.truncate(keys[0], maxLength); } for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) { const serialized = keys.slice(0, includedKeys).join(", "); if (serialized.length > maxLength) { continue; } if (includedKeys === keys.length) { return serialized; } return string.truncate(serialized, maxLength); } return ""; } function dropUndefinedKeys(inputValue) { const memoizationMap = /* @__PURE__ */ new Map(); return _dropUndefinedKeys(inputValue, memoizationMap); } function _dropUndefinedKeys(inputValue, memoizationMap) { if (isPojo(inputValue)) { const memoVal = memoizationMap.get(inputValue); if (memoVal !== void 0) { return memoVal; } const returnValue = {}; memoizationMap.set(inputValue, returnValue); for (const key of Object.keys(inputValue)) { if (typeof inputValue[key] !== "undefined") { returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap); } } return returnValue; } if (Array.isArray(inputValue)) { const memoVal = memoizationMap.get(inputValue); if (memoVal !== void 0) { return memoVal; } const returnValue = []; memoizationMap.set(inputValue, returnValue); inputValue.forEach((item) => { returnValue.push(_dropUndefinedKeys(item, memoizationMap)); }); return returnValue; } return inputValue; } function isPojo(input) { if (!is.isPlainObject(input)) { return false; } try { const name = Object.getPrototypeOf(input).constructor.name; return !name || name === "Object"; } catch (e2) { return true; } } function objectify(wat) { let objectified; switch (true) { case (wat === void 0 || wat === null): objectified = new String(wat); break; case (typeof wat === "symbol" || typeof wat === "bigint"): objectified = Object(wat); break; case is.isPrimitive(wat): objectified = new wat.constructor(wat); break; default: objectified = wat; break; } return objectified; } exports2.addNonEnumerableProperty = addNonEnumerableProperty; exports2.convertToPlainObject = convertToPlainObject; exports2.dropUndefinedKeys = dropUndefinedKeys; exports2.extractExceptionKeysForMessage = extractExceptionKeysForMessage; exports2.fill = fill; exports2.getOriginalFunction = getOriginalFunction; exports2.markFunctionWrapped = markFunctionWrapped; exports2.objectify = objectify; exports2.urlEncode = urlEncode; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/node-stack-trace.js var require_node_stack_trace = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/node-stack-trace.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function filenameIsInApp(filename, isNative = false) { const isInternal = isNative || filename && // It's not internal if it's an absolute linux path !filename.startsWith("/") && // It's not internal if it's an absolute windows path !filename.match(/^[A-Z]:/) && // It's not internal if the path is starting with a dot !filename.startsWith(".") && // It's not internal if the frame has a protocol. In node, this is usually the case if the file got pre-processed with a bundler like webpack !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//); return !isInternal && filename !== void 0 && !filename.includes("node_modules/"); } function node(getModule) { const FILENAME_MATCH = /^\s*[-]{4,}$/; const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/; return (line) => { const lineMatch = line.match(FULL_MATCH); if (lineMatch) { let object; let method; let functionName; let typeName; let methodName; if (lineMatch[1]) { functionName = lineMatch[1]; let methodStart = functionName.lastIndexOf("."); if (functionName[methodStart - 1] === ".") { methodStart--; } if (methodStart > 0) { object = functionName.slice(0, methodStart); method = functionName.slice(methodStart + 1); const objectEnd = object.indexOf(".Module"); if (objectEnd > 0) { functionName = functionName.slice(objectEnd + 1); object = object.slice(0, objectEnd); } } typeName = void 0; } if (method) { typeName = object; methodName = method; } if (method === "") { methodName = void 0; functionName = void 0; } if (functionName === void 0) { methodName = methodName || ""; functionName = typeName ? `${typeName}.${methodName}` : methodName; } let filename = lineMatch[2] && lineMatch[2].startsWith("file://") ? lineMatch[2].slice(7) : lineMatch[2]; const isNative = lineMatch[5] === "native"; if (filename && filename.match(/\/[A-Z]:/)) { filename = filename.slice(1); } if (!filename && lineMatch[5] && !isNative) { filename = lineMatch[5]; } return { filename, module: getModule ? getModule(filename) : void 0, function: functionName, lineno: parseInt(lineMatch[3], 10) || void 0, colno: parseInt(lineMatch[4], 10) || void 0, in_app: filenameIsInApp(filename, isNative) }; } if (line.match(FILENAME_MATCH)) { return { filename: line }; } return void 0; }; } exports2.filenameIsInApp = filenameIsInApp; exports2.node = node; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/stacktrace.js var require_stacktrace = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/stacktrace.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var nodeStackTrace = require_node_stack_trace(); var STACKTRACE_FRAME_LIMIT = 50; var WEBPACK_ERROR_REGEXP = /\(error: (.*)\)/; var STRIP_FRAME_REGEXP = /captureMessage|captureException/; function createStackParser(...parsers) { const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map((p) => p[1]); return (stack2, skipFirst = 0) => { const frames = []; const lines3 = stack2.split("\n"); for (let i = skipFirst; i < lines3.length; i++) { const line = lines3[i]; if (line.length > 1024) { continue; } const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, "$1") : line; if (cleanedLine.match(/\S*Error: /)) { continue; } for (const parser of sortedParsers) { const frame = parser(cleanedLine); if (frame) { frames.push(frame); break; } } if (frames.length >= STACKTRACE_FRAME_LIMIT) { break; } } return stripSentryFramesAndReverse(frames); }; } function stackParserFromStackParserOptions(stackParser) { if (Array.isArray(stackParser)) { return createStackParser(...stackParser); } return stackParser; } function stripSentryFramesAndReverse(stack2) { if (!stack2.length) { return []; } const localStack = Array.from(stack2); if (/sentryWrapped/.test(localStack[localStack.length - 1].function || "")) { localStack.pop(); } localStack.reverse(); if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || "")) { localStack.pop(); if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || "")) { localStack.pop(); } } return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame) => ({ ...frame, filename: frame.filename || localStack[localStack.length - 1].filename, function: frame.function || "?" })); } var defaultFunctionName = ""; function getFunctionName(fn2) { try { if (!fn2 || typeof fn2 !== "function") { return defaultFunctionName; } return fn2.name || defaultFunctionName; } catch (e2) { return defaultFunctionName; } } function nodeStackLineParser(getModule) { return [90, nodeStackTrace.node(getModule)]; } exports2.filenameIsInApp = nodeStackTrace.filenameIsInApp; exports2.createStackParser = createStackParser; exports2.getFunctionName = getFunctionName; exports2.nodeStackLineParser = nodeStackLineParser; exports2.stackParserFromStackParserOptions = stackParserFromStackParserOptions; exports2.stripSentryFramesAndReverse = stripSentryFramesAndReverse; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/_handlers.js var require_handlers = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/_handlers.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var debugBuild = require_debug_build(); var logger = require_logger(); var stacktrace = require_stacktrace(); var handlers = {}; var instrumented = {}; function addHandler(type, handler) { handlers[type] = handlers[type] || []; handlers[type].push(handler); } function resetInstrumentationHandlers() { Object.keys(handlers).forEach((key) => { handlers[key] = void 0; }); } function maybeInstrument(type, instrumentFn) { if (!instrumented[type]) { instrumentFn(); instrumented[type] = true; } } function triggerHandlers(type, data) { const typeHandlers = type && handlers[type]; if (!typeHandlers) { return; } for (const handler of typeHandlers) { try { handler(data); } catch (e2) { debugBuild.DEBUG_BUILD && logger.logger.error( `Error while triggering instrumentation handler. Type: ${type} Name: ${stacktrace.getFunctionName(handler)} Error:`, e2 ); } } } exports2.addHandler = addHandler; exports2.maybeInstrument = maybeInstrument; exports2.resetInstrumentationHandlers = resetInstrumentationHandlers; exports2.triggerHandlers = triggerHandlers; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/console.js var require_console = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/console.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var logger = require_logger(); var object = require_object(); var worldwide = require_worldwide(); var _handlers = require_handlers(); function addConsoleInstrumentationHandler(handler) { const type = "console"; _handlers.addHandler(type, handler); _handlers.maybeInstrument(type, instrumentConsole); } function instrumentConsole() { if (!("console" in worldwide.GLOBAL_OBJ)) { return; } logger.CONSOLE_LEVELS.forEach(function(level) { if (!(level in worldwide.GLOBAL_OBJ.console)) { return; } object.fill(worldwide.GLOBAL_OBJ.console, level, function(originalConsoleMethod) { logger.originalConsoleMethods[level] = originalConsoleMethod; return function(...args2) { const handlerData = { args: args2, level }; _handlers.triggerHandlers("console", handlerData); const log2 = logger.originalConsoleMethods[level]; log2 && log2.apply(worldwide.GLOBAL_OBJ.console, args2); }; }); }); } exports2.addConsoleInstrumentationHandler = addConsoleInstrumentationHandler; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/misc.js var require_misc = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/misc.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var object = require_object(); var string = require_string(); var worldwide = require_worldwide(); function uuid4() { const gbl = worldwide.GLOBAL_OBJ; const crypto = gbl.crypto || gbl.msCrypto; let getRandomByte = () => Math.random() * 16; try { if (crypto && crypto.randomUUID) { return crypto.randomUUID().replace(/-/g, ""); } if (crypto && crypto.getRandomValues) { getRandomByte = () => { const typedArray = new Uint8Array(1); crypto.getRandomValues(typedArray); return typedArray[0]; }; } } catch (_) { } return ([1e7] + 1e3 + 4e3 + 8e3 + 1e11).replace( /[018]/g, (c) => ( // eslint-disable-next-line no-bitwise (c ^ (getRandomByte() & 15) >> c / 4).toString(16) ) ); } function getFirstException(event) { return event.exception && event.exception.values ? event.exception.values[0] : void 0; } function getEventDescription(event) { const { message: message2, event_id: eventId } = event; if (message2) { return message2; } const firstException = getFirstException(event); if (firstException) { if (firstException.type && firstException.value) { return `${firstException.type}: ${firstException.value}`; } return firstException.type || firstException.value || eventId || ""; } return eventId || ""; } function addExceptionTypeValue(event, value, type) { const exception = event.exception = event.exception || {}; const values = exception.values = exception.values || []; const firstException = values[0] = values[0] || {}; if (!firstException.value) { firstException.value = value || ""; } if (!firstException.type) { firstException.type = type || "Error"; } } function addExceptionMechanism(event, newMechanism) { const firstException = getFirstException(event); if (!firstException) { return; } const defaultMechanism = { type: "generic", handled: true }; const currentMechanism = firstException.mechanism; firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism }; if (newMechanism && "data" in newMechanism) { const mergedData = { ...currentMechanism && currentMechanism.data, ...newMechanism.data }; firstException.mechanism.data = mergedData; } } var SEMVER_REGEXP = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/; function parseSemver(input) { const match = input.match(SEMVER_REGEXP) || []; const major = parseInt(match[1], 10); const minor = parseInt(match[2], 10); const patch = parseInt(match[3], 10); return { buildmetadata: match[5], major: isNaN(major) ? void 0 : major, minor: isNaN(minor) ? void 0 : minor, patch: isNaN(patch) ? void 0 : patch, prerelease: match[4] }; } function addContextToFrame(lines3, frame, linesOfContext = 5) { if (frame.lineno === void 0) { return; } const maxLines = lines3.length; const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0); frame.pre_context = lines3.slice(Math.max(0, sourceLine - linesOfContext), sourceLine).map((line) => string.snipLine(line, 0)); frame.context_line = string.snipLine(lines3[Math.min(maxLines - 1, sourceLine)], frame.colno || 0); frame.post_context = lines3.slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext).map((line) => string.snipLine(line, 0)); } function checkOrSetAlreadyCaught(exception) { if (exception && exception.__sentry_captured__) { return true; } try { object.addNonEnumerableProperty(exception, "__sentry_captured__", true); } catch (err) { } return false; } function arrayify(maybeArray) { return Array.isArray(maybeArray) ? maybeArray : [maybeArray]; } exports2.addContextToFrame = addContextToFrame; exports2.addExceptionMechanism = addExceptionMechanism; exports2.addExceptionTypeValue = addExceptionTypeValue; exports2.arrayify = arrayify; exports2.checkOrSetAlreadyCaught = checkOrSetAlreadyCaught; exports2.getEventDescription = getEventDescription; exports2.parseSemver = parseSemver; exports2.uuid4 = uuid4; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/dom.js var require_dom = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/dom.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var misc = require_misc(); var object = require_object(); var worldwide = require_worldwide(); var _handlers = require_handlers(); var WINDOW = worldwide.GLOBAL_OBJ; var DEBOUNCE_DURATION = 1e3; var debounceTimerID; var lastCapturedEventType; var lastCapturedEventTargetId; function addClickKeypressInstrumentationHandler(handler) { const type = "dom"; _handlers.addHandler(type, handler); _handlers.maybeInstrument(type, instrumentDOM); } function instrumentDOM() { if (!WINDOW.document) { return; } const triggerDOMHandler = _handlers.triggerHandlers.bind(null, "dom"); const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true); WINDOW.document.addEventListener("click", globalDOMEventHandler, false); WINDOW.document.addEventListener("keypress", globalDOMEventHandler, false); ["EventTarget", "Node"].forEach((target) => { const proto = WINDOW[target] && WINDOW[target].prototype; if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty("addEventListener")) { return; } object.fill(proto, "addEventListener", function(originalAddEventListener) { return function(type, listener, options) { if (type === "click" || type == "keypress") { try { const el = this; const handlers = el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {}; const handlerForType = handlers[type] = handlers[type] || { refCount: 0 }; if (!handlerForType.handler) { const handler = makeDOMEventHandler(triggerDOMHandler); handlerForType.handler = handler; originalAddEventListener.call(this, type, handler, options); } handlerForType.refCount++; } catch (e2) { } } return originalAddEventListener.call(this, type, listener, options); }; }); object.fill( proto, "removeEventListener", function(originalRemoveEventListener) { return function(type, listener, options) { if (type === "click" || type == "keypress") { try { const el = this; const handlers = el.__sentry_instrumentation_handlers__ || {}; const handlerForType = handlers[type]; if (handlerForType) { handlerForType.refCount--; if (handlerForType.refCount <= 0) { originalRemoveEventListener.call(this, type, handlerForType.handler, options); handlerForType.handler = void 0; delete handlers[type]; } if (Object.keys(handlers).length === 0) { delete el.__sentry_instrumentation_handlers__; } } } catch (e2) { } } return originalRemoveEventListener.call(this, type, listener, options); }; } ); }); } function isSimilarToLastCapturedEvent(event) { if (event.type !== lastCapturedEventType) { return false; } try { if (!event.target || event.target._sentryId !== lastCapturedEventTargetId) { return false; } } catch (e2) { } return true; } function shouldSkipDOMEvent(eventType, target) { if (eventType !== "keypress") { return false; } if (!target || !target.tagName) { return true; } if (target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable) { return false; } return true; } function makeDOMEventHandler(handler, globalListener = false) { return (event) => { if (!event || event["_sentryCaptured"]) { return; } const target = getEventTarget(event); if (shouldSkipDOMEvent(event.type, target)) { return; } object.addNonEnumerableProperty(event, "_sentryCaptured", true); if (target && !target._sentryId) { object.addNonEnumerableProperty(target, "_sentryId", misc.uuid4()); } const name = event.type === "keypress" ? "input" : event.type; if (!isSimilarToLastCapturedEvent(event)) { const handlerData = { event, name, global: globalListener }; handler(handlerData); lastCapturedEventType = event.type; lastCapturedEventTargetId = target ? target._sentryId : void 0; } clearTimeout(debounceTimerID); debounceTimerID = WINDOW.setTimeout(() => { lastCapturedEventTargetId = void 0; lastCapturedEventType = void 0; }, DEBOUNCE_DURATION); }; } function getEventTarget(event) { try { return event.target; } catch (e2) { return null; } } exports2.addClickKeypressInstrumentationHandler = addClickKeypressInstrumentationHandler; exports2.instrumentDOM = instrumentDOM; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/supports.js var require_supports = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/supports.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var debugBuild = require_debug_build(); var logger = require_logger(); var worldwide = require_worldwide(); var WINDOW = worldwide.getGlobalObject(); function supportsErrorEvent() { try { new ErrorEvent(""); return true; } catch (e2) { return false; } } function supportsDOMError() { try { new DOMError(""); return true; } catch (e2) { return false; } } function supportsDOMException() { try { new DOMException(""); return true; } catch (e2) { return false; } } function supportsFetch() { if (!("fetch" in WINDOW)) { return false; } try { new Headers(); new Request("http://www.example.com"); new Response(); return true; } catch (e2) { return false; } } function isNativeFetch(func) { return func && /^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(func.toString()); } function supportsNativeFetch() { if (typeof EdgeRuntime === "string") { return true; } if (!supportsFetch()) { return false; } if (isNativeFetch(WINDOW.fetch)) { return true; } let result = false; const doc = WINDOW.document; if (doc && typeof doc.createElement === "function") { try { const sandbox = doc.createElement("iframe"); sandbox.hidden = true; doc.head.appendChild(sandbox); if (sandbox.contentWindow && sandbox.contentWindow.fetch) { result = isNativeFetch(sandbox.contentWindow.fetch); } doc.head.removeChild(sandbox); } catch (err) { debugBuild.DEBUG_BUILD && logger.logger.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ", err); } } return result; } function supportsReportingObserver() { return "ReportingObserver" in WINDOW; } function supportsReferrerPolicy() { if (!supportsFetch()) { return false; } try { new Request("_", { referrerPolicy: "origin" }); return true; } catch (e2) { return false; } } exports2.isNativeFetch = isNativeFetch; exports2.supportsDOMError = supportsDOMError; exports2.supportsDOMException = supportsDOMException; exports2.supportsErrorEvent = supportsErrorEvent; exports2.supportsFetch = supportsFetch; exports2.supportsNativeFetch = supportsNativeFetch; exports2.supportsReferrerPolicy = supportsReferrerPolicy; exports2.supportsReportingObserver = supportsReportingObserver; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/fetch.js var require_fetch = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/fetch.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var object = require_object(); var supports = require_supports(); var worldwide = require_worldwide(); var _handlers = require_handlers(); function addFetchInstrumentationHandler(handler) { const type = "fetch"; _handlers.addHandler(type, handler); _handlers.maybeInstrument(type, instrumentFetch); } function instrumentFetch() { if (!supports.supportsNativeFetch()) { return; } object.fill(worldwide.GLOBAL_OBJ, "fetch", function(originalFetch) { return function(...args2) { const { method, url: url3 } = parseFetchArgs(args2); const handlerData = { args: args2, fetchData: { method, url: url3 }, startTimestamp: Date.now() }; _handlers.triggerHandlers("fetch", { ...handlerData }); return originalFetch.apply(worldwide.GLOBAL_OBJ, args2).then( (response) => { const finishedHandlerData = { ...handlerData, endTimestamp: Date.now(), response }; _handlers.triggerHandlers("fetch", finishedHandlerData); return response; }, (error3) => { const erroredHandlerData = { ...handlerData, endTimestamp: Date.now(), error: error3 }; _handlers.triggerHandlers("fetch", erroredHandlerData); throw error3; } ); }; }); } function hasProp(obj, prop) { return !!obj && typeof obj === "object" && !!obj[prop]; } function getUrlFromResource(resource) { if (typeof resource === "string") { return resource; } if (!resource) { return ""; } if (hasProp(resource, "url")) { return resource.url; } if (resource.toString) { return resource.toString(); } return ""; } function parseFetchArgs(fetchArgs) { if (fetchArgs.length === 0) { return { method: "GET", url: "" }; } if (fetchArgs.length === 2) { const [url3, options] = fetchArgs; return { url: getUrlFromResource(url3), method: hasProp(options, "method") ? String(options.method).toUpperCase() : "GET" }; } const arg2 = fetchArgs[0]; return { url: getUrlFromResource(arg2), method: hasProp(arg2, "method") ? String(arg2.method).toUpperCase() : "GET" }; } exports2.addFetchInstrumentationHandler = addFetchInstrumentationHandler; exports2.parseFetchArgs = parseFetchArgs; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/globalError.js var require_globalError = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/globalError.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var worldwide = require_worldwide(); var _handlers = require_handlers(); var _oldOnErrorHandler = null; function addGlobalErrorInstrumentationHandler(handler) { const type = "error"; _handlers.addHandler(type, handler); _handlers.maybeInstrument(type, instrumentError); } function instrumentError() { _oldOnErrorHandler = worldwide.GLOBAL_OBJ.onerror; worldwide.GLOBAL_OBJ.onerror = function(msg, url3, line, column, error3) { const handlerData = { column, error: error3, line, msg, url: url3 }; _handlers.triggerHandlers("error", handlerData); if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) { return _oldOnErrorHandler.apply(this, arguments); } return false; }; worldwide.GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true; } exports2.addGlobalErrorInstrumentationHandler = addGlobalErrorInstrumentationHandler; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/globalUnhandledRejection.js var require_globalUnhandledRejection = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/globalUnhandledRejection.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var worldwide = require_worldwide(); var _handlers = require_handlers(); var _oldOnUnhandledRejectionHandler = null; function addGlobalUnhandledRejectionInstrumentationHandler(handler) { const type = "unhandledrejection"; _handlers.addHandler(type, handler); _handlers.maybeInstrument(type, instrumentUnhandledRejection); } function instrumentUnhandledRejection() { _oldOnUnhandledRejectionHandler = worldwide.GLOBAL_OBJ.onunhandledrejection; worldwide.GLOBAL_OBJ.onunhandledrejection = function(e2) { const handlerData = e2; _handlers.triggerHandlers("unhandledrejection", handlerData); if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) { return _oldOnUnhandledRejectionHandler.apply(this, arguments); } return true; }; worldwide.GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true; } exports2.addGlobalUnhandledRejectionInstrumentationHandler = addGlobalUnhandledRejectionInstrumentationHandler; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/vendor/supportsHistory.js var require_supportsHistory = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/vendor/supportsHistory.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var worldwide = require_worldwide(); var WINDOW = worldwide.getGlobalObject(); function supportsHistory() { const chromeVar = WINDOW.chrome; const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime; const hasHistoryApi = "history" in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState; return !isChromePackagedApp && hasHistoryApi; } exports2.supportsHistory = supportsHistory; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/history.js var require_history = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/history.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var object = require_object(); require_debug_build(); require_logger(); var worldwide = require_worldwide(); var supportsHistory = require_supportsHistory(); var _handlers = require_handlers(); var WINDOW = worldwide.GLOBAL_OBJ; var lastHref; function addHistoryInstrumentationHandler(handler) { const type = "history"; _handlers.addHandler(type, handler); _handlers.maybeInstrument(type, instrumentHistory); } function instrumentHistory() { if (!supportsHistory.supportsHistory()) { return; } const oldOnPopState = WINDOW.onpopstate; WINDOW.onpopstate = function(...args2) { const to = WINDOW.location.href; const from = lastHref; lastHref = to; const handlerData = { from, to }; _handlers.triggerHandlers("history", handlerData); if (oldOnPopState) { try { return oldOnPopState.apply(this, args2); } catch (_oO) { } } }; function historyReplacementFunction(originalHistoryFunction) { return function(...args2) { const url3 = args2.length > 2 ? args2[2] : void 0; if (url3) { const from = lastHref; const to = String(url3); lastHref = to; const handlerData = { from, to }; _handlers.triggerHandlers("history", handlerData); } return originalHistoryFunction.apply(this, args2); }; } object.fill(WINDOW.history, "pushState", historyReplacementFunction); object.fill(WINDOW.history, "replaceState", historyReplacementFunction); } exports2.addHistoryInstrumentationHandler = addHistoryInstrumentationHandler; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/xhr.js var require_xhr = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/xhr.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var is = require_is(); var object = require_object(); var worldwide = require_worldwide(); var _handlers = require_handlers(); var WINDOW = worldwide.GLOBAL_OBJ; var SENTRY_XHR_DATA_KEY = "__sentry_xhr_v3__"; function addXhrInstrumentationHandler(handler) { const type = "xhr"; _handlers.addHandler(type, handler); _handlers.maybeInstrument(type, instrumentXHR); } function instrumentXHR() { if (!WINDOW.XMLHttpRequest) { return; } const xhrproto = XMLHttpRequest.prototype; object.fill(xhrproto, "open", function(originalOpen) { return function(...args2) { const startTimestamp = Date.now(); const method = is.isString(args2[0]) ? args2[0].toUpperCase() : void 0; const url3 = parseUrl2(args2[1]); if (!method || !url3) { return originalOpen.apply(this, args2); } this[SENTRY_XHR_DATA_KEY] = { method, url: url3, request_headers: {} }; if (method === "POST" && url3.match(/sentry_key/)) { this.__sentry_own_request__ = true; } const onreadystatechangeHandler = () => { const xhrInfo = this[SENTRY_XHR_DATA_KEY]; if (!xhrInfo) { return; } if (this.readyState === 4) { try { xhrInfo.status_code = this.status; } catch (e2) { } const handlerData = { args: [method, url3], endTimestamp: Date.now(), startTimestamp, xhr: this }; _handlers.triggerHandlers("xhr", handlerData); } }; if ("onreadystatechange" in this && typeof this.onreadystatechange === "function") { object.fill(this, "onreadystatechange", function(original) { return function(...readyStateArgs) { onreadystatechangeHandler(); return original.apply(this, readyStateArgs); }; }); } else { this.addEventListener("readystatechange", onreadystatechangeHandler); } object.fill(this, "setRequestHeader", function(original) { return function(...setRequestHeaderArgs) { const [header, value] = setRequestHeaderArgs; const xhrInfo = this[SENTRY_XHR_DATA_KEY]; if (xhrInfo && is.isString(header) && is.isString(value)) { xhrInfo.request_headers[header.toLowerCase()] = value; } return original.apply(this, setRequestHeaderArgs); }; }); return originalOpen.apply(this, args2); }; }); object.fill(xhrproto, "send", function(originalSend) { return function(...args2) { const sentryXhrData = this[SENTRY_XHR_DATA_KEY]; if (!sentryXhrData) { return originalSend.apply(this, args2); } if (args2[0] !== void 0) { sentryXhrData.body = args2[0]; } const handlerData = { args: [sentryXhrData.method, sentryXhrData.url], startTimestamp: Date.now(), xhr: this }; _handlers.triggerHandlers("xhr", handlerData); return originalSend.apply(this, args2); }; }); } function parseUrl2(url3) { if (is.isString(url3)) { return url3; } try { return url3.toString(); } catch (e2) { } return void 0; } exports2.SENTRY_XHR_DATA_KEY = SENTRY_XHR_DATA_KEY; exports2.addXhrInstrumentationHandler = addXhrInstrumentationHandler; exports2.instrumentXHR = instrumentXHR; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/index.js var require_instrument = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var debugBuild = require_debug_build(); var logger = require_logger(); var console2 = require_console(); var dom = require_dom(); var fetch6 = require_fetch(); var globalError = require_globalError(); var globalUnhandledRejection = require_globalUnhandledRejection(); var history = require_history(); var xhr = require_xhr(); function addInstrumentationHandler(type, callback) { switch (type) { case "console": return console2.addConsoleInstrumentationHandler(callback); case "dom": return dom.addClickKeypressInstrumentationHandler(callback); case "xhr": return xhr.addXhrInstrumentationHandler(callback); case "fetch": return fetch6.addFetchInstrumentationHandler(callback); case "history": return history.addHistoryInstrumentationHandler(callback); case "error": return globalError.addGlobalErrorInstrumentationHandler(callback); case "unhandledrejection": return globalUnhandledRejection.addGlobalUnhandledRejectionInstrumentationHandler(callback); default: debugBuild.DEBUG_BUILD && logger.logger.warn("unknown instrumentation type:", type); } } exports2.addConsoleInstrumentationHandler = console2.addConsoleInstrumentationHandler; exports2.addClickKeypressInstrumentationHandler = dom.addClickKeypressInstrumentationHandler; exports2.addFetchInstrumentationHandler = fetch6.addFetchInstrumentationHandler; exports2.addGlobalErrorInstrumentationHandler = globalError.addGlobalErrorInstrumentationHandler; exports2.addGlobalUnhandledRejectionInstrumentationHandler = globalUnhandledRejection.addGlobalUnhandledRejectionInstrumentationHandler; exports2.addHistoryInstrumentationHandler = history.addHistoryInstrumentationHandler; exports2.SENTRY_XHR_DATA_KEY = xhr.SENTRY_XHR_DATA_KEY; exports2.addXhrInstrumentationHandler = xhr.addXhrInstrumentationHandler; exports2.addInstrumentationHandler = addInstrumentationHandler; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/env.js var require_env = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/env.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function isBrowserBundle() { return typeof __SENTRY_BROWSER_BUNDLE__ !== "undefined" && !!__SENTRY_BROWSER_BUNDLE__; } function getSDKSource() { return "npm"; } exports2.getSDKSource = getSDKSource; exports2.isBrowserBundle = isBrowserBundle; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/node.js var require_node = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/node.js"(exports2, module2) { Object.defineProperty(exports2, "__esModule", { value: true }); var env = require_env(); function isNodeEnv() { return !env.isBrowserBundle() && Object.prototype.toString.call(typeof process !== "undefined" ? process : 0) === "[object process]"; } function dynamicRequire(mod, request) { return mod.require(request); } function loadModule(moduleName) { let mod; try { mod = dynamicRequire(module2, moduleName); } catch (e2) { } try { const { cwd } = dynamicRequire(module2, "process"); mod = dynamicRequire(module2, `${cwd()}/node_modules/${moduleName}`); } catch (e2) { } return mod; } exports2.dynamicRequire = dynamicRequire; exports2.isNodeEnv = isNodeEnv; exports2.loadModule = loadModule; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/isBrowser.js var require_isBrowser = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/isBrowser.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var node = require_node(); var worldwide = require_worldwide(); function isBrowser() { return typeof window !== "undefined" && (!node.isNodeEnv() || isElectronNodeRenderer()); } function isElectronNodeRenderer() { return ( // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any worldwide.GLOBAL_OBJ.process !== void 0 && worldwide.GLOBAL_OBJ.process.type === "renderer" ); } exports2.isBrowser = isBrowser; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/memo.js var require_memo = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/memo.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function memoBuilder() { const hasWeakSet = typeof WeakSet === "function"; const inner = hasWeakSet ? /* @__PURE__ */ new WeakSet() : []; function memoize(obj) { if (hasWeakSet) { if (inner.has(obj)) { return true; } inner.add(obj); return false; } for (let i = 0; i < inner.length; i++) { const value = inner[i]; if (value === obj) { return true; } } inner.push(obj); return false; } function unmemoize(obj) { if (hasWeakSet) { inner.delete(obj); } else { for (let i = 0; i < inner.length; i++) { if (inner[i] === obj) { inner.splice(i, 1); break; } } } } return [memoize, unmemoize]; } exports2.memoBuilder = memoBuilder; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/normalize.js var require_normalize = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/normalize.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var is = require_is(); var memo = require_memo(); var object = require_object(); var stacktrace = require_stacktrace(); function normalize4(input, depth = 100, maxProperties = Infinity) { try { return visit3("", input, depth, maxProperties); } catch (err) { return { ERROR: `**non-serializable** (${err})` }; } } function normalizeToSize(object2, depth = 3, maxSize = 100 * 1024) { const normalized = normalize4(object2, depth); if (jsonSize(normalized) > maxSize) { return normalizeToSize(object2, depth - 1, maxSize); } return normalized; } function visit3(key, value, depth = Infinity, maxProperties = Infinity, memo$1 = memo.memoBuilder()) { const [memoize, unmemoize] = memo$1; if (value == null || // this matches null and undefined -> eqeq not eqeqeq ["number", "boolean", "string"].includes(typeof value) && !is.isNaN(value)) { return value; } const stringified = stringifyValue(key, value); if (!stringified.startsWith("[object ")) { return stringified; } if (value["__sentry_skip_normalization__"]) { return value; } const remainingDepth = typeof value["__sentry_override_normalization_depth__"] === "number" ? value["__sentry_override_normalization_depth__"] : depth; if (remainingDepth === 0) { return stringified.replace("object ", ""); } if (memoize(value)) { return "[Circular ~]"; } const valueWithToJSON = value; if (valueWithToJSON && typeof valueWithToJSON.toJSON === "function") { try { const jsonValue = valueWithToJSON.toJSON(); return visit3("", jsonValue, remainingDepth - 1, maxProperties, memo$1); } catch (err) { } } const normalized = Array.isArray(value) ? [] : {}; let numAdded = 0; const visitable = object.convertToPlainObject(value); for (const visitKey in visitable) { if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) { continue; } if (numAdded >= maxProperties) { normalized[visitKey] = "[MaxProperties ~]"; break; } const visitValue = visitable[visitKey]; normalized[visitKey] = visit3(visitKey, visitValue, remainingDepth - 1, maxProperties, memo$1); numAdded++; } unmemoize(value); return normalized; } function stringifyValue(key, value) { try { if (key === "domain" && value && typeof value === "object" && value._events) { return "[Domain]"; } if (key === "domainEmitter") { return "[DomainEmitter]"; } if (typeof global !== "undefined" && value === global) { return "[Global]"; } if (typeof window !== "undefined" && value === window) { return "[Window]"; } if (typeof document !== "undefined" && value === document) { return "[Document]"; } if (is.isVueViewModel(value)) { return "[VueViewModel]"; } if (is.isSyntheticEvent(value)) { return "[SyntheticEvent]"; } if (typeof value === "number" && value !== value) { return "[NaN]"; } if (typeof value === "function") { return `[Function: ${stacktrace.getFunctionName(value)}]`; } if (typeof value === "symbol") { return `[${String(value)}]`; } if (typeof value === "bigint") { return `[BigInt: ${String(value)}]`; } const objName = getConstructorName(value); if (/^HTML(\w*)Element$/.test(objName)) { return `[HTMLElement: ${objName}]`; } return `[object ${objName}]`; } catch (err) { return `**non-serializable** (${err})`; } } function getConstructorName(value) { const prototype = Object.getPrototypeOf(value); return prototype ? prototype.constructor.name : "null prototype"; } function utf8Length(value) { return ~-encodeURI(value).split(/%..|./).length; } function jsonSize(value) { return utf8Length(JSON.stringify(value)); } function normalizeUrlToBase(url3, basePath2) { const escapedBase = basePath2.replace(/\\/g, "/").replace(/[|\\{}()[\]^$+*?.]/g, "\\$&"); let newUrl = url3; try { newUrl = decodeURI(url3); } catch (_Oo) { } return newUrl.replace(/\\/g, "/").replace(/webpack:\/?/g, "").replace(new RegExp(`(file://)?/*${escapedBase}/*`, "ig"), "app:///"); } exports2.normalize = normalize4; exports2.normalizeToSize = normalizeToSize; exports2.normalizeUrlToBase = normalizeUrlToBase; exports2.walk = visit3; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/path.js var require_path = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/path.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function normalizeArray(parts, allowAboveRoot) { let up = 0; for (let i = parts.length - 1; i >= 0; i--) { const last = parts[i]; if (last === ".") { parts.splice(i, 1); } else if (last === "..") { parts.splice(i, 1); up++; } else if (up) { parts.splice(i, 1); up--; } } if (allowAboveRoot) { for (; up--; up) { parts.unshift(".."); } } return parts; } var splitPathRe = /^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/; function splitPath(filename) { const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename; const parts = splitPathRe.exec(truncated); return parts ? parts.slice(1) : []; } function resolve14(...args2) { let resolvedPath = ""; let resolvedAbsolute = false; for (let i = args2.length - 1; i >= -1 && !resolvedAbsolute; i--) { const path11 = i >= 0 ? args2[i] : "/"; if (!path11) { continue; } resolvedPath = `${path11}/${resolvedPath}`; resolvedAbsolute = path11.charAt(0) === "/"; } resolvedPath = normalizeArray( resolvedPath.split("/").filter((p) => !!p), !resolvedAbsolute ).join("/"); return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; } function trim(arr) { let start = 0; for (; start < arr.length; start++) { if (arr[start] !== "") { break; } } let end = arr.length - 1; for (; end >= 0; end--) { if (arr[end] !== "") { break; } } if (start > end) { return []; } return arr.slice(start, end - start + 1); } function relative8(from, to) { from = resolve14(from).slice(1); to = resolve14(to).slice(1); const fromParts = trim(from.split("/")); const toParts = trim(to.split("/")); const length = Math.min(fromParts.length, toParts.length); let samePartsLength = length; for (let i = 0; i < length; i++) { if (fromParts[i] !== toParts[i]) { samePartsLength = i; break; } } let outputParts = []; for (let i = samePartsLength; i < fromParts.length; i++) { outputParts.push(".."); } outputParts = outputParts.concat(toParts.slice(samePartsLength)); return outputParts.join("/"); } function normalizePath6(path11) { const isPathAbsolute = isAbsolute2(path11); const trailingSlash = path11.slice(-1) === "/"; let normalizedPath = normalizeArray( path11.split("/").filter((p) => !!p), !isPathAbsolute ).join("/"); if (!normalizedPath && !isPathAbsolute) { normalizedPath = "."; } if (normalizedPath && trailingSlash) { normalizedPath += "/"; } return (isPathAbsolute ? "/" : "") + normalizedPath; } function isAbsolute2(path11) { return path11.charAt(0) === "/"; } function join26(...args2) { return normalizePath6(args2.join("/")); } function dirname9(path11) { const result = splitPath(path11); const root = result[0]; let dir = result[1]; if (!root && !dir) { return "."; } if (dir) { dir = dir.slice(0, dir.length - 1); } return root + dir; } function basename11(path11, ext) { let f = splitPath(path11)[2]; if (ext && f.slice(ext.length * -1) === ext) { f = f.slice(0, f.length - ext.length); } return f; } exports2.basename = basename11; exports2.dirname = dirname9; exports2.isAbsolute = isAbsolute2; exports2.join = join26; exports2.normalizePath = normalizePath6; exports2.relative = relative8; exports2.resolve = resolve14; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/syncpromise.js var require_syncpromise = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/syncpromise.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var is = require_is(); var States; (function(States2) { const PENDING = 0; States2[States2["PENDING"] = PENDING] = "PENDING"; const RESOLVED = 1; States2[States2["RESOLVED"] = RESOLVED] = "RESOLVED"; const REJECTED = 2; States2[States2["REJECTED"] = REJECTED] = "REJECTED"; })(States || (States = {})); function resolvedSyncPromise(value) { return new SyncPromise((resolve14) => { resolve14(value); }); } function rejectedSyncPromise(reason) { return new SyncPromise((_, reject) => { reject(reason); }); } var SyncPromise = class _SyncPromise { constructor(executor) { _SyncPromise.prototype.__init.call(this); _SyncPromise.prototype.__init2.call(this); _SyncPromise.prototype.__init3.call(this); _SyncPromise.prototype.__init4.call(this); this._state = States.PENDING; this._handlers = []; try { executor(this._resolve, this._reject); } catch (e2) { this._reject(e2); } } /** JSDoc */ then(onfulfilled, onrejected) { return new _SyncPromise((resolve14, reject) => { this._handlers.push([ false, (result) => { if (!onfulfilled) { resolve14(result); } else { try { resolve14(onfulfilled(result)); } catch (e2) { reject(e2); } } }, (reason) => { if (!onrejected) { reject(reason); } else { try { resolve14(onrejected(reason)); } catch (e2) { reject(e2); } } } ]); this._executeHandlers(); }); } /** JSDoc */ catch(onrejected) { return this.then((val) => val, onrejected); } /** JSDoc */ finally(onfinally) { return new _SyncPromise((resolve14, reject) => { let val; let isRejected; return this.then( (value) => { isRejected = false; val = value; if (onfinally) { onfinally(); } }, (reason) => { isRejected = true; val = reason; if (onfinally) { onfinally(); } } ).then(() => { if (isRejected) { reject(val); return; } resolve14(val); }); }); } /** JSDoc */ __init() { this._resolve = (value) => { this._setResult(States.RESOLVED, value); }; } /** JSDoc */ __init2() { this._reject = (reason) => { this._setResult(States.REJECTED, reason); }; } /** JSDoc */ __init3() { this._setResult = (state, value) => { if (this._state !== States.PENDING) { return; } if (is.isThenable(value)) { void value.then(this._resolve, this._reject); return; } this._state = state; this._value = value; this._executeHandlers(); }; } /** JSDoc */ __init4() { this._executeHandlers = () => { if (this._state === States.PENDING) { return; } const cachedHandlers = this._handlers.slice(); this._handlers = []; cachedHandlers.forEach((handler) => { if (handler[0]) { return; } if (this._state === States.RESOLVED) { handler[1](this._value); } if (this._state === States.REJECTED) { handler[2](this._value); } handler[0] = true; }); }; } }; exports2.SyncPromise = SyncPromise; exports2.rejectedSyncPromise = rejectedSyncPromise; exports2.resolvedSyncPromise = resolvedSyncPromise; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/promisebuffer.js var require_promisebuffer = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/promisebuffer.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var error3 = require_error(); var syncpromise = require_syncpromise(); function makePromiseBuffer(limit) { const buffer = []; function isReady2() { return limit === void 0 || buffer.length < limit; } function remove7(task) { return buffer.splice(buffer.indexOf(task), 1)[0]; } function add9(taskProducer) { if (!isReady2()) { return syncpromise.rejectedSyncPromise(new error3.SentryError("Not adding Promise because buffer limit was reached.")); } const task = taskProducer(); if (buffer.indexOf(task) === -1) { buffer.push(task); } void task.then(() => remove7(task)).then( null, () => remove7(task).then(null, () => { }) ); return task; } function drain(timeout) { return new syncpromise.SyncPromise((resolve14, reject) => { let counter = buffer.length; if (!counter) { return resolve14(true); } const capturedSetTimeout = setTimeout(() => { if (timeout && timeout > 0) { resolve14(false); } }, timeout); buffer.forEach((item) => { void syncpromise.resolvedSyncPromise(item).then(() => { if (!--counter) { clearTimeout(capturedSetTimeout); resolve14(true); } }, reject); }); }); } return { $: buffer, add: add9, drain }; } exports2.makePromiseBuffer = makePromiseBuffer; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/cookie.js var require_cookie = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/cookie.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function parseCookie(str) { const obj = {}; let index = 0; while (index < str.length) { const eqIdx = str.indexOf("=", index); if (eqIdx === -1) { break; } let endIdx = str.indexOf(";", index); if (endIdx === -1) { endIdx = str.length; } else if (endIdx < eqIdx) { index = str.lastIndexOf(";", eqIdx - 1) + 1; continue; } const key = str.slice(index, eqIdx).trim(); if (void 0 === obj[key]) { let val = str.slice(eqIdx + 1, endIdx).trim(); if (val.charCodeAt(0) === 34) { val = val.slice(1, -1); } try { obj[key] = val.indexOf("%") !== -1 ? decodeURIComponent(val) : val; } catch (e2) { obj[key] = val; } } index = endIdx + 1; } return obj; } exports2.parseCookie = parseCookie; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/url.js var require_url = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/url.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function parseUrl2(url3) { if (!url3) { return {}; } const match = url3.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); if (!match) { return {}; } const query = match[6] || ""; const fragment = match[8] || ""; return { host: match[4], path: match[5], protocol: match[2], search: query, hash: fragment, relative: match[5] + query + fragment // everything minus origin }; } function stripUrlQueryAndFragment(urlPath) { return urlPath.split(/[\?#]/, 1)[0]; } function getNumberOfUrlSegments(url3) { return url3.split(/\\?\//).filter((s) => s.length > 0 && s !== ",").length; } function getSanitizedUrlString(url3) { const { protocol, host, path: path11 } = url3; const filteredHost = host && host.replace(/^.*@/, "[filtered]:[filtered]@").replace(/(:80)$/, "").replace(/(:443)$/, "") || ""; return `${protocol ? `${protocol}://` : ""}${filteredHost}${path11}`; } exports2.getNumberOfUrlSegments = getNumberOfUrlSegments; exports2.getSanitizedUrlString = getSanitizedUrlString; exports2.parseUrl = parseUrl2; exports2.stripUrlQueryAndFragment = stripUrlQueryAndFragment; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/requestdata.js var require_requestdata = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/requestdata.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var cookie = require_cookie(); var debugBuild = require_debug_build(); var is = require_is(); var logger = require_logger(); var normalize4 = require_normalize(); var url3 = require_url(); var DEFAULT_INCLUDES = { ip: false, request: true, transaction: true, user: true }; var DEFAULT_REQUEST_INCLUDES = ["cookies", "data", "headers", "method", "query_string", "url"]; var DEFAULT_USER_INCLUDES = ["id", "username", "email"]; function addRequestDataToTransaction(transaction, req, deps) { if (!transaction) return; if (!transaction.metadata.source || transaction.metadata.source === "url") { const [name, source] = extractPathForTransaction(req, { path: true, method: true }); transaction.updateName(name); transaction.setMetadata({ source }); } transaction.setAttribute("url", req.originalUrl || req.url); if (req.baseUrl) { transaction.setAttribute("baseUrl", req.baseUrl); } transaction.setData("query", extractQueryParams(req, deps)); } function extractPathForTransaction(req, options = {}) { const method = req.method && req.method.toUpperCase(); let path11 = ""; let source = "url"; if (options.customRoute || req.route) { path11 = options.customRoute || `${req.baseUrl || ""}${req.route && req.route.path}`; source = "route"; } else if (req.originalUrl || req.url) { path11 = url3.stripUrlQueryAndFragment(req.originalUrl || req.url || ""); } let name = ""; if (options.method && method) { name += method; } if (options.method && options.path) { name += " "; } if (options.path && path11) { name += path11; } return [name, source]; } function extractTransaction(req, type) { switch (type) { case "path": { return extractPathForTransaction(req, { path: true })[0]; } case "handler": { return req.route && req.route.stack && req.route.stack[0] && req.route.stack[0].name || ""; } case "methodPath": default: { const customRoute = req._reconstructedRoute ? req._reconstructedRoute : void 0; return extractPathForTransaction(req, { path: true, method: true, customRoute })[0]; } } } function extractUserData(user, keys) { const extractedUser = {}; const attributes = Array.isArray(keys) ? keys : DEFAULT_USER_INCLUDES; attributes.forEach((key) => { if (user && key in user) { extractedUser[key] = user[key]; } }); return extractedUser; } function extractRequestData(req, options) { const { include = DEFAULT_REQUEST_INCLUDES, deps } = options || {}; const requestData = {}; const headers = req.headers || {}; const method = req.method; const host = headers.host || req.hostname || req.host || ""; const protocol = req.protocol === "https" || req.socket && req.socket.encrypted ? "https" : "http"; const originalUrl = req.originalUrl || req.url || ""; const absoluteUrl = originalUrl.startsWith(protocol) ? originalUrl : `${protocol}://${host}${originalUrl}`; include.forEach((key) => { switch (key) { case "headers": { requestData.headers = headers; if (!include.includes("cookies")) { delete requestData.headers.cookie; } break; } case "method": { requestData.method = method; break; } case "url": { requestData.url = absoluteUrl; break; } case "cookies": { requestData.cookies = // TODO (v8 / #5257): We're only sending the empty object for backwards compatibility, so the last bit can // come off in v8 req.cookies || headers.cookie && cookie.parseCookie(headers.cookie) || {}; break; } case "query_string": { requestData.query_string = extractQueryParams(req, deps); break; } case "data": { if (method === "GET" || method === "HEAD") { break; } if (req.body !== void 0) { requestData.data = is.isString(req.body) ? req.body : JSON.stringify(normalize4.normalize(req.body)); } break; } default: { if ({}.hasOwnProperty.call(req, key)) { requestData[key] = req[key]; } } } }); return requestData; } function addRequestDataToEvent(event, req, options) { const include = { ...DEFAULT_INCLUDES, ...options && options.include }; if (include.request) { const extractedRequestData = Array.isArray(include.request) ? extractRequestData(req, { include: include.request, deps: options && options.deps }) : extractRequestData(req, { deps: options && options.deps }); event.request = { ...event.request, ...extractedRequestData }; } if (include.user) { const extractedUser = req.user && is.isPlainObject(req.user) ? extractUserData(req.user, include.user) : {}; if (Object.keys(extractedUser).length) { event.user = { ...event.user, ...extractedUser }; } } if (include.ip) { const ip = req.ip || req.socket && req.socket.remoteAddress; if (ip) { event.user = { ...event.user, ip_address: ip }; } } if (include.transaction && !event.transaction) { event.transaction = extractTransaction(req, include.transaction); } return event; } function extractQueryParams(req, deps) { let originalUrl = req.originalUrl || req.url || ""; if (!originalUrl) { return; } if (originalUrl.startsWith("/")) { originalUrl = `http://dogs.are.great${originalUrl}`; } try { return req.query || typeof URL !== "undefined" && new URL(originalUrl).search.slice(1) || // In Node 8, `URL` isn't in the global scope, so we have to use the built-in module from Node deps && deps.url && deps.url.parse(originalUrl).query || void 0; } catch (e2) { return void 0; } } function winterCGHeadersToDict(winterCGHeaders) { const headers = {}; try { winterCGHeaders.forEach((value, key) => { if (typeof value === "string") { headers[key] = value; } }); } catch (e2) { debugBuild.DEBUG_BUILD && logger.logger.warn("Sentry failed extracting headers from a request object. If you see this, please file an issue."); } return headers; } function winterCGRequestToRequestData(req) { const headers = winterCGHeadersToDict(req.headers); return { method: req.method, url: req.url, headers }; } exports2.DEFAULT_USER_INCLUDES = DEFAULT_USER_INCLUDES; exports2.addRequestDataToEvent = addRequestDataToEvent; exports2.addRequestDataToTransaction = addRequestDataToTransaction; exports2.extractPathForTransaction = extractPathForTransaction; exports2.extractRequestData = extractRequestData; exports2.winterCGHeadersToDict = winterCGHeadersToDict; exports2.winterCGRequestToRequestData = winterCGRequestToRequestData; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/severity.js var require_severity = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/severity.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var validSeverityLevels = ["fatal", "error", "warning", "log", "info", "debug"]; function severityFromString(level) { return severityLevelFromString(level); } function severityLevelFromString(level) { return level === "warn" ? "warning" : validSeverityLevels.includes(level) ? level : "log"; } exports2.severityFromString = severityFromString; exports2.severityLevelFromString = severityLevelFromString; exports2.validSeverityLevels = validSeverityLevels; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/time.js var require_time = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/time.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var worldwide = require_worldwide(); var ONE_SECOND_IN_MS = 1e3; function dateTimestampInSeconds() { return Date.now() / ONE_SECOND_IN_MS; } function createUnixTimestampInSecondsFunc() { const { performance: performance3 } = worldwide.GLOBAL_OBJ; if (!performance3 || !performance3.now) { return dateTimestampInSeconds; } const approxStartingTimeOrigin = Date.now() - performance3.now(); const timeOrigin = performance3.timeOrigin == void 0 ? approxStartingTimeOrigin : performance3.timeOrigin; return () => { return (timeOrigin + performance3.now()) / ONE_SECOND_IN_MS; }; } var timestampInSeconds = createUnixTimestampInSecondsFunc(); var timestampWithMs = timestampInSeconds; exports2._browserPerformanceTimeOriginMode = void 0; var browserPerformanceTimeOrigin = (() => { const { performance: performance3 } = worldwide.GLOBAL_OBJ; if (!performance3 || !performance3.now) { exports2._browserPerformanceTimeOriginMode = "none"; return void 0; } const threshold = 3600 * 1e3; const performanceNow = performance3.now(); const dateNow = Date.now(); const timeOriginDelta = performance3.timeOrigin ? Math.abs(performance3.timeOrigin + performanceNow - dateNow) : threshold; const timeOriginIsReliable = timeOriginDelta < threshold; const navigationStart = performance3.timing && performance3.timing.navigationStart; const hasNavigationStart = typeof navigationStart === "number"; const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold; const navigationStartIsReliable = navigationStartDelta < threshold; if (timeOriginIsReliable || navigationStartIsReliable) { if (timeOriginDelta <= navigationStartDelta) { exports2._browserPerformanceTimeOriginMode = "timeOrigin"; return performance3.timeOrigin; } else { exports2._browserPerformanceTimeOriginMode = "navigationStart"; return navigationStart; } } exports2._browserPerformanceTimeOriginMode = "dateNow"; return dateNow; })(); exports2.browserPerformanceTimeOrigin = browserPerformanceTimeOrigin; exports2.dateTimestampInSeconds = dateTimestampInSeconds; exports2.timestampInSeconds = timestampInSeconds; exports2.timestampWithMs = timestampWithMs; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/baggage.js var require_baggage = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/baggage.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var debugBuild = require_debug_build(); var is = require_is(); var logger = require_logger(); var BAGGAGE_HEADER_NAME = "baggage"; var SENTRY_BAGGAGE_KEY_PREFIX = "sentry-"; var SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/; var MAX_BAGGAGE_STRING_LENGTH = 8192; function baggageHeaderToDynamicSamplingContext(baggageHeader) { if (!is.isString(baggageHeader) && !Array.isArray(baggageHeader)) { return void 0; } let baggageObject = {}; if (Array.isArray(baggageHeader)) { baggageObject = baggageHeader.reduce((acc, curr) => { const currBaggageObject = baggageHeaderToObject(curr); for (const key of Object.keys(currBaggageObject)) { acc[key] = currBaggageObject[key]; } return acc; }, {}); } else { if (!baggageHeader) { return void 0; } baggageObject = baggageHeaderToObject(baggageHeader); } const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => { if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) { const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length); acc[nonPrefixedKey] = value; } return acc; }, {}); if (Object.keys(dynamicSamplingContext).length > 0) { return dynamicSamplingContext; } else { return void 0; } } function dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext) { if (!dynamicSamplingContext) { return void 0; } const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce( (acc, [dscKey, dscValue]) => { if (dscValue) { acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue; } return acc; }, {} ); return objectToBaggageHeader(sentryPrefixedDSC); } function baggageHeaderToObject(baggageHeader) { return baggageHeader.split(",").map((baggageEntry) => baggageEntry.split("=").map((keyOrValue) => decodeURIComponent(keyOrValue.trim()))).reduce((acc, [key, value]) => { acc[key] = value; return acc; }, {}); } function objectToBaggageHeader(object) { if (Object.keys(object).length === 0) { return void 0; } return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => { const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`; const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`; if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) { debugBuild.DEBUG_BUILD && logger.logger.warn( `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.` ); return baggageHeader; } else { return newBaggageHeader; } }, ""); } exports2.BAGGAGE_HEADER_NAME = BAGGAGE_HEADER_NAME; exports2.MAX_BAGGAGE_STRING_LENGTH = MAX_BAGGAGE_STRING_LENGTH; exports2.SENTRY_BAGGAGE_KEY_PREFIX = SENTRY_BAGGAGE_KEY_PREFIX; exports2.SENTRY_BAGGAGE_KEY_PREFIX_REGEX = SENTRY_BAGGAGE_KEY_PREFIX_REGEX; exports2.baggageHeaderToDynamicSamplingContext = baggageHeaderToDynamicSamplingContext; exports2.dynamicSamplingContextToSentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/tracing.js var require_tracing = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/tracing.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var baggage = require_baggage(); var misc = require_misc(); var TRACEPARENT_REGEXP = new RegExp( "^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$" // whitespace ); function extractTraceparentData(traceparent) { if (!traceparent) { return void 0; } const matches = traceparent.match(TRACEPARENT_REGEXP); if (!matches) { return void 0; } let parentSampled; if (matches[3] === "1") { parentSampled = true; } else if (matches[3] === "0") { parentSampled = false; } return { traceId: matches[1], parentSampled, parentSpanId: matches[2] }; } function tracingContextFromHeaders(sentryTrace, baggage$1) { const traceparentData = extractTraceparentData(sentryTrace); const dynamicSamplingContext = baggage.baggageHeaderToDynamicSamplingContext(baggage$1); const { traceId, parentSpanId, parentSampled } = traceparentData || {}; if (!traceparentData) { return { traceparentData, dynamicSamplingContext: void 0, propagationContext: { traceId: traceId || misc.uuid4(), spanId: misc.uuid4().substring(16) } }; } else { return { traceparentData, dynamicSamplingContext: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it propagationContext: { traceId: traceId || misc.uuid4(), parentSpanId: parentSpanId || misc.uuid4().substring(16), spanId: misc.uuid4().substring(16), sampled: parentSampled, dsc: dynamicSamplingContext || {} // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it } }; } } function propagationContextFromHeaders(sentryTrace, baggage$1) { const traceparentData = extractTraceparentData(sentryTrace); const dynamicSamplingContext = baggage.baggageHeaderToDynamicSamplingContext(baggage$1); const { traceId, parentSpanId, parentSampled } = traceparentData || {}; if (!traceparentData) { return { traceId: traceId || misc.uuid4(), spanId: misc.uuid4().substring(16) }; } else { return { traceId: traceId || misc.uuid4(), parentSpanId: parentSpanId || misc.uuid4().substring(16), spanId: misc.uuid4().substring(16), sampled: parentSampled, dsc: dynamicSamplingContext || {} // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it }; } } function generateSentryTraceHeader(traceId = misc.uuid4(), spanId = misc.uuid4().substring(16), sampled) { let sampledString = ""; if (sampled !== void 0) { sampledString = sampled ? "-1" : "-0"; } return `${traceId}-${spanId}${sampledString}`; } exports2.TRACEPARENT_REGEXP = TRACEPARENT_REGEXP; exports2.extractTraceparentData = extractTraceparentData; exports2.generateSentryTraceHeader = generateSentryTraceHeader; exports2.propagationContextFromHeaders = propagationContextFromHeaders; exports2.tracingContextFromHeaders = tracingContextFromHeaders; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/envelope.js var require_envelope = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/envelope.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var dsn = require_dsn(); var normalize4 = require_normalize(); var object = require_object(); function createEnvelope(headers, items = []) { return [headers, items]; } function addItemToEnvelope(envelope, newItem) { const [headers, items] = envelope; return [headers, [...items, newItem]]; } function forEachEnvelopeItem(envelope, callback) { const envelopeItems = envelope[1]; for (const envelopeItem of envelopeItems) { const envelopeItemType = envelopeItem[0].type; const result = callback(envelopeItem, envelopeItemType); if (result) { return true; } } return false; } function envelopeContainsItemType(envelope, types) { return forEachEnvelopeItem(envelope, (_, type) => types.includes(type)); } function encodeUTF8(input, textEncoder) { const utf8 = textEncoder || new TextEncoder(); return utf8.encode(input); } function serializeEnvelope(envelope, textEncoder) { const [envHeaders, items] = envelope; let parts = JSON.stringify(envHeaders); function append(next) { if (typeof parts === "string") { parts = typeof next === "string" ? parts + next : [encodeUTF8(parts, textEncoder), next]; } else { parts.push(typeof next === "string" ? encodeUTF8(next, textEncoder) : next); } } for (const item of items) { const [itemHeaders, payload] = item; append(` ${JSON.stringify(itemHeaders)} `); if (typeof payload === "string" || payload instanceof Uint8Array) { append(payload); } else { let stringifiedPayload; try { stringifiedPayload = JSON.stringify(payload); } catch (e2) { stringifiedPayload = JSON.stringify(normalize4.normalize(payload)); } append(stringifiedPayload); } } return typeof parts === "string" ? parts : concatBuffers(parts); } function concatBuffers(buffers) { const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0); const merged = new Uint8Array(totalLength); let offset = 0; for (const buffer of buffers) { merged.set(buffer, offset); offset += buffer.length; } return merged; } function parseEnvelope(env, textEncoder, textDecoder) { let buffer = typeof env === "string" ? textEncoder.encode(env) : env; function readBinary(length) { const bin = buffer.subarray(0, length); buffer = buffer.subarray(length + 1); return bin; } function readJson() { let i = buffer.indexOf(10); if (i < 0) { i = buffer.length; } return JSON.parse(textDecoder.decode(readBinary(i))); } const envelopeHeader = readJson(); const items = []; while (buffer.length) { const itemHeader = readJson(); const binaryLength = typeof itemHeader.length === "number" ? itemHeader.length : void 0; items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]); } return [envelopeHeader, items]; } function createAttachmentEnvelopeItem(attachment, textEncoder) { const buffer = typeof attachment.data === "string" ? encodeUTF8(attachment.data, textEncoder) : attachment.data; return [ object.dropUndefinedKeys({ type: "attachment", length: buffer.length, filename: attachment.filename, content_type: attachment.contentType, attachment_type: attachment.attachmentType }), buffer ]; } var ITEM_TYPE_TO_DATA_CATEGORY_MAP = { session: "session", sessions: "session", attachment: "attachment", transaction: "transaction", event: "error", client_report: "internal", user_report: "default", profile: "profile", replay_event: "replay", replay_recording: "replay", check_in: "monitor", feedback: "feedback", span: "span", statsd: "metric_bucket" }; function envelopeItemTypeToDataCategory(type) { return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type]; } function getSdkMetadataForEnvelopeHeader(metadataOrEvent) { if (!metadataOrEvent || !metadataOrEvent.sdk) { return; } const { name, version: version2 } = metadataOrEvent.sdk; return { name, version: version2 }; } function createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn$1) { const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext; return { event_id: event.event_id, sent_at: (/* @__PURE__ */ new Date()).toISOString(), ...sdkInfo && { sdk: sdkInfo }, ...!!tunnel && dsn$1 && { dsn: dsn.dsnToString(dsn$1) }, ...dynamicSamplingContext && { trace: object.dropUndefinedKeys({ ...dynamicSamplingContext }) } }; } exports2.addItemToEnvelope = addItemToEnvelope; exports2.createAttachmentEnvelopeItem = createAttachmentEnvelopeItem; exports2.createEnvelope = createEnvelope; exports2.createEventEnvelopeHeaders = createEventEnvelopeHeaders; exports2.envelopeContainsItemType = envelopeContainsItemType; exports2.envelopeItemTypeToDataCategory = envelopeItemTypeToDataCategory; exports2.forEachEnvelopeItem = forEachEnvelopeItem; exports2.getSdkMetadataForEnvelopeHeader = getSdkMetadataForEnvelopeHeader; exports2.parseEnvelope = parseEnvelope; exports2.serializeEnvelope = serializeEnvelope; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/clientreport.js var require_clientreport = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/clientreport.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var envelope = require_envelope(); var time = require_time(); function createClientReportEnvelope(discarded_events, dsn, timestamp) { const clientReportItem = [ { type: "client_report" }, { timestamp: timestamp || time.dateTimestampInSeconds(), discarded_events } ]; return envelope.createEnvelope(dsn ? { dsn } : {}, [clientReportItem]); } exports2.createClientReportEnvelope = createClientReportEnvelope; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/ratelimit.js var require_ratelimit = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/ratelimit.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var DEFAULT_RETRY_AFTER = 60 * 1e3; function parseRetryAfterHeader(header, now = Date.now()) { const headerDelay = parseInt(`${header}`, 10); if (!isNaN(headerDelay)) { return headerDelay * 1e3; } const headerDate = Date.parse(`${header}`); if (!isNaN(headerDate)) { return headerDate - now; } return DEFAULT_RETRY_AFTER; } function disabledUntil(limits, dataCategory) { return limits[dataCategory] || limits.all || 0; } function isRateLimited(limits, dataCategory, now = Date.now()) { return disabledUntil(limits, dataCategory) > now; } function updateRateLimits(limits, { statusCode, headers }, now = Date.now()) { const updatedRateLimits = { ...limits }; const rateLimitHeader = headers && headers["x-sentry-rate-limits"]; const retryAfterHeader = headers && headers["retry-after"]; if (rateLimitHeader) { for (const limit of rateLimitHeader.trim().split(",")) { const [retryAfter, categories, , , namespaces] = limit.split(":", 5); const headerDelay = parseInt(retryAfter, 10); const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1e3; if (!categories) { updatedRateLimits.all = now + delay; } else { for (const category of categories.split(";")) { if (category === "metric_bucket") { if (!namespaces || namespaces.split(";").includes("custom")) { updatedRateLimits[category] = now + delay; } } else { updatedRateLimits[category] = now + delay; } } } } } else if (retryAfterHeader) { updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now); } else if (statusCode === 429) { updatedRateLimits.all = now + 60 * 1e3; } return updatedRateLimits; } exports2.DEFAULT_RETRY_AFTER = DEFAULT_RETRY_AFTER; exports2.disabledUntil = disabledUntil; exports2.isRateLimited = isRateLimited; exports2.parseRetryAfterHeader = parseRetryAfterHeader; exports2.updateRateLimits = updateRateLimits; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/userIntegrations.js var require_userIntegrations = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/userIntegrations.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function setNestedKey(obj, keyPath, value) { const match = keyPath.match(/([a-z_]+)\.(.*)/i); if (match === null) { obj[keyPath] = value; } else { const innerObj = obj[match[1]]; setNestedKey(innerObj, match[2], value); } } function addOrUpdateIntegration(defaultIntegrationInstance, userIntegrations, forcedOptions = {}) { return Array.isArray(userIntegrations) ? addOrUpdateIntegrationInArray(defaultIntegrationInstance, userIntegrations, forcedOptions) : addOrUpdateIntegrationInFunction( defaultIntegrationInstance, // Somehow TS can't figure out that not being an array makes this necessarily a function userIntegrations, forcedOptions ); } function addOrUpdateIntegrationInArray(defaultIntegrationInstance, userIntegrations, forcedOptions) { const userInstance = userIntegrations.find((integration) => integration.name === defaultIntegrationInstance.name); if (userInstance) { for (const [keyPath, value] of Object.entries(forcedOptions)) { setNestedKey(userInstance, keyPath, value); } return userIntegrations; } return [...userIntegrations, defaultIntegrationInstance]; } function addOrUpdateIntegrationInFunction(defaultIntegrationInstance, userIntegrationsFunc, forcedOptions) { const wrapper = (defaultIntegrations) => { const userFinalIntegrations = userIntegrationsFunc(defaultIntegrations); if (defaultIntegrationInstance.allowExclusionByUser) { const userFinalInstance = userFinalIntegrations.find( (integration) => integration.name === defaultIntegrationInstance.name ); if (!userFinalInstance) { return userFinalIntegrations; } } return addOrUpdateIntegrationInArray(defaultIntegrationInstance, userFinalIntegrations, forcedOptions); }; return wrapper; } exports2.addOrUpdateIntegration = addOrUpdateIntegration; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/cache.js var require_cache = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/cache.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function makeFifoCache(size) { let evictionOrder = []; let cache = {}; return { add(key, value) { while (evictionOrder.length >= size) { const evictCandidate = evictionOrder.shift(); if (evictCandidate !== void 0) { delete cache[evictCandidate]; } } if (cache[key]) { this.delete(key); } evictionOrder.push(key); cache[key] = value; }, clear() { cache = {}; evictionOrder = []; }, get(key) { return cache[key]; }, size() { return evictionOrder.length; }, // Delete cache key and return true if it existed, false otherwise. delete(key) { if (!cache[key]) { return false; } delete cache[key]; for (let i = 0; i < evictionOrder.length; i++) { if (evictionOrder[i] === key) { evictionOrder.splice(i, 1); break; } } return true; } }; } exports2.makeFifoCache = makeFifoCache; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/eventbuilder.js var require_eventbuilder = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/eventbuilder.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var is = require_is(); var misc = require_misc(); var normalize4 = require_normalize(); var object = require_object(); function parseStackFrames(stackParser, error3) { return stackParser(error3.stack || "", 1); } function exceptionFromError(stackParser, error3) { const exception = { type: error3.name || error3.constructor.name, value: error3.message }; const frames = parseStackFrames(stackParser, error3); if (frames.length) { exception.stacktrace = { frames }; } return exception; } function getMessageForObject(exception) { if ("name" in exception && typeof exception.name === "string") { let message2 = `'${exception.name}' captured as exception`; if ("message" in exception && typeof exception.message === "string") { message2 += ` with message '${exception.message}'`; } return message2; } else if ("message" in exception && typeof exception.message === "string") { return exception.message; } else { return `Object captured as exception with keys: ${object.extractExceptionKeysForMessage( exception )}`; } } function eventFromUnknownInput(getHubOrClient, stackParser, exception, hint) { const client2 = typeof getHubOrClient === "function" ? ( // eslint-disable-next-line deprecation/deprecation getHubOrClient().getClient() ) : getHubOrClient; let ex = exception; const providedMechanism = hint && hint.data && hint.data.mechanism; const mechanism = providedMechanism || { handled: true, type: "generic" }; let extras; if (!is.isError(exception)) { if (is.isPlainObject(exception)) { const normalizeDepth = client2 && client2.getOptions().normalizeDepth; extras = { ["__serialized__"]: normalize4.normalizeToSize(exception, normalizeDepth) }; const message2 = getMessageForObject(exception); ex = hint && hint.syntheticException || new Error(message2); ex.message = message2; } else { ex = hint && hint.syntheticException || new Error(exception); ex.message = exception; } mechanism.synthetic = true; } const event = { exception: { values: [exceptionFromError(stackParser, ex)] } }; if (extras) { event.extra = extras; } misc.addExceptionTypeValue(event, void 0, void 0); misc.addExceptionMechanism(event, mechanism); return { ...event, event_id: hint && hint.event_id }; } function eventFromMessage(stackParser, message2, level = "info", hint, attachStacktrace) { const event = { event_id: hint && hint.event_id, level }; if (attachStacktrace && hint && hint.syntheticException) { const frames = parseStackFrames(stackParser, hint.syntheticException); if (frames.length) { event.exception = { values: [ { value: message2, stacktrace: { frames } } ] }; } } if (is.isParameterizedString(message2)) { const { __sentry_template_string__, __sentry_template_values__ } = message2; event.logentry = { message: __sentry_template_string__, params: __sentry_template_values__ }; return event; } event.message = message2; return event; } exports2.eventFromMessage = eventFromMessage; exports2.eventFromUnknownInput = eventFromUnknownInput; exports2.exceptionFromError = exceptionFromError; exports2.parseStackFrames = parseStackFrames; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/anr.js var require_anr = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/anr.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var object = require_object(); var nodeStackTrace = require_node_stack_trace(); function watchdogTimer(createTimer, pollInterval, anrThreshold, callback) { const timer = createTimer(); let triggered = false; let enabled = true; setInterval(() => { const diffMs = timer.getTimeMs(); if (triggered === false && diffMs > pollInterval + anrThreshold) { triggered = true; if (enabled) { callback(); } } if (diffMs < pollInterval + anrThreshold) { triggered = false; } }, 20); return { poll: () => { timer.reset(); }, enabled: (state) => { enabled = state; } }; } function callFrameToStackFrame(frame, url3, getModuleFromFilename) { const filename = url3 ? url3.replace(/^file:\/\//, "") : void 0; const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : void 0; const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : void 0; return object.dropUndefinedKeys({ filename, module: getModuleFromFilename(filename), function: frame.functionName || "?", colno, lineno, in_app: filename ? nodeStackTrace.filenameIsInApp(filename) : void 0 }); } exports2.callFrameToStackFrame = callFrameToStackFrame; exports2.watchdogTimer = watchdogTimer; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/lru.js var require_lru = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/lru.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var LRUMap = class { constructor(_maxSize) { this._maxSize = _maxSize; this._cache = /* @__PURE__ */ new Map(); } /** Get the current size of the cache */ get size() { return this._cache.size; } /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */ get(key) { const value = this._cache.get(key); if (value === void 0) { return void 0; } this._cache.delete(key); this._cache.set(key, value); return value; } /** Insert an entry and evict an older entry if we've reached maxSize */ set(key, value) { if (this._cache.size >= this._maxSize) { this._cache.delete(this._cache.keys().next().value); } this._cache.set(key, value); } /** Remove an entry and return the entry if it was in the cache */ remove(key) { const value = this._cache.get(key); if (value) { this._cache.delete(key); } return value; } /** Clear all entries */ clear() { this._cache.clear(); } /** Get all the keys */ keys() { return Array.from(this._cache.keys()); } /** Get all the values */ values() { const values = []; this._cache.forEach((value) => values.push(value)); return values; } }; exports2.LRUMap = LRUMap; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_nullishCoalesce.js var require_nullishCoalesce = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_nullishCoalesce.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function _nullishCoalesce(lhs, rhsFn) { return lhs != null ? lhs : rhsFn(); } exports2._nullishCoalesce = _nullishCoalesce; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncNullishCoalesce.js var require_asyncNullishCoalesce = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncNullishCoalesce.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var _nullishCoalesce = require_nullishCoalesce(); async function _asyncNullishCoalesce(lhs, rhsFn) { return _nullishCoalesce._nullishCoalesce(lhs, rhsFn); } exports2._asyncNullishCoalesce = _asyncNullishCoalesce; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncOptionalChain.js var require_asyncOptionalChain = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncOptionalChain.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); async function _asyncOptionalChain(ops) { let lastAccessLHS = void 0; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn2 = ops[i + 1]; i += 2; if ((op === "optionalAccess" || op === "optionalCall") && value == null) { return; } if (op === "access" || op === "optionalAccess") { lastAccessLHS = value; value = await fn2(value); } else if (op === "call" || op === "optionalCall") { value = await fn2((...args2) => value.call(lastAccessLHS, ...args2)); lastAccessLHS = void 0; } } return value; } exports2._asyncOptionalChain = _asyncOptionalChain; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncOptionalChainDelete.js var require_asyncOptionalChainDelete = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncOptionalChainDelete.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var _asyncOptionalChain = require_asyncOptionalChain(); async function _asyncOptionalChainDelete(ops) { const result = await _asyncOptionalChain._asyncOptionalChain(ops); return result == null ? true : result; } exports2._asyncOptionalChainDelete = _asyncOptionalChainDelete; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_optionalChain.js var require_optionalChain = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_optionalChain.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function _optionalChain(ops) { let lastAccessLHS = void 0; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn2 = ops[i + 1]; i += 2; if ((op === "optionalAccess" || op === "optionalCall") && value == null) { return; } if (op === "access" || op === "optionalAccess") { lastAccessLHS = value; value = fn2(value); } else if (op === "call" || op === "optionalCall") { value = fn2((...args2) => value.call(lastAccessLHS, ...args2)); lastAccessLHS = void 0; } } return value; } exports2._optionalChain = _optionalChain; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_optionalChainDelete.js var require_optionalChainDelete = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_optionalChainDelete.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var _optionalChain = require_optionalChain(); function _optionalChainDelete(ops) { const result = _optionalChain._optionalChain(ops); return result == null ? true : result; } exports2._optionalChainDelete = _optionalChainDelete; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/vendor/escapeStringForRegex.js var require_escapeStringForRegex = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/vendor/escapeStringForRegex.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function escapeStringForRegex(regexString) { return regexString.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); } exports2.escapeStringForRegex = escapeStringForRegex; } }); // ../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/index.js var require_cjs = __commonJS2({ "../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var aggregateErrors = require_aggregate_errors(); var browser = require_browser(); var dsn = require_dsn(); var error3 = require_error(); var worldwide = require_worldwide(); var index = require_instrument(); var is = require_is(); var isBrowser = require_isBrowser(); var logger = require_logger(); var memo = require_memo(); var misc = require_misc(); var node = require_node(); var normalize4 = require_normalize(); var object = require_object(); var path11 = require_path(); var promisebuffer = require_promisebuffer(); var requestdata = require_requestdata(); var severity = require_severity(); var stacktrace = require_stacktrace(); var string = require_string(); var supports = require_supports(); var syncpromise = require_syncpromise(); var time = require_time(); var tracing = require_tracing(); var env = require_env(); var envelope = require_envelope(); var clientreport = require_clientreport(); var ratelimit = require_ratelimit(); var baggage = require_baggage(); var url3 = require_url(); var userIntegrations = require_userIntegrations(); var cache = require_cache(); var eventbuilder = require_eventbuilder(); var anr = require_anr(); var lru = require_lru(); var _asyncNullishCoalesce = require_asyncNullishCoalesce(); var _asyncOptionalChain = require_asyncOptionalChain(); var _asyncOptionalChainDelete = require_asyncOptionalChainDelete(); var _nullishCoalesce = require_nullishCoalesce(); var _optionalChain = require_optionalChain(); var _optionalChainDelete = require_optionalChainDelete(); var console2 = require_console(); var dom = require_dom(); var xhr = require_xhr(); var fetch6 = require_fetch(); var history = require_history(); var globalError = require_globalError(); var globalUnhandledRejection = require_globalUnhandledRejection(); var _handlers = require_handlers(); var nodeStackTrace = require_node_stack_trace(); var escapeStringForRegex = require_escapeStringForRegex(); var supportsHistory = require_supportsHistory(); exports2.applyAggregateErrorsToEvent = aggregateErrors.applyAggregateErrorsToEvent; exports2.getComponentName = browser.getComponentName; exports2.getDomElement = browser.getDomElement; exports2.getLocationHref = browser.getLocationHref; exports2.htmlTreeAsString = browser.htmlTreeAsString; exports2.dsnFromString = dsn.dsnFromString; exports2.dsnToString = dsn.dsnToString; exports2.makeDsn = dsn.makeDsn; exports2.SentryError = error3.SentryError; exports2.GLOBAL_OBJ = worldwide.GLOBAL_OBJ; exports2.getGlobalObject = worldwide.getGlobalObject; exports2.getGlobalSingleton = worldwide.getGlobalSingleton; exports2.addInstrumentationHandler = index.addInstrumentationHandler; exports2.isDOMError = is.isDOMError; exports2.isDOMException = is.isDOMException; exports2.isElement = is.isElement; exports2.isError = is.isError; exports2.isErrorEvent = is.isErrorEvent; exports2.isEvent = is.isEvent; exports2.isInstanceOf = is.isInstanceOf; exports2.isNaN = is.isNaN; exports2.isParameterizedString = is.isParameterizedString; exports2.isPlainObject = is.isPlainObject; exports2.isPrimitive = is.isPrimitive; exports2.isRegExp = is.isRegExp; exports2.isString = is.isString; exports2.isSyntheticEvent = is.isSyntheticEvent; exports2.isThenable = is.isThenable; exports2.isVueViewModel = is.isVueViewModel; exports2.isBrowser = isBrowser.isBrowser; exports2.CONSOLE_LEVELS = logger.CONSOLE_LEVELS; exports2.consoleSandbox = logger.consoleSandbox; exports2.logger = logger.logger; exports2.originalConsoleMethods = logger.originalConsoleMethods; exports2.memoBuilder = memo.memoBuilder; exports2.addContextToFrame = misc.addContextToFrame; exports2.addExceptionMechanism = misc.addExceptionMechanism; exports2.addExceptionTypeValue = misc.addExceptionTypeValue; exports2.arrayify = misc.arrayify; exports2.checkOrSetAlreadyCaught = misc.checkOrSetAlreadyCaught; exports2.getEventDescription = misc.getEventDescription; exports2.parseSemver = misc.parseSemver; exports2.uuid4 = misc.uuid4; exports2.dynamicRequire = node.dynamicRequire; exports2.isNodeEnv = node.isNodeEnv; exports2.loadModule = node.loadModule; exports2.normalize = normalize4.normalize; exports2.normalizeToSize = normalize4.normalizeToSize; exports2.normalizeUrlToBase = normalize4.normalizeUrlToBase; exports2.walk = normalize4.walk; exports2.addNonEnumerableProperty = object.addNonEnumerableProperty; exports2.convertToPlainObject = object.convertToPlainObject; exports2.dropUndefinedKeys = object.dropUndefinedKeys; exports2.extractExceptionKeysForMessage = object.extractExceptionKeysForMessage; exports2.fill = object.fill; exports2.getOriginalFunction = object.getOriginalFunction; exports2.markFunctionWrapped = object.markFunctionWrapped; exports2.objectify = object.objectify; exports2.urlEncode = object.urlEncode; exports2.basename = path11.basename; exports2.dirname = path11.dirname; exports2.isAbsolute = path11.isAbsolute; exports2.join = path11.join; exports2.normalizePath = path11.normalizePath; exports2.relative = path11.relative; exports2.resolve = path11.resolve; exports2.makePromiseBuffer = promisebuffer.makePromiseBuffer; exports2.DEFAULT_USER_INCLUDES = requestdata.DEFAULT_USER_INCLUDES; exports2.addRequestDataToEvent = requestdata.addRequestDataToEvent; exports2.addRequestDataToTransaction = requestdata.addRequestDataToTransaction; exports2.extractPathForTransaction = requestdata.extractPathForTransaction; exports2.extractRequestData = requestdata.extractRequestData; exports2.winterCGHeadersToDict = requestdata.winterCGHeadersToDict; exports2.winterCGRequestToRequestData = requestdata.winterCGRequestToRequestData; exports2.severityFromString = severity.severityFromString; exports2.severityLevelFromString = severity.severityLevelFromString; exports2.validSeverityLevels = severity.validSeverityLevels; exports2.createStackParser = stacktrace.createStackParser; exports2.getFunctionName = stacktrace.getFunctionName; exports2.nodeStackLineParser = stacktrace.nodeStackLineParser; exports2.stackParserFromStackParserOptions = stacktrace.stackParserFromStackParserOptions; exports2.stripSentryFramesAndReverse = stacktrace.stripSentryFramesAndReverse; exports2.isMatchingPattern = string.isMatchingPattern; exports2.safeJoin = string.safeJoin; exports2.snipLine = string.snipLine; exports2.stringMatchesSomePattern = string.stringMatchesSomePattern; exports2.truncate = string.truncate; exports2.isNativeFetch = supports.isNativeFetch; exports2.supportsDOMError = supports.supportsDOMError; exports2.supportsDOMException = supports.supportsDOMException; exports2.supportsErrorEvent = supports.supportsErrorEvent; exports2.supportsFetch = supports.supportsFetch; exports2.supportsNativeFetch = supports.supportsNativeFetch; exports2.supportsReferrerPolicy = supports.supportsReferrerPolicy; exports2.supportsReportingObserver = supports.supportsReportingObserver; exports2.SyncPromise = syncpromise.SyncPromise; exports2.rejectedSyncPromise = syncpromise.rejectedSyncPromise; exports2.resolvedSyncPromise = syncpromise.resolvedSyncPromise; Object.defineProperty(exports2, "_browserPerformanceTimeOriginMode", { enumerable: true, get: () => time._browserPerformanceTimeOriginMode }); exports2.browserPerformanceTimeOrigin = time.browserPerformanceTimeOrigin; exports2.dateTimestampInSeconds = time.dateTimestampInSeconds; exports2.timestampInSeconds = time.timestampInSeconds; exports2.timestampWithMs = time.timestampWithMs; exports2.TRACEPARENT_REGEXP = tracing.TRACEPARENT_REGEXP; exports2.extractTraceparentData = tracing.extractTraceparentData; exports2.generateSentryTraceHeader = tracing.generateSentryTraceHeader; exports2.propagationContextFromHeaders = tracing.propagationContextFromHeaders; exports2.tracingContextFromHeaders = tracing.tracingContextFromHeaders; exports2.getSDKSource = env.getSDKSource; exports2.isBrowserBundle = env.isBrowserBundle; exports2.addItemToEnvelope = envelope.addItemToEnvelope; exports2.createAttachmentEnvelopeItem = envelope.createAttachmentEnvelopeItem; exports2.createEnvelope = envelope.createEnvelope; exports2.createEventEnvelopeHeaders = envelope.createEventEnvelopeHeaders; exports2.envelopeContainsItemType = envelope.envelopeContainsItemType; exports2.envelopeItemTypeToDataCategory = envelope.envelopeItemTypeToDataCategory; exports2.forEachEnvelopeItem = envelope.forEachEnvelopeItem; exports2.getSdkMetadataForEnvelopeHeader = envelope.getSdkMetadataForEnvelopeHeader; exports2.parseEnvelope = envelope.parseEnvelope; exports2.serializeEnvelope = envelope.serializeEnvelope; exports2.createClientReportEnvelope = clientreport.createClientReportEnvelope; exports2.DEFAULT_RETRY_AFTER = ratelimit.DEFAULT_RETRY_AFTER; exports2.disabledUntil = ratelimit.disabledUntil; exports2.isRateLimited = ratelimit.isRateLimited; exports2.parseRetryAfterHeader = ratelimit.parseRetryAfterHeader; exports2.updateRateLimits = ratelimit.updateRateLimits; exports2.BAGGAGE_HEADER_NAME = baggage.BAGGAGE_HEADER_NAME; exports2.MAX_BAGGAGE_STRING_LENGTH = baggage.MAX_BAGGAGE_STRING_LENGTH; exports2.SENTRY_BAGGAGE_KEY_PREFIX = baggage.SENTRY_BAGGAGE_KEY_PREFIX; exports2.SENTRY_BAGGAGE_KEY_PREFIX_REGEX = baggage.SENTRY_BAGGAGE_KEY_PREFIX_REGEX; exports2.baggageHeaderToDynamicSamplingContext = baggage.baggageHeaderToDynamicSamplingContext; exports2.dynamicSamplingContextToSentryBaggageHeader = baggage.dynamicSamplingContextToSentryBaggageHeader; exports2.getNumberOfUrlSegments = url3.getNumberOfUrlSegments; exports2.getSanitizedUrlString = url3.getSanitizedUrlString; exports2.parseUrl = url3.parseUrl; exports2.stripUrlQueryAndFragment = url3.stripUrlQueryAndFragment; exports2.addOrUpdateIntegration = userIntegrations.addOrUpdateIntegration; exports2.makeFifoCache = cache.makeFifoCache; exports2.eventFromMessage = eventbuilder.eventFromMessage; exports2.eventFromUnknownInput = eventbuilder.eventFromUnknownInput; exports2.exceptionFromError = eventbuilder.exceptionFromError; exports2.parseStackFrames = eventbuilder.parseStackFrames; exports2.callFrameToStackFrame = anr.callFrameToStackFrame; exports2.watchdogTimer = anr.watchdogTimer; exports2.LRUMap = lru.LRUMap; exports2._asyncNullishCoalesce = _asyncNullishCoalesce._asyncNullishCoalesce; exports2._asyncOptionalChain = _asyncOptionalChain._asyncOptionalChain; exports2._asyncOptionalChainDelete = _asyncOptionalChainDelete._asyncOptionalChainDelete; exports2._nullishCoalesce = _nullishCoalesce._nullishCoalesce; exports2._optionalChain = _optionalChain._optionalChain; exports2._optionalChainDelete = _optionalChainDelete._optionalChainDelete; exports2.addConsoleInstrumentationHandler = console2.addConsoleInstrumentationHandler; exports2.addClickKeypressInstrumentationHandler = dom.addClickKeypressInstrumentationHandler; exports2.SENTRY_XHR_DATA_KEY = xhr.SENTRY_XHR_DATA_KEY; exports2.addXhrInstrumentationHandler = xhr.addXhrInstrumentationHandler; exports2.addFetchInstrumentationHandler = fetch6.addFetchInstrumentationHandler; exports2.addHistoryInstrumentationHandler = history.addHistoryInstrumentationHandler; exports2.addGlobalErrorInstrumentationHandler = globalError.addGlobalErrorInstrumentationHandler; exports2.addGlobalUnhandledRejectionInstrumentationHandler = globalUnhandledRejection.addGlobalUnhandledRejectionInstrumentationHandler; exports2.resetInstrumentationHandlers = _handlers.resetInstrumentationHandlers; exports2.filenameIsInApp = nodeStackTrace.filenameIsInApp; exports2.escapeStringForRegex = escapeStringForRegex.escapeStringForRegex; exports2.supportsHistory = supportsHistory.supportsHistory; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/debug-build.js var require_debug_build2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/debug-build.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var DEBUG_BUILD = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__; exports2.DEBUG_BUILD = DEBUG_BUILD; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/constants.js var require_constants = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/constants.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var DEFAULT_ENVIRONMENT = "production"; exports2.DEFAULT_ENVIRONMENT = DEFAULT_ENVIRONMENT; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/eventProcessors.js var require_eventProcessors = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/eventProcessors.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); function getGlobalEventProcessors() { return utils.getGlobalSingleton("globalEventProcessors", () => []); } function addGlobalEventProcessor(callback) { getGlobalEventProcessors().push(callback); } function notifyEventProcessors(processors, event, hint, index = 0) { return new utils.SyncPromise((resolve14, reject) => { const processor = processors[index]; if (event === null || typeof processor !== "function") { resolve14(event); } else { const result = processor({ ...event }, hint); debugBuild.DEBUG_BUILD && processor.id && result === null && utils.logger.log(`Event processor "${processor.id}" dropped event`); if (utils.isThenable(result)) { void result.then((final) => notifyEventProcessors(processors, final, hint, index + 1).then(resolve14)).then(null, reject); } else { void notifyEventProcessors(processors, result, hint, index + 1).then(resolve14).then(null, reject); } } }); } exports2.addGlobalEventProcessor = addGlobalEventProcessor; exports2.getGlobalEventProcessors = getGlobalEventProcessors; exports2.notifyEventProcessors = notifyEventProcessors; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/session.js var require_session = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/session.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); function makeSession(context) { const startingTime = utils.timestampInSeconds(); const session = { sid: utils.uuid4(), init: true, timestamp: startingTime, started: startingTime, duration: 0, status: "ok", errors: 0, ignoreDuration: false, toJSON: () => sessionToJSON(session) }; if (context) { updateSession(session, context); } return session; } function updateSession(session, context = {}) { if (context.user) { if (!session.ipAddress && context.user.ip_address) { session.ipAddress = context.user.ip_address; } if (!session.did && !context.did) { session.did = context.user.id || context.user.email || context.user.username; } } session.timestamp = context.timestamp || utils.timestampInSeconds(); if (context.abnormal_mechanism) { session.abnormal_mechanism = context.abnormal_mechanism; } if (context.ignoreDuration) { session.ignoreDuration = context.ignoreDuration; } if (context.sid) { session.sid = context.sid.length === 32 ? context.sid : utils.uuid4(); } if (context.init !== void 0) { session.init = context.init; } if (!session.did && context.did) { session.did = `${context.did}`; } if (typeof context.started === "number") { session.started = context.started; } if (session.ignoreDuration) { session.duration = void 0; } else if (typeof context.duration === "number") { session.duration = context.duration; } else { const duration = session.timestamp - session.started; session.duration = duration >= 0 ? duration : 0; } if (context.release) { session.release = context.release; } if (context.environment) { session.environment = context.environment; } if (!session.ipAddress && context.ipAddress) { session.ipAddress = context.ipAddress; } if (!session.userAgent && context.userAgent) { session.userAgent = context.userAgent; } if (typeof context.errors === "number") { session.errors = context.errors; } if (context.status) { session.status = context.status; } } function closeSession(session, status3) { let context = {}; if (status3) { context = { status: status3 }; } else if (session.status === "ok") { context = { status: "exited" }; } updateSession(session, context); } function sessionToJSON(session) { return utils.dropUndefinedKeys({ sid: `${session.sid}`, init: session.init, // Make sure that sec is converted to ms for date constructor started: new Date(session.started * 1e3).toISOString(), timestamp: new Date(session.timestamp * 1e3).toISOString(), status: session.status, errors: session.errors, did: typeof session.did === "number" || typeof session.did === "string" ? `${session.did}` : void 0, duration: session.duration, abnormal_mechanism: session.abnormal_mechanism, attrs: { release: session.release, environment: session.environment, ip_address: session.ipAddress, user_agent: session.userAgent } }); } exports2.closeSession = closeSession; exports2.makeSession = makeSession; exports2.updateSession = updateSession; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/spanUtils.js var require_spanUtils = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/spanUtils.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var TRACE_FLAG_NONE = 0; var TRACE_FLAG_SAMPLED = 1; function spanToTraceContext(span) { const { spanId: span_id, traceId: trace_id } = span.spanContext(); const { data, op, parent_span_id, status: status3, tags, origin } = spanToJSON(span); return utils.dropUndefinedKeys({ data, op, parent_span_id, span_id, status: status3, tags, trace_id, origin }); } function spanToTraceHeader(span) { const { traceId, spanId } = span.spanContext(); const sampled = spanIsSampled(span); return utils.generateSentryTraceHeader(traceId, spanId, sampled); } function spanTimeInputToSeconds(input) { if (typeof input === "number") { return ensureTimestampInSeconds(input); } if (Array.isArray(input)) { return input[0] + input[1] / 1e9; } if (input instanceof Date) { return ensureTimestampInSeconds(input.getTime()); } return utils.timestampInSeconds(); } function ensureTimestampInSeconds(timestamp) { const isMs = timestamp > 9999999999; return isMs ? timestamp / 1e3 : timestamp; } function spanToJSON(span) { if (spanIsSpanClass(span)) { return span.getSpanJSON(); } if (typeof span.toJSON === "function") { return span.toJSON(); } return {}; } function spanIsSpanClass(span) { return typeof span.getSpanJSON === "function"; } function spanIsSampled(span) { const { traceFlags } = span.spanContext(); return Boolean(traceFlags & TRACE_FLAG_SAMPLED); } exports2.TRACE_FLAG_NONE = TRACE_FLAG_NONE; exports2.TRACE_FLAG_SAMPLED = TRACE_FLAG_SAMPLED; exports2.spanIsSampled = spanIsSampled; exports2.spanTimeInputToSeconds = spanTimeInputToSeconds; exports2.spanToJSON = spanToJSON; exports2.spanToTraceContext = spanToTraceContext; exports2.spanToTraceHeader = spanToTraceHeader; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/prepareEvent.js var require_prepareEvent = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/prepareEvent.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var constants2 = require_constants(); var eventProcessors = require_eventProcessors(); var scope = require_scope(); var applyScopeDataToEvent = require_applyScopeDataToEvent(); var spanUtils = require_spanUtils(); function prepareEvent(options, event, hint, scope$1, client2, isolationScope) { const { normalizeDepth = 3, normalizeMaxBreadth = 1e3 } = options; const prepared = { ...event, event_id: event.event_id || hint.event_id || utils.uuid4(), timestamp: event.timestamp || utils.dateTimestampInSeconds() }; const integrations = hint.integrations || options.integrations.map((i) => i.name); applyClientOptions(prepared, options); applyIntegrationsMetadata(prepared, integrations); if (event.type === void 0) { applyDebugIds(prepared, options.stackParser); } const finalScope = getFinalScope(scope$1, hint.captureContext); if (hint.mechanism) { utils.addExceptionMechanism(prepared, hint.mechanism); } const clientEventProcessors = client2 && client2.getEventProcessors ? client2.getEventProcessors() : []; const data = scope.getGlobalScope().getScopeData(); if (isolationScope) { const isolationData = isolationScope.getScopeData(); applyScopeDataToEvent.mergeScopeData(data, isolationData); } if (finalScope) { const finalScopeData = finalScope.getScopeData(); applyScopeDataToEvent.mergeScopeData(data, finalScopeData); } const attachments = [...hint.attachments || [], ...data.attachments]; if (attachments.length) { hint.attachments = attachments; } applyScopeDataToEvent.applyScopeDataToEvent(prepared, data); const eventProcessors$1 = [ ...clientEventProcessors, // eslint-disable-next-line deprecation/deprecation ...eventProcessors.getGlobalEventProcessors(), // Run scope event processors _after_ all other processors ...data.eventProcessors ]; const result = eventProcessors.notifyEventProcessors(eventProcessors$1, prepared, hint); return result.then((evt) => { if (evt) { applyDebugMeta(evt); } if (typeof normalizeDepth === "number" && normalizeDepth > 0) { return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth); } return evt; }); } function applyClientOptions(event, options) { const { environment, release, dist, maxValueLength = 250 } = options; if (!("environment" in event)) { event.environment = "environment" in options ? environment : constants2.DEFAULT_ENVIRONMENT; } if (event.release === void 0 && release !== void 0) { event.release = release; } if (event.dist === void 0 && dist !== void 0) { event.dist = dist; } if (event.message) { event.message = utils.truncate(event.message, maxValueLength); } const exception = event.exception && event.exception.values && event.exception.values[0]; if (exception && exception.value) { exception.value = utils.truncate(exception.value, maxValueLength); } const request = event.request; if (request && request.url) { request.url = utils.truncate(request.url, maxValueLength); } } var debugIdStackParserCache = /* @__PURE__ */ new WeakMap(); function applyDebugIds(event, stackParser) { const debugIdMap = utils.GLOBAL_OBJ._sentryDebugIds; if (!debugIdMap) { return; } let debugIdStackFramesCache; const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser); if (cachedDebugIdStackFrameCache) { debugIdStackFramesCache = cachedDebugIdStackFrameCache; } else { debugIdStackFramesCache = /* @__PURE__ */ new Map(); debugIdStackParserCache.set(stackParser, debugIdStackFramesCache); } const filenameDebugIdMap = Object.keys(debugIdMap).reduce((acc, debugIdStackTrace) => { let parsedStack; const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace); if (cachedParsedStack) { parsedStack = cachedParsedStack; } else { parsedStack = stackParser(debugIdStackTrace); debugIdStackFramesCache.set(debugIdStackTrace, parsedStack); } for (let i = parsedStack.length - 1; i >= 0; i--) { const stackFrame = parsedStack[i]; if (stackFrame.filename) { acc[stackFrame.filename] = debugIdMap[debugIdStackTrace]; break; } } return acc; }, {}); try { event.exception.values.forEach((exception) => { exception.stacktrace.frames.forEach((frame) => { if (frame.filename) { frame.debug_id = filenameDebugIdMap[frame.filename]; } }); }); } catch (e2) { } } function applyDebugMeta(event) { const filenameDebugIdMap = {}; try { event.exception.values.forEach((exception) => { exception.stacktrace.frames.forEach((frame) => { if (frame.debug_id) { if (frame.abs_path) { filenameDebugIdMap[frame.abs_path] = frame.debug_id; } else if (frame.filename) { filenameDebugIdMap[frame.filename] = frame.debug_id; } delete frame.debug_id; } }); }); } catch (e2) { } if (Object.keys(filenameDebugIdMap).length === 0) { return; } event.debug_meta = event.debug_meta || {}; event.debug_meta.images = event.debug_meta.images || []; const images = event.debug_meta.images; Object.keys(filenameDebugIdMap).forEach((filename) => { images.push({ type: "sourcemap", code_file: filename, debug_id: filenameDebugIdMap[filename] }); }); } function applyIntegrationsMetadata(event, integrationNames) { if (integrationNames.length > 0) { event.sdk = event.sdk || {}; event.sdk.integrations = [...event.sdk.integrations || [], ...integrationNames]; } } function normalizeEvent(event, depth, maxBreadth) { if (!event) { return null; } const normalized = { ...event, ...event.breadcrumbs && { breadcrumbs: event.breadcrumbs.map((b) => ({ ...b, ...b.data && { data: utils.normalize(b.data, depth, maxBreadth) } })) }, ...event.user && { user: utils.normalize(event.user, depth, maxBreadth) }, ...event.contexts && { contexts: utils.normalize(event.contexts, depth, maxBreadth) }, ...event.extra && { extra: utils.normalize(event.extra, depth, maxBreadth) } }; if (event.contexts && event.contexts.trace && normalized.contexts) { normalized.contexts.trace = event.contexts.trace; if (event.contexts.trace.data) { normalized.contexts.trace.data = utils.normalize(event.contexts.trace.data, depth, maxBreadth); } } if (event.spans) { normalized.spans = event.spans.map((span) => { const data = spanUtils.spanToJSON(span).data; if (data) { span.data = utils.normalize(data, depth, maxBreadth); } return span; }); } return normalized; } function getFinalScope(scope$1, captureContext) { if (!captureContext) { return scope$1; } const finalScope = scope$1 ? scope$1.clone() : new scope.Scope(); finalScope.update(captureContext); return finalScope; } function parseEventHintOrCaptureContext(hint) { if (!hint) { return void 0; } if (hintIsScopeOrFunction(hint)) { return { captureContext: hint }; } if (hintIsScopeContext(hint)) { return { captureContext: hint }; } return hint; } function hintIsScopeOrFunction(hint) { return hint instanceof scope.Scope || typeof hint === "function"; } var captureContextKeys = [ "user", "level", "extra", "contexts", "tags", "fingerprint", "requestSession", "propagationContext" ]; function hintIsScopeContext(hint) { return Object.keys(hint).some((key) => captureContextKeys.includes(key)); } exports2.applyDebugIds = applyDebugIds; exports2.applyDebugMeta = applyDebugMeta; exports2.parseEventHintOrCaptureContext = parseEventHintOrCaptureContext; exports2.prepareEvent = prepareEvent; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/exports.js var require_exports = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/exports.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var constants2 = require_constants(); var debugBuild = require_debug_build2(); var hub = require_hub(); var session = require_session(); var prepareEvent = require_prepareEvent(); function captureException(exception, hint) { return hub.getCurrentHub().captureException(exception, prepareEvent.parseEventHintOrCaptureContext(hint)); } function captureMessage(message2, captureContext) { const level = typeof captureContext === "string" ? captureContext : void 0; const context = typeof captureContext !== "string" ? { captureContext } : void 0; return hub.getCurrentHub().captureMessage(message2, level, context); } function captureEvent(event, hint) { return hub.getCurrentHub().captureEvent(event, hint); } function configureScope(callback) { hub.getCurrentHub().configureScope(callback); } function addBreadcrumb(breadcrumb, hint) { hub.getCurrentHub().addBreadcrumb(breadcrumb, hint); } function setContext(name, context) { hub.getCurrentHub().setContext(name, context); } function setExtras(extras) { hub.getCurrentHub().setExtras(extras); } function setExtra(key, extra) { hub.getCurrentHub().setExtra(key, extra); } function setTags(tags) { hub.getCurrentHub().setTags(tags); } function setTag(key, value) { hub.getCurrentHub().setTag(key, value); } function setUser(user) { hub.getCurrentHub().setUser(user); } function withScope(...rest) { const hub$1 = hub.getCurrentHub(); if (rest.length === 2) { const [scope, callback] = rest; if (!scope) { return hub$1.withScope(callback); } return hub$1.withScope(() => { hub$1.getStackTop().scope = scope; return callback(scope); }); } return hub$1.withScope(rest[0]); } function withIsolationScope(callback) { return hub.runWithAsyncContext(() => { return callback(hub.getIsolationScope()); }); } function withActiveSpan(span, callback) { return withScope((scope) => { scope.setSpan(span); return callback(scope); }); } function startTransaction(context, customSamplingContext) { return hub.getCurrentHub().startTransaction({ ...context }, customSamplingContext); } function captureCheckIn(checkIn, upsertMonitorConfig) { const scope = getCurrentScope(); const client2 = getClient(); if (!client2) { debugBuild.DEBUG_BUILD && utils.logger.warn("Cannot capture check-in. No client defined."); } else if (!client2.captureCheckIn) { debugBuild.DEBUG_BUILD && utils.logger.warn("Cannot capture check-in. Client does not support sending check-ins."); } else { return client2.captureCheckIn(checkIn, upsertMonitorConfig, scope); } return utils.uuid4(); } function withMonitor(monitorSlug, callback, upsertMonitorConfig) { const checkInId = captureCheckIn({ monitorSlug, status: "in_progress" }, upsertMonitorConfig); const now = utils.timestampInSeconds(); function finishCheckIn(status3) { captureCheckIn({ monitorSlug, status: status3, checkInId, duration: utils.timestampInSeconds() - now }); } let maybePromiseResult; try { maybePromiseResult = callback(); } catch (e2) { finishCheckIn("error"); throw e2; } if (utils.isThenable(maybePromiseResult)) { Promise.resolve(maybePromiseResult).then( () => { finishCheckIn("ok"); }, () => { finishCheckIn("error"); } ); } else { finishCheckIn("ok"); } return maybePromiseResult; } async function flush2(timeout) { const client2 = getClient(); if (client2) { return client2.flush(timeout); } debugBuild.DEBUG_BUILD && utils.logger.warn("Cannot flush events. No client defined."); return Promise.resolve(false); } async function close2(timeout) { const client2 = getClient(); if (client2) { return client2.close(timeout); } debugBuild.DEBUG_BUILD && utils.logger.warn("Cannot flush events and disable SDK. No client defined."); return Promise.resolve(false); } function lastEventId() { return hub.getCurrentHub().lastEventId(); } function getClient() { return hub.getCurrentHub().getClient(); } function isInitialized() { return !!getClient(); } function getCurrentScope() { return hub.getCurrentHub().getScope(); } function startSession(context) { const client2 = getClient(); const isolationScope = hub.getIsolationScope(); const currentScope = getCurrentScope(); const { release, environment = constants2.DEFAULT_ENVIRONMENT } = client2 && client2.getOptions() || {}; const { userAgent: userAgent2 } = utils.GLOBAL_OBJ.navigator || {}; const session$1 = session.makeSession({ release, environment, user: currentScope.getUser() || isolationScope.getUser(), ...userAgent2 && { userAgent: userAgent2 }, ...context }); const currentSession = isolationScope.getSession(); if (currentSession && currentSession.status === "ok") { session.updateSession(currentSession, { status: "exited" }); } endSession(); isolationScope.setSession(session$1); currentScope.setSession(session$1); return session$1; } function endSession() { const isolationScope = hub.getIsolationScope(); const currentScope = getCurrentScope(); const session$1 = currentScope.getSession() || isolationScope.getSession(); if (session$1) { session.closeSession(session$1); } _sendSessionUpdate(); isolationScope.setSession(); currentScope.setSession(); } function _sendSessionUpdate() { const isolationScope = hub.getIsolationScope(); const currentScope = getCurrentScope(); const client2 = getClient(); const session2 = currentScope.getSession() || isolationScope.getSession(); if (session2 && client2 && client2.captureSession) { client2.captureSession(session2); } } function captureSession(end = false) { if (end) { endSession(); return; } _sendSessionUpdate(); } exports2.addBreadcrumb = addBreadcrumb; exports2.captureCheckIn = captureCheckIn; exports2.captureEvent = captureEvent; exports2.captureException = captureException; exports2.captureMessage = captureMessage; exports2.captureSession = captureSession; exports2.close = close2; exports2.configureScope = configureScope; exports2.endSession = endSession; exports2.flush = flush2; exports2.getClient = getClient; exports2.getCurrentScope = getCurrentScope; exports2.isInitialized = isInitialized; exports2.lastEventId = lastEventId; exports2.setContext = setContext; exports2.setExtra = setExtra; exports2.setExtras = setExtras; exports2.setTag = setTag; exports2.setTags = setTags; exports2.setUser = setUser; exports2.startSession = startSession; exports2.startTransaction = startTransaction; exports2.withActiveSpan = withActiveSpan; exports2.withIsolationScope = withIsolationScope; exports2.withMonitor = withMonitor; exports2.withScope = withScope; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/getRootSpan.js var require_getRootSpan = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/getRootSpan.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function getRootSpan(span) { return span.transaction; } exports2.getRootSpan = getRootSpan; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/dynamicSamplingContext.js var require_dynamicSamplingContext = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/dynamicSamplingContext.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var constants2 = require_constants(); var exports$1 = require_exports(); var getRootSpan = require_getRootSpan(); var spanUtils = require_spanUtils(); function getDynamicSamplingContextFromClient(trace_id, client2, scope) { const options = client2.getOptions(); const { publicKey: public_key } = client2.getDsn() || {}; const { segment: user_segment } = scope && scope.getUser() || {}; const dsc = utils.dropUndefinedKeys({ environment: options.environment || constants2.DEFAULT_ENVIRONMENT, release: options.release, user_segment, public_key, trace_id }); client2.emit && client2.emit("createDsc", dsc); return dsc; } function getDynamicSamplingContextFromSpan(span) { const client2 = exports$1.getClient(); if (!client2) { return {}; } const dsc = getDynamicSamplingContextFromClient(spanUtils.spanToJSON(span).trace_id || "", client2, exports$1.getCurrentScope()); const txn = getRootSpan.getRootSpan(span); if (!txn) { return dsc; } const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext; if (v7FrozenDsc) { return v7FrozenDsc; } const { sampleRate: maybeSampleRate, source } = txn.metadata; if (maybeSampleRate != null) { dsc.sample_rate = `${maybeSampleRate}`; } const jsonSpan = spanUtils.spanToJSON(txn); if (source && source !== "url") { dsc.transaction = jsonSpan.description; } dsc.sampled = String(spanUtils.spanIsSampled(txn)); client2.emit && client2.emit("createDsc", dsc); return dsc; } exports2.getDynamicSamplingContextFromClient = getDynamicSamplingContextFromClient; exports2.getDynamicSamplingContextFromSpan = getDynamicSamplingContextFromSpan; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/applyScopeDataToEvent.js var require_applyScopeDataToEvent = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/applyScopeDataToEvent.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var dynamicSamplingContext = require_dynamicSamplingContext(); var getRootSpan = require_getRootSpan(); var spanUtils = require_spanUtils(); function applyScopeDataToEvent(event, data) { const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data; applyDataToEvent(event, data); if (span) { applySpanToEvent(event, span); } applyFingerprintToEvent(event, fingerprint); applyBreadcrumbsToEvent(event, breadcrumbs); applySdkMetadataToEvent(event, sdkProcessingMetadata); } function mergeScopeData(data, mergeData) { const { extra, tags, user, contexts, level, sdkProcessingMetadata, breadcrumbs, fingerprint, eventProcessors, attachments, propagationContext, // eslint-disable-next-line deprecation/deprecation transactionName, span } = mergeData; mergeAndOverwriteScopeData(data, "extra", extra); mergeAndOverwriteScopeData(data, "tags", tags); mergeAndOverwriteScopeData(data, "user", user); mergeAndOverwriteScopeData(data, "contexts", contexts); mergeAndOverwriteScopeData(data, "sdkProcessingMetadata", sdkProcessingMetadata); if (level) { data.level = level; } if (transactionName) { data.transactionName = transactionName; } if (span) { data.span = span; } if (breadcrumbs.length) { data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs]; } if (fingerprint.length) { data.fingerprint = [...data.fingerprint, ...fingerprint]; } if (eventProcessors.length) { data.eventProcessors = [...data.eventProcessors, ...eventProcessors]; } if (attachments.length) { data.attachments = [...data.attachments, ...attachments]; } data.propagationContext = { ...data.propagationContext, ...propagationContext }; } function mergeAndOverwriteScopeData(data, prop, mergeVal) { if (mergeVal && Object.keys(mergeVal).length) { data[prop] = { ...data[prop] }; for (const key in mergeVal) { if (Object.prototype.hasOwnProperty.call(mergeVal, key)) { data[prop][key] = mergeVal[key]; } } } } function applyDataToEvent(event, data) { const { extra, tags, user, contexts, level, // eslint-disable-next-line deprecation/deprecation transactionName } = data; const cleanedExtra = utils.dropUndefinedKeys(extra); if (cleanedExtra && Object.keys(cleanedExtra).length) { event.extra = { ...cleanedExtra, ...event.extra }; } const cleanedTags = utils.dropUndefinedKeys(tags); if (cleanedTags && Object.keys(cleanedTags).length) { event.tags = { ...cleanedTags, ...event.tags }; } const cleanedUser = utils.dropUndefinedKeys(user); if (cleanedUser && Object.keys(cleanedUser).length) { event.user = { ...cleanedUser, ...event.user }; } const cleanedContexts = utils.dropUndefinedKeys(contexts); if (cleanedContexts && Object.keys(cleanedContexts).length) { event.contexts = { ...cleanedContexts, ...event.contexts }; } if (level) { event.level = level; } if (transactionName) { event.transaction = transactionName; } } function applyBreadcrumbsToEvent(event, breadcrumbs) { const mergedBreadcrumbs = [...event.breadcrumbs || [], ...breadcrumbs]; event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : void 0; } function applySdkMetadataToEvent(event, sdkProcessingMetadata) { event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...sdkProcessingMetadata }; } function applySpanToEvent(event, span) { event.contexts = { trace: spanUtils.spanToTraceContext(span), ...event.contexts }; const rootSpan = getRootSpan.getRootSpan(span); if (rootSpan) { event.sdkProcessingMetadata = { dynamicSamplingContext: dynamicSamplingContext.getDynamicSamplingContextFromSpan(span), ...event.sdkProcessingMetadata }; const transactionName = spanUtils.spanToJSON(rootSpan).description; if (transactionName) { event.tags = { transaction: transactionName, ...event.tags }; } } } function applyFingerprintToEvent(event, fingerprint) { event.fingerprint = event.fingerprint ? utils.arrayify(event.fingerprint) : []; if (fingerprint) { event.fingerprint = event.fingerprint.concat(fingerprint); } if (event.fingerprint && !event.fingerprint.length) { delete event.fingerprint; } } exports2.applyScopeDataToEvent = applyScopeDataToEvent; exports2.mergeAndOverwriteScopeData = mergeAndOverwriteScopeData; exports2.mergeScopeData = mergeScopeData; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/scope.js var require_scope = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/scope.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var eventProcessors = require_eventProcessors(); var session = require_session(); var applyScopeDataToEvent = require_applyScopeDataToEvent(); var DEFAULT_MAX_BREADCRUMBS = 100; var globalScope; var Scope = class _Scope { /** Flag if notifying is happening. */ /** Callback for client to receive scope changes. */ /** Callback list that will be called after {@link applyToEvent}. */ /** Array of breadcrumbs. */ /** User */ /** Tags */ /** Extra */ /** Contexts */ /** Attachments */ /** Propagation Context for distributed tracing */ /** * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get * sent to Sentry */ /** Fingerprint */ /** Severity */ // eslint-disable-next-line deprecation/deprecation /** * Transaction Name */ /** Span */ /** Session */ /** Request Mode Session Status */ /** The client on this scope */ // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method. constructor() { this._notifyingListeners = false; this._scopeListeners = []; this._eventProcessors = []; this._breadcrumbs = []; this._attachments = []; this._user = {}; this._tags = {}; this._extra = {}; this._contexts = {}; this._sdkProcessingMetadata = {}; this._propagationContext = generatePropagationContext(); } /** * Inherit values from the parent scope. * @deprecated Use `scope.clone()` and `new Scope()` instead. */ static clone(scope) { return scope ? scope.clone() : new _Scope(); } /** * Clone this scope instance. */ clone() { const newScope = new _Scope(); newScope._breadcrumbs = [...this._breadcrumbs]; newScope._tags = { ...this._tags }; newScope._extra = { ...this._extra }; newScope._contexts = { ...this._contexts }; newScope._user = this._user; newScope._level = this._level; newScope._span = this._span; newScope._session = this._session; newScope._transactionName = this._transactionName; newScope._fingerprint = this._fingerprint; newScope._eventProcessors = [...this._eventProcessors]; newScope._requestSession = this._requestSession; newScope._attachments = [...this._attachments]; newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata }; newScope._propagationContext = { ...this._propagationContext }; newScope._client = this._client; return newScope; } /** Update the client on the scope. */ setClient(client2) { this._client = client2; } /** * Get the client assigned to this scope. * * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing. */ getClient() { return this._client; } /** * Add internal on change listener. Used for sub SDKs that need to store the scope. * @hidden */ addScopeListener(callback) { this._scopeListeners.push(callback); } /** * @inheritDoc */ addEventProcessor(callback) { this._eventProcessors.push(callback); return this; } /** * @inheritDoc */ setUser(user) { this._user = user || { email: void 0, id: void 0, ip_address: void 0, segment: void 0, username: void 0 }; if (this._session) { session.updateSession(this._session, { user }); } this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getUser() { return this._user; } /** * @inheritDoc */ getRequestSession() { return this._requestSession; } /** * @inheritDoc */ setRequestSession(requestSession) { this._requestSession = requestSession; return this; } /** * @inheritDoc */ setTags(tags) { this._tags = { ...this._tags, ...tags }; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setTag(key, value) { this._tags = { ...this._tags, [key]: value }; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setExtras(extras) { this._extra = { ...this._extra, ...extras }; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setExtra(key, extra) { this._extra = { ...this._extra, [key]: extra }; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setFingerprint(fingerprint) { this._fingerprint = fingerprint; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setLevel(level) { this._level = level; this._notifyScopeListeners(); return this; } /** * Sets the transaction name on the scope for future events. */ setTransactionName(name) { this._transactionName = name; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setContext(key, context) { if (context === null) { delete this._contexts[key]; } else { this._contexts[key] = context; } this._notifyScopeListeners(); return this; } /** * Sets the Span on the scope. * @param span Span * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead. */ setSpan(span) { this._span = span; this._notifyScopeListeners(); return this; } /** * Returns the `Span` if there is one. * @deprecated Use `getActiveSpan()` instead. */ getSpan() { return this._span; } /** * Returns the `Transaction` attached to the scope (if there is one). * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead. */ getTransaction() { const span = this._span; return span && span.transaction; } /** * @inheritDoc */ setSession(session2) { if (!session2) { delete this._session; } else { this._session = session2; } this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getSession() { return this._session; } /** * @inheritDoc */ update(captureContext) { if (!captureContext) { return this; } const scopeToMerge = typeof captureContext === "function" ? captureContext(this) : captureContext; if (scopeToMerge instanceof _Scope) { const scopeData = scopeToMerge.getScopeData(); this._tags = { ...this._tags, ...scopeData.tags }; this._extra = { ...this._extra, ...scopeData.extra }; this._contexts = { ...this._contexts, ...scopeData.contexts }; if (scopeData.user && Object.keys(scopeData.user).length) { this._user = scopeData.user; } if (scopeData.level) { this._level = scopeData.level; } if (scopeData.fingerprint.length) { this._fingerprint = scopeData.fingerprint; } if (scopeToMerge.getRequestSession()) { this._requestSession = scopeToMerge.getRequestSession(); } if (scopeData.propagationContext) { this._propagationContext = scopeData.propagationContext; } } else if (utils.isPlainObject(scopeToMerge)) { const scopeContext = captureContext; this._tags = { ...this._tags, ...scopeContext.tags }; this._extra = { ...this._extra, ...scopeContext.extra }; this._contexts = { ...this._contexts, ...scopeContext.contexts }; if (scopeContext.user) { this._user = scopeContext.user; } if (scopeContext.level) { this._level = scopeContext.level; } if (scopeContext.fingerprint) { this._fingerprint = scopeContext.fingerprint; } if (scopeContext.requestSession) { this._requestSession = scopeContext.requestSession; } if (scopeContext.propagationContext) { this._propagationContext = scopeContext.propagationContext; } } return this; } /** * @inheritDoc */ clear() { this._breadcrumbs = []; this._tags = {}; this._extra = {}; this._user = {}; this._contexts = {}; this._level = void 0; this._transactionName = void 0; this._fingerprint = void 0; this._requestSession = void 0; this._span = void 0; this._session = void 0; this._notifyScopeListeners(); this._attachments = []; this._propagationContext = generatePropagationContext(); return this; } /** * @inheritDoc */ addBreadcrumb(breadcrumb, maxBreadcrumbs) { const maxCrumbs = typeof maxBreadcrumbs === "number" ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS; if (maxCrumbs <= 0) { return this; } const mergedBreadcrumb = { timestamp: utils.dateTimestampInSeconds(), ...breadcrumb }; const breadcrumbs = this._breadcrumbs; breadcrumbs.push(mergedBreadcrumb); this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getLastBreadcrumb() { return this._breadcrumbs[this._breadcrumbs.length - 1]; } /** * @inheritDoc */ clearBreadcrumbs() { this._breadcrumbs = []; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ addAttachment(attachment) { this._attachments.push(attachment); return this; } /** * @inheritDoc * @deprecated Use `getScopeData()` instead. */ getAttachments() { const data = this.getScopeData(); return data.attachments; } /** * @inheritDoc */ clearAttachments() { this._attachments = []; return this; } /** @inheritDoc */ getScopeData() { const { _breadcrumbs, _attachments, _contexts, _tags, _extra, _user, _level, _fingerprint, _eventProcessors, _propagationContext, _sdkProcessingMetadata, _transactionName, _span } = this; return { breadcrumbs: _breadcrumbs, attachments: _attachments, contexts: _contexts, tags: _tags, extra: _extra, user: _user, level: _level, fingerprint: _fingerprint || [], eventProcessors: _eventProcessors, propagationContext: _propagationContext, sdkProcessingMetadata: _sdkProcessingMetadata, transactionName: _transactionName, span: _span }; } /** * Applies data from the scope to the event and runs all event processors on it. * * @param event Event * @param hint Object containing additional information about the original exception, for use by the event processors. * @hidden * @deprecated Use `applyScopeDataToEvent()` directly */ applyToEvent(event, hint = {}, additionalEventProcessors = []) { applyScopeDataToEvent.applyScopeDataToEvent(event, this.getScopeData()); const eventProcessors$1 = [ ...additionalEventProcessors, // eslint-disable-next-line deprecation/deprecation ...eventProcessors.getGlobalEventProcessors(), ...this._eventProcessors ]; return eventProcessors.notifyEventProcessors(eventProcessors$1, event, hint); } /** * Add data which will be accessible during event processing but won't get sent to Sentry */ setSDKProcessingMetadata(newData) { this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData }; return this; } /** * @inheritDoc */ setPropagationContext(context) { this._propagationContext = context; return this; } /** * @inheritDoc */ getPropagationContext() { return this._propagationContext; } /** * Capture an exception for this scope. * * @param exception The exception to capture. * @param hint Optinal additional data to attach to the Sentry event. * @returns the id of the captured Sentry event. */ captureException(exception, hint) { const eventId = hint && hint.event_id ? hint.event_id : utils.uuid4(); if (!this._client) { utils.logger.warn("No client configured on scope - will not capture exception!"); return eventId; } const syntheticException = new Error("Sentry syntheticException"); this._client.captureException( exception, { originalException: exception, syntheticException, ...hint, event_id: eventId }, this ); return eventId; } /** * Capture a message for this scope. * * @param message The message to capture. * @param level An optional severity level to report the message with. * @param hint Optional additional data to attach to the Sentry event. * @returns the id of the captured message. */ captureMessage(message2, level, hint) { const eventId = hint && hint.event_id ? hint.event_id : utils.uuid4(); if (!this._client) { utils.logger.warn("No client configured on scope - will not capture message!"); return eventId; } const syntheticException = new Error(message2); this._client.captureMessage( message2, level, { originalException: message2, syntheticException, ...hint, event_id: eventId }, this ); return eventId; } /** * Captures a manually created event for this scope and sends it to Sentry. * * @param exception The event to capture. * @param hint Optional additional data to attach to the Sentry event. * @returns the id of the captured event. */ captureEvent(event, hint) { const eventId = hint && hint.event_id ? hint.event_id : utils.uuid4(); if (!this._client) { utils.logger.warn("No client configured on scope - will not capture event!"); return eventId; } this._client.captureEvent(event, { ...hint, event_id: eventId }, this); return eventId; } /** * This will be called on every set call. */ _notifyScopeListeners() { if (!this._notifyingListeners) { this._notifyingListeners = true; this._scopeListeners.forEach((callback) => { callback(this); }); this._notifyingListeners = false; } } }; function getGlobalScope() { if (!globalScope) { globalScope = new Scope(); } return globalScope; } function setGlobalScope(scope) { globalScope = scope; } function generatePropagationContext() { return { traceId: utils.uuid4(), spanId: utils.uuid4().substring(16) }; } exports2.Scope = Scope; exports2.getGlobalScope = getGlobalScope; exports2.setGlobalScope = setGlobalScope; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/version.js var require_version = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/version.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var SDK_VERSION = "7.120.1"; exports2.SDK_VERSION = SDK_VERSION; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/hub.js var require_hub = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/hub.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var constants2 = require_constants(); var debugBuild = require_debug_build2(); var scope = require_scope(); var session = require_session(); var version2 = require_version(); var API_VERSION = parseFloat(version2.SDK_VERSION); var DEFAULT_BREADCRUMBS = 100; var Hub = class { /** Is a {@link Layer}[] containing the client and scope */ /** Contains the last event id of a captured event. */ /** * Creates a new instance of the hub, will push one {@link Layer} into the * internal stack on creation. * * @param client bound to the hub. * @param scope bound to the hub. * @param version number, higher number means higher priority. * * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK. * * If you are currently using the Hub for multi-client use like so: * * ``` * // OLD * const hub = new Hub(); * hub.bindClient(client); * makeMain(hub) * ``` * * instead initialize the client as follows: * * ``` * // NEW * Sentry.withIsolationScope(() => { * Sentry.setCurrentClient(client); * client.init(); * }); * ``` * * If you are using the Hub to capture events like so: * * ``` * // OLD * const client = new Client(); * const hub = new Hub(client); * hub.captureException() * ``` * * instead capture isolated events as follows: * * ``` * // NEW * const client = new Client(); * const scope = new Scope(); * scope.setClient(client); * scope.captureException(); * ``` */ constructor(client2, scope$1, isolationScope, _version = API_VERSION) { this._version = _version; let assignedScope; if (!scope$1) { assignedScope = new scope.Scope(); assignedScope.setClient(client2); } else { assignedScope = scope$1; } let assignedIsolationScope; if (!isolationScope) { assignedIsolationScope = new scope.Scope(); assignedIsolationScope.setClient(client2); } else { assignedIsolationScope = isolationScope; } this._stack = [{ scope: assignedScope }]; if (client2) { this.bindClient(client2); } this._isolationScope = assignedIsolationScope; } /** * Checks if this hub's version is older than the given version. * * @param version A version number to compare to. * @return True if the given version is newer; otherwise false. * * @deprecated This will be removed in v8. */ isOlderThan(version3) { return this._version < version3; } /** * This binds the given client to the current scope. * @param client An SDK client (client) instance. * * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead. */ bindClient(client2) { const top = this.getStackTop(); top.client = client2; top.scope.setClient(client2); if (client2 && client2.setupIntegrations) { client2.setupIntegrations(); } } /** * @inheritDoc * * @deprecated Use `withScope` instead. */ pushScope() { const scope2 = this.getScope().clone(); this.getStack().push({ // eslint-disable-next-line deprecation/deprecation client: this.getClient(), scope: scope2 }); return scope2; } /** * @inheritDoc * * @deprecated Use `withScope` instead. */ popScope() { if (this.getStack().length <= 1) return false; return !!this.getStack().pop(); } /** * @inheritDoc * * @deprecated Use `Sentry.withScope()` instead. */ withScope(callback) { const scope2 = this.pushScope(); let maybePromiseResult; try { maybePromiseResult = callback(scope2); } catch (e2) { this.popScope(); throw e2; } if (utils.isThenable(maybePromiseResult)) { return maybePromiseResult.then( (res) => { this.popScope(); return res; }, (e2) => { this.popScope(); throw e2; } ); } this.popScope(); return maybePromiseResult; } /** * @inheritDoc * * @deprecated Use `Sentry.getClient()` instead. */ getClient() { return this.getStackTop().client; } /** * Returns the scope of the top stack. * * @deprecated Use `Sentry.getCurrentScope()` instead. */ getScope() { return this.getStackTop().scope; } /** * @deprecated Use `Sentry.getIsolationScope()` instead. */ getIsolationScope() { return this._isolationScope; } /** * Returns the scope stack for domains or the process. * @deprecated This will be removed in v8. */ getStack() { return this._stack; } /** * Returns the topmost scope layer in the order domain > local > process. * @deprecated This will be removed in v8. */ getStackTop() { return this._stack[this._stack.length - 1]; } /** * @inheritDoc * * @deprecated Use `Sentry.captureException()` instead. */ captureException(exception, hint) { const eventId = this._lastEventId = hint && hint.event_id ? hint.event_id : utils.uuid4(); const syntheticException = new Error("Sentry syntheticException"); this.getScope().captureException(exception, { originalException: exception, syntheticException, ...hint, event_id: eventId }); return eventId; } /** * @inheritDoc * * @deprecated Use `Sentry.captureMessage()` instead. */ captureMessage(message2, level, hint) { const eventId = this._lastEventId = hint && hint.event_id ? hint.event_id : utils.uuid4(); const syntheticException = new Error(message2); this.getScope().captureMessage(message2, level, { originalException: message2, syntheticException, ...hint, event_id: eventId }); return eventId; } /** * @inheritDoc * * @deprecated Use `Sentry.captureEvent()` instead. */ captureEvent(event, hint) { const eventId = hint && hint.event_id ? hint.event_id : utils.uuid4(); if (!event.type) { this._lastEventId = eventId; } this.getScope().captureEvent(event, { ...hint, event_id: eventId }); return eventId; } /** * @inheritDoc * * @deprecated This will be removed in v8. */ lastEventId() { return this._lastEventId; } /** * @inheritDoc * * @deprecated Use `Sentry.addBreadcrumb()` instead. */ addBreadcrumb(breadcrumb, hint) { const { scope: scope2, client: client2 } = this.getStackTop(); if (!client2) return; const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client2.getOptions && client2.getOptions() || {}; if (maxBreadcrumbs <= 0) return; const timestamp = utils.dateTimestampInSeconds(); const mergedBreadcrumb = { timestamp, ...breadcrumb }; const finalBreadcrumb = beforeBreadcrumb ? utils.consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) : mergedBreadcrumb; if (finalBreadcrumb === null) return; if (client2.emit) { client2.emit("beforeAddBreadcrumb", finalBreadcrumb, hint); } scope2.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs); } /** * @inheritDoc * @deprecated Use `Sentry.setUser()` instead. */ setUser(user) { this.getScope().setUser(user); this.getIsolationScope().setUser(user); } /** * @inheritDoc * @deprecated Use `Sentry.setTags()` instead. */ setTags(tags) { this.getScope().setTags(tags); this.getIsolationScope().setTags(tags); } /** * @inheritDoc * @deprecated Use `Sentry.setExtras()` instead. */ setExtras(extras) { this.getScope().setExtras(extras); this.getIsolationScope().setExtras(extras); } /** * @inheritDoc * @deprecated Use `Sentry.setTag()` instead. */ setTag(key, value) { this.getScope().setTag(key, value); this.getIsolationScope().setTag(key, value); } /** * @inheritDoc * @deprecated Use `Sentry.setExtra()` instead. */ setExtra(key, extra) { this.getScope().setExtra(key, extra); this.getIsolationScope().setExtra(key, extra); } /** * @inheritDoc * @deprecated Use `Sentry.setContext()` instead. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any setContext(name, context) { this.getScope().setContext(name, context); this.getIsolationScope().setContext(name, context); } /** * @inheritDoc * * @deprecated Use `getScope()` directly. */ configureScope(callback) { const { scope: scope2, client: client2 } = this.getStackTop(); if (client2) { callback(scope2); } } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation run(callback) { const oldHub = makeMain(this); try { callback(this); } finally { makeMain(oldHub); } } /** * @inheritDoc * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead. */ getIntegration(integration) { const client2 = this.getClient(); if (!client2) return null; try { return client2.getIntegration(integration); } catch (_oO) { debugBuild.DEBUG_BUILD && utils.logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`); return null; } } /** * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation. * * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a * new child span within the transaction or any span, call the respective `.startChild()` method. * * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded. * * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its * finished child spans will be sent to Sentry. * * @param context Properties of the new `Transaction`. * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent * default values). See {@link Options.tracesSampler}. * * @returns The transaction which was just started * * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead. */ startTransaction(context, customSamplingContext) { const result = this._callExtensionMethod("startTransaction", context, customSamplingContext); if (debugBuild.DEBUG_BUILD && !result) { const client2 = this.getClient(); if (!client2) { utils.logger.warn( "Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'" ); } else { utils.logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init': Sentry.addTracingExtensions(); Sentry.init({...}); `); } } return result; } /** * @inheritDoc * @deprecated Use `spanToTraceHeader()` instead. */ traceHeaders() { return this._callExtensionMethod("traceHeaders"); } /** * @inheritDoc * * @deprecated Use top level `captureSession` instead. */ captureSession(endSession = false) { if (endSession) { return this.endSession(); } this._sendSessionUpdate(); } /** * @inheritDoc * @deprecated Use top level `endSession` instead. */ endSession() { const layer = this.getStackTop(); const scope2 = layer.scope; const session$1 = scope2.getSession(); if (session$1) { session.closeSession(session$1); } this._sendSessionUpdate(); scope2.setSession(); } /** * @inheritDoc * @deprecated Use top level `startSession` instead. */ startSession(context) { const { scope: scope2, client: client2 } = this.getStackTop(); const { release, environment = constants2.DEFAULT_ENVIRONMENT } = client2 && client2.getOptions() || {}; const { userAgent: userAgent2 } = utils.GLOBAL_OBJ.navigator || {}; const session$1 = session.makeSession({ release, environment, user: scope2.getUser(), ...userAgent2 && { userAgent: userAgent2 }, ...context }); const currentSession = scope2.getSession && scope2.getSession(); if (currentSession && currentSession.status === "ok") { session.updateSession(currentSession, { status: "exited" }); } this.endSession(); scope2.setSession(session$1); return session$1; } /** * Returns if default PII should be sent to Sentry and propagated in ourgoing requests * when Tracing is used. * * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function * only unnecessarily increased API surface but only wrapped accessing the option. */ shouldSendDefaultPii() { const client2 = this.getClient(); const options = client2 && client2.getOptions(); return Boolean(options && options.sendDefaultPii); } /** * Sends the current Session on the scope */ _sendSessionUpdate() { const { scope: scope2, client: client2 } = this.getStackTop(); const session2 = scope2.getSession(); if (session2 && client2 && client2.captureSession) { client2.captureSession(session2); } } /** * Calls global extension method and binding current instance to the function call */ // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366) // eslint-disable-next-line @typescript-eslint/no-explicit-any _callExtensionMethod(method, ...args2) { const carrier = getMainCarrier(); const sentry2 = carrier.__SENTRY__; if (sentry2 && sentry2.extensions && typeof sentry2.extensions[method] === "function") { return sentry2.extensions[method].apply(this, args2); } debugBuild.DEBUG_BUILD && utils.logger.warn(`Extension method ${method} couldn't be found, doing nothing.`); } }; function getMainCarrier() { utils.GLOBAL_OBJ.__SENTRY__ = utils.GLOBAL_OBJ.__SENTRY__ || { extensions: {}, hub: void 0 }; return utils.GLOBAL_OBJ; } function makeMain(hub) { const registry = getMainCarrier(); const oldHub = getHubFromCarrier(registry); setHubOnCarrier(registry, hub); return oldHub; } function getCurrentHub() { const registry = getMainCarrier(); if (registry.__SENTRY__ && registry.__SENTRY__.acs) { const hub = registry.__SENTRY__.acs.getCurrentHub(); if (hub) { return hub; } } return getGlobalHub(registry); } function getIsolationScope() { return getCurrentHub().getIsolationScope(); } function getGlobalHub(registry = getMainCarrier()) { if (!hasHubOnCarrier(registry) || // eslint-disable-next-line deprecation/deprecation getHubFromCarrier(registry).isOlderThan(API_VERSION)) { setHubOnCarrier(registry, new Hub()); } return getHubFromCarrier(registry); } function ensureHubOnCarrier(carrier, parent = getGlobalHub()) { if (!hasHubOnCarrier(carrier) || // eslint-disable-next-line deprecation/deprecation getHubFromCarrier(carrier).isOlderThan(API_VERSION)) { const client2 = parent.getClient(); const scope2 = parent.getScope(); const isolationScope = parent.getIsolationScope(); setHubOnCarrier(carrier, new Hub(client2, scope2.clone(), isolationScope.clone())); } } function setAsyncContextStrategy(strategy) { const registry = getMainCarrier(); registry.__SENTRY__ = registry.__SENTRY__ || {}; registry.__SENTRY__.acs = strategy; } function runWithAsyncContext(callback, options = {}) { const registry = getMainCarrier(); if (registry.__SENTRY__ && registry.__SENTRY__.acs) { return registry.__SENTRY__.acs.runWithAsyncContext(callback, options); } return callback(); } function hasHubOnCarrier(carrier) { return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub); } function getHubFromCarrier(carrier) { return utils.getGlobalSingleton("hub", () => new Hub(), carrier); } function setHubOnCarrier(carrier, hub) { if (!carrier) return false; const __SENTRY__ = carrier.__SENTRY__ = carrier.__SENTRY__ || {}; __SENTRY__.hub = hub; return true; } exports2.API_VERSION = API_VERSION; exports2.Hub = Hub; exports2.ensureHubOnCarrier = ensureHubOnCarrier; exports2.getCurrentHub = getCurrentHub; exports2.getHubFromCarrier = getHubFromCarrier; exports2.getIsolationScope = getIsolationScope; exports2.getMainCarrier = getMainCarrier; exports2.makeMain = makeMain; exports2.runWithAsyncContext = runWithAsyncContext; exports2.setAsyncContextStrategy = setAsyncContextStrategy; exports2.setHubOnCarrier = setHubOnCarrier; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/utils.js var require_utils3 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/utils.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var hub = require_hub(); function getActiveTransaction(maybeHub) { const hub$1 = maybeHub || hub.getCurrentHub(); const scope = hub$1.getScope(); return scope.getTransaction(); } var extractTraceparentData = utils.extractTraceparentData; exports2.stripUrlQueryAndFragment = utils.stripUrlQueryAndFragment; exports2.extractTraceparentData = extractTraceparentData; exports2.getActiveTransaction = getActiveTransaction; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/errors.js var require_errors = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/errors.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var utils$1 = require_utils3(); var errorsInstrumented = false; function registerErrorInstrumentation() { if (errorsInstrumented) { return; } errorsInstrumented = true; utils.addGlobalErrorInstrumentationHandler(errorCallback); utils.addGlobalUnhandledRejectionInstrumentationHandler(errorCallback); } function errorCallback() { const activeTransaction = utils$1.getActiveTransaction(); if (activeTransaction) { const status3 = "internal_error"; debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Transaction: ${status3} -> Global error occured`); activeTransaction.setStatus(status3); } } errorCallback.tag = "sentry_tracingErrorCallback"; exports2.registerErrorInstrumentation = registerErrorInstrumentation; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/spanstatus.js var require_spanstatus = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/spanstatus.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SpanStatus = void 0; (function(SpanStatus) { const Ok = "ok"; SpanStatus["Ok"] = Ok; const DeadlineExceeded = "deadline_exceeded"; SpanStatus["DeadlineExceeded"] = DeadlineExceeded; const Unauthenticated = "unauthenticated"; SpanStatus["Unauthenticated"] = Unauthenticated; const PermissionDenied = "permission_denied"; SpanStatus["PermissionDenied"] = PermissionDenied; const NotFound = "not_found"; SpanStatus["NotFound"] = NotFound; const ResourceExhausted = "resource_exhausted"; SpanStatus["ResourceExhausted"] = ResourceExhausted; const InvalidArgument = "invalid_argument"; SpanStatus["InvalidArgument"] = InvalidArgument; const Unimplemented = "unimplemented"; SpanStatus["Unimplemented"] = Unimplemented; const Unavailable = "unavailable"; SpanStatus["Unavailable"] = Unavailable; const InternalError = "internal_error"; SpanStatus["InternalError"] = InternalError; const UnknownError = "unknown_error"; SpanStatus["UnknownError"] = UnknownError; const Cancelled = "cancelled"; SpanStatus["Cancelled"] = Cancelled; const AlreadyExists = "already_exists"; SpanStatus["AlreadyExists"] = AlreadyExists; const FailedPrecondition = "failed_precondition"; SpanStatus["FailedPrecondition"] = FailedPrecondition; const Aborted = "aborted"; SpanStatus["Aborted"] = Aborted; const OutOfRange = "out_of_range"; SpanStatus["OutOfRange"] = OutOfRange; const DataLoss = "data_loss"; SpanStatus["DataLoss"] = DataLoss; })(exports2.SpanStatus || (exports2.SpanStatus = {})); function getSpanStatusFromHttpCode(httpStatus) { if (httpStatus < 400 && httpStatus >= 100) { return "ok"; } if (httpStatus >= 400 && httpStatus < 500) { switch (httpStatus) { case 401: return "unauthenticated"; case 403: return "permission_denied"; case 404: return "not_found"; case 409: return "already_exists"; case 413: return "failed_precondition"; case 429: return "resource_exhausted"; default: return "invalid_argument"; } } if (httpStatus >= 500 && httpStatus < 600) { switch (httpStatus) { case 501: return "unimplemented"; case 503: return "unavailable"; case 504: return "deadline_exceeded"; default: return "internal_error"; } } return "unknown_error"; } var spanStatusfromHttpCode = getSpanStatusFromHttpCode; function setHttpStatus(span, httpStatus) { span.setTag("http.status_code", String(httpStatus)); span.setData("http.response.status_code", httpStatus); const spanStatus = getSpanStatusFromHttpCode(httpStatus); if (spanStatus !== "unknown_error") { span.setStatus(spanStatus); } } exports2.getSpanStatusFromHttpCode = getSpanStatusFromHttpCode; exports2.setHttpStatus = setHttpStatus; exports2.spanStatusfromHttpCode = spanStatusfromHttpCode; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/handleCallbackErrors.js var require_handleCallbackErrors = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/handleCallbackErrors.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); function handleCallbackErrors(fn2, onError, onFinally = () => { }) { let maybePromiseResult; try { maybePromiseResult = fn2(); } catch (e2) { onError(e2); onFinally(); throw e2; } return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally); } function maybeHandlePromiseRejection(value, onError, onFinally) { if (utils.isThenable(value)) { return value.then( (res) => { onFinally(); return res; }, (e2) => { onError(e2); onFinally(); throw e2; } ); } onFinally(); return value; } exports2.handleCallbackErrors = handleCallbackErrors; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/hasTracingEnabled.js var require_hasTracingEnabled = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/hasTracingEnabled.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var exports$1 = require_exports(); function hasTracingEnabled(maybeOptions) { if (typeof __SENTRY_TRACING__ === "boolean" && !__SENTRY_TRACING__) { return false; } const client2 = exports$1.getClient(); const options = maybeOptions || client2 && client2.getOptions(); return !!options && (options.enableTracing || "tracesSampleRate" in options || "tracesSampler" in options); } exports2.hasTracingEnabled = hasTracingEnabled; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/trace.js var require_trace = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/trace.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var hub = require_hub(); var spanUtils = require_spanUtils(); require_errors(); require_spanstatus(); var dynamicSamplingContext = require_dynamicSamplingContext(); var exports$1 = require_exports(); var handleCallbackErrors = require_handleCallbackErrors(); var hasTracingEnabled = require_hasTracingEnabled(); function trace(context, callback, onError = () => { }, afterFinish = () => { }) { const hub$1 = hub.getCurrentHub(); const scope = exports$1.getCurrentScope(); const parentSpan = scope.getSpan(); const spanContext = normalizeContext(context); const activeSpan = createChildSpanOrTransaction(hub$1, { parentSpan, spanContext, forceTransaction: false, scope }); scope.setSpan(activeSpan); return handleCallbackErrors.handleCallbackErrors( () => callback(activeSpan), (error3) => { activeSpan && activeSpan.setStatus("internal_error"); onError(error3, activeSpan); }, () => { activeSpan && activeSpan.end(); scope.setSpan(parentSpan); afterFinish(); } ); } function startSpan(context, callback) { const spanContext = normalizeContext(context); return hub.runWithAsyncContext(() => { return exports$1.withScope(context.scope, (scope) => { const hub$1 = hub.getCurrentHub(); const parentSpan = scope.getSpan(); const shouldSkipSpan = context.onlyIfParent && !parentSpan; const activeSpan = shouldSkipSpan ? void 0 : createChildSpanOrTransaction(hub$1, { parentSpan, spanContext, forceTransaction: context.forceTransaction, scope }); return handleCallbackErrors.handleCallbackErrors( () => callback(activeSpan), () => { if (activeSpan) { const { status: status3 } = spanUtils.spanToJSON(activeSpan); if (!status3 || status3 === "ok") { activeSpan.setStatus("internal_error"); } } }, () => activeSpan && activeSpan.end() ); }); }); } var startActiveSpan = startSpan; function startSpanManual(context, callback) { const spanContext = normalizeContext(context); return hub.runWithAsyncContext(() => { return exports$1.withScope(context.scope, (scope) => { const hub$1 = hub.getCurrentHub(); const parentSpan = scope.getSpan(); const shouldSkipSpan = context.onlyIfParent && !parentSpan; const activeSpan = shouldSkipSpan ? void 0 : createChildSpanOrTransaction(hub$1, { parentSpan, spanContext, forceTransaction: context.forceTransaction, scope }); function finishAndSetSpan() { activeSpan && activeSpan.end(); } return handleCallbackErrors.handleCallbackErrors( () => callback(activeSpan, finishAndSetSpan), () => { if (activeSpan && activeSpan.isRecording()) { const { status: status3 } = spanUtils.spanToJSON(activeSpan); if (!status3 || status3 === "ok") { activeSpan.setStatus("internal_error"); } } } ); }); }); } function startInactiveSpan(context) { if (!hasTracingEnabled.hasTracingEnabled()) { return void 0; } const spanContext = normalizeContext(context); const hub$1 = hub.getCurrentHub(); const parentSpan = context.scope ? ( // eslint-disable-next-line deprecation/deprecation context.scope.getSpan() ) : getActiveSpan(); const shouldSkipSpan = context.onlyIfParent && !parentSpan; if (shouldSkipSpan) { return void 0; } const scope = context.scope || exports$1.getCurrentScope(); const temporaryScope = scope.clone(); return createChildSpanOrTransaction(hub$1, { parentSpan, spanContext, forceTransaction: context.forceTransaction, scope: temporaryScope }); } function getActiveSpan() { return exports$1.getCurrentScope().getSpan(); } var continueTrace = ({ sentryTrace, baggage }, callback) => { const currentScope = exports$1.getCurrentScope(); const { traceparentData, dynamicSamplingContext: dynamicSamplingContext2, propagationContext } = utils.tracingContextFromHeaders( sentryTrace, baggage ); currentScope.setPropagationContext(propagationContext); if (debugBuild.DEBUG_BUILD && traceparentData) { utils.logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`); } const transactionContext = { ...traceparentData, metadata: utils.dropUndefinedKeys({ dynamicSamplingContext: dynamicSamplingContext2 }) }; if (!callback) { return transactionContext; } return hub.runWithAsyncContext(() => { return callback(transactionContext); }); }; function createChildSpanOrTransaction(hub$1, { parentSpan, spanContext, forceTransaction, scope }) { if (!hasTracingEnabled.hasTracingEnabled()) { return void 0; } const isolationScope = hub.getIsolationScope(); let span; if (parentSpan && !forceTransaction) { span = parentSpan.startChild(spanContext); } else if (parentSpan) { const dsc = dynamicSamplingContext.getDynamicSamplingContextFromSpan(parentSpan); const { traceId, spanId: parentSpanId } = parentSpan.spanContext(); const sampled = spanUtils.spanIsSampled(parentSpan); span = hub$1.startTransaction({ traceId, parentSpanId, parentSampled: sampled, ...spanContext, metadata: { dynamicSamplingContext: dsc, // eslint-disable-next-line deprecation/deprecation ...spanContext.metadata } }); } else { const { traceId, dsc, parentSpanId, sampled } = { ...isolationScope.getPropagationContext(), ...scope.getPropagationContext() }; span = hub$1.startTransaction({ traceId, parentSpanId, parentSampled: sampled, ...spanContext, metadata: { dynamicSamplingContext: dsc, // eslint-disable-next-line deprecation/deprecation ...spanContext.metadata } }); } scope.setSpan(span); setCapturedScopesOnSpan(span, scope, isolationScope); return span; } function normalizeContext(context) { if (context.startTime) { const ctx = { ...context }; ctx.startTimestamp = spanUtils.spanTimeInputToSeconds(context.startTime); delete ctx.startTime; return ctx; } return context; } var SCOPE_ON_START_SPAN_FIELD = "_sentryScope"; var ISOLATION_SCOPE_ON_START_SPAN_FIELD = "_sentryIsolationScope"; function setCapturedScopesOnSpan(span, scope, isolationScope) { if (span) { utils.addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope); utils.addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope); } } function getCapturedScopesOnSpan(span) { return { scope: span[SCOPE_ON_START_SPAN_FIELD], isolationScope: span[ISOLATION_SCOPE_ON_START_SPAN_FIELD] }; } exports2.continueTrace = continueTrace; exports2.getActiveSpan = getActiveSpan; exports2.getCapturedScopesOnSpan = getCapturedScopesOnSpan; exports2.startActiveSpan = startActiveSpan; exports2.startInactiveSpan = startInactiveSpan; exports2.startSpan = startSpan; exports2.startSpanManual = startSpanManual; exports2.trace = trace; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/metric-summary.js var require_metric_summary = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/metric-summary.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); require_debug_build2(); require_errors(); require_spanstatus(); var trace = require_trace(); var SPAN_METRIC_SUMMARY; function getMetricStorageForSpan(span) { return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : void 0; } function getMetricSummaryJsonForSpan(span) { const storage = getMetricStorageForSpan(span); if (!storage) { return void 0; } const output2 = {}; for (const [, [exportKey, summary]] of storage) { if (!output2[exportKey]) { output2[exportKey] = []; } output2[exportKey].push(utils.dropUndefinedKeys(summary)); } return output2; } function updateMetricSummaryOnActiveSpan(metricType, sanitizedName, value, unit, tags, bucketKey) { const span = trace.getActiveSpan(); if (span) { const storage = getMetricStorageForSpan(span) || /* @__PURE__ */ new Map(); const exportKey = `${metricType}:${sanitizedName}@${unit}`; const bucketItem = storage.get(bucketKey); if (bucketItem) { const [, summary] = bucketItem; storage.set(bucketKey, [ exportKey, { min: Math.min(summary.min, value), max: Math.max(summary.max, value), count: summary.count += 1, sum: summary.sum += value, tags: summary.tags } ]); } else { storage.set(bucketKey, [ exportKey, { min: value, max: value, count: 1, sum: value, tags } ]); } if (!SPAN_METRIC_SUMMARY) { SPAN_METRIC_SUMMARY = /* @__PURE__ */ new WeakMap(); } SPAN_METRIC_SUMMARY.set(span, storage); } } exports2.getMetricSummaryJsonForSpan = getMetricSummaryJsonForSpan; exports2.updateMetricSummaryOnActiveSpan = updateMetricSummaryOnActiveSpan; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/semanticAttributes.js var require_semanticAttributes = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/semanticAttributes.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = "sentry.source"; var SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = "sentry.sample_rate"; var SEMANTIC_ATTRIBUTE_SENTRY_OP = "sentry.op"; var SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = "sentry.origin"; var SEMANTIC_ATTRIBUTE_PROFILE_ID = "profile_id"; exports2.SEMANTIC_ATTRIBUTE_PROFILE_ID = SEMANTIC_ATTRIBUTE_PROFILE_ID; exports2.SEMANTIC_ATTRIBUTE_SENTRY_OP = SEMANTIC_ATTRIBUTE_SENTRY_OP; exports2.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN; exports2.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE; exports2.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = SEMANTIC_ATTRIBUTE_SENTRY_SOURCE; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/span.js var require_span = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/span.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var metricSummary = require_metric_summary(); var semanticAttributes = require_semanticAttributes(); var getRootSpan = require_getRootSpan(); var spanUtils = require_spanUtils(); var spanstatus = require_spanstatus(); var SpanRecorder = class { constructor(maxlen = 1e3) { this._maxlen = maxlen; this.spans = []; } /** * This is just so that we don't run out of memory while recording a lot * of spans. At some point we just stop and flush out the start of the * trace tree (i.e.the first n spans with the smallest * start_timestamp). */ add(span) { if (this.spans.length > this._maxlen) { span.spanRecorder = void 0; } else { this.spans.push(span); } } }; var Span2 = class _Span { /** * Tags for the span. * @deprecated Use `spanToJSON(span).atttributes` instead. */ /** * Data for the span. * @deprecated Use `spanToJSON(span).atttributes` instead. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any /** * List of spans that were finalized * * @deprecated This property will no longer be public. Span recording will be handled internally. */ /** * @inheritDoc * @deprecated Use top level `Sentry.getRootSpan()` instead */ /** * The instrumenter that created this span. * * TODO (v8): This can probably be replaced by an `instanceOf` check of the span class. * the instrumenter can only be sentry or otel so we can check the span instance * to verify which one it is and remove this field entirely. * * @deprecated This field will be removed. */ /** Epoch timestamp in seconds when the span started. */ /** Epoch timestamp in seconds when the span ended. */ /** Internal keeper of the status */ /** * You should never call the constructor manually, always use `Sentry.startTransaction()` * or call `startChild()` on an existing span. * @internal * @hideconstructor * @hidden */ constructor(spanContext = {}) { this._traceId = spanContext.traceId || utils.uuid4(); this._spanId = spanContext.spanId || utils.uuid4().substring(16); this._startTime = spanContext.startTimestamp || utils.timestampInSeconds(); this.tags = spanContext.tags ? { ...spanContext.tags } : {}; this.data = spanContext.data ? { ...spanContext.data } : {}; this.instrumenter = spanContext.instrumenter || "sentry"; this._attributes = {}; this.setAttributes({ [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanContext.origin || "manual", [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op, ...spanContext.attributes }); this._name = spanContext.name || spanContext.description; if (spanContext.parentSpanId) { this._parentSpanId = spanContext.parentSpanId; } if ("sampled" in spanContext) { this._sampled = spanContext.sampled; } if (spanContext.status) { this._status = spanContext.status; } if (spanContext.endTimestamp) { this._endTime = spanContext.endTimestamp; } if (spanContext.exclusiveTime !== void 0) { this._exclusiveTime = spanContext.exclusiveTime; } this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {}; } // This rule conflicts with another eslint rule :( /* eslint-disable @typescript-eslint/member-ordering */ /** * An alias for `description` of the Span. * @deprecated Use `spanToJSON(span).description` instead. */ get name() { return this._name || ""; } /** * Update the name of the span. * @deprecated Use `spanToJSON(span).description` instead. */ set name(name) { this.updateName(name); } /** * Get the description of the Span. * @deprecated Use `spanToJSON(span).description` instead. */ get description() { return this._name; } /** * Get the description of the Span. * @deprecated Use `spanToJSON(span).description` instead. */ set description(description) { this._name = description; } /** * The ID of the trace. * @deprecated Use `spanContext().traceId` instead. */ get traceId() { return this._traceId; } /** * The ID of the trace. * @deprecated You cannot update the traceId of a span after span creation. */ set traceId(traceId) { this._traceId = traceId; } /** * The ID of the span. * @deprecated Use `spanContext().spanId` instead. */ get spanId() { return this._spanId; } /** * The ID of the span. * @deprecated You cannot update the spanId of a span after span creation. */ set spanId(spanId) { this._spanId = spanId; } /** * @inheritDoc * * @deprecated Use `startSpan` functions instead. */ set parentSpanId(string) { this._parentSpanId = string; } /** * @inheritDoc * * @deprecated Use `spanToJSON(span).parent_span_id` instead. */ get parentSpanId() { return this._parentSpanId; } /** * Was this span chosen to be sent as part of the sample? * @deprecated Use `isRecording()` instead. */ get sampled() { return this._sampled; } /** * Was this span chosen to be sent as part of the sample? * @deprecated You cannot update the sampling decision of a span after span creation. */ set sampled(sampled) { this._sampled = sampled; } /** * Attributes for the span. * @deprecated Use `spanToJSON(span).atttributes` instead. */ get attributes() { return this._attributes; } /** * Attributes for the span. * @deprecated Use `setAttributes()` instead. */ set attributes(attributes) { this._attributes = attributes; } /** * Timestamp in seconds (epoch time) indicating when the span started. * @deprecated Use `spanToJSON()` instead. */ get startTimestamp() { return this._startTime; } /** * Timestamp in seconds (epoch time) indicating when the span started. * @deprecated In v8, you will not be able to update the span start time after creation. */ set startTimestamp(startTime) { this._startTime = startTime; } /** * Timestamp in seconds when the span ended. * @deprecated Use `spanToJSON()` instead. */ get endTimestamp() { return this._endTime; } /** * Timestamp in seconds when the span ended. * @deprecated Set the end time via `span.end()` instead. */ set endTimestamp(endTime) { this._endTime = endTime; } /** * The status of the span. * * @deprecated Use `spanToJSON().status` instead to get the status. */ get status() { return this._status; } /** * The status of the span. * * @deprecated Use `.setStatus()` instead to set or update the status. */ set status(status3) { this._status = status3; } /** * Operation of the span * * @deprecated Use `spanToJSON().op` to read the op instead. */ get op() { return this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]; } /** * Operation of the span * * @deprecated Use `startSpan()` functions to set or `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op') * to update the span instead. */ set op(op) { this.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP, op); } /** * The origin of the span, giving context about what created the span. * * @deprecated Use `spanToJSON().origin` to read the origin instead. */ get origin() { return this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]; } /** * The origin of the span, giving context about what created the span. * * @deprecated Use `startSpan()` functions to set the origin instead. */ set origin(origin) { this.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin); } /* eslint-enable @typescript-eslint/member-ordering */ /** @inheritdoc */ spanContext() { const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this; return { spanId, traceId, traceFlags: sampled ? spanUtils.TRACE_FLAG_SAMPLED : spanUtils.TRACE_FLAG_NONE }; } /** * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`. * Also the `sampled` decision will be inherited. * * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead. */ startChild(spanContext) { const childSpan = new _Span({ ...spanContext, parentSpanId: this._spanId, sampled: this._sampled, traceId: this._traceId }); childSpan.spanRecorder = this.spanRecorder; if (childSpan.spanRecorder) { childSpan.spanRecorder.add(childSpan); } const rootSpan = getRootSpan.getRootSpan(this); childSpan.transaction = rootSpan; if (debugBuild.DEBUG_BUILD && rootSpan) { const opStr = spanContext && spanContext.op || "< unknown op >"; const nameStr = spanUtils.spanToJSON(childSpan).description || "< unknown name >"; const idStr = rootSpan.spanContext().spanId; const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`; utils.logger.log(logMessage); this._logMessage = logMessage; } return childSpan; } /** * Sets the tag attribute on the current span. * * Can also be used to unset a tag, by passing `undefined`. * * @param key Tag key * @param value Tag value * @deprecated Use `setAttribute()` instead. */ setTag(key, value) { this.tags = { ...this.tags, [key]: value }; return this; } /** * Sets the data attribute on the current span * @param key Data key * @param value Data value * @deprecated Use `setAttribute()` instead. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any setData(key, value) { this.data = { ...this.data, [key]: value }; return this; } /** @inheritdoc */ setAttribute(key, value) { if (value === void 0) { delete this._attributes[key]; } else { this._attributes[key] = value; } } /** @inheritdoc */ setAttributes(attributes) { Object.keys(attributes).forEach((key) => this.setAttribute(key, attributes[key])); } /** * @inheritDoc */ setStatus(value) { this._status = value; return this; } /** * @inheritDoc * @deprecated Use top-level `setHttpStatus()` instead. */ setHttpStatus(httpStatus) { spanstatus.setHttpStatus(this, httpStatus); return this; } /** * @inheritdoc * * @deprecated Use `.updateName()` instead. */ setName(name) { this.updateName(name); } /** * @inheritDoc */ updateName(name) { this._name = name; return this; } /** * @inheritDoc * * @deprecated Use `spanToJSON(span).status === 'ok'` instead. */ isSuccess() { return this._status === "ok"; } /** * @inheritDoc * * @deprecated Use `.end()` instead. */ finish(endTimestamp) { return this.end(endTimestamp); } /** @inheritdoc */ end(endTimestamp) { if (this._endTime) { return; } const rootSpan = getRootSpan.getRootSpan(this); if (debugBuild.DEBUG_BUILD && // Don't call this for transactions rootSpan && rootSpan.spanContext().spanId !== this._spanId) { const logMessage = this._logMessage; if (logMessage) { utils.logger.log(logMessage.replace("Starting", "Finishing")); } } this._endTime = spanUtils.spanTimeInputToSeconds(endTimestamp); } /** * @inheritDoc * * @deprecated Use `spanToTraceHeader()` instead. */ toTraceparent() { return spanUtils.spanToTraceHeader(this); } /** * @inheritDoc * * @deprecated Use `spanToJSON()` or access the fields directly instead. */ toContext() { return utils.dropUndefinedKeys({ data: this._getData(), description: this._name, endTimestamp: this._endTime, // eslint-disable-next-line deprecation/deprecation op: this.op, parentSpanId: this._parentSpanId, sampled: this._sampled, spanId: this._spanId, startTimestamp: this._startTime, status: this._status, // eslint-disable-next-line deprecation/deprecation tags: this.tags, traceId: this._traceId }); } /** * @inheritDoc * * @deprecated Update the fields directly instead. */ updateWithContext(spanContext) { this.data = spanContext.data || {}; this._name = spanContext.name || spanContext.description; this._endTime = spanContext.endTimestamp; this.op = spanContext.op; this._parentSpanId = spanContext.parentSpanId; this._sampled = spanContext.sampled; this._spanId = spanContext.spanId || this._spanId; this._startTime = spanContext.startTimestamp || this._startTime; this._status = spanContext.status; this.tags = spanContext.tags || {}; this._traceId = spanContext.traceId || this._traceId; return this; } /** * @inheritDoc * * @deprecated Use `spanToTraceContext()` util function instead. */ getTraceContext() { return spanUtils.spanToTraceContext(this); } /** * Get JSON representation of this span. * * @hidden * @internal This method is purely for internal purposes and should not be used outside * of SDK code. If you need to get a JSON representation of a span, * use `spanToJSON(span)` instead. */ getSpanJSON() { return utils.dropUndefinedKeys({ data: this._getData(), description: this._name, op: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP], parent_span_id: this._parentSpanId, span_id: this._spanId, start_timestamp: this._startTime, status: this._status, // eslint-disable-next-line deprecation/deprecation tags: Object.keys(this.tags).length > 0 ? this.tags : void 0, timestamp: this._endTime, trace_id: this._traceId, origin: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN], _metrics_summary: metricSummary.getMetricSummaryJsonForSpan(this), profile_id: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_PROFILE_ID], exclusive_time: this._exclusiveTime, measurements: Object.keys(this._measurements).length > 0 ? this._measurements : void 0 }); } /** @inheritdoc */ isRecording() { return !this._endTime && !!this._sampled; } /** * Convert the object to JSON. * @deprecated Use `spanToJSON(span)` instead. */ toJSON() { return this.getSpanJSON(); } /** * Get the merged data for this span. * For now, this combines `data` and `attributes` together, * until eventually we can ingest `attributes` directly. */ _getData() { const { data, _attributes: attributes } = this; const hasData = Object.keys(data).length > 0; const hasAttributes = Object.keys(attributes).length > 0; if (!hasData && !hasAttributes) { return void 0; } if (hasData && hasAttributes) { return { ...data, ...attributes }; } return hasData ? data : attributes; } }; exports2.Span = Span2; exports2.SpanRecorder = SpanRecorder; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/transaction.js var require_transaction = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/transaction.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var hub = require_hub(); var metricSummary = require_metric_summary(); var semanticAttributes = require_semanticAttributes(); var spanUtils = require_spanUtils(); var dynamicSamplingContext = require_dynamicSamplingContext(); var span = require_span(); var trace = require_trace(); var Transaction = class extends span.Span { /** * The reference to the current hub. */ // eslint-disable-next-line deprecation/deprecation // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility. /** * This constructor should never be called manually. Those instrumenting tracing should use * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`. * @internal * @hideconstructor * @hidden * * @deprecated Transactions will be removed in v8. Use spans instead. */ // eslint-disable-next-line deprecation/deprecation constructor(transactionContext, hub$1) { super(transactionContext); this._contexts = {}; this._hub = hub$1 || hub.getCurrentHub(); this._name = transactionContext.name || ""; this._metadata = { // eslint-disable-next-line deprecation/deprecation ...transactionContext.metadata }; this._trimEnd = transactionContext.trimEnd; this.transaction = this; const incomingDynamicSamplingContext = this._metadata.dynamicSamplingContext; if (incomingDynamicSamplingContext) { this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext }; } } // This sadly conflicts with the getter/setter ordering :( /* eslint-disable @typescript-eslint/member-ordering */ /** * Getter for `name` property. * @deprecated Use `spanToJSON(span).description` instead. */ get name() { return this._name; } /** * Setter for `name` property, which also sets `source` as custom. * @deprecated Use `updateName()` and `setMetadata()` instead. */ set name(newName) { this.setName(newName); } /** * Get the metadata for this transaction. * @deprecated Use `spanGetMetadata(transaction)` instead. */ get metadata() { return { // Defaults // eslint-disable-next-line deprecation/deprecation source: "custom", spanMetadata: {}, // Legacy metadata ...this._metadata, // From attributes ...this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] && { source: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] }, ...this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] && { sampleRate: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] } }; } /** * Update the metadata for this transaction. * @deprecated Use `spanGetMetadata(transaction)` instead. */ set metadata(metadata) { this._metadata = metadata; } /* eslint-enable @typescript-eslint/member-ordering */ /** * Setter for `name` property, which also sets `source` on the metadata. * * @deprecated Use `.updateName()` and `.setAttribute()` instead. */ setName(name, source = "custom") { this._name = name; this.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source); } /** @inheritdoc */ updateName(name) { this._name = name; return this; } /** * Attaches SpanRecorder to the span itself * @param maxlen maximum number of spans that can be recorded */ initSpanRecorder(maxlen = 1e3) { if (!this.spanRecorder) { this.spanRecorder = new span.SpanRecorder(maxlen); } this.spanRecorder.add(this); } /** * Set the context of a transaction event. * @deprecated Use either `.setAttribute()`, or set the context on the scope before creating the transaction. */ setContext(key, context) { if (context === null) { delete this._contexts[key]; } else { this._contexts[key] = context; } } /** * @inheritDoc * * @deprecated Use top-level `setMeasurement()` instead. */ setMeasurement(name, value, unit = "") { this._measurements[name] = { value, unit }; } /** * Store metadata on this transaction. * @deprecated Use attributes or store data on the scope instead. */ setMetadata(newMetadata) { this._metadata = { ...this._metadata, ...newMetadata }; } /** * @inheritDoc */ end(endTimestamp) { const timestampInS = spanUtils.spanTimeInputToSeconds(endTimestamp); const transaction = this._finishTransaction(timestampInS); if (!transaction) { return void 0; } return this._hub.captureEvent(transaction); } /** * @inheritDoc */ toContext() { const spanContext = super.toContext(); return utils.dropUndefinedKeys({ ...spanContext, name: this._name, trimEnd: this._trimEnd }); } /** * @inheritDoc */ updateWithContext(transactionContext) { super.updateWithContext(transactionContext); this._name = transactionContext.name || ""; this._trimEnd = transactionContext.trimEnd; return this; } /** * @inheritdoc * * @experimental * * @deprecated Use top-level `getDynamicSamplingContextFromSpan` instead. */ getDynamicSamplingContext() { return dynamicSamplingContext.getDynamicSamplingContextFromSpan(this); } /** * Override the current hub with a new one. * Used if you want another hub to finish the transaction. * * @internal */ // eslint-disable-next-line deprecation/deprecation setHub(hub2) { this._hub = hub2; } /** * Get the profile id of the transaction. */ getProfileId() { if (this._contexts !== void 0 && this._contexts["profile"] !== void 0) { return this._contexts["profile"].profile_id; } return void 0; } /** * Finish the transaction & prepare the event to send to Sentry. */ _finishTransaction(endTimestamp) { if (this._endTime !== void 0) { return void 0; } if (!this._name) { debugBuild.DEBUG_BUILD && utils.logger.warn("Transaction has no name, falling back to ``."); this._name = ""; } super.end(endTimestamp); const client2 = this._hub.getClient(); if (client2 && client2.emit) { client2.emit("finishTransaction", this); } if (this._sampled !== true) { debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] Discarding transaction because its trace was not chosen to be sampled."); if (client2) { client2.recordDroppedEvent("sample_rate", "transaction"); } return void 0; } const finishedSpans = this.spanRecorder ? ( // eslint-disable-next-line deprecation/deprecation this.spanRecorder.spans.filter((span2) => span2 !== this && spanUtils.spanToJSON(span2).timestamp) ) : []; if (this._trimEnd && finishedSpans.length > 0) { const endTimes = finishedSpans.map((span2) => spanUtils.spanToJSON(span2).timestamp).filter(Boolean); this._endTime = endTimes.reduce((prev, current) => { return prev > current ? prev : current; }); } const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = trace.getCapturedScopesOnSpan(this); const { metadata } = this; const { source } = metadata; const transaction = { contexts: { ...this._contexts, // We don't want to override trace context trace: spanUtils.spanToTraceContext(this) }, // TODO: Pass spans serialized via `spanToJSON()` here instead in v8. spans: finishedSpans, start_timestamp: this._startTime, // eslint-disable-next-line deprecation/deprecation tags: this.tags, timestamp: this._endTime, transaction: this._name, type: "transaction", sdkProcessingMetadata: { ...metadata, capturedSpanScope, capturedSpanIsolationScope, ...utils.dropUndefinedKeys({ dynamicSamplingContext: dynamicSamplingContext.getDynamicSamplingContextFromSpan(this) }) }, _metrics_summary: metricSummary.getMetricSummaryJsonForSpan(this), ...source && { transaction_info: { source } } }; const hasMeasurements = Object.keys(this._measurements).length > 0; if (hasMeasurements) { debugBuild.DEBUG_BUILD && utils.logger.log( "[Measurements] Adding measurements to transaction", JSON.stringify(this._measurements, void 0, 2) ); transaction.measurements = this._measurements; } debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`); return transaction; } }; exports2.Transaction = Transaction; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/idletransaction.js var require_idletransaction = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/idletransaction.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var spanUtils = require_spanUtils(); var span = require_span(); var transaction = require_transaction(); var TRACING_DEFAULTS = { idleTimeout: 1e3, finalTimeout: 3e4, heartbeatInterval: 5e3 }; var FINISH_REASON_TAG = "finishReason"; var IDLE_TRANSACTION_FINISH_REASONS = [ "heartbeatFailed", "idleTimeout", "documentHidden", "finalTimeout", "externalFinish", "cancelled" ]; var IdleTransactionSpanRecorder = class extends span.SpanRecorder { constructor(_pushActivity, _popActivity, transactionSpanId, maxlen) { super(maxlen); this._pushActivity = _pushActivity; this._popActivity = _popActivity; this.transactionSpanId = transactionSpanId; } /** * @inheritDoc */ add(span2) { if (span2.spanContext().spanId !== this.transactionSpanId) { const originalEnd = span2.end; span2.end = (...rest) => { this._popActivity(span2.spanContext().spanId); return originalEnd.apply(span2, rest); }; if (spanUtils.spanToJSON(span2).timestamp === void 0) { this._pushActivity(span2.spanContext().spanId); } } super.add(span2); } }; var IdleTransaction = class extends transaction.Transaction { // Activities store a list of active spans // Track state of activities in previous heartbeat // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats. // We should not use heartbeat if we finished a transaction // Idle timeout was canceled and we should finish the transaction with the last span end. /** * Timer that tracks Transaction idleTimeout */ /** * @deprecated Transactions will be removed in v8. Use spans instead. */ constructor(transactionContext, _idleHub, _idleTimeout = TRACING_DEFAULTS.idleTimeout, _finalTimeout = TRACING_DEFAULTS.finalTimeout, _heartbeatInterval = TRACING_DEFAULTS.heartbeatInterval, _onScope = false, delayAutoFinishUntilSignal = false) { super(transactionContext, _idleHub); this._idleHub = _idleHub; this._idleTimeout = _idleTimeout; this._finalTimeout = _finalTimeout; this._heartbeatInterval = _heartbeatInterval; this._onScope = _onScope; this.activities = {}; this._heartbeatCounter = 0; this._finished = false; this._idleTimeoutCanceledPermanently = false; this._beforeFinishCallbacks = []; this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4]; this._autoFinishAllowed = !delayAutoFinishUntilSignal; if (_onScope) { debugBuild.DEBUG_BUILD && utils.logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`); _idleHub.getScope().setSpan(this); } if (!delayAutoFinishUntilSignal) { this._restartIdleTimeout(); } setTimeout(() => { if (!this._finished) { this.setStatus("deadline_exceeded"); this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3]; this.end(); } }, this._finalTimeout); } /** {@inheritDoc} */ end(endTimestamp) { const endTimestampInS = spanUtils.spanTimeInputToSeconds(endTimestamp); this._finished = true; this.activities = {}; if (this.op === "ui.action.click") { this.setAttribute(FINISH_REASON_TAG, this._finishReason); } if (this.spanRecorder) { debugBuild.DEBUG_BUILD && // eslint-disable-next-line deprecation/deprecation utils.logger.log("[Tracing] finishing IdleTransaction", new Date(endTimestampInS * 1e3).toISOString(), this.op); for (const callback of this._beforeFinishCallbacks) { callback(this, endTimestampInS); } this.spanRecorder.spans = this.spanRecorder.spans.filter((span2) => { if (span2.spanContext().spanId === this.spanContext().spanId) { return true; } if (!spanUtils.spanToJSON(span2).timestamp) { span2.setStatus("cancelled"); span2.end(endTimestampInS); debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] cancelling span since transaction ended early", JSON.stringify(span2, void 0, 2)); } const { start_timestamp: startTime, timestamp: endTime } = spanUtils.spanToJSON(span2); const spanStartedBeforeTransactionFinish = startTime && startTime < endTimestampInS; const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1e3; const spanEndedBeforeFinalTimeout = endTime && startTime && endTime - startTime < timeoutWithMarginOfError; if (debugBuild.DEBUG_BUILD) { const stringifiedSpan = JSON.stringify(span2, void 0, 2); if (!spanStartedBeforeTransactionFinish) { utils.logger.log("[Tracing] discarding Span since it happened after Transaction was finished", stringifiedSpan); } else if (!spanEndedBeforeFinalTimeout) { utils.logger.log("[Tracing] discarding Span since it finished after Transaction final timeout", stringifiedSpan); } } return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout; }); debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] flushing IdleTransaction"); } else { debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] No active IdleTransaction"); } if (this._onScope) { const scope = this._idleHub.getScope(); if (scope.getTransaction() === this) { scope.setSpan(void 0); } } return super.end(endTimestamp); } /** * Register a callback function that gets executed before the transaction finishes. * Useful for cleanup or if you want to add any additional spans based on current context. * * This is exposed because users have no other way of running something before an idle transaction * finishes. */ registerBeforeFinishCallback(callback) { this._beforeFinishCallbacks.push(callback); } /** * @inheritDoc */ initSpanRecorder(maxlen) { if (!this.spanRecorder) { const pushActivity = (id) => { if (this._finished) { return; } this._pushActivity(id); }; const popActivity = (id) => { if (this._finished) { return; } this._popActivity(id); }; this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanContext().spanId, maxlen); debugBuild.DEBUG_BUILD && utils.logger.log("Starting heartbeat"); this._pingHeartbeat(); } this.spanRecorder.add(this); } /** * Cancels the existing idle timeout, if there is one. * @param restartOnChildSpanChange Default is `true`. * If set to false the transaction will end * with the last child span. */ cancelIdleTimeout(endTimestamp, { restartOnChildSpanChange } = { restartOnChildSpanChange: true }) { this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false; if (this._idleTimeoutID) { clearTimeout(this._idleTimeoutID); this._idleTimeoutID = void 0; if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) { this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5]; this.end(endTimestamp); } } } /** * Temporary method used to externally set the transaction's `finishReason` * * ** WARNING** * This is for the purpose of experimentation only and will be removed in the near future, do not use! * * @internal * */ setFinishReason(reason) { this._finishReason = reason; } /** * Permits the IdleTransaction to automatically end itself via the idle timeout and heartbeat mechanisms when the `delayAutoFinishUntilSignal` option was set to `true`. */ sendAutoFinishSignal() { if (!this._autoFinishAllowed) { debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] Received finish signal for idle transaction."); this._restartIdleTimeout(); this._autoFinishAllowed = true; } } /** * Restarts idle timeout, if there is no running idle timeout it will start one. */ _restartIdleTimeout(endTimestamp) { this.cancelIdleTimeout(); this._idleTimeoutID = setTimeout(() => { if (!this._finished && Object.keys(this.activities).length === 0) { this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1]; this.end(endTimestamp); } }, this._idleTimeout); } /** * Start tracking a specific activity. * @param spanId The span id that represents the activity */ _pushActivity(spanId) { this.cancelIdleTimeout(void 0, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently }); debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] pushActivity: ${spanId}`); this.activities[spanId] = true; debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] new activities count", Object.keys(this.activities).length); } /** * Remove an activity from usage * @param spanId The span id that represents the activity */ _popActivity(spanId) { if (this.activities[spanId]) { debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] popActivity ${spanId}`); delete this.activities[spanId]; debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] new activities count", Object.keys(this.activities).length); } if (Object.keys(this.activities).length === 0) { const endTimestamp = utils.timestampInSeconds(); if (this._idleTimeoutCanceledPermanently) { if (this._autoFinishAllowed) { this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5]; this.end(endTimestamp); } } else { this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1e3); } } } /** * Checks when entries of this.activities are not changing for 3 beats. * If this occurs we finish the transaction. */ _beat() { if (this._finished) { return; } const heartbeatString = Object.keys(this.activities).join(""); if (heartbeatString === this._prevHeartbeatString) { this._heartbeatCounter++; } else { this._heartbeatCounter = 1; } this._prevHeartbeatString = heartbeatString; if (this._heartbeatCounter >= 3) { if (this._autoFinishAllowed) { debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] Transaction finished because of no change for 3 heart beats"); this.setStatus("deadline_exceeded"); this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0]; this.end(); } } else { this._pingHeartbeat(); } } /** * Pings the heartbeat */ _pingHeartbeat() { debugBuild.DEBUG_BUILD && utils.logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`); setTimeout(() => { this._beat(); }, this._heartbeatInterval); } }; exports2.IdleTransaction = IdleTransaction; exports2.IdleTransactionSpanRecorder = IdleTransactionSpanRecorder; exports2.TRACING_DEFAULTS = TRACING_DEFAULTS; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/sampling.js var require_sampling = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/sampling.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var semanticAttributes = require_semanticAttributes(); var hasTracingEnabled = require_hasTracingEnabled(); var spanUtils = require_spanUtils(); function sampleTransaction(transaction, options, samplingContext) { if (!hasTracingEnabled.hasTracingEnabled(options)) { transaction.sampled = false; return transaction; } if (transaction.sampled !== void 0) { transaction.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(transaction.sampled)); return transaction; } let sampleRate; if (typeof options.tracesSampler === "function") { sampleRate = options.tracesSampler(samplingContext); transaction.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate)); } else if (samplingContext.parentSampled !== void 0) { sampleRate = samplingContext.parentSampled; } else if (typeof options.tracesSampleRate !== "undefined") { sampleRate = options.tracesSampleRate; transaction.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate)); } else { sampleRate = 1; transaction.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate); } if (!isValidSampleRate(sampleRate)) { debugBuild.DEBUG_BUILD && utils.logger.warn("[Tracing] Discarding transaction because of invalid sample rate."); transaction.sampled = false; return transaction; } if (!sampleRate) { debugBuild.DEBUG_BUILD && utils.logger.log( `[Tracing] Discarding transaction because ${typeof options.tracesSampler === "function" ? "tracesSampler returned 0 or false" : "a negative sampling decision was inherited or tracesSampleRate is set to 0"}` ); transaction.sampled = false; return transaction; } transaction.sampled = Math.random() < sampleRate; if (!transaction.sampled) { debugBuild.DEBUG_BUILD && utils.logger.log( `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number( sampleRate )})` ); return transaction; } debugBuild.DEBUG_BUILD && // eslint-disable-next-line deprecation/deprecation utils.logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanUtils.spanToJSON(transaction).description}`); return transaction; } function isValidSampleRate(rate) { if (utils.isNaN(rate) || !(typeof rate === "number" || typeof rate === "boolean")) { debugBuild.DEBUG_BUILD && utils.logger.warn( `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify( rate )} of type ${JSON.stringify(typeof rate)}.` ); return false; } if (rate < 0 || rate > 1) { debugBuild.DEBUG_BUILD && utils.logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`); return false; } return true; } exports2.isValidSampleRate = isValidSampleRate; exports2.sampleTransaction = sampleTransaction; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/hubextensions.js var require_hubextensions = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/hubextensions.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var hub = require_hub(); var spanUtils = require_spanUtils(); var errors = require_errors(); var idletransaction = require_idletransaction(); var sampling = require_sampling(); var transaction = require_transaction(); function traceHeaders() { const scope = this.getScope(); const span = scope.getSpan(); return span ? { "sentry-trace": spanUtils.spanToTraceHeader(span) } : {}; } function _startTransaction(transactionContext, customSamplingContext) { const client2 = this.getClient(); const options = client2 && client2.getOptions() || {}; const configInstrumenter = options.instrumenter || "sentry"; const transactionInstrumenter = transactionContext.instrumenter || "sentry"; if (configInstrumenter !== transactionInstrumenter) { debugBuild.DEBUG_BUILD && utils.logger.error( `A transaction was started with instrumenter=\`${transactionInstrumenter}\`, but the SDK is configured with the \`${configInstrumenter}\` instrumenter. The transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.` ); transactionContext.sampled = false; } let transaction$1 = new transaction.Transaction(transactionContext, this); transaction$1 = sampling.sampleTransaction(transaction$1, options, { name: transactionContext.name, parentSampled: transactionContext.parentSampled, transactionContext, attributes: { // eslint-disable-next-line deprecation/deprecation ...transactionContext.data, ...transactionContext.attributes }, ...customSamplingContext }); if (transaction$1.isRecording()) { transaction$1.initSpanRecorder(options._experiments && options._experiments.maxSpans); } if (client2 && client2.emit) { client2.emit("startTransaction", transaction$1); } return transaction$1; } function startIdleTransaction(hub2, transactionContext, idleTimeout, finalTimeout, onScope, customSamplingContext, heartbeatInterval, delayAutoFinishUntilSignal = false) { const client2 = hub2.getClient(); const options = client2 && client2.getOptions() || {}; let transaction2 = new idletransaction.IdleTransaction( transactionContext, hub2, idleTimeout, finalTimeout, heartbeatInterval, onScope, delayAutoFinishUntilSignal ); transaction2 = sampling.sampleTransaction(transaction2, options, { name: transactionContext.name, parentSampled: transactionContext.parentSampled, transactionContext, attributes: { // eslint-disable-next-line deprecation/deprecation ...transactionContext.data, ...transactionContext.attributes }, ...customSamplingContext }); if (transaction2.isRecording()) { transaction2.initSpanRecorder(options._experiments && options._experiments.maxSpans); } if (client2 && client2.emit) { client2.emit("startTransaction", transaction2); } return transaction2; } function addTracingExtensions() { const carrier = hub.getMainCarrier(); if (!carrier.__SENTRY__) { return; } carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {}; if (!carrier.__SENTRY__.extensions.startTransaction) { carrier.__SENTRY__.extensions.startTransaction = _startTransaction; } if (!carrier.__SENTRY__.extensions.traceHeaders) { carrier.__SENTRY__.extensions.traceHeaders = traceHeaders; } errors.registerErrorInstrumentation(); } exports2.addTracingExtensions = addTracingExtensions; exports2.startIdleTransaction = startIdleTransaction; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/measurement.js var require_measurement = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/measurement.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_utils3(); function setMeasurement(name, value, unit) { const transaction = utils.getActiveTransaction(); if (transaction) { transaction.setMeasurement(name, value, unit); } } exports2.setMeasurement = setMeasurement; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/envelope.js var require_envelope2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/envelope.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); function enhanceEventWithSdkInfo(event, sdkInfo) { if (!sdkInfo) { return event; } event.sdk = event.sdk || {}; event.sdk.name = event.sdk.name || sdkInfo.name; event.sdk.version = event.sdk.version || sdkInfo.version; event.sdk.integrations = [...event.sdk.integrations || [], ...sdkInfo.integrations || []]; event.sdk.packages = [...event.sdk.packages || [], ...sdkInfo.packages || []]; return event; } function createSessionEnvelope(session, dsn, metadata, tunnel) { const sdkInfo = utils.getSdkMetadataForEnvelopeHeader(metadata); const envelopeHeaders = { sent_at: (/* @__PURE__ */ new Date()).toISOString(), ...sdkInfo && { sdk: sdkInfo }, ...!!tunnel && dsn && { dsn: utils.dsnToString(dsn) } }; const envelopeItem = "aggregates" in session ? [{ type: "sessions" }, session] : [{ type: "session" }, session.toJSON()]; return utils.createEnvelope(envelopeHeaders, [envelopeItem]); } function createEventEnvelope(event, dsn, metadata, tunnel) { const sdkInfo = utils.getSdkMetadataForEnvelopeHeader(metadata); const eventType = event.type && event.type !== "replay_event" ? event.type : "event"; enhanceEventWithSdkInfo(event, metadata && metadata.sdk); const envelopeHeaders = utils.createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn); delete event.sdkProcessingMetadata; const eventItem = [{ type: eventType }, event]; return utils.createEnvelope(envelopeHeaders, [eventItem]); } exports2.createEventEnvelope = createEventEnvelope; exports2.createSessionEnvelope = createSessionEnvelope; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/sessionflusher.js var require_sessionflusher = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/sessionflusher.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var exports$1 = require_exports(); var SessionFlusher = class { // Cast to any so that it can use Node.js timeout // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(client2, attrs) { this._client = client2; this.flushTimeout = 60; this._pendingAggregates = {}; this._isEnabled = true; this._intervalId = setInterval(() => this.flush(), this.flushTimeout * 1e3); if (this._intervalId.unref) { this._intervalId.unref(); } this._sessionAttrs = attrs; } /** Checks if `pendingAggregates` has entries, and if it does flushes them by calling `sendSession` */ flush() { const sessionAggregates = this.getSessionAggregates(); if (sessionAggregates.aggregates.length === 0) { return; } this._pendingAggregates = {}; this._client.sendSession(sessionAggregates); } /** Massages the entries in `pendingAggregates` and returns aggregated sessions */ getSessionAggregates() { const aggregates = Object.keys(this._pendingAggregates).map((key) => { return this._pendingAggregates[parseInt(key)]; }); const sessionAggregates = { attrs: this._sessionAttrs, aggregates }; return utils.dropUndefinedKeys(sessionAggregates); } /** JSDoc */ close() { clearInterval(this._intervalId); this._isEnabled = false; this.flush(); } /** * Wrapper function for _incrementSessionStatusCount that checks if the instance of SessionFlusher is enabled then * fetches the session status of the request from `Scope.getRequestSession().status` on the scope and passes them to * `_incrementSessionStatusCount` along with the start date */ incrementSessionStatusCount() { if (!this._isEnabled) { return; } const scope = exports$1.getCurrentScope(); const requestSession = scope.getRequestSession(); if (requestSession && requestSession.status) { this._incrementSessionStatusCount(requestSession.status, /* @__PURE__ */ new Date()); scope.setRequestSession(void 0); } } /** * Increments status bucket in pendingAggregates buffer (internal state) corresponding to status of * the session received */ _incrementSessionStatusCount(status3, date) { const sessionStartedTrunc = new Date(date).setSeconds(0, 0); this._pendingAggregates[sessionStartedTrunc] = this._pendingAggregates[sessionStartedTrunc] || {}; const aggregationCounts = this._pendingAggregates[sessionStartedTrunc]; if (!aggregationCounts.started) { aggregationCounts.started = new Date(sessionStartedTrunc).toISOString(); } switch (status3) { case "errored": aggregationCounts.errored = (aggregationCounts.errored || 0) + 1; return aggregationCounts.errored; case "ok": aggregationCounts.exited = (aggregationCounts.exited || 0) + 1; return aggregationCounts.exited; default: aggregationCounts.crashed = (aggregationCounts.crashed || 0) + 1; return aggregationCounts.crashed; } } }; exports2.SessionFlusher = SessionFlusher; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/api.js var require_api = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/api.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var SENTRY_API_VERSION = "7"; function getBaseApiEndpoint(dsn) { const protocol = dsn.protocol ? `${dsn.protocol}:` : ""; const port = dsn.port ? `:${dsn.port}` : ""; return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ""}/api/`; } function _getIngestEndpoint(dsn) { return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`; } function _encodedAuth(dsn, sdkInfo) { return utils.urlEncode({ // We send only the minimum set of required information. See // https://github.com/getsentry/sentry-javascript/issues/2572. sentry_key: dsn.publicKey, sentry_version: SENTRY_API_VERSION, ...sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` } }); } function getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnelOrOptions = {}) { const tunnel = typeof tunnelOrOptions === "string" ? tunnelOrOptions : tunnelOrOptions.tunnel; const sdkInfo = typeof tunnelOrOptions === "string" || !tunnelOrOptions._metadata ? void 0 : tunnelOrOptions._metadata.sdk; return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`; } function getReportDialogEndpoint(dsnLike, dialogOptions) { const dsn = utils.makeDsn(dsnLike); if (!dsn) { return ""; } const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`; let encodedOptions = `dsn=${utils.dsnToString(dsn)}`; for (const key in dialogOptions) { if (key === "dsn") { continue; } if (key === "onClose") { continue; } if (key === "user") { const user = dialogOptions.user; if (!user) { continue; } if (user.name) { encodedOptions += `&name=${encodeURIComponent(user.name)}`; } if (user.email) { encodedOptions += `&email=${encodeURIComponent(user.email)}`; } } else { encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key])}`; } } return `${endpoint}?${encodedOptions}`; } exports2.getEnvelopeEndpointWithUrlEncodedAuth = getEnvelopeEndpointWithUrlEncodedAuth; exports2.getReportDialogEndpoint = getReportDialogEndpoint; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integration.js var require_integration = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integration.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var eventProcessors = require_eventProcessors(); var exports$1 = require_exports(); var hub = require_hub(); var installedIntegrations = []; function filterDuplicates(integrations) { const integrationsByName = {}; integrations.forEach((currentInstance) => { const { name } = currentInstance; const existingInstance = integrationsByName[name]; if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) { return; } integrationsByName[name] = currentInstance; }); return Object.keys(integrationsByName).map((k) => integrationsByName[k]); } function getIntegrationsToSetup(options) { const defaultIntegrations = options.defaultIntegrations || []; const userIntegrations = options.integrations; defaultIntegrations.forEach((integration) => { integration.isDefaultInstance = true; }); let integrations; if (Array.isArray(userIntegrations)) { integrations = [...defaultIntegrations, ...userIntegrations]; } else if (typeof userIntegrations === "function") { integrations = utils.arrayify(userIntegrations(defaultIntegrations)); } else { integrations = defaultIntegrations; } const finalIntegrations = filterDuplicates(integrations); const debugIndex = findIndex(finalIntegrations, (integration) => integration.name === "Debug"); if (debugIndex !== -1) { const [debugInstance] = finalIntegrations.splice(debugIndex, 1); finalIntegrations.push(debugInstance); } return finalIntegrations; } function setupIntegrations(client2, integrations) { const integrationIndex = {}; integrations.forEach((integration) => { if (integration) { setupIntegration(client2, integration, integrationIndex); } }); return integrationIndex; } function afterSetupIntegrations(client2, integrations) { for (const integration of integrations) { if (integration && integration.afterAllSetup) { integration.afterAllSetup(client2); } } } function setupIntegration(client2, integration, integrationIndex) { if (integrationIndex[integration.name]) { debugBuild.DEBUG_BUILD && utils.logger.log(`Integration skipped because it was already installed: ${integration.name}`); return; } integrationIndex[integration.name] = integration; if (installedIntegrations.indexOf(integration.name) === -1) { integration.setupOnce(eventProcessors.addGlobalEventProcessor, hub.getCurrentHub); installedIntegrations.push(integration.name); } if (integration.setup && typeof integration.setup === "function") { integration.setup(client2); } if (client2.on && typeof integration.preprocessEvent === "function") { const callback = integration.preprocessEvent.bind(integration); client2.on("preprocessEvent", (event, hint) => callback(event, hint, client2)); } if (client2.addEventProcessor && typeof integration.processEvent === "function") { const callback = integration.processEvent.bind(integration); const processor = Object.assign((event, hint) => callback(event, hint, client2), { id: integration.name }); client2.addEventProcessor(processor); } debugBuild.DEBUG_BUILD && utils.logger.log(`Integration installed: ${integration.name}`); } function addIntegration(integration) { const client2 = exports$1.getClient(); if (!client2 || !client2.addIntegration) { debugBuild.DEBUG_BUILD && utils.logger.warn(`Cannot add integration "${integration.name}" because no SDK Client is available.`); return; } client2.addIntegration(integration); } function findIndex(arr, callback) { for (let i = 0; i < arr.length; i++) { if (callback(arr[i]) === true) { return i; } } return -1; } function convertIntegrationFnToClass(name, fn2) { return Object.assign( function ConvertedIntegration(...args2) { return fn2(...args2); }, { id: name } ); } function defineIntegration(fn2) { return fn2; } exports2.addIntegration = addIntegration; exports2.afterSetupIntegrations = afterSetupIntegrations; exports2.convertIntegrationFnToClass = convertIntegrationFnToClass; exports2.defineIntegration = defineIntegration; exports2.getIntegrationsToSetup = getIntegrationsToSetup; exports2.installedIntegrations = installedIntegrations; exports2.setupIntegration = setupIntegration; exports2.setupIntegrations = setupIntegrations; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/utils.js var require_utils4 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/utils.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); function getBucketKey(metricType, name, unit, tags) { const stringifiedTags = Object.entries(utils.dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0])); return `${metricType}${name}${unit}${stringifiedTags}`; } function simpleHash(s) { let rv = 0; for (let i = 0; i < s.length; i++) { const c = s.charCodeAt(i); rv = (rv << 5) - rv + c; rv &= rv; } return rv >>> 0; } function serializeMetricBuckets(metricBucketItems) { let out = ""; for (const item of metricBucketItems) { const tagEntries = Object.entries(item.tags); const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(",")}` : ""; out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp} `; } return out; } function sanitizeUnit(unit) { return unit.replace(/[^\w]+/gi, "_"); } function sanitizeMetricKey(key) { return key.replace(/[^\w\-.]+/gi, "_"); } function sanitizeTagKey(key) { return key.replace(/[^\w\-./]+/gi, ""); } var tagValueReplacements = [ ["\n", "\\n"], ["\r", "\\r"], [" ", "\\t"], ["\\", "\\\\"], ["|", "\\u{7c}"], [",", "\\u{2c}"] ]; function getCharOrReplacement(input) { for (const [search, replacement] of tagValueReplacements) { if (input === search) { return replacement; } } return input; } function sanitizeTagValue(value) { return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), ""); } function sanitizeTags(unsanitizedTags) { const tags = {}; for (const key in unsanitizedTags) { if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) { const sanitizedKey = sanitizeTagKey(key); tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key])); } } return tags; } exports2.getBucketKey = getBucketKey; exports2.sanitizeMetricKey = sanitizeMetricKey; exports2.sanitizeTags = sanitizeTags; exports2.sanitizeUnit = sanitizeUnit; exports2.serializeMetricBuckets = serializeMetricBuckets; exports2.simpleHash = simpleHash; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/envelope.js var require_envelope3 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/envelope.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var utils$1 = require_utils4(); function createMetricEnvelope(metricBucketItems, dsn, metadata, tunnel) { const headers = { sent_at: (/* @__PURE__ */ new Date()).toISOString() }; if (metadata && metadata.sdk) { headers.sdk = { name: metadata.sdk.name, version: metadata.sdk.version }; } if (!!tunnel && dsn) { headers.dsn = utils.dsnToString(dsn); } const item = createMetricEnvelopeItem(metricBucketItems); return utils.createEnvelope(headers, [item]); } function createMetricEnvelopeItem(metricBucketItems) { const payload = utils$1.serializeMetricBuckets(metricBucketItems); const metricHeaders = { type: "statsd", length: payload.length }; return [metricHeaders, payload]; } exports2.createMetricEnvelope = createMetricEnvelope; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/baseclient.js var require_baseclient = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/baseclient.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var api2 = require_api(); var debugBuild = require_debug_build2(); var envelope = require_envelope2(); var exports$1 = require_exports(); var hub = require_hub(); var integration = require_integration(); var envelope$1 = require_envelope3(); var session = require_session(); var dynamicSamplingContext = require_dynamicSamplingContext(); var prepareEvent = require_prepareEvent(); var ALREADY_SEEN_ERROR = "Not capturing exception because it's already been captured."; var BaseClient = class { /** * A reference to a metrics aggregator * * @experimental Note this is alpha API. It may experience breaking changes in the future. */ /** Options passed to the SDK. */ /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */ /** Array of set up integrations. */ /** Indicates whether this client's integrations have been set up. */ /** Number of calls being processed */ /** Holds flushable */ // eslint-disable-next-line @typescript-eslint/ban-types /** * Initializes this client instance. * * @param options Options for the client. */ constructor(options) { this._options = options; this._integrations = {}; this._integrationsInitialized = false; this._numProcessing = 0; this._outcomes = {}; this._hooks = {}; this._eventProcessors = []; if (options.dsn) { this._dsn = utils.makeDsn(options.dsn); } else { debugBuild.DEBUG_BUILD && utils.logger.warn("No DSN provided, client will not send events."); } if (this._dsn) { const url3 = api2.getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options); this._transport = options.transport({ tunnel: this._options.tunnel, recordDroppedEvent: this.recordDroppedEvent.bind(this), ...options.transportOptions, url: url3 }); } } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types captureException(exception, hint, scope) { if (utils.checkOrSetAlreadyCaught(exception)) { debugBuild.DEBUG_BUILD && utils.logger.log(ALREADY_SEEN_ERROR); return; } let eventId = hint && hint.event_id; this._process( this.eventFromException(exception, hint).then((event) => this._captureEvent(event, hint, scope)).then((result) => { eventId = result; }) ); return eventId; } /** * @inheritDoc */ captureMessage(message2, level, hint, scope) { let eventId = hint && hint.event_id; const eventMessage = utils.isParameterizedString(message2) ? message2 : String(message2); const promisedEvent = utils.isPrimitive(message2) ? this.eventFromMessage(eventMessage, level, hint) : this.eventFromException(message2, hint); this._process( promisedEvent.then((event) => this._captureEvent(event, hint, scope)).then((result) => { eventId = result; }) ); return eventId; } /** * @inheritDoc */ captureEvent(event, hint, scope) { if (hint && hint.originalException && utils.checkOrSetAlreadyCaught(hint.originalException)) { debugBuild.DEBUG_BUILD && utils.logger.log(ALREADY_SEEN_ERROR); return; } let eventId = hint && hint.event_id; const sdkProcessingMetadata = event.sdkProcessingMetadata || {}; const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope; this._process( this._captureEvent(event, hint, capturedSpanScope || scope).then((result) => { eventId = result; }) ); return eventId; } /** * @inheritDoc */ captureSession(session$1) { if (!(typeof session$1.release === "string")) { debugBuild.DEBUG_BUILD && utils.logger.warn("Discarded session because of missing or non-string release"); } else { this.sendSession(session$1); session.updateSession(session$1, { init: false }); } } /** * @inheritDoc */ getDsn() { return this._dsn; } /** * @inheritDoc */ getOptions() { return this._options; } /** * @see SdkMetadata in @sentry/types * * @return The metadata of the SDK */ getSdkMetadata() { return this._options._metadata; } /** * @inheritDoc */ getTransport() { return this._transport; } /** * @inheritDoc */ flush(timeout) { const transport = this._transport; if (transport) { if (this.metricsAggregator) { this.metricsAggregator.flush(); } return this._isClientDoneProcessing(timeout).then((clientFinished) => { return transport.flush(timeout).then((transportFlushed) => clientFinished && transportFlushed); }); } else { return utils.resolvedSyncPromise(true); } } /** * @inheritDoc */ close(timeout) { return this.flush(timeout).then((result) => { this.getOptions().enabled = false; if (this.metricsAggregator) { this.metricsAggregator.close(); } return result; }); } /** Get all installed event processors. */ getEventProcessors() { return this._eventProcessors; } /** @inheritDoc */ addEventProcessor(eventProcessor) { this._eventProcessors.push(eventProcessor); } /** * This is an internal function to setup all integrations that should run on the client. * @deprecated Use `client.init()` instead. */ setupIntegrations(forceInitialize) { if (forceInitialize && !this._integrationsInitialized || this._isEnabled() && !this._integrationsInitialized) { this._setupIntegrations(); } } /** @inheritdoc */ init() { if (this._isEnabled()) { this._setupIntegrations(); } } /** * Gets an installed integration by its `id`. * * @returns The installed integration or `undefined` if no integration with that `id` was installed. * @deprecated Use `getIntegrationByName()` instead. */ getIntegrationById(integrationId) { return this.getIntegrationByName(integrationId); } /** * Gets an installed integration by its name. * * @returns The installed integration or `undefined` if no integration with that `name` was installed. */ getIntegrationByName(integrationName) { return this._integrations[integrationName]; } /** * Returns the client's instance of the given integration class, it any. * @deprecated Use `getIntegrationByName()` instead. */ getIntegration(integration2) { try { return this._integrations[integration2.id] || null; } catch (_oO) { debugBuild.DEBUG_BUILD && utils.logger.warn(`Cannot retrieve integration ${integration2.id} from the current Client`); return null; } } /** * @inheritDoc */ addIntegration(integration$1) { const isAlreadyInstalled = this._integrations[integration$1.name]; integration.setupIntegration(this, integration$1, this._integrations); if (!isAlreadyInstalled) { integration.afterSetupIntegrations(this, [integration$1]); } } /** * @inheritDoc */ sendEvent(event, hint = {}) { this.emit("beforeSendEvent", event, hint); let env = envelope.createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel); for (const attachment of hint.attachments || []) { env = utils.addItemToEnvelope( env, utils.createAttachmentEnvelopeItem( attachment, this._options.transportOptions && this._options.transportOptions.textEncoder ) ); } const promise = this._sendEnvelope(env); if (promise) { promise.then((sendResponse) => this.emit("afterSendEvent", event, sendResponse), null); } } /** * @inheritDoc */ sendSession(session2) { const env = envelope.createSessionEnvelope(session2, this._dsn, this._options._metadata, this._options.tunnel); this._sendEnvelope(env); } /** * @inheritDoc */ recordDroppedEvent(reason, category, eventOrCount) { if (this._options.sendClientReports) { const count = typeof eventOrCount === "number" ? eventOrCount : 1; const key = `${reason}:${category}`; debugBuild.DEBUG_BUILD && utils.logger.log(`Recording outcome: "${key}"${count > 1 ? ` (${count} times)` : ""}`); this._outcomes[key] = (this._outcomes[key] || 0) + count; } } /** * @inheritDoc */ captureAggregateMetrics(metricBucketItems) { debugBuild.DEBUG_BUILD && utils.logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`); const metricsEnvelope = envelope$1.createMetricEnvelope( metricBucketItems, this._dsn, this._options._metadata, this._options.tunnel ); this._sendEnvelope(metricsEnvelope); } // Keep on() & emit() signatures in sync with types' client.ts interface /* eslint-disable @typescript-eslint/unified-signatures */ /** @inheritdoc */ /** @inheritdoc */ on(hook, callback) { if (!this._hooks[hook]) { this._hooks[hook] = []; } this._hooks[hook].push(callback); } /** @inheritdoc */ /** @inheritdoc */ emit(hook, ...rest) { if (this._hooks[hook]) { this._hooks[hook].forEach((callback) => callback(...rest)); } } /* eslint-enable @typescript-eslint/unified-signatures */ /** Setup integrations for this client. */ _setupIntegrations() { const { integrations } = this._options; this._integrations = integration.setupIntegrations(this, integrations); integration.afterSetupIntegrations(this, integrations); this._integrationsInitialized = true; } /** Updates existing session based on the provided event */ _updateSessionFromEvent(session$1, event) { let crashed = false; let errored = false; const exceptions = event.exception && event.exception.values; if (exceptions) { errored = true; for (const ex of exceptions) { const mechanism = ex.mechanism; if (mechanism && mechanism.handled === false) { crashed = true; break; } } } const sessionNonTerminal = session$1.status === "ok"; const shouldUpdateAndSend = sessionNonTerminal && session$1.errors === 0 || sessionNonTerminal && crashed; if (shouldUpdateAndSend) { session.updateSession(session$1, { ...crashed && { status: "crashed" }, errors: session$1.errors || Number(errored || crashed) }); this.captureSession(session$1); } } /** * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying * "no" (resolving to `false`) in order to give the client a chance to potentially finish first. * * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to * `true`. * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and * `false` otherwise */ _isClientDoneProcessing(timeout) { return new utils.SyncPromise((resolve14) => { let ticked = 0; const tick = 1; const interval = setInterval(() => { if (this._numProcessing == 0) { clearInterval(interval); resolve14(true); } else { ticked += tick; if (timeout && ticked >= timeout) { clearInterval(interval); resolve14(false); } } }, tick); }); } /** Determines whether this SDK is enabled and a transport is present. */ _isEnabled() { return this.getOptions().enabled !== false && this._transport !== void 0; } /** * Adds common information to events. * * The information includes release and environment from `options`, * breadcrumbs and context (extra, tags and user) from the scope. * * Information that is already present in the event is never overwritten. For * nested objects, such as the context, keys are merged. * * @param event The original event. * @param hint May contain additional information about the original exception. * @param scope A scope containing event metadata. * @returns A new event with more information. */ _prepareEvent(event, hint, scope, isolationScope = hub.getIsolationScope()) { const options = this.getOptions(); const integrations = Object.keys(this._integrations); if (!hint.integrations && integrations.length > 0) { hint.integrations = integrations; } this.emit("preprocessEvent", event, hint); return prepareEvent.prepareEvent(options, event, hint, scope, this, isolationScope).then((evt) => { if (evt === null) { return evt; } const propagationContext = { ...isolationScope.getPropagationContext(), ...scope ? scope.getPropagationContext() : void 0 }; const trace = evt.contexts && evt.contexts.trace; if (!trace && propagationContext) { const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext; evt.contexts = { trace: { trace_id, span_id: spanId, parent_span_id: parentSpanId }, ...evt.contexts }; const dynamicSamplingContext$1 = dsc ? dsc : dynamicSamplingContext.getDynamicSamplingContextFromClient(trace_id, this, scope); evt.sdkProcessingMetadata = { dynamicSamplingContext: dynamicSamplingContext$1, ...evt.sdkProcessingMetadata }; } return evt; }); } /** * Processes the event and logs an error in case of rejection * @param event * @param hint * @param scope */ _captureEvent(event, hint = {}, scope) { return this._processEvent(event, hint, scope).then( (finalEvent) => { return finalEvent.event_id; }, (reason) => { if (debugBuild.DEBUG_BUILD) { const sentryError = reason; if (sentryError.logLevel === "log") { utils.logger.log(sentryError.message); } else { utils.logger.warn(sentryError); } } return void 0; } ); } /** * Processes an event (either error or message) and sends it to Sentry. * * This also adds breadcrumbs and context information to the event. However, * platform specific meta data (such as the User's IP address) must be added * by the SDK implementor. * * * @param event The event to send to Sentry. * @param hint May contain additional information about the original exception. * @param scope A scope containing event metadata. * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send. */ _processEvent(event, hint, scope) { const options = this.getOptions(); const { sampleRate } = options; const isTransaction = isTransactionEvent(event); const isError14 = isErrorEvent(event); const eventType = event.type || "error"; const beforeSendLabel = `before send for type \`${eventType}\``; if (isError14 && typeof sampleRate === "number" && Math.random() > sampleRate) { this.recordDroppedEvent("sample_rate", "error", event); return utils.rejectedSyncPromise( new utils.SentryError( `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`, "log" ) ); } const dataCategory = eventType === "replay_event" ? "replay" : eventType; const sdkProcessingMetadata = event.sdkProcessingMetadata || {}; const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope; return this._prepareEvent(event, hint, scope, capturedSpanIsolationScope).then((prepared) => { if (prepared === null) { this.recordDroppedEvent("event_processor", dataCategory, event); throw new utils.SentryError("An event processor returned `null`, will not send event.", "log"); } const isInternalException = hint.data && hint.data.__sentry__ === true; if (isInternalException) { return prepared; } const result = processBeforeSend(options, prepared, hint); return _validateBeforeSendResult(result, beforeSendLabel); }).then((processedEvent) => { if (processedEvent === null) { this.recordDroppedEvent("before_send", dataCategory, event); if (isTransaction) { const spans = event.spans || []; const spanCount = 1 + spans.length; this.recordDroppedEvent("before_send", "span", spanCount); } throw new utils.SentryError(`${beforeSendLabel} returned \`null\`, will not send event.`, "log"); } const session2 = scope && scope.getSession(); if (!isTransaction && session2) { this._updateSessionFromEvent(session2, processedEvent); } if (isTransaction) { const spanCountBefore = processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing || 0; const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0; const droppedSpanCount = spanCountBefore - spanCountAfter; if (droppedSpanCount > 0) { this.recordDroppedEvent("before_send", "span", droppedSpanCount); } } const transactionInfo = processedEvent.transaction_info; if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) { const source = "custom"; processedEvent.transaction_info = { ...transactionInfo, source }; } this.sendEvent(processedEvent, hint); return processedEvent; }).then(null, (reason) => { if (reason instanceof utils.SentryError) { throw reason; } this.captureException(reason, { data: { __sentry__: true }, originalException: reason }); throw new utils.SentryError( `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. Reason: ${reason}` ); }); } /** * Occupies the client with processing and event */ _process(promise) { this._numProcessing++; void promise.then( (value) => { this._numProcessing--; return value; }, (reason) => { this._numProcessing--; return reason; } ); } /** * @inheritdoc */ _sendEnvelope(envelope2) { this.emit("beforeEnvelope", envelope2); if (this._isEnabled() && this._transport) { return this._transport.send(envelope2).then(null, (reason) => { debugBuild.DEBUG_BUILD && utils.logger.error("Error while sending event:", reason); }); } else { debugBuild.DEBUG_BUILD && utils.logger.error("Transport disabled"); } } /** * Clears outcomes on this client and returns them. */ _clearOutcomes() { const outcomes = this._outcomes; this._outcomes = {}; return Object.keys(outcomes).map((key) => { const [reason, category] = key.split(":"); return { reason, category, quantity: outcomes[key] }; }); } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types }; function _validateBeforeSendResult(beforeSendResult, beforeSendLabel) { const invalidValueError = `${beforeSendLabel} must return \`null\` or a valid event.`; if (utils.isThenable(beforeSendResult)) { return beforeSendResult.then( (event) => { if (!utils.isPlainObject(event) && event !== null) { throw new utils.SentryError(invalidValueError); } return event; }, (e2) => { throw new utils.SentryError(`${beforeSendLabel} rejected with ${e2}`); } ); } else if (!utils.isPlainObject(beforeSendResult) && beforeSendResult !== null) { throw new utils.SentryError(invalidValueError); } return beforeSendResult; } function processBeforeSend(options, event, hint) { const { beforeSend, beforeSendTransaction } = options; if (isErrorEvent(event) && beforeSend) { return beforeSend(event, hint); } if (isTransactionEvent(event) && beforeSendTransaction) { if (event.spans) { const spanCountBefore = event.spans.length; event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, spanCountBeforeProcessing: spanCountBefore }; } return beforeSendTransaction(event, hint); } return event; } function isErrorEvent(event) { return event.type === void 0; } function isTransactionEvent(event) { return event.type === "transaction"; } function addEventProcessor(callback) { const client2 = exports$1.getClient(); if (!client2 || !client2.addEventProcessor) { return; } client2.addEventProcessor(callback); } exports2.BaseClient = BaseClient; exports2.addEventProcessor = addEventProcessor; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/checkin.js var require_checkin = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/checkin.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); function createCheckInEnvelope(checkIn, dynamicSamplingContext, metadata, tunnel, dsn) { const headers = { sent_at: (/* @__PURE__ */ new Date()).toISOString() }; if (metadata && metadata.sdk) { headers.sdk = { name: metadata.sdk.name, version: metadata.sdk.version }; } if (!!tunnel && !!dsn) { headers.dsn = utils.dsnToString(dsn); } if (dynamicSamplingContext) { headers.trace = utils.dropUndefinedKeys(dynamicSamplingContext); } const item = createCheckInEnvelopeItem(checkIn); return utils.createEnvelope(headers, [item]); } function createCheckInEnvelopeItem(checkIn) { const checkInHeaders = { type: "check_in" }; return [checkInHeaders, checkIn]; } exports2.createCheckInEnvelope = createCheckInEnvelope; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/constants.js var require_constants2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/constants.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var COUNTER_METRIC_TYPE = "c"; var GAUGE_METRIC_TYPE = "g"; var SET_METRIC_TYPE = "s"; var DISTRIBUTION_METRIC_TYPE = "d"; var DEFAULT_BROWSER_FLUSH_INTERVAL = 5e3; var DEFAULT_FLUSH_INTERVAL = 1e4; var MAX_WEIGHT = 1e4; exports2.COUNTER_METRIC_TYPE = COUNTER_METRIC_TYPE; exports2.DEFAULT_BROWSER_FLUSH_INTERVAL = DEFAULT_BROWSER_FLUSH_INTERVAL; exports2.DEFAULT_FLUSH_INTERVAL = DEFAULT_FLUSH_INTERVAL; exports2.DISTRIBUTION_METRIC_TYPE = DISTRIBUTION_METRIC_TYPE; exports2.GAUGE_METRIC_TYPE = GAUGE_METRIC_TYPE; exports2.MAX_WEIGHT = MAX_WEIGHT; exports2.SET_METRIC_TYPE = SET_METRIC_TYPE; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/instance.js var require_instance = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/instance.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var constants2 = require_constants2(); var utils = require_utils4(); var CounterMetric = class { constructor(_value) { this._value = _value; } /** @inheritDoc */ get weight() { return 1; } /** @inheritdoc */ add(value) { this._value += value; } /** @inheritdoc */ toString() { return `${this._value}`; } }; var GaugeMetric = class { constructor(value) { this._last = value; this._min = value; this._max = value; this._sum = value; this._count = 1; } /** @inheritDoc */ get weight() { return 5; } /** @inheritdoc */ add(value) { this._last = value; if (value < this._min) { this._min = value; } if (value > this._max) { this._max = value; } this._sum += value; this._count++; } /** @inheritdoc */ toString() { return `${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`; } }; var DistributionMetric = class { constructor(first) { this._value = [first]; } /** @inheritDoc */ get weight() { return this._value.length; } /** @inheritdoc */ add(value) { this._value.push(value); } /** @inheritdoc */ toString() { return this._value.join(":"); } }; var SetMetric = class { constructor(first) { this.first = first; this._value = /* @__PURE__ */ new Set([first]); } /** @inheritDoc */ get weight() { return this._value.size; } /** @inheritdoc */ add(value) { this._value.add(value); } /** @inheritdoc */ toString() { return Array.from(this._value).map((val) => typeof val === "string" ? utils.simpleHash(val) : val).join(":"); } }; var METRIC_MAP = { [constants2.COUNTER_METRIC_TYPE]: CounterMetric, [constants2.GAUGE_METRIC_TYPE]: GaugeMetric, [constants2.DISTRIBUTION_METRIC_TYPE]: DistributionMetric, [constants2.SET_METRIC_TYPE]: SetMetric }; exports2.CounterMetric = CounterMetric; exports2.DistributionMetric = DistributionMetric; exports2.GaugeMetric = GaugeMetric; exports2.METRIC_MAP = METRIC_MAP; exports2.SetMetric = SetMetric; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/aggregator.js var require_aggregator = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/aggregator.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils$1 = require_cjs(); var constants2 = require_constants2(); var instance = require_instance(); var metricSummary = require_metric_summary(); var utils = require_utils4(); var MetricsAggregator = class { // TODO(@anonrig): Use FinalizationRegistry to have a proper way of flushing the buckets // when the aggregator is garbage collected. // Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry // Different metrics have different weights. We use this to limit the number of metrics // that we store in memory. // Cast to any so that it can use Node.js timeout // eslint-disable-next-line @typescript-eslint/no-explicit-any // SDKs are required to shift the flush interval by random() * rollup_in_seconds. // That shift is determined once per startup to create jittering. // An SDK is required to perform force flushing ahead of scheduled time if the memory // pressure is too high. There is no rule for this other than that SDKs should be tracking // abstract aggregation complexity (eg: a counter only carries a single float, whereas a // distribution is a float per emission). // // Force flush is used on either shutdown, flush() or when we exceed the max weight. constructor(_client) { this._client = _client; this._buckets = /* @__PURE__ */ new Map(); this._bucketsTotalWeight = 0; this._interval = setInterval(() => this._flush(), constants2.DEFAULT_FLUSH_INTERVAL); if (this._interval.unref) { this._interval.unref(); } this._flushShift = Math.floor(Math.random() * constants2.DEFAULT_FLUSH_INTERVAL / 1e3); this._forceFlush = false; } /** * @inheritDoc */ add(metricType, unsanitizedName, value, unsanitizedUnit = "none", unsanitizedTags = {}, maybeFloatTimestamp = utils$1.timestampInSeconds()) { const timestamp = Math.floor(maybeFloatTimestamp); const name = utils.sanitizeMetricKey(unsanitizedName); const tags = utils.sanitizeTags(unsanitizedTags); const unit = utils.sanitizeUnit(unsanitizedUnit); const bucketKey = utils.getBucketKey(metricType, name, unit, tags); let bucketItem = this._buckets.get(bucketKey); const previousWeight = bucketItem && metricType === constants2.SET_METRIC_TYPE ? bucketItem.metric.weight : 0; if (bucketItem) { bucketItem.metric.add(value); if (bucketItem.timestamp < timestamp) { bucketItem.timestamp = timestamp; } } else { bucketItem = { // @ts-expect-error we don't need to narrow down the type of value here, saves bundle size. metric: new instance.METRIC_MAP[metricType](value), timestamp, metricType, name, unit, tags }; this._buckets.set(bucketKey, bucketItem); } const val = typeof value === "string" ? bucketItem.metric.weight - previousWeight : value; metricSummary.updateMetricSummaryOnActiveSpan(metricType, name, val, unit, unsanitizedTags, bucketKey); this._bucketsTotalWeight += bucketItem.metric.weight; if (this._bucketsTotalWeight >= constants2.MAX_WEIGHT) { this.flush(); } } /** * Flushes the current metrics to the transport via the transport. */ flush() { this._forceFlush = true; this._flush(); } /** * Shuts down metrics aggregator and clears all metrics. */ close() { this._forceFlush = true; clearInterval(this._interval); this._flush(); } /** * Flushes the buckets according to the internal state of the aggregator. * If it is a force flush, which happens on shutdown, it will flush all buckets. * Otherwise, it will only flush buckets that are older than the flush interval, * and according to the flush shift. * * This function mutates `_forceFlush` and `_bucketsTotalWeight` properties. */ _flush() { if (this._forceFlush) { this._forceFlush = false; this._bucketsTotalWeight = 0; this._captureMetrics(this._buckets); this._buckets.clear(); return; } const cutoffSeconds = Math.floor(utils$1.timestampInSeconds()) - constants2.DEFAULT_FLUSH_INTERVAL / 1e3 - this._flushShift; const flushedBuckets = /* @__PURE__ */ new Map(); for (const [key, bucket] of this._buckets) { if (bucket.timestamp <= cutoffSeconds) { flushedBuckets.set(key, bucket); this._bucketsTotalWeight -= bucket.metric.weight; } } for (const [key] of flushedBuckets) { this._buckets.delete(key); } this._captureMetrics(flushedBuckets); } /** * Only captures a subset of the buckets passed to this function. * @param flushedBuckets */ _captureMetrics(flushedBuckets) { if (flushedBuckets.size > 0 && this._client.captureAggregateMetrics) { const buckets = Array.from(flushedBuckets).map(([, bucketItem]) => bucketItem); this._client.captureAggregateMetrics(buckets); } } }; exports2.MetricsAggregator = MetricsAggregator; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/server-runtime-client.js var require_server_runtime_client = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/server-runtime-client.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var baseclient = require_baseclient(); var checkin = require_checkin(); var debugBuild = require_debug_build2(); var exports$1 = require_exports(); var aggregator = require_aggregator(); var sessionflusher = require_sessionflusher(); var hubextensions = require_hubextensions(); var spanUtils = require_spanUtils(); var getRootSpan = require_getRootSpan(); require_spanstatus(); var dynamicSamplingContext = require_dynamicSamplingContext(); var ServerRuntimeClient = class extends baseclient.BaseClient { /** * Creates a new Edge SDK instance. * @param options Configuration options for this SDK. */ constructor(options) { hubextensions.addTracingExtensions(); super(options); if (options._experiments && options._experiments["metricsAggregator"]) { this.metricsAggregator = new aggregator.MetricsAggregator(this); } } /** * @inheritDoc */ eventFromException(exception, hint) { return utils.resolvedSyncPromise(utils.eventFromUnknownInput(exports$1.getClient(), this._options.stackParser, exception, hint)); } /** * @inheritDoc */ eventFromMessage(message2, level = "info", hint) { return utils.resolvedSyncPromise( utils.eventFromMessage(this._options.stackParser, message2, level, hint, this._options.attachStacktrace) ); } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types captureException(exception, hint, scope) { if (this._options.autoSessionTracking && this._sessionFlusher && scope) { const requestSession = scope.getRequestSession(); if (requestSession && requestSession.status === "ok") { requestSession.status = "errored"; } } return super.captureException(exception, hint, scope); } /** * @inheritDoc */ captureEvent(event, hint, scope) { if (this._options.autoSessionTracking && this._sessionFlusher && scope) { const eventType = event.type || "exception"; const isException = eventType === "exception" && event.exception && event.exception.values && event.exception.values.length > 0; if (isException) { const requestSession = scope.getRequestSession(); if (requestSession && requestSession.status === "ok") { requestSession.status = "errored"; } } } return super.captureEvent(event, hint, scope); } /** * * @inheritdoc */ close(timeout) { if (this._sessionFlusher) { this._sessionFlusher.close(); } return super.close(timeout); } /** Method that initialises an instance of SessionFlusher on Client */ initSessionFlusher() { const { release, environment } = this._options; if (!release) { debugBuild.DEBUG_BUILD && utils.logger.warn("Cannot initialise an instance of SessionFlusher if no release is provided!"); } else { this._sessionFlusher = new sessionflusher.SessionFlusher(this, { release, environment }); } } /** * Create a cron monitor check in and send it to Sentry. * * @param checkIn An object that describes a check in. * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want * to create a monitor automatically when sending a check in. */ captureCheckIn(checkIn, monitorConfig, scope) { const id = "checkInId" in checkIn && checkIn.checkInId ? checkIn.checkInId : utils.uuid4(); if (!this._isEnabled()) { debugBuild.DEBUG_BUILD && utils.logger.warn("SDK not enabled, will not capture checkin."); return id; } const options = this.getOptions(); const { release, environment, tunnel } = options; const serializedCheckIn = { check_in_id: id, monitor_slug: checkIn.monitorSlug, status: checkIn.status, release, environment }; if ("duration" in checkIn) { serializedCheckIn.duration = checkIn.duration; } if (monitorConfig) { serializedCheckIn.monitor_config = { schedule: monitorConfig.schedule, checkin_margin: monitorConfig.checkinMargin, max_runtime: monitorConfig.maxRuntime, timezone: monitorConfig.timezone }; } const [dynamicSamplingContext2, traceContext] = this._getTraceInfoFromScope(scope); if (traceContext) { serializedCheckIn.contexts = { trace: traceContext }; } const envelope = checkin.createCheckInEnvelope( serializedCheckIn, dynamicSamplingContext2, this.getSdkMetadata(), tunnel, this.getDsn() ); debugBuild.DEBUG_BUILD && utils.logger.info("Sending checkin:", checkIn.monitorSlug, checkIn.status); this._sendEnvelope(envelope); return id; } /** * Method responsible for capturing/ending a request session by calling `incrementSessionStatusCount` to increment * appropriate session aggregates bucket */ _captureRequestSession() { if (!this._sessionFlusher) { debugBuild.DEBUG_BUILD && utils.logger.warn("Discarded request mode session because autoSessionTracking option was disabled"); } else { this._sessionFlusher.incrementSessionStatusCount(); } } /** * @inheritDoc */ _prepareEvent(event, hint, scope, isolationScope) { if (this._options.platform) { event.platform = event.platform || this._options.platform; } if (this._options.runtime) { event.contexts = { ...event.contexts, runtime: (event.contexts || {}).runtime || this._options.runtime }; } if (this._options.serverName) { event.server_name = event.server_name || this._options.serverName; } return super._prepareEvent(event, hint, scope, isolationScope); } /** Extract trace information from scope */ _getTraceInfoFromScope(scope) { if (!scope) { return [void 0, void 0]; } const span = scope.getSpan(); if (span) { const samplingContext = getRootSpan.getRootSpan(span) ? dynamicSamplingContext.getDynamicSamplingContextFromSpan(span) : void 0; return [samplingContext, spanUtils.spanToTraceContext(span)]; } const { traceId, spanId, parentSpanId, dsc } = scope.getPropagationContext(); const traceContext = { trace_id: traceId, span_id: spanId, parent_span_id: parentSpanId }; if (dsc) { return [dsc, traceContext]; } return [dynamicSamplingContext.getDynamicSamplingContextFromClient(traceId, this, scope), traceContext]; } }; exports2.ServerRuntimeClient = ServerRuntimeClient; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/sdk.js var require_sdk = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/sdk.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var exports$1 = require_exports(); var hub = require_hub(); function initAndBind(clientClass, options) { if (options.debug === true) { if (debugBuild.DEBUG_BUILD) { utils.logger.enable(); } else { utils.consoleSandbox(() => { console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle."); }); } } const scope = exports$1.getCurrentScope(); scope.update(options.initialScope); const client2 = new clientClass(options); setCurrentClient(client2); initializeClient(client2); } function setCurrentClient(client2) { const hub$1 = hub.getCurrentHub(); const top = hub$1.getStackTop(); top.client = client2; top.scope.setClient(client2); } function initializeClient(client2) { if (client2.init) { client2.init(); } else if (client2.setupIntegrations) { client2.setupIntegrations(); } } exports2.initAndBind = initAndBind; exports2.setCurrentClient = setCurrentClient; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/base.js var require_base = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/base.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var DEFAULT_TRANSPORT_BUFFER_SIZE = 30; function createTransport(options, makeRequest, buffer = utils.makePromiseBuffer( options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE )) { let rateLimits = {}; const flush2 = (timeout) => buffer.drain(timeout); function send(envelope) { const filteredEnvelopeItems = []; utils.forEachEnvelopeItem(envelope, (item, type) => { const dataCategory = utils.envelopeItemTypeToDataCategory(type); if (utils.isRateLimited(rateLimits, dataCategory)) { const event = getEventForEnvelopeItem(item, type); options.recordDroppedEvent("ratelimit_backoff", dataCategory, event); } else { filteredEnvelopeItems.push(item); } }); if (filteredEnvelopeItems.length === 0) { return utils.resolvedSyncPromise(); } const filteredEnvelope = utils.createEnvelope(envelope[0], filteredEnvelopeItems); const recordEnvelopeLoss = (reason) => { utils.forEachEnvelopeItem(filteredEnvelope, (item, type) => { const event = getEventForEnvelopeItem(item, type); options.recordDroppedEvent(reason, utils.envelopeItemTypeToDataCategory(type), event); }); }; const requestTask = () => makeRequest({ body: utils.serializeEnvelope(filteredEnvelope, options.textEncoder) }).then( (response) => { if (response.statusCode !== void 0 && (response.statusCode < 200 || response.statusCode >= 300)) { debugBuild.DEBUG_BUILD && utils.logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`); } rateLimits = utils.updateRateLimits(rateLimits, response); return response; }, (error3) => { recordEnvelopeLoss("network_error"); throw error3; } ); return buffer.add(requestTask).then( (result) => result, (error3) => { if (error3 instanceof utils.SentryError) { debugBuild.DEBUG_BUILD && utils.logger.error("Skipped sending event because buffer is full."); recordEnvelopeLoss("queue_overflow"); return utils.resolvedSyncPromise(); } else { throw error3; } } ); } send.__sentry__baseTransport__ = true; return { send, flush: flush2 }; } function getEventForEnvelopeItem(item, type) { if (type !== "event" && type !== "transaction") { return void 0; } return Array.isArray(item) ? item[1] : void 0; } exports2.DEFAULT_TRANSPORT_BUFFER_SIZE = DEFAULT_TRANSPORT_BUFFER_SIZE; exports2.createTransport = createTransport; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/offline.js var require_offline = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/offline.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var MIN_DELAY = 100; var START_DELAY = 5e3; var MAX_DELAY = 36e5; function log2(msg, error3) { debugBuild.DEBUG_BUILD && utils.logger.info(`[Offline]: ${msg}`, error3); } function makeOfflineTransport(createTransport) { return (options) => { const transport = createTransport(options); const store2 = options.createStore ? options.createStore(options) : void 0; let retryDelay = START_DELAY; let flushTimer; function shouldQueue(env, error3, retryDelay2) { if (utils.envelopeContainsItemType(env, ["replay_event", "replay_recording", "client_report"])) { return false; } if (options.shouldStore) { return options.shouldStore(env, error3, retryDelay2); } return true; } function flushIn(delay) { if (!store2) { return; } if (flushTimer) { clearTimeout(flushTimer); } flushTimer = setTimeout(async () => { flushTimer = void 0; const found = await store2.pop(); if (found) { log2("Attempting to send previously queued event"); void send(found).catch((e2) => { log2("Failed to retry sending", e2); }); } }, delay); if (typeof flushTimer !== "number" && flushTimer.unref) { flushTimer.unref(); } } function flushWithBackOff() { if (flushTimer) { return; } flushIn(retryDelay); retryDelay = Math.min(retryDelay * 2, MAX_DELAY); } async function send(envelope) { try { const result = await transport.send(envelope); let delay = MIN_DELAY; if (result) { if (result.headers && result.headers["retry-after"]) { delay = utils.parseRetryAfterHeader(result.headers["retry-after"]); } else if ((result.statusCode || 0) >= 400) { return result; } } flushIn(delay); retryDelay = START_DELAY; return result; } catch (e2) { if (store2 && await shouldQueue(envelope, e2, retryDelay)) { await store2.insert(envelope); flushWithBackOff(); log2("Error sending. Event queued", e2); return {}; } else { throw e2; } } } if (options.flushAtStartup) { flushWithBackOff(); } return { send, flush: (t) => transport.flush(t) }; }; } exports2.MIN_DELAY = MIN_DELAY; exports2.START_DELAY = START_DELAY; exports2.makeOfflineTransport = makeOfflineTransport; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/multiplexed.js var require_multiplexed = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/multiplexed.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var api2 = require_api(); function eventFromEnvelope(env, types) { let event; utils.forEachEnvelopeItem(env, (item, type) => { if (types.includes(type)) { event = Array.isArray(item) ? item[1] : void 0; } return !!event; }); return event; } function makeOverrideReleaseTransport(createTransport, release) { return (options) => { const transport = createTransport(options); return { ...transport, send: async (envelope) => { const event = eventFromEnvelope(envelope, ["event", "transaction", "profile", "replay_event"]); if (event) { event.release = release; } return transport.send(envelope); } }; }; } function overrideDsn(envelope, dsn) { return utils.createEnvelope( dsn ? { ...envelope[0], dsn } : envelope[0], envelope[1] ); } function makeMultiplexedTransport(createTransport, matcher) { return (options) => { const fallbackTransport = createTransport(options); const otherTransports = /* @__PURE__ */ new Map(); function getTransport(dsn, release) { const key = release ? `${dsn}:${release}` : dsn; let transport = otherTransports.get(key); if (!transport) { const validatedDsn = utils.dsnFromString(dsn); if (!validatedDsn) { return void 0; } const url3 = api2.getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel); transport = release ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url: url3 }) : createTransport({ ...options, url: url3 }); otherTransports.set(key, transport); } return [dsn, transport]; } async function send(envelope) { function getEvent(types) { const eventTypes = types && types.length ? types : ["event"]; return eventFromEnvelope(envelope, eventTypes); } const transports = matcher({ envelope, getEvent }).map((result) => { if (typeof result === "string") { return getTransport(result, void 0); } else { return getTransport(result.dsn, result.release); } }).filter((t) => !!t); if (transports.length === 0) { transports.push(["", fallbackTransport]); } const results = await Promise.all( transports.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))) ); return results[0]; } async function flush2(timeout) { const promises = [await fallbackTransport.flush(timeout)]; for (const [, transport] of otherTransports) { promises.push(await transport.flush(timeout)); } return promises.every((r) => r); } return { send, flush: flush2 }; }; } exports2.eventFromEnvelope = eventFromEnvelope; exports2.makeMultiplexedTransport = makeMultiplexedTransport; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/span.js var require_span2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/span.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); function createSpanEnvelope(spans, dsn) { const headers = { sent_at: (/* @__PURE__ */ new Date()).toISOString() }; if (dsn) { headers.dsn = utils.dsnToString(dsn); } const items = spans.map(createSpanItem); return utils.createEnvelope(headers, items); } function createSpanItem(span) { const spanHeaders = { type: "span" }; return [spanHeaders, span]; } exports2.createSpanEnvelope = createSpanEnvelope; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/isSentryRequestUrl.js var require_isSentryRequestUrl = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/isSentryRequestUrl.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function isSentryRequestUrl(url3, hubOrClient) { const client2 = hubOrClient && isHub(hubOrClient) ? ( // eslint-disable-next-line deprecation/deprecation hubOrClient.getClient() ) : hubOrClient; const dsn = client2 && client2.getDsn(); const tunnel = client2 && client2.getOptions().tunnel; return checkDsn(url3, dsn) || checkTunnel(url3, tunnel); } function checkTunnel(url3, tunnel) { if (!tunnel) { return false; } return removeTrailingSlash(url3) === removeTrailingSlash(tunnel); } function checkDsn(url3, dsn) { return dsn ? url3.includes(dsn.host) : false; } function removeTrailingSlash(str) { return str[str.length - 1] === "/" ? str.slice(0, -1) : str; } function isHub(hubOrClient) { return hubOrClient.getClient !== void 0; } exports2.isSentryRequestUrl = isSentryRequestUrl; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/parameterize.js var require_parameterize = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/parameterize.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function parameterize(strings, ...values) { const formatted = new String(String.raw(strings, ...values)); formatted.__sentry_template_string__ = strings.join("\0").replace(/%/g, "%%").replace(/\0/g, "%s"); formatted.__sentry_template_values__ = values; return formatted; } exports2.parameterize = parameterize; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/sdkMetadata.js var require_sdkMetadata = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/sdkMetadata.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var version2 = require_version(); function applySdkMetadata(options, name, names = [name], source = "npm") { const metadata = options._metadata || {}; if (!metadata.sdk) { metadata.sdk = { name: `sentry.javascript.${name}`, packages: names.map((name2) => ({ name: `${source}:@sentry/${name2}`, version: version2.SDK_VERSION })), version: version2.SDK_VERSION }; } options._metadata = metadata; } exports2.applySdkMetadata = applySdkMetadata; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metadata.js var require_metadata = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metadata.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var filenameMetadataMap = /* @__PURE__ */ new Map(); var parsedStacks = /* @__PURE__ */ new Set(); function ensureMetadataStacksAreParsed(parser) { if (!utils.GLOBAL_OBJ._sentryModuleMetadata) { return; } for (const stack2 of Object.keys(utils.GLOBAL_OBJ._sentryModuleMetadata)) { const metadata = utils.GLOBAL_OBJ._sentryModuleMetadata[stack2]; if (parsedStacks.has(stack2)) { continue; } parsedStacks.add(stack2); const frames = parser(stack2); for (const frame of frames.reverse()) { if (frame.filename) { filenameMetadataMap.set(frame.filename, metadata); break; } } } } function getMetadataForUrl(parser, filename) { ensureMetadataStacksAreParsed(parser); return filenameMetadataMap.get(filename); } function addMetadataToStackFrames(parser, event) { try { event.exception.values.forEach((exception) => { if (!exception.stacktrace) { return; } for (const frame of exception.stacktrace.frames || []) { if (!frame.filename) { continue; } const metadata = getMetadataForUrl(parser, frame.filename); if (metadata) { frame.module_metadata = metadata; } } }); } catch (_) { } } function stripMetadataFromStackFrames(event) { try { event.exception.values.forEach((exception) => { if (!exception.stacktrace) { return; } for (const frame of exception.stacktrace.frames || []) { delete frame.module_metadata; } }); } catch (_) { } } exports2.addMetadataToStackFrames = addMetadataToStackFrames; exports2.getMetadataForUrl = getMetadataForUrl; exports2.stripMetadataFromStackFrames = stripMetadataFromStackFrames; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/metadata.js var require_metadata2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/metadata.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var integration = require_integration(); var metadata = require_metadata(); var INTEGRATION_NAME = "ModuleMetadata"; var _moduleMetadataIntegration = () => { return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { if (typeof client2.on !== "function") { return; } client2.on("beforeEnvelope", (envelope) => { utils.forEachEnvelopeItem(envelope, (item, type) => { if (type === "event") { const event = Array.isArray(item) ? item[1] : void 0; if (event) { metadata.stripMetadataFromStackFrames(event); item[1] = event; } } }); }); }, processEvent(event, _hint, client2) { const stackParser = client2.getOptions().stackParser; metadata.addMetadataToStackFrames(stackParser, event); return event; } }; }; var moduleMetadataIntegration = integration.defineIntegration(_moduleMetadataIntegration); var ModuleMetadata = integration.convertIntegrationFnToClass( INTEGRATION_NAME, moduleMetadataIntegration ); exports2.ModuleMetadata = ModuleMetadata; exports2.moduleMetadataIntegration = moduleMetadataIntegration; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/requestdata.js var require_requestdata2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/requestdata.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var integration = require_integration(); var spanUtils = require_spanUtils(); var DEFAULT_OPTIONS = { include: { cookies: true, data: true, headers: true, ip: false, query_string: true, url: true, user: { id: true, username: true, email: true } }, transactionNamingScheme: "methodPath" }; var INTEGRATION_NAME = "RequestData"; var _requestDataIntegration = (options = {}) => { const _addRequestData = utils.addRequestDataToEvent; const _options = { ...DEFAULT_OPTIONS, ...options, include: { // @ts-expect-error It's mad because `method` isn't a known `include` key. (It's only here and not set by default in // `addRequestDataToEvent` for legacy reasons. TODO (v8): Change that.) method: true, ...DEFAULT_OPTIONS.include, ...options.include, user: options.include && typeof options.include.user === "boolean" ? options.include.user : { ...DEFAULT_OPTIONS.include.user, // Unclear why TS still thinks `options.include.user` could be a boolean at this point ...(options.include || {}).user } } }; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event, _hint, client2) { const { transactionNamingScheme } = _options; const { sdkProcessingMetadata = {} } = event; const req = sdkProcessingMetadata.request; if (!req) { return event; } const addRequestDataOptions = sdkProcessingMetadata.requestDataOptionsFromExpressHandler || sdkProcessingMetadata.requestDataOptionsFromGCPWrapper || convertReqDataIntegrationOptsToAddReqDataOpts(_options); const processedEvent = _addRequestData(event, req, addRequestDataOptions); if (event.type === "transaction" || transactionNamingScheme === "handler") { return processedEvent; } const reqWithTransaction = req; const transaction = reqWithTransaction._sentryTransaction; if (transaction) { const name = spanUtils.spanToJSON(transaction).description || ""; const shouldIncludeMethodInTransactionName = getSDKName(client2) === "sentry.javascript.nextjs" ? name.startsWith("/api") : transactionNamingScheme !== "path"; const [transactionValue] = utils.extractPathForTransaction(req, { path: true, method: shouldIncludeMethodInTransactionName, customRoute: name }); processedEvent.transaction = transactionValue; } return processedEvent; } }; }; var requestDataIntegration = integration.defineIntegration(_requestDataIntegration); var RequestData = integration.convertIntegrationFnToClass(INTEGRATION_NAME, requestDataIntegration); function convertReqDataIntegrationOptsToAddReqDataOpts(integrationOptions) { const { transactionNamingScheme, include: { ip, user, ...requestOptions } } = integrationOptions; const requestIncludeKeys = []; for (const [key, value] of Object.entries(requestOptions)) { if (value) { requestIncludeKeys.push(key); } } let addReqDataUserOpt; if (user === void 0) { addReqDataUserOpt = true; } else if (typeof user === "boolean") { addReqDataUserOpt = user; } else { const userIncludeKeys = []; for (const [key, value] of Object.entries(user)) { if (value) { userIncludeKeys.push(key); } } addReqDataUserOpt = userIncludeKeys; } return { include: { ip, user: addReqDataUserOpt, request: requestIncludeKeys.length !== 0 ? requestIncludeKeys : void 0, transaction: transactionNamingScheme } }; } function getSDKName(client2) { try { return client2.getOptions()._metadata.sdk.name; } catch (err) { return void 0; } } exports2.RequestData = RequestData; exports2.requestDataIntegration = requestDataIntegration; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/inboundfilters.js var require_inboundfilters = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/inboundfilters.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var integration = require_integration(); var DEFAULT_IGNORE_ERRORS = [ /^Script error\.?$/, /^Javascript error: Script error\.? on line 0$/, /^ResizeObserver loop completed with undelivered notifications.$/, /^Cannot redefine property: googletag$/ ]; var DEFAULT_IGNORE_TRANSACTIONS = [ /^.*\/healthcheck$/, /^.*\/healthy$/, /^.*\/live$/, /^.*\/ready$/, /^.*\/heartbeat$/, /^.*\/health$/, /^.*\/healthz$/ ]; var INTEGRATION_NAME = "InboundFilters"; var _inboundFiltersIntegration = (options = {}) => { return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event, _hint, client2) { const clientOptions = client2.getOptions(); const mergedOptions = _mergeOptions(options, clientOptions); return _shouldDropEvent(event, mergedOptions) ? null : event; } }; }; var inboundFiltersIntegration = integration.defineIntegration(_inboundFiltersIntegration); var InboundFilters = integration.convertIntegrationFnToClass( INTEGRATION_NAME, inboundFiltersIntegration ); function _mergeOptions(internalOptions = {}, clientOptions = {}) { return { allowUrls: [...internalOptions.allowUrls || [], ...clientOptions.allowUrls || []], denyUrls: [...internalOptions.denyUrls || [], ...clientOptions.denyUrls || []], ignoreErrors: [ ...internalOptions.ignoreErrors || [], ...clientOptions.ignoreErrors || [], ...internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS ], ignoreTransactions: [ ...internalOptions.ignoreTransactions || [], ...clientOptions.ignoreTransactions || [], ...internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS ], ignoreInternal: internalOptions.ignoreInternal !== void 0 ? internalOptions.ignoreInternal : true }; } function _shouldDropEvent(event, options) { if (options.ignoreInternal && _isSentryError(event)) { debugBuild.DEBUG_BUILD && utils.logger.warn(`Event dropped due to being internal Sentry Error. Event: ${utils.getEventDescription(event)}`); return true; } if (_isIgnoredError(event, options.ignoreErrors)) { debugBuild.DEBUG_BUILD && utils.logger.warn( `Event dropped due to being matched by \`ignoreErrors\` option. Event: ${utils.getEventDescription(event)}` ); return true; } if (_isIgnoredTransaction(event, options.ignoreTransactions)) { debugBuild.DEBUG_BUILD && utils.logger.warn( `Event dropped due to being matched by \`ignoreTransactions\` option. Event: ${utils.getEventDescription(event)}` ); return true; } if (_isDeniedUrl(event, options.denyUrls)) { debugBuild.DEBUG_BUILD && utils.logger.warn( `Event dropped due to being matched by \`denyUrls\` option. Event: ${utils.getEventDescription( event )}. Url: ${_getEventFilterUrl(event)}` ); return true; } if (!_isAllowedUrl(event, options.allowUrls)) { debugBuild.DEBUG_BUILD && utils.logger.warn( `Event dropped due to not being matched by \`allowUrls\` option. Event: ${utils.getEventDescription( event )}. Url: ${_getEventFilterUrl(event)}` ); return true; } return false; } function _isIgnoredError(event, ignoreErrors) { if (event.type || !ignoreErrors || !ignoreErrors.length) { return false; } return _getPossibleEventMessages(event).some((message2) => utils.stringMatchesSomePattern(message2, ignoreErrors)); } function _isIgnoredTransaction(event, ignoreTransactions) { if (event.type !== "transaction" || !ignoreTransactions || !ignoreTransactions.length) { return false; } const name = event.transaction; return name ? utils.stringMatchesSomePattern(name, ignoreTransactions) : false; } function _isDeniedUrl(event, denyUrls) { if (!denyUrls || !denyUrls.length) { return false; } const url3 = _getEventFilterUrl(event); return !url3 ? false : utils.stringMatchesSomePattern(url3, denyUrls); } function _isAllowedUrl(event, allowUrls) { if (!allowUrls || !allowUrls.length) { return true; } const url3 = _getEventFilterUrl(event); return !url3 ? true : utils.stringMatchesSomePattern(url3, allowUrls); } function _getPossibleEventMessages(event) { const possibleMessages = []; if (event.message) { possibleMessages.push(event.message); } let lastException; try { lastException = event.exception.values[event.exception.values.length - 1]; } catch (e2) { } if (lastException) { if (lastException.value) { possibleMessages.push(lastException.value); if (lastException.type) { possibleMessages.push(`${lastException.type}: ${lastException.value}`); } } } if (debugBuild.DEBUG_BUILD && possibleMessages.length === 0) { utils.logger.error(`Could not extract message for event ${utils.getEventDescription(event)}`); } return possibleMessages; } function _isSentryError(event) { try { return event.exception.values[0].type === "SentryError"; } catch (e2) { } return false; } function _getLastValidUrl(frames = []) { for (let i = frames.length - 1; i >= 0; i--) { const frame = frames[i]; if (frame && frame.filename !== "" && frame.filename !== "[native code]") { return frame.filename || null; } } return null; } function _getEventFilterUrl(event) { try { let frames; try { frames = event.exception.values[0].stacktrace.frames; } catch (e2) { } return frames ? _getLastValidUrl(frames) : null; } catch (oO) { debugBuild.DEBUG_BUILD && utils.logger.error(`Cannot extract url for event ${utils.getEventDescription(event)}`); return null; } } exports2.InboundFilters = InboundFilters; exports2.inboundFiltersIntegration = inboundFiltersIntegration; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/functiontostring.js var require_functiontostring = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/functiontostring.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var exports$1 = require_exports(); var integration = require_integration(); var originalFunctionToString; var INTEGRATION_NAME = "FunctionToString"; var SETUP_CLIENTS = /* @__PURE__ */ new WeakMap(); var _functionToStringIntegration = () => { return { name: INTEGRATION_NAME, setupOnce() { originalFunctionToString = Function.prototype.toString; try { Function.prototype.toString = function(...args2) { const originalFunction = utils.getOriginalFunction(this); const context = SETUP_CLIENTS.has(exports$1.getClient()) && originalFunction !== void 0 ? originalFunction : this; return originalFunctionToString.apply(context, args2); }; } catch (e2) { } }, setup(client2) { SETUP_CLIENTS.set(client2, true); } }; }; var functionToStringIntegration = integration.defineIntegration(_functionToStringIntegration); var FunctionToString = integration.convertIntegrationFnToClass( INTEGRATION_NAME, functionToStringIntegration ); exports2.FunctionToString = FunctionToString; exports2.functionToStringIntegration = functionToStringIntegration; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/linkederrors.js var require_linkederrors = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/linkederrors.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var integration = require_integration(); var DEFAULT_KEY = "cause"; var DEFAULT_LIMIT = 5; var INTEGRATION_NAME = "LinkedErrors"; var _linkedErrorsIntegration = (options = {}) => { const limit = options.limit || DEFAULT_LIMIT; const key = options.key || DEFAULT_KEY; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function preprocessEvent(event, hint, client2) { const options2 = client2.getOptions(); utils.applyAggregateErrorsToEvent( utils.exceptionFromError, options2.stackParser, options2.maxValueLength, key, limit, event, hint ); } }; }; var linkedErrorsIntegration = integration.defineIntegration(_linkedErrorsIntegration); var LinkedErrors = integration.convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration); exports2.LinkedErrors = LinkedErrors; exports2.linkedErrorsIntegration = linkedErrorsIntegration; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/index.js var require_integrations = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var functiontostring = require_functiontostring(); var inboundfilters = require_inboundfilters(); var linkederrors = require_linkederrors(); exports2.FunctionToString = functiontostring.FunctionToString; exports2.InboundFilters = inboundfilters.InboundFilters; exports2.LinkedErrors = linkederrors.LinkedErrors; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/browser-aggregator.js var require_browser_aggregator = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/browser-aggregator.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils$1 = require_cjs(); var constants2 = require_constants2(); var instance = require_instance(); var metricSummary = require_metric_summary(); var utils = require_utils4(); var BrowserMetricsAggregator = class { // TODO(@anonrig): Use FinalizationRegistry to have a proper way of flushing the buckets // when the aggregator is garbage collected. // Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry constructor(_client) { this._client = _client; this._buckets = /* @__PURE__ */ new Map(); this._interval = setInterval(() => this.flush(), constants2.DEFAULT_BROWSER_FLUSH_INTERVAL); } /** * @inheritDoc */ add(metricType, unsanitizedName, value, unsanitizedUnit = "none", unsanitizedTags = {}, maybeFloatTimestamp = utils$1.timestampInSeconds()) { const timestamp = Math.floor(maybeFloatTimestamp); const name = utils.sanitizeMetricKey(unsanitizedName); const tags = utils.sanitizeTags(unsanitizedTags); const unit = utils.sanitizeUnit(unsanitizedUnit); const bucketKey = utils.getBucketKey(metricType, name, unit, tags); let bucketItem = this._buckets.get(bucketKey); const previousWeight = bucketItem && metricType === constants2.SET_METRIC_TYPE ? bucketItem.metric.weight : 0; if (bucketItem) { bucketItem.metric.add(value); if (bucketItem.timestamp < timestamp) { bucketItem.timestamp = timestamp; } } else { bucketItem = { // @ts-expect-error we don't need to narrow down the type of value here, saves bundle size. metric: new instance.METRIC_MAP[metricType](value), timestamp, metricType, name, unit, tags }; this._buckets.set(bucketKey, bucketItem); } const val = typeof value === "string" ? bucketItem.metric.weight - previousWeight : value; metricSummary.updateMetricSummaryOnActiveSpan(metricType, name, val, unit, unsanitizedTags, bucketKey); } /** * @inheritDoc */ flush() { if (this._buckets.size === 0) { return; } if (this._client.captureAggregateMetrics) { const metricBuckets = Array.from(this._buckets).map(([, bucketItem]) => bucketItem); this._client.captureAggregateMetrics(metricBuckets); } this._buckets.clear(); } /** * @inheritDoc */ close() { clearInterval(this._interval); this.flush(); } }; exports2.BrowserMetricsAggregator = BrowserMetricsAggregator; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/integration.js var require_integration2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/integration.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var integration = require_integration(); var browserAggregator = require_browser_aggregator(); var INTEGRATION_NAME = "MetricsAggregator"; var _metricsAggregatorIntegration = () => { return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { client2.metricsAggregator = new browserAggregator.BrowserMetricsAggregator(client2); } }; }; var metricsAggregatorIntegration = integration.defineIntegration(_metricsAggregatorIntegration); var MetricsAggregator = integration.convertIntegrationFnToClass( INTEGRATION_NAME, metricsAggregatorIntegration ); exports2.MetricsAggregator = MetricsAggregator; exports2.metricsAggregatorIntegration = metricsAggregatorIntegration; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/exports.js var require_exports2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/exports.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build2(); var exports$1 = require_exports(); var spanUtils = require_spanUtils(); var constants2 = require_constants2(); var integration = require_integration2(); function addToMetricsAggregator(metricType, name, value, data = {}) { const client2 = exports$1.getClient(); const scope = exports$1.getCurrentScope(); if (client2) { if (!client2.metricsAggregator) { debugBuild.DEBUG_BUILD && utils.logger.warn("No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs"); return; } const { unit, tags, timestamp } = data; const { release, environment } = client2.getOptions(); const transaction = scope.getTransaction(); const metricTags = {}; if (release) { metricTags.release = release; } if (environment) { metricTags.environment = environment; } if (transaction) { metricTags.transaction = spanUtils.spanToJSON(transaction).description || ""; } debugBuild.DEBUG_BUILD && utils.logger.log(`Adding value of ${value} to ${metricType} metric ${name}`); client2.metricsAggregator.add(metricType, name, value, unit, { ...metricTags, ...tags }, timestamp); } } function increment(name, value = 1, data) { addToMetricsAggregator(constants2.COUNTER_METRIC_TYPE, name, value, data); } function distribution(name, value, data) { addToMetricsAggregator(constants2.DISTRIBUTION_METRIC_TYPE, name, value, data); } function set2(name, value, data) { addToMetricsAggregator(constants2.SET_METRIC_TYPE, name, value, data); } function gauge(name, value, data) { addToMetricsAggregator(constants2.GAUGE_METRIC_TYPE, name, value, data); } var metrics = { increment, distribution, set: set2, gauge, /** @deprecated Use `metrics.metricsAggregratorIntegration()` instead. */ // eslint-disable-next-line deprecation/deprecation MetricsAggregator: integration.MetricsAggregator, metricsAggregatorIntegration: integration.metricsAggregatorIntegration }; exports2.distribution = distribution; exports2.gauge = gauge; exports2.increment = increment; exports2.metrics = metrics; exports2.set = set2; } }); // ../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/index.js var require_cjs2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var hubextensions = require_hubextensions(); var idletransaction = require_idletransaction(); var span$1 = require_span(); var transaction = require_transaction(); var utils = require_utils3(); var spanstatus = require_spanstatus(); var trace = require_trace(); var dynamicSamplingContext = require_dynamicSamplingContext(); var measurement = require_measurement(); var sampling = require_sampling(); var semanticAttributes = require_semanticAttributes(); var envelope = require_envelope2(); var exports$1 = require_exports(); var hub = require_hub(); var session = require_session(); var sessionflusher = require_sessionflusher(); var scope = require_scope(); var eventProcessors = require_eventProcessors(); var api2 = require_api(); var baseclient = require_baseclient(); var serverRuntimeClient = require_server_runtime_client(); var sdk = require_sdk(); var base = require_base(); var offline = require_offline(); var multiplexed = require_multiplexed(); var version2 = require_version(); var integration = require_integration(); var applyScopeDataToEvent = require_applyScopeDataToEvent(); var prepareEvent = require_prepareEvent(); var checkin = require_checkin(); var span = require_span2(); var hasTracingEnabled = require_hasTracingEnabled(); var isSentryRequestUrl = require_isSentryRequestUrl(); var handleCallbackErrors = require_handleCallbackErrors(); var parameterize = require_parameterize(); var spanUtils = require_spanUtils(); var getRootSpan = require_getRootSpan(); var sdkMetadata = require_sdkMetadata(); var constants2 = require_constants(); var metadata = require_metadata2(); var requestdata = require_requestdata2(); var inboundfilters = require_inboundfilters(); var functiontostring = require_functiontostring(); var linkederrors = require_linkederrors(); var index = require_integrations(); var exports$2 = require_exports2(); var Integrations = index; exports2.addTracingExtensions = hubextensions.addTracingExtensions; exports2.startIdleTransaction = hubextensions.startIdleTransaction; exports2.IdleTransaction = idletransaction.IdleTransaction; exports2.TRACING_DEFAULTS = idletransaction.TRACING_DEFAULTS; exports2.Span = span$1.Span; exports2.Transaction = transaction.Transaction; exports2.extractTraceparentData = utils.extractTraceparentData; exports2.getActiveTransaction = utils.getActiveTransaction; Object.defineProperty(exports2, "SpanStatus", { enumerable: true, get: () => spanstatus.SpanStatus }); exports2.getSpanStatusFromHttpCode = spanstatus.getSpanStatusFromHttpCode; exports2.setHttpStatus = spanstatus.setHttpStatus; exports2.spanStatusfromHttpCode = spanstatus.spanStatusfromHttpCode; exports2.continueTrace = trace.continueTrace; exports2.getActiveSpan = trace.getActiveSpan; exports2.startActiveSpan = trace.startActiveSpan; exports2.startInactiveSpan = trace.startInactiveSpan; exports2.startSpan = trace.startSpan; exports2.startSpanManual = trace.startSpanManual; exports2.trace = trace.trace; exports2.getDynamicSamplingContextFromClient = dynamicSamplingContext.getDynamicSamplingContextFromClient; exports2.getDynamicSamplingContextFromSpan = dynamicSamplingContext.getDynamicSamplingContextFromSpan; exports2.setMeasurement = measurement.setMeasurement; exports2.isValidSampleRate = sampling.isValidSampleRate; exports2.SEMANTIC_ATTRIBUTE_PROFILE_ID = semanticAttributes.SEMANTIC_ATTRIBUTE_PROFILE_ID; exports2.SEMANTIC_ATTRIBUTE_SENTRY_OP = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP; exports2.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN; exports2.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE; exports2.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE; exports2.createEventEnvelope = envelope.createEventEnvelope; exports2.createSessionEnvelope = envelope.createSessionEnvelope; exports2.addBreadcrumb = exports$1.addBreadcrumb; exports2.captureCheckIn = exports$1.captureCheckIn; exports2.captureEvent = exports$1.captureEvent; exports2.captureException = exports$1.captureException; exports2.captureMessage = exports$1.captureMessage; exports2.captureSession = exports$1.captureSession; exports2.close = exports$1.close; exports2.configureScope = exports$1.configureScope; exports2.endSession = exports$1.endSession; exports2.flush = exports$1.flush; exports2.getClient = exports$1.getClient; exports2.getCurrentScope = exports$1.getCurrentScope; exports2.isInitialized = exports$1.isInitialized; exports2.lastEventId = exports$1.lastEventId; exports2.setContext = exports$1.setContext; exports2.setExtra = exports$1.setExtra; exports2.setExtras = exports$1.setExtras; exports2.setTag = exports$1.setTag; exports2.setTags = exports$1.setTags; exports2.setUser = exports$1.setUser; exports2.startSession = exports$1.startSession; exports2.startTransaction = exports$1.startTransaction; exports2.withActiveSpan = exports$1.withActiveSpan; exports2.withIsolationScope = exports$1.withIsolationScope; exports2.withMonitor = exports$1.withMonitor; exports2.withScope = exports$1.withScope; exports2.Hub = hub.Hub; exports2.ensureHubOnCarrier = hub.ensureHubOnCarrier; exports2.getCurrentHub = hub.getCurrentHub; exports2.getHubFromCarrier = hub.getHubFromCarrier; exports2.getIsolationScope = hub.getIsolationScope; exports2.getMainCarrier = hub.getMainCarrier; exports2.makeMain = hub.makeMain; exports2.runWithAsyncContext = hub.runWithAsyncContext; exports2.setAsyncContextStrategy = hub.setAsyncContextStrategy; exports2.setHubOnCarrier = hub.setHubOnCarrier; exports2.closeSession = session.closeSession; exports2.makeSession = session.makeSession; exports2.updateSession = session.updateSession; exports2.SessionFlusher = sessionflusher.SessionFlusher; exports2.Scope = scope.Scope; exports2.getGlobalScope = scope.getGlobalScope; exports2.setGlobalScope = scope.setGlobalScope; exports2.addGlobalEventProcessor = eventProcessors.addGlobalEventProcessor; exports2.notifyEventProcessors = eventProcessors.notifyEventProcessors; exports2.getEnvelopeEndpointWithUrlEncodedAuth = api2.getEnvelopeEndpointWithUrlEncodedAuth; exports2.getReportDialogEndpoint = api2.getReportDialogEndpoint; exports2.BaseClient = baseclient.BaseClient; exports2.addEventProcessor = baseclient.addEventProcessor; exports2.ServerRuntimeClient = serverRuntimeClient.ServerRuntimeClient; exports2.initAndBind = sdk.initAndBind; exports2.setCurrentClient = sdk.setCurrentClient; exports2.createTransport = base.createTransport; exports2.makeOfflineTransport = offline.makeOfflineTransport; exports2.makeMultiplexedTransport = multiplexed.makeMultiplexedTransport; exports2.SDK_VERSION = version2.SDK_VERSION; exports2.addIntegration = integration.addIntegration; exports2.convertIntegrationFnToClass = integration.convertIntegrationFnToClass; exports2.defineIntegration = integration.defineIntegration; exports2.getIntegrationsToSetup = integration.getIntegrationsToSetup; exports2.applyScopeDataToEvent = applyScopeDataToEvent.applyScopeDataToEvent; exports2.mergeScopeData = applyScopeDataToEvent.mergeScopeData; exports2.prepareEvent = prepareEvent.prepareEvent; exports2.createCheckInEnvelope = checkin.createCheckInEnvelope; exports2.createSpanEnvelope = span.createSpanEnvelope; exports2.hasTracingEnabled = hasTracingEnabled.hasTracingEnabled; exports2.isSentryRequestUrl = isSentryRequestUrl.isSentryRequestUrl; exports2.handleCallbackErrors = handleCallbackErrors.handleCallbackErrors; exports2.parameterize = parameterize.parameterize; exports2.spanIsSampled = spanUtils.spanIsSampled; exports2.spanToJSON = spanUtils.spanToJSON; exports2.spanToTraceContext = spanUtils.spanToTraceContext; exports2.spanToTraceHeader = spanUtils.spanToTraceHeader; exports2.getRootSpan = getRootSpan.getRootSpan; exports2.applySdkMetadata = sdkMetadata.applySdkMetadata; exports2.DEFAULT_ENVIRONMENT = constants2.DEFAULT_ENVIRONMENT; exports2.ModuleMetadata = metadata.ModuleMetadata; exports2.moduleMetadataIntegration = metadata.moduleMetadataIntegration; exports2.RequestData = requestdata.RequestData; exports2.requestDataIntegration = requestdata.requestDataIntegration; exports2.InboundFilters = inboundfilters.InboundFilters; exports2.inboundFiltersIntegration = inboundfilters.inboundFiltersIntegration; exports2.FunctionToString = functiontostring.FunctionToString; exports2.functionToStringIntegration = functiontostring.functionToStringIntegration; exports2.LinkedErrors = linkederrors.LinkedErrors; exports2.linkedErrorsIntegration = linkederrors.linkedErrorsIntegration; exports2.metrics = exports$2.metrics; exports2.Integrations = Integrations; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/common/debug-build.js var require_debug_build3 = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/common/debug-build.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var DEBUG_BUILD = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__; exports2.DEBUG_BUILD = DEBUG_BUILD; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/utils/node-utils.js var require_node_utils = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/utils/node-utils.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); function shouldDisableAutoInstrumentation(getCurrentHub) { const clientOptions = _optionalChain([getCurrentHub, "call", (_) => _(), "access", (_2) => _2.getClient, "call", (_3) => _3(), "optionalAccess", (_4) => _4.getOptions, "call", (_5) => _5()]); const instrumenter = _optionalChain([clientOptions, "optionalAccess", (_6) => _6.instrumenter]) || "sentry"; return instrumenter !== "sentry"; } exports2.shouldDisableAutoInstrumentation = shouldDisableAutoInstrumentation; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/express.js var require_express = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/express.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build3(); var nodeUtils = require_node_utils(); var Express = class _Express { /** * @inheritDoc */ static __initStatic() { this.id = "Express"; } /** * @inheritDoc */ /** * Express App instance */ /** * @inheritDoc */ constructor(options = {}) { this.name = _Express.id; this._router = options.router || options.app; this._methods = (Array.isArray(options.methods) ? options.methods : []).concat("use"); } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation setupOnce(_, getCurrentHub) { if (!this._router) { debugBuild.DEBUG_BUILD && utils.logger.error("ExpressIntegration is missing an Express instance"); return; } if (nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)) { debugBuild.DEBUG_BUILD && utils.logger.log("Express Integration is skipped because of instrumenter configuration."); return; } instrumentMiddlewares(this._router, this._methods); instrumentRouter(this._router); } }; Express.__initStatic(); function wrap(fn2, method) { const arity = fn2.length; switch (arity) { case 2: { return function(req, res) { const transaction = res.__sentry_transaction; if (transaction) { const span = transaction.startChild({ description: fn2.name, op: `middleware.express.${method}`, origin: "auto.middleware.express" }); res.once("finish", () => { span.end(); }); } return fn2.call(this, req, res); }; } case 3: { return function(req, res, next) { const transaction = res.__sentry_transaction; const span = _optionalChain([transaction, "optionalAccess", (_2) => _2.startChild, "call", (_3) => _3({ description: fn2.name, op: `middleware.express.${method}`, origin: "auto.middleware.express" })]); fn2.call(this, req, res, function(...args2) { _optionalChain([span, "optionalAccess", (_4) => _4.end, "call", (_5) => _5()]); next.call(this, ...args2); }); }; } case 4: { return function(err, req, res, next) { const transaction = res.__sentry_transaction; const span = _optionalChain([transaction, "optionalAccess", (_6) => _6.startChild, "call", (_7) => _7({ description: fn2.name, op: `middleware.express.${method}`, origin: "auto.middleware.express" })]); fn2.call(this, err, req, res, function(...args2) { _optionalChain([span, "optionalAccess", (_8) => _8.end, "call", (_9) => _9()]); next.call(this, ...args2); }); }; } default: { throw new Error(`Express middleware takes 2-4 arguments. Got: ${arity}`); } } } function wrapMiddlewareArgs(args2, method) { return args2.map((arg2) => { if (typeof arg2 === "function") { return wrap(arg2, method); } if (Array.isArray(arg2)) { return arg2.map((a) => { if (typeof a === "function") { return wrap(a, method); } return a; }); } return arg2; }); } function patchMiddleware(router, method) { const originalCallback = router[method]; router[method] = function(...args2) { return originalCallback.call(this, ...wrapMiddlewareArgs(args2, method)); }; return router; } function instrumentMiddlewares(router, methods = []) { methods.forEach((method) => patchMiddleware(router, method)); } function instrumentRouter(appOrRouter) { const isApp = "settings" in appOrRouter; if (isApp && appOrRouter._router === void 0 && appOrRouter.lazyrouter) { appOrRouter.lazyrouter(); } const router = isApp ? appOrRouter._router : appOrRouter; if (!router) { debugBuild.DEBUG_BUILD && utils.logger.debug("Cannot instrument router for URL Parameterization (did not find a valid router)."); debugBuild.DEBUG_BUILD && utils.logger.debug("Routing instrumentation is currently only supported in Express 4."); return; } const routerProto = Object.getPrototypeOf(router); const originalProcessParams = routerProto.process_params; routerProto.process_params = function process_params(layer, called, req, res, done) { if (!req._reconstructedRoute) { req._reconstructedRoute = ""; } const { layerRoutePath, isRegex, isArray, numExtraSegments } = getLayerRoutePathInfo(layer); if (layerRoutePath || isRegex || isArray) { req._hasParameters = true; } let partialRoute; if (layerRoutePath) { partialRoute = layerRoutePath; } else { partialRoute = preventDuplicateSegments(req.originalUrl, req._reconstructedRoute, layer.path) || ""; } const finalPartialRoute = partialRoute.split("/").filter((segment) => segment.length > 0 && (isRegex || isArray || !segment.includes("*"))).join("/"); if (finalPartialRoute && finalPartialRoute.length > 0) { req._reconstructedRoute += `/${finalPartialRoute}${isRegex ? "/" : ""}`; } const urlLength = utils.getNumberOfUrlSegments(utils.stripUrlQueryAndFragment(req.originalUrl || "")) + numExtraSegments; const routeLength = utils.getNumberOfUrlSegments(req._reconstructedRoute); if (urlLength === routeLength) { if (!req._hasParameters) { if (req._reconstructedRoute !== req.originalUrl) { req._reconstructedRoute = req.originalUrl ? utils.stripUrlQueryAndFragment(req.originalUrl) : req.originalUrl; } } const transaction = res.__sentry_transaction; const attributes = transaction && core.spanToJSON(transaction).data || {}; if (transaction && attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] !== "custom") { const finalRoute = req._reconstructedRoute || "/"; const [name, source] = utils.extractPathForTransaction(req, { path: true, method: true, customRoute: finalRoute }); transaction.updateName(name); transaction.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source); } } return originalProcessParams.call(this, layer, called, req, res, done); }; } var extractOriginalRoute = (path11, regexp, keys) => { if (!path11 || !regexp || !keys || Object.keys(keys).length === 0 || !_optionalChain([keys, "access", (_10) => _10[0], "optionalAccess", (_11) => _11.offset])) { return void 0; } const orderedKeys = keys.sort((a, b) => a.offset - b.offset); const pathRegex = new RegExp(regexp, `${regexp.flags}d`); const execResult = pathRegex.exec(path11); if (!execResult || !execResult.indices) { return void 0; } const [, ...paramIndices] = execResult.indices; if (paramIndices.length !== orderedKeys.length) { return void 0; } let resultPath = path11; let indexShift = 0; paramIndices.forEach((item, index) => { if (item) { const [startOffset, endOffset] = item; const substr1 = resultPath.substring(0, startOffset - indexShift); const replacement = `:${orderedKeys[index].name}`; const substr2 = resultPath.substring(endOffset - indexShift); resultPath = substr1 + replacement + substr2; indexShift = indexShift + (endOffset - startOffset - replacement.length); } }); return resultPath; }; function getLayerRoutePathInfo(layer) { let lrp = _optionalChain([layer, "access", (_12) => _12.route, "optionalAccess", (_13) => _13.path]); const isRegex = utils.isRegExp(lrp); const isArray = Array.isArray(lrp); if (!lrp) { const [major] = utils.GLOBAL_OBJ.process.versions.node.split(".").map(Number); if (major >= 16) { lrp = extractOriginalRoute(layer.path, layer.regexp, layer.keys); } } if (!lrp) { return { isRegex, isArray, numExtraSegments: 0 }; } const numExtraSegments = isArray ? Math.max(getNumberOfArrayUrlSegments(lrp) - utils.getNumberOfUrlSegments(layer.path || ""), 0) : 0; const layerRoutePath = getLayerRoutePathString(isArray, lrp); return { layerRoutePath, isRegex, isArray, numExtraSegments }; } function getNumberOfArrayUrlSegments(routesArray) { return routesArray.reduce((accNumSegments, currentRoute) => { return accNumSegments + utils.getNumberOfUrlSegments(currentRoute.toString()); }, 0); } function getLayerRoutePathString(isArray, lrp) { if (isArray) { return lrp.map((r) => r.toString()).join(","); } return lrp && lrp.toString(); } function preventDuplicateSegments(originalUrl, reconstructedRoute, layerPath) { const normalizeURL3 = utils.stripUrlQueryAndFragment(originalUrl || ""); const originalUrlSplit = _optionalChain([normalizeURL3, "optionalAccess", (_14) => _14.split, "call", (_15) => _15("/"), "access", (_16) => _16.filter, "call", (_17) => _17((v) => !!v)]); let tempCounter = 0; const currentOffset = _optionalChain([reconstructedRoute, "optionalAccess", (_18) => _18.split, "call", (_19) => _19("/"), "access", (_20) => _20.filter, "call", (_21) => _21((v) => !!v), "access", (_22) => _22.length]) || 0; const result = _optionalChain([ layerPath, "optionalAccess", (_23) => _23.split, "call", (_24) => _24("/"), "access", (_25) => _25.filter, "call", (_26) => _26((segment) => { if (_optionalChain([originalUrlSplit, "optionalAccess", (_27) => _27[currentOffset + tempCounter]]) === segment) { tempCounter += 1; return true; } return false; }), "access", (_28) => _28.join, "call", (_29) => _29("/") ]); return result; } exports2.Express = Express; exports2.extractOriginalRoute = extractOriginalRoute; exports2.preventDuplicateSegments = preventDuplicateSegments; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/postgres.js var require_postgres = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/postgres.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build3(); var nodeUtils = require_node_utils(); var Postgres = class _Postgres { /** * @inheritDoc */ static __initStatic() { this.id = "Postgres"; } /** * @inheritDoc */ constructor(options = {}) { this.name = _Postgres.id; this._usePgNative = !!options.usePgNative; this._module = options.module; } /** @inheritdoc */ loadDependency() { return this._module = this._module || utils.loadModule("pg"); } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation setupOnce(_, getCurrentHub) { if (nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)) { debugBuild.DEBUG_BUILD && utils.logger.log("Postgres Integration is skipped because of instrumenter configuration."); return; } const pkg = this.loadDependency(); if (!pkg) { debugBuild.DEBUG_BUILD && utils.logger.error("Postgres Integration was unable to require `pg` package."); return; } const Client2 = this._usePgNative ? _optionalChain([pkg, "access", (_2) => _2.native, "optionalAccess", (_3) => _3.Client]) : pkg.Client; if (!Client2) { debugBuild.DEBUG_BUILD && utils.logger.error("Postgres Integration was unable to access 'pg-native' bindings."); return; } utils.fill(Client2.prototype, "query", function(orig) { return function(config2, values, callback) { const scope = getCurrentHub().getScope(); const parentSpan = scope.getSpan(); const data = { "db.system": "postgresql" }; try { if (this.database) { data["db.name"] = this.database; } if (this.host) { data["server.address"] = this.host; } if (this.port) { data["server.port"] = this.port; } if (this.user) { data["db.user"] = this.user; } } catch (e2) { } const span = _optionalChain([parentSpan, "optionalAccess", (_4) => _4.startChild, "call", (_5) => _5({ description: typeof config2 === "string" ? config2 : config2.text, op: "db", origin: "auto.db.postgres", data })]); if (typeof callback === "function") { return orig.call(this, config2, values, function(err, result) { _optionalChain([span, "optionalAccess", (_6) => _6.end, "call", (_7) => _7()]); callback(err, result); }); } if (typeof values === "function") { return orig.call(this, config2, function(err, result) { _optionalChain([span, "optionalAccess", (_8) => _8.end, "call", (_9) => _9()]); values(err, result); }); } const rv = typeof values !== "undefined" ? orig.call(this, config2, values) : orig.call(this, config2); if (utils.isThenable(rv)) { return rv.then((res) => { _optionalChain([span, "optionalAccess", (_10) => _10.end, "call", (_11) => _11()]); return res; }); } _optionalChain([span, "optionalAccess", (_12) => _12.end, "call", (_13) => _13()]); return rv; }; }); } }; Postgres.__initStatic(); exports2.Postgres = Postgres; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/mysql.js var require_mysql = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/mysql.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build3(); var nodeUtils = require_node_utils(); var Mysql = class _Mysql { /** * @inheritDoc */ static __initStatic() { this.id = "Mysql"; } /** * @inheritDoc */ constructor() { this.name = _Mysql.id; } /** @inheritdoc */ loadDependency() { return this._module = this._module || utils.loadModule("mysql/lib/Connection.js"); } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation setupOnce(_, getCurrentHub) { if (nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)) { debugBuild.DEBUG_BUILD && utils.logger.log("Mysql Integration is skipped because of instrumenter configuration."); return; } const pkg = this.loadDependency(); if (!pkg) { debugBuild.DEBUG_BUILD && utils.logger.error("Mysql Integration was unable to require `mysql` package."); return; } let mySqlConfig = void 0; try { pkg.prototype.connect = new Proxy(pkg.prototype.connect, { apply(wrappingTarget, thisArg, args2) { if (!mySqlConfig) { mySqlConfig = thisArg.config; } return wrappingTarget.apply(thisArg, args2); } }); } catch (e2) { debugBuild.DEBUG_BUILD && utils.logger.error("Mysql Integration was unable to instrument `mysql` config."); } function spanDataFromConfig() { if (!mySqlConfig) { return {}; } return { "server.address": mySqlConfig.host, "server.port": mySqlConfig.port, "db.user": mySqlConfig.user }; } function finishSpan(span) { if (!span) { return; } const data = spanDataFromConfig(); Object.keys(data).forEach((key) => { span.setAttribute(key, data[key]); }); span.end(); } utils.fill(pkg, "createQuery", function(orig) { return function(options, values, callback) { const scope = getCurrentHub().getScope(); const parentSpan = scope.getSpan(); const span = _optionalChain([parentSpan, "optionalAccess", (_2) => _2.startChild, "call", (_3) => _3({ description: typeof options === "string" ? options : options.sql, op: "db", origin: "auto.db.mysql", data: { "db.system": "mysql" } })]); if (typeof callback === "function") { return orig.call(this, options, values, function(err, result, fields) { finishSpan(span); callback(err, result, fields); }); } if (typeof values === "function") { return orig.call(this, options, function(err, result, fields) { finishSpan(span); values(err, result, fields); }); } const query = orig.call(this, options, values); query.on("end", () => { finishSpan(span); }); return query; }; }); } }; Mysql.__initStatic(); exports2.Mysql = Mysql; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/mongo.js var require_mongo = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/mongo.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build3(); var nodeUtils = require_node_utils(); var OPERATIONS = [ "aggregate", // aggregate(pipeline, options, callback) "bulkWrite", // bulkWrite(operations, options, callback) "countDocuments", // countDocuments(query, options, callback) "createIndex", // createIndex(fieldOrSpec, options, callback) "createIndexes", // createIndexes(indexSpecs, options, callback) "deleteMany", // deleteMany(filter, options, callback) "deleteOne", // deleteOne(filter, options, callback) "distinct", // distinct(key, query, options, callback) "drop", // drop(options, callback) "dropIndex", // dropIndex(indexName, options, callback) "dropIndexes", // dropIndexes(options, callback) "estimatedDocumentCount", // estimatedDocumentCount(options, callback) "find", // find(query, options, callback) "findOne", // findOne(query, options, callback) "findOneAndDelete", // findOneAndDelete(filter, options, callback) "findOneAndReplace", // findOneAndReplace(filter, replacement, options, callback) "findOneAndUpdate", // findOneAndUpdate(filter, update, options, callback) "indexes", // indexes(options, callback) "indexExists", // indexExists(indexes, options, callback) "indexInformation", // indexInformation(options, callback) "initializeOrderedBulkOp", // initializeOrderedBulkOp(options, callback) "insertMany", // insertMany(docs, options, callback) "insertOne", // insertOne(doc, options, callback) "isCapped", // isCapped(options, callback) "mapReduce", // mapReduce(map, reduce, options, callback) "options", // options(options, callback) "parallelCollectionScan", // parallelCollectionScan(options, callback) "rename", // rename(newName, options, callback) "replaceOne", // replaceOne(filter, doc, options, callback) "stats", // stats(options, callback) "updateMany", // updateMany(filter, update, options, callback) "updateOne" // updateOne(filter, update, options, callback) ]; var OPERATION_SIGNATURES = { // aggregate intentionally not included because `pipeline` arguments are too complex to serialize well // see https://github.com/getsentry/sentry-javascript/pull/3102 bulkWrite: ["operations"], countDocuments: ["query"], createIndex: ["fieldOrSpec"], createIndexes: ["indexSpecs"], deleteMany: ["filter"], deleteOne: ["filter"], distinct: ["key", "query"], dropIndex: ["indexName"], find: ["query"], findOne: ["query"], findOneAndDelete: ["filter"], findOneAndReplace: ["filter", "replacement"], findOneAndUpdate: ["filter", "update"], indexExists: ["indexes"], insertMany: ["docs"], insertOne: ["doc"], mapReduce: ["map", "reduce"], rename: ["newName"], replaceOne: ["filter", "doc"], updateMany: ["filter", "update"], updateOne: ["filter", "update"] }; function isCursor(maybeCursor) { return maybeCursor && typeof maybeCursor === "object" && maybeCursor.once && typeof maybeCursor.once === "function"; } var Mongo = class _Mongo { /** * @inheritDoc */ static __initStatic() { this.id = "Mongo"; } /** * @inheritDoc */ /** * @inheritDoc */ constructor(options = {}) { this.name = _Mongo.id; this._operations = Array.isArray(options.operations) ? options.operations : OPERATIONS; this._describeOperations = "describeOperations" in options ? options.describeOperations : true; this._useMongoose = !!options.useMongoose; } /** @inheritdoc */ loadDependency() { const moduleName = this._useMongoose ? "mongoose" : "mongodb"; return this._module = this._module || utils.loadModule(moduleName); } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation setupOnce(_, getCurrentHub) { if (nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)) { debugBuild.DEBUG_BUILD && utils.logger.log("Mongo Integration is skipped because of instrumenter configuration."); return; } const pkg = this.loadDependency(); if (!pkg) { const moduleName = this._useMongoose ? "mongoose" : "mongodb"; debugBuild.DEBUG_BUILD && utils.logger.error(`Mongo Integration was unable to require \`${moduleName}\` package.`); return; } this._instrumentOperations(pkg.Collection, this._operations, getCurrentHub); } /** * Patches original collection methods */ // eslint-disable-next-line deprecation/deprecation _instrumentOperations(collection, operations, getCurrentHub) { operations.forEach((operation) => this._patchOperation(collection, operation, getCurrentHub)); } /** * Patches original collection to utilize our tracing functionality */ // eslint-disable-next-line deprecation/deprecation _patchOperation(collection, operation, getCurrentHub) { if (!(operation in collection.prototype)) return; const getSpanContext = this._getSpanContextFromOperationArguments.bind(this); utils.fill(collection.prototype, operation, function(orig) { return function(...args2) { const lastArg = args2[args2.length - 1]; const hub = getCurrentHub(); const scope = hub.getScope(); const client2 = hub.getClient(); const parentSpan = scope.getSpan(); const sendDefaultPii = _optionalChain([client2, "optionalAccess", (_2) => _2.getOptions, "call", (_3) => _3(), "access", (_4) => _4.sendDefaultPii]); if (typeof lastArg !== "function" || operation === "mapReduce" && args2.length === 2) { const span2 = _optionalChain([parentSpan, "optionalAccess", (_5) => _5.startChild, "call", (_6) => _6(getSpanContext(this, operation, args2, sendDefaultPii))]); const maybePromiseOrCursor = orig.call(this, ...args2); if (utils.isThenable(maybePromiseOrCursor)) { return maybePromiseOrCursor.then((res) => { _optionalChain([span2, "optionalAccess", (_7) => _7.end, "call", (_8) => _8()]); return res; }); } else if (isCursor(maybePromiseOrCursor)) { const cursor = maybePromiseOrCursor; try { cursor.once("close", () => { _optionalChain([span2, "optionalAccess", (_9) => _9.end, "call", (_10) => _10()]); }); } catch (e2) { _optionalChain([span2, "optionalAccess", (_11) => _11.end, "call", (_12) => _12()]); } return cursor; } else { _optionalChain([span2, "optionalAccess", (_13) => _13.end, "call", (_14) => _14()]); return maybePromiseOrCursor; } } const span = _optionalChain([parentSpan, "optionalAccess", (_15) => _15.startChild, "call", (_16) => _16(getSpanContext(this, operation, args2.slice(0, -1)))]); return orig.call(this, ...args2.slice(0, -1), function(err, result) { _optionalChain([span, "optionalAccess", (_17) => _17.end, "call", (_18) => _18()]); lastArg(err, result); }); }; }); } /** * Form a SpanContext based on the user input to a given operation. */ _getSpanContextFromOperationArguments(collection, operation, args2, sendDefaultPii = false) { const data = { "db.system": "mongodb", "db.name": collection.dbName, "db.operation": operation, "db.mongodb.collection": collection.collectionName }; const spanContext = { op: "db", // TODO v8: Use `${collection.collectionName}.${operation}` origin: "auto.db.mongo", description: operation, data }; const signature = OPERATION_SIGNATURES[operation]; const shouldDescribe = Array.isArray(this._describeOperations) ? this._describeOperations.includes(operation) : this._describeOperations; if (!signature || !shouldDescribe || !sendDefaultPii) { return spanContext; } try { if (operation === "mapReduce") { const [map, reduce] = args2; data[signature[0]] = typeof map === "string" ? map : map.name || ""; data[signature[1]] = typeof reduce === "string" ? reduce : reduce.name || ""; } else { for (let i = 0; i < signature.length; i++) { data[`db.mongodb.${signature[i]}`] = JSON.stringify(args2[i]); } } } catch (_oO) { } return spanContext; } }; Mongo.__initStatic(); exports2.Mongo = Mongo; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/prisma.js var require_prisma = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/prisma.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build3(); var nodeUtils = require_node_utils(); function isValidPrismaClient(possibleClient) { return !!possibleClient && !!possibleClient["$use"]; } var Prisma = class _Prisma { /** * @inheritDoc */ static __initStatic() { this.id = "Prisma"; } /** * @inheritDoc */ /** * @inheritDoc */ constructor(options = {}) { this.name = _Prisma.id; if (isValidPrismaClient(options.client) && !options.client._sentryInstrumented) { utils.addNonEnumerableProperty(options.client, "_sentryInstrumented", true); const clientData = {}; try { const engineConfig = options.client._engineConfig; if (engineConfig) { const { activeProvider, clientVersion } = engineConfig; if (activeProvider) { clientData["db.system"] = activeProvider; } if (clientVersion) { clientData["db.prisma.version"] = clientVersion; } } } catch (e2) { } options.client.$use((params2, next) => { if (nodeUtils.shouldDisableAutoInstrumentation(core.getCurrentHub)) { return next(params2); } const action = params2.action; const model = params2.model; return core.startSpan( { name: model ? `${model} ${action}` : action, onlyIfParent: true, op: "db.prisma", attributes: { [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.db.prisma" }, data: { ...clientData, "db.operation": action } }, () => next(params2) ); }); } else { debugBuild.DEBUG_BUILD && utils.logger.warn("Unsupported Prisma client provided to PrismaIntegration. Provided client:", options.client); } } /** * @inheritDoc */ setupOnce() { } }; Prisma.__initStatic(); exports2.Prisma = Prisma; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/graphql.js var require_graphql = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/graphql.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build3(); var nodeUtils = require_node_utils(); var GraphQL = class _GraphQL { /** * @inheritDoc */ static __initStatic() { this.id = "GraphQL"; } /** * @inheritDoc */ constructor() { this.name = _GraphQL.id; } /** @inheritdoc */ loadDependency() { return this._module = this._module || utils.loadModule("graphql/execution/execute.js"); } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation setupOnce(_, getCurrentHub) { if (nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)) { debugBuild.DEBUG_BUILD && utils.logger.log("GraphQL Integration is skipped because of instrumenter configuration."); return; } const pkg = this.loadDependency(); if (!pkg) { debugBuild.DEBUG_BUILD && utils.logger.error("GraphQL Integration was unable to require graphql/execution package."); return; } utils.fill(pkg, "execute", function(orig) { return function(...args2) { const scope = getCurrentHub().getScope(); const parentSpan = scope.getSpan(); const span = _optionalChain([parentSpan, "optionalAccess", (_2) => _2.startChild, "call", (_3) => _3({ description: "execute", op: "graphql.execute", origin: "auto.graphql.graphql" })]); _optionalChain([scope, "optionalAccess", (_4) => _4.setSpan, "call", (_5) => _5(span)]); const rv = orig.call(this, ...args2); if (utils.isThenable(rv)) { return rv.then((res) => { _optionalChain([span, "optionalAccess", (_6) => _6.end, "call", (_7) => _7()]); _optionalChain([scope, "optionalAccess", (_8) => _8.setSpan, "call", (_9) => _9(parentSpan)]); return res; }); } _optionalChain([span, "optionalAccess", (_10) => _10.end, "call", (_11) => _11()]); _optionalChain([scope, "optionalAccess", (_12) => _12.setSpan, "call", (_13) => _13(parentSpan)]); return rv; }; }); } }; GraphQL.__initStatic(); exports2.GraphQL = GraphQL; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/apollo.js var require_apollo = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/apollo.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build3(); var nodeUtils = require_node_utils(); var Apollo = class _Apollo { /** * @inheritDoc */ static __initStatic() { this.id = "Apollo"; } /** * @inheritDoc */ /** * @inheritDoc */ constructor(options = { useNestjs: false }) { this.name = _Apollo.id; this._useNest = !!options.useNestjs; } /** @inheritdoc */ loadDependency() { if (this._useNest) { this._module = this._module || utils.loadModule("@nestjs/graphql"); } else { this._module = this._module || utils.loadModule("apollo-server-core"); } return this._module; } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation setupOnce(_, getCurrentHub) { if (nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)) { debugBuild.DEBUG_BUILD && utils.logger.log("Apollo Integration is skipped because of instrumenter configuration."); return; } if (this._useNest) { const pkg = this.loadDependency(); if (!pkg) { debugBuild.DEBUG_BUILD && utils.logger.error("Apollo-NestJS Integration was unable to require @nestjs/graphql package."); return; } utils.fill( pkg.GraphQLFactory.prototype, "mergeWithSchema", function(orig) { return function(...args2) { utils.fill(this.resolversExplorerService, "explore", function(orig2) { return function() { const resolvers = utils.arrayify(orig2.call(this)); const instrumentedResolvers = instrumentResolvers(resolvers, getCurrentHub); return instrumentedResolvers; }; }); return orig.call(this, ...args2); }; } ); } else { const pkg = this.loadDependency(); if (!pkg) { debugBuild.DEBUG_BUILD && utils.logger.error("Apollo Integration was unable to require apollo-server-core package."); return; } utils.fill(pkg.ApolloServerBase.prototype, "constructSchema", function(orig) { return function() { if (!this.config.resolvers) { if (debugBuild.DEBUG_BUILD) { if (this.config.schema) { utils.logger.warn( "Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property.If you are using NestJS with Apollo, please use `Sentry.Integrations.Apollo({ useNestjs: true })` instead." ); utils.logger.warn(); } else if (this.config.modules) { utils.logger.warn( "Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property." ); } utils.logger.error("Skipping tracing as no resolvers found on the `ApolloServer` instance."); } return orig.call(this); } const resolvers = utils.arrayify(this.config.resolvers); this.config.resolvers = instrumentResolvers(resolvers, getCurrentHub); return orig.call(this); }; }); } } }; Apollo.__initStatic(); function instrumentResolvers(resolvers, getCurrentHub) { return resolvers.map((model) => { Object.keys(model).forEach((resolverGroupName) => { Object.keys(model[resolverGroupName]).forEach((resolverName) => { if (typeof model[resolverGroupName][resolverName] !== "function") { return; } wrapResolver(model, resolverGroupName, resolverName, getCurrentHub); }); }); return model; }); } function wrapResolver(model, resolverGroupName, resolverName, getCurrentHub) { utils.fill(model[resolverGroupName], resolverName, function(orig) { return function(...args2) { const scope = getCurrentHub().getScope(); const parentSpan = scope.getSpan(); const span = _optionalChain([parentSpan, "optionalAccess", (_2) => _2.startChild, "call", (_3) => _3({ description: `${resolverGroupName}.${resolverName}`, op: "graphql.resolve", origin: "auto.graphql.apollo" })]); const rv = orig.call(this, ...args2); if (utils.isThenable(rv)) { return rv.then((res) => { _optionalChain([span, "optionalAccess", (_4) => _4.end, "call", (_5) => _5()]); return res; }); } _optionalChain([span, "optionalAccess", (_6) => _6.end, "call", (_7) => _7()]); return rv; }; }); } exports2.Apollo = Apollo; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/lazy.js var require_lazy = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/lazy.js"(exports2, module2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var lazyLoadedNodePerformanceMonitoringIntegrations = [ () => { const integration = utils.dynamicRequire(module2, "./apollo"); return new integration.Apollo(); }, () => { const integration = utils.dynamicRequire(module2, "./apollo"); return new integration.Apollo({ useNestjs: true }); }, () => { const integration = utils.dynamicRequire(module2, "./graphql"); return new integration.GraphQL(); }, () => { const integration = utils.dynamicRequire(module2, "./mongo"); return new integration.Mongo(); }, () => { const integration = utils.dynamicRequire(module2, "./mongo"); return new integration.Mongo({ mongoose: true }); }, () => { const integration = utils.dynamicRequire(module2, "./mysql"); return new integration.Mysql(); }, () => { const integration = utils.dynamicRequire(module2, "./postgres"); return new integration.Postgres(); } ]; exports2.lazyLoadedNodePerformanceMonitoringIntegrations = lazyLoadedNodePerformanceMonitoringIntegrations; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/types.js var require_types = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/types.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var WINDOW = utils.GLOBAL_OBJ; exports2.WINDOW = WINDOW; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/backgroundtab.js var require_backgroundtab = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/backgroundtab.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build3(); var types = require_types(); function registerBackgroundTabDetection() { if (types.WINDOW.document) { types.WINDOW.document.addEventListener("visibilitychange", () => { const activeTransaction = core.getActiveTransaction(); if (types.WINDOW.document.hidden && activeTransaction) { const statusType = "cancelled"; const { op, status: status3 } = core.spanToJSON(activeTransaction); debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${op}`); if (!status3) { activeTransaction.setStatus(statusType); } activeTransaction.setTag("visibilitychange", "document.hidden"); activeTransaction.end(); } }); } else { debugBuild.DEBUG_BUILD && utils.logger.warn("[Tracing] Could not set up background tab detection due to lack of global document"); } } exports2.registerBackgroundTabDetection = registerBackgroundTabDetection; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/bindReporter.js var require_bindReporter = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/bindReporter.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var bindReporter = (callback, metric, reportAllChanges) => { let prevValue; let delta; return (forceReport) => { if (metric.value >= 0) { if (forceReport || reportAllChanges) { delta = metric.value - (prevValue || 0); if (delta || prevValue === void 0) { prevValue = metric.value; metric.delta = delta; callback(metric); } } } }; }; exports2.bindReporter = bindReporter; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/generateUniqueID.js var require_generateUniqueID = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/generateUniqueID.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var generateUniqueID = () => { return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`; }; exports2.generateUniqueID = generateUniqueID; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getNavigationEntry.js var require_getNavigationEntry = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getNavigationEntry.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var types = require_types(); var getNavigationEntryFromPerformanceTiming = () => { const timing = types.WINDOW.performance.timing; const type = types.WINDOW.performance.navigation.type; const navigationEntry = { entryType: "navigation", startTime: 0, type: type == 2 ? "back_forward" : type === 1 ? "reload" : "navigate" }; for (const key in timing) { if (key !== "navigationStart" && key !== "toJSON") { navigationEntry[key] = Math.max(timing[key] - timing.navigationStart, 0); } } return navigationEntry; }; var getNavigationEntry = () => { if (types.WINDOW.__WEB_VITALS_POLYFILL__) { return types.WINDOW.performance && (performance.getEntriesByType && performance.getEntriesByType("navigation")[0] || getNavigationEntryFromPerformanceTiming()); } else { return types.WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType("navigation")[0]; } }; exports2.getNavigationEntry = getNavigationEntry; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getActivationStart.js var require_getActivationStart = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getActivationStart.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var getNavigationEntry = require_getNavigationEntry(); var getActivationStart = () => { const navEntry = getNavigationEntry.getNavigationEntry(); return navEntry && navEntry.activationStart || 0; }; exports2.getActivationStart = getActivationStart; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/initMetric.js var require_initMetric = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/initMetric.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var types = require_types(); var generateUniqueID = require_generateUniqueID(); var getActivationStart = require_getActivationStart(); var getNavigationEntry = require_getNavigationEntry(); var initMetric = (name, value) => { const navEntry = getNavigationEntry.getNavigationEntry(); let navigationType = "navigate"; if (navEntry) { if (types.WINDOW.document && types.WINDOW.document.prerendering || getActivationStart.getActivationStart() > 0) { navigationType = "prerender"; } else { navigationType = navEntry.type.replace(/_/g, "-"); } } return { name, value: typeof value === "undefined" ? -1 : value, rating: "good", // Will be updated if the value changes. delta: 0, entries: [], id: generateUniqueID.generateUniqueID(), navigationType }; }; exports2.initMetric = initMetric; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/observe.js var require_observe = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/observe.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var observe = (type, callback, opts) => { try { if (PerformanceObserver.supportedEntryTypes.includes(type)) { const po = new PerformanceObserver((list10) => { callback(list10.getEntries()); }); po.observe( Object.assign( { type, buffered: true }, opts || {} ) ); return po; } } catch (e2) { } return; }; exports2.observe = observe; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/onHidden.js var require_onHidden = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/onHidden.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var types = require_types(); var onHidden = (cb, once2) => { const onHiddenOrPageHide = (event) => { if (event.type === "pagehide" || types.WINDOW.document.visibilityState === "hidden") { cb(event); if (once2) { removeEventListener("visibilitychange", onHiddenOrPageHide, true); removeEventListener("pagehide", onHiddenOrPageHide, true); } } }; if (types.WINDOW.document) { addEventListener("visibilitychange", onHiddenOrPageHide, true); addEventListener("pagehide", onHiddenOrPageHide, true); } }; exports2.onHidden = onHidden; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getCLS.js var require_getCLS = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getCLS.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var bindReporter = require_bindReporter(); var initMetric = require_initMetric(); var observe = require_observe(); var onHidden = require_onHidden(); var onCLS = (onReport, options = {}) => { const metric = initMetric.initMetric("CLS", 0); let report; let sessionValue = 0; let sessionEntries = []; const handleEntries = (entries) => { entries.forEach((entry) => { if (!entry.hadRecentInput) { const firstSessionEntry = sessionEntries[0]; const lastSessionEntry = sessionEntries[sessionEntries.length - 1]; if (sessionValue && sessionEntries.length !== 0 && entry.startTime - lastSessionEntry.startTime < 1e3 && entry.startTime - firstSessionEntry.startTime < 5e3) { sessionValue += entry.value; sessionEntries.push(entry); } else { sessionValue = entry.value; sessionEntries = [entry]; } if (sessionValue > metric.value) { metric.value = sessionValue; metric.entries = sessionEntries; if (report) { report(); } } } }); }; const po = observe.observe("layout-shift", handleEntries); if (po) { report = bindReporter.bindReporter(onReport, metric, options.reportAllChanges); const stopListening = () => { handleEntries(po.takeRecords()); report(true); }; onHidden.onHidden(stopListening); return stopListening; } return; }; exports2.onCLS = onCLS; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getVisibilityWatcher.js var require_getVisibilityWatcher = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getVisibilityWatcher.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var types = require_types(); var onHidden = require_onHidden(); var firstHiddenTime = -1; var initHiddenTime = () => { if (types.WINDOW.document && types.WINDOW.document.visibilityState) { firstHiddenTime = types.WINDOW.document.visibilityState === "hidden" && !types.WINDOW.document.prerendering ? 0 : Infinity; } }; var trackChanges = () => { onHidden.onHidden(({ timeStamp }) => { firstHiddenTime = timeStamp; }, true); }; var getVisibilityWatcher = () => { if (firstHiddenTime < 0) { initHiddenTime(); trackChanges(); } return { get firstHiddenTime() { return firstHiddenTime; } }; }; exports2.getVisibilityWatcher = getVisibilityWatcher; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getFID.js var require_getFID = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getFID.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var bindReporter = require_bindReporter(); var getVisibilityWatcher = require_getVisibilityWatcher(); var initMetric = require_initMetric(); var observe = require_observe(); var onHidden = require_onHidden(); var onFID = (onReport) => { const visibilityWatcher = getVisibilityWatcher.getVisibilityWatcher(); const metric = initMetric.initMetric("FID"); let report; const handleEntry = (entry) => { if (entry.startTime < visibilityWatcher.firstHiddenTime) { metric.value = entry.processingStart - entry.startTime; metric.entries.push(entry); report(true); } }; const handleEntries = (entries) => { entries.forEach(handleEntry); }; const po = observe.observe("first-input", handleEntries); report = bindReporter.bindReporter(onReport, metric); if (po) { onHidden.onHidden(() => { handleEntries(po.takeRecords()); po.disconnect(); }, true); } }; exports2.onFID = onFID; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/polyfills/interactionCountPolyfill.js var require_interactionCountPolyfill = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/polyfills/interactionCountPolyfill.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var observe = require_observe(); var interactionCountEstimate = 0; var minKnownInteractionId = Infinity; var maxKnownInteractionId = 0; var updateEstimate = (entries) => { entries.forEach((e2) => { if (e2.interactionId) { minKnownInteractionId = Math.min(minKnownInteractionId, e2.interactionId); maxKnownInteractionId = Math.max(maxKnownInteractionId, e2.interactionId); interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0; } }); }; var po; var getInteractionCount = () => { return po ? interactionCountEstimate : performance.interactionCount || 0; }; var initInteractionCountPolyfill = () => { if ("interactionCount" in performance || po) return; po = observe.observe("event", updateEstimate, { type: "event", buffered: true, durationThreshold: 0 }); }; exports2.getInteractionCount = getInteractionCount; exports2.initInteractionCountPolyfill = initInteractionCountPolyfill; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getINP.js var require_getINP = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getINP.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var bindReporter = require_bindReporter(); var initMetric = require_initMetric(); var observe = require_observe(); var onHidden = require_onHidden(); var interactionCountPolyfill = require_interactionCountPolyfill(); var getInteractionCountForNavigation = () => { return interactionCountPolyfill.getInteractionCount(); }; var MAX_INTERACTIONS_TO_CONSIDER = 10; var longestInteractionList = []; var longestInteractionMap = {}; var processEntry = (entry) => { const minLongestInteraction = longestInteractionList[longestInteractionList.length - 1]; const existingInteraction = longestInteractionMap[entry.interactionId]; if (existingInteraction || longestInteractionList.length < MAX_INTERACTIONS_TO_CONSIDER || entry.duration > minLongestInteraction.latency) { if (existingInteraction) { existingInteraction.entries.push(entry); existingInteraction.latency = Math.max(existingInteraction.latency, entry.duration); } else { const interaction = { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion id: entry.interactionId, latency: entry.duration, entries: [entry] }; longestInteractionMap[interaction.id] = interaction; longestInteractionList.push(interaction); } longestInteractionList.sort((a, b) => b.latency - a.latency); longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach((i) => { delete longestInteractionMap[i.id]; }); } }; var estimateP98LongestInteraction = () => { const candidateInteractionIndex = Math.min( longestInteractionList.length - 1, Math.floor(getInteractionCountForNavigation() / 50) ); return longestInteractionList[candidateInteractionIndex]; }; var onINP = (onReport, opts) => { opts = opts || {}; interactionCountPolyfill.initInteractionCountPolyfill(); const metric = initMetric.initMetric("INP"); let report; const handleEntries = (entries) => { entries.forEach((entry) => { if (entry.interactionId) { processEntry(entry); } if (entry.entryType === "first-input") { const noMatchingEntry = !longestInteractionList.some((interaction) => { return interaction.entries.some((prevEntry) => { return entry.duration === prevEntry.duration && entry.startTime === prevEntry.startTime; }); }); if (noMatchingEntry) { processEntry(entry); } } }); const inp = estimateP98LongestInteraction(); if (inp && inp.latency !== metric.value) { metric.value = inp.latency; metric.entries = inp.entries; report(); } }; const po = observe.observe("event", handleEntries, { // Event Timing entries have their durations rounded to the nearest 8ms, // so a duration of 40ms would be any event that spans 2.5 or more frames // at 60Hz. This threshold is chosen to strike a balance between usefulness // and performance. Running this callback for any interaction that spans // just one or two frames is likely not worth the insight that could be // gained. durationThreshold: opts.durationThreshold || 40 }); report = bindReporter.bindReporter(onReport, metric, opts.reportAllChanges); if (po) { po.observe({ type: "first-input", buffered: true }); onHidden.onHidden(() => { handleEntries(po.takeRecords()); if (metric.value < 0 && getInteractionCountForNavigation() > 0) { metric.value = 0; metric.entries = []; } report(true); }); } }; exports2.onINP = onINP; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getLCP.js var require_getLCP = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getLCP.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var types = require_types(); var bindReporter = require_bindReporter(); var getActivationStart = require_getActivationStart(); var getVisibilityWatcher = require_getVisibilityWatcher(); var initMetric = require_initMetric(); var observe = require_observe(); var onHidden = require_onHidden(); var reportedMetricIDs = {}; var onLCP = (onReport) => { const visibilityWatcher = getVisibilityWatcher.getVisibilityWatcher(); const metric = initMetric.initMetric("LCP"); let report; const handleEntries = (entries) => { const lastEntry = entries[entries.length - 1]; if (lastEntry) { const value = Math.max(lastEntry.startTime - getActivationStart.getActivationStart(), 0); if (value < visibilityWatcher.firstHiddenTime) { metric.value = value; metric.entries = [lastEntry]; report(); } } }; const po = observe.observe("largest-contentful-paint", handleEntries); if (po) { report = bindReporter.bindReporter(onReport, metric); const stopListening = () => { if (!reportedMetricIDs[metric.id]) { handleEntries(po.takeRecords()); po.disconnect(); reportedMetricIDs[metric.id] = true; report(true); } }; ["keydown", "click"].forEach((type) => { if (types.WINDOW.document) { addEventListener(type, stopListening, { once: true, capture: true }); } }); onHidden.onHidden(stopListening, true); return stopListening; } return; }; exports2.onLCP = onLCP; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/onTTFB.js var require_onTTFB = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/onTTFB.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var types = require_types(); var bindReporter = require_bindReporter(); var getActivationStart = require_getActivationStart(); var getNavigationEntry = require_getNavigationEntry(); var initMetric = require_initMetric(); var whenReady = (callback) => { if (!types.WINDOW.document) { return; } if (types.WINDOW.document.prerendering) { addEventListener("prerenderingchange", () => whenReady(callback), true); } else if (types.WINDOW.document.readyState !== "complete") { addEventListener("load", () => whenReady(callback), true); } else { setTimeout(callback, 0); } }; var onTTFB = (onReport, opts) => { opts = opts || {}; const metric = initMetric.initMetric("TTFB"); const report = bindReporter.bindReporter(onReport, metric, opts.reportAllChanges); whenReady(() => { const navEntry = getNavigationEntry.getNavigationEntry(); if (navEntry) { metric.value = Math.max(navEntry.responseStart - getActivationStart.getActivationStart(), 0); if (metric.value < 0 || metric.value > performance.now()) return; metric.entries = [navEntry]; report(true); } }); }; exports2.onTTFB = onTTFB; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/instrument.js var require_instrument2 = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/instrument.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build3(); var getCLS = require_getCLS(); var getFID = require_getFID(); var getINP = require_getINP(); var getLCP = require_getLCP(); var observe = require_observe(); var onTTFB = require_onTTFB(); var handlers = {}; var instrumented = {}; var _previousCls; var _previousFid; var _previousLcp; var _previousTtfb; var _previousInp; function addClsInstrumentationHandler(callback, stopOnCallback = false) { return addMetricObserver("cls", callback, instrumentCls, _previousCls, stopOnCallback); } function addLcpInstrumentationHandler(callback, stopOnCallback = false) { return addMetricObserver("lcp", callback, instrumentLcp, _previousLcp, stopOnCallback); } function addTtfbInstrumentationHandler(callback) { return addMetricObserver("ttfb", callback, instrumentTtfb, _previousTtfb); } function addFidInstrumentationHandler(callback) { return addMetricObserver("fid", callback, instrumentFid, _previousFid); } function addInpInstrumentationHandler(callback) { return addMetricObserver("inp", callback, instrumentInp, _previousInp); } function addPerformanceInstrumentationHandler(type, callback) { addHandler(type, callback); if (!instrumented[type]) { instrumentPerformanceObserver(type); instrumented[type] = true; } return getCleanupCallback(type, callback); } function triggerHandlers(type, data) { const typeHandlers = handlers[type]; if (!typeHandlers || !typeHandlers.length) { return; } for (const handler of typeHandlers) { try { handler(data); } catch (e2) { debugBuild.DEBUG_BUILD && utils.logger.error( `Error while triggering instrumentation handler. Type: ${type} Name: ${utils.getFunctionName(handler)} Error:`, e2 ); } } } function instrumentCls() { return getCLS.onCLS( (metric) => { triggerHandlers("cls", { metric }); _previousCls = metric; }, { reportAllChanges: true } ); } function instrumentFid() { return getFID.onFID((metric) => { triggerHandlers("fid", { metric }); _previousFid = metric; }); } function instrumentLcp() { return getLCP.onLCP((metric) => { triggerHandlers("lcp", { metric }); _previousLcp = metric; }); } function instrumentTtfb() { return onTTFB.onTTFB((metric) => { triggerHandlers("ttfb", { metric }); _previousTtfb = metric; }); } function instrumentInp() { return getINP.onINP((metric) => { triggerHandlers("inp", { metric }); _previousInp = metric; }); } function addMetricObserver(type, callback, instrumentFn, previousValue, stopOnCallback = false) { addHandler(type, callback); let stopListening; if (!instrumented[type]) { stopListening = instrumentFn(); instrumented[type] = true; } if (previousValue) { callback({ metric: previousValue }); } return getCleanupCallback(type, callback, stopOnCallback ? stopListening : void 0); } function instrumentPerformanceObserver(type) { const options = {}; if (type === "event") { options.durationThreshold = 0; } observe.observe( type, (entries) => { triggerHandlers(type, { entries }); }, options ); } function addHandler(type, handler) { handlers[type] = handlers[type] || []; handlers[type].push(handler); } function getCleanupCallback(type, callback, stopListening) { return () => { if (stopListening) { stopListening(); } const typeHandlers = handlers[type]; if (!typeHandlers) { return; } const index = typeHandlers.indexOf(callback); if (index !== -1) { typeHandlers.splice(index, 1); } }; } exports2.addClsInstrumentationHandler = addClsInstrumentationHandler; exports2.addFidInstrumentationHandler = addFidInstrumentationHandler; exports2.addInpInstrumentationHandler = addInpInstrumentationHandler; exports2.addLcpInstrumentationHandler = addLcpInstrumentationHandler; exports2.addPerformanceInstrumentationHandler = addPerformanceInstrumentationHandler; exports2.addTtfbInstrumentationHandler = addTtfbInstrumentationHandler; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/metrics/utils.js var require_utils5 = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/metrics/utils.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function isMeasurementValue(value) { return typeof value === "number" && isFinite(value); } function _startChild(transaction, { startTimestamp, ...ctx }) { if (startTimestamp && transaction.startTimestamp > startTimestamp) { transaction.startTimestamp = startTimestamp; } return transaction.startChild({ startTimestamp, ...ctx }); } exports2._startChild = _startChild; exports2.isMeasurementValue = isMeasurementValue; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/metrics/index.js var require_metrics = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/metrics/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build3(); var instrument = require_instrument2(); var types = require_types(); var getVisibilityWatcher = require_getVisibilityWatcher(); var utils$1 = require_utils5(); var getNavigationEntry = require_getNavigationEntry(); var MAX_INT_AS_BYTES = 2147483647; function msToSec(time) { return time / 1e3; } function getBrowserPerformanceAPI() { return types.WINDOW && types.WINDOW.addEventListener && types.WINDOW.performance; } var _performanceCursor = 0; var _measurements = {}; var _lcpEntry; var _clsEntry; function startTrackingWebVitals() { const performance3 = getBrowserPerformanceAPI(); if (performance3 && utils.browserPerformanceTimeOrigin) { if (performance3.mark) { types.WINDOW.performance.mark("sentry-tracing-init"); } const fidCallback = _trackFID(); const clsCallback = _trackCLS(); const lcpCallback = _trackLCP(); const ttfbCallback = _trackTtfb(); return () => { fidCallback(); clsCallback(); lcpCallback(); ttfbCallback(); }; } return () => void 0; } function startTrackingLongTasks() { instrument.addPerformanceInstrumentationHandler("longtask", ({ entries }) => { for (const entry of entries) { const transaction = core.getActiveTransaction(); if (!transaction) { return; } const startTime = msToSec(utils.browserPerformanceTimeOrigin + entry.startTime); const duration = msToSec(entry.duration); transaction.startChild({ description: "Main UI thread blocked", op: "ui.long-task", origin: "auto.ui.browser.metrics", startTimestamp: startTime, endTimestamp: startTime + duration }); } }); } function startTrackingInteractions() { instrument.addPerformanceInstrumentationHandler("event", ({ entries }) => { for (const entry of entries) { const transaction = core.getActiveTransaction(); if (!transaction) { return; } if (entry.name === "click") { const startTime = msToSec(utils.browserPerformanceTimeOrigin + entry.startTime); const duration = msToSec(entry.duration); const span = { description: utils.htmlTreeAsString(entry.target), op: `ui.interaction.${entry.name}`, origin: "auto.ui.browser.metrics", startTimestamp: startTime, endTimestamp: startTime + duration }; const componentName = utils.getComponentName(entry.target); if (componentName) { span.attributes = { "ui.component_name": componentName }; } transaction.startChild(span); } } }); } function startTrackingINP(interactionIdtoRouteNameMapping, interactionsSampleRate) { const performance3 = getBrowserPerformanceAPI(); if (performance3 && utils.browserPerformanceTimeOrigin) { const inpCallback = _trackINP(interactionIdtoRouteNameMapping, interactionsSampleRate); return () => { inpCallback(); }; } return () => void 0; } function _trackCLS() { return instrument.addClsInstrumentationHandler(({ metric }) => { const entry = metric.entries[metric.entries.length - 1]; if (!entry) { return; } debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding CLS"); _measurements["cls"] = { value: metric.value, unit: "" }; _clsEntry = entry; }, true); } function _trackLCP() { return instrument.addLcpInstrumentationHandler(({ metric }) => { const entry = metric.entries[metric.entries.length - 1]; if (!entry) { return; } debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding LCP"); _measurements["lcp"] = { value: metric.value, unit: "millisecond" }; _lcpEntry = entry; }, true); } function _trackFID() { return instrument.addFidInstrumentationHandler(({ metric }) => { const entry = metric.entries[metric.entries.length - 1]; if (!entry) { return; } const timeOrigin = msToSec(utils.browserPerformanceTimeOrigin); const startTime = msToSec(entry.startTime); debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding FID"); _measurements["fid"] = { value: metric.value, unit: "millisecond" }; _measurements["mark.fid"] = { value: timeOrigin + startTime, unit: "second" }; }); } function _trackTtfb() { return instrument.addTtfbInstrumentationHandler(({ metric }) => { const entry = metric.entries[metric.entries.length - 1]; if (!entry) { return; } debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding TTFB"); _measurements["ttfb"] = { value: metric.value, unit: "millisecond" }; }); } var INP_ENTRY_MAP = { click: "click", pointerdown: "click", pointerup: "click", mousedown: "click", mouseup: "click", touchstart: "click", touchend: "click", mouseover: "hover", mouseout: "hover", mouseenter: "hover", mouseleave: "hover", pointerover: "hover", pointerout: "hover", pointerenter: "hover", pointerleave: "hover", dragstart: "drag", dragend: "drag", drag: "drag", dragenter: "drag", dragleave: "drag", dragover: "drag", drop: "drag", keydown: "press", keyup: "press", keypress: "press", input: "press" }; function _trackINP(interactionIdToRouteNameMapping, interactionsSampleRate) { return instrument.addInpInstrumentationHandler(({ metric }) => { if (metric.value === void 0) { return; } const entry = metric.entries.find( (entry2) => entry2.duration === metric.value && INP_ENTRY_MAP[entry2.name] !== void 0 ); const client2 = core.getClient(); if (!entry || !client2) { return; } const interactionType = INP_ENTRY_MAP[entry.name]; const options = client2.getOptions(); const startTime = msToSec(utils.browserPerformanceTimeOrigin + entry.startTime); const duration = msToSec(metric.value); const interaction = entry.interactionId !== void 0 ? interactionIdToRouteNameMapping[entry.interactionId] : void 0; if (interaction === void 0) { return; } const { routeName, parentContext, activeTransaction, user, replayId } = interaction; const userDisplay = user !== void 0 ? user.email || user.id || user.ip_address : void 0; const profileId = activeTransaction !== void 0 ? activeTransaction.getProfileId() : void 0; const span = new core.Span({ startTimestamp: startTime, endTimestamp: startTime + duration, op: `ui.interaction.${interactionType}`, name: utils.htmlTreeAsString(entry.target), attributes: { release: options.release, environment: options.environment, transaction: routeName, ...userDisplay !== void 0 && userDisplay !== "" ? { user: userDisplay } : {}, ...profileId !== void 0 ? { profile_id: profileId } : {}, ...replayId !== void 0 ? { replay_id: replayId } : {} }, exclusiveTime: metric.value, measurements: { inp: { value: metric.value, unit: "millisecond" } } }); const sampleRate = getSampleRate(parentContext, options, interactionsSampleRate); if (!sampleRate) { return; } if (Math.random() < sampleRate) { const envelope = span ? core.createSpanEnvelope([span], client2.getDsn()) : void 0; const transport = client2 && client2.getTransport(); if (transport && envelope) { transport.send(envelope).then(null, (reason) => { debugBuild.DEBUG_BUILD && utils.logger.error("Error while sending interaction:", reason); }); } return; } }); } function addPerformanceEntries(transaction) { const performance3 = getBrowserPerformanceAPI(); if (!performance3 || !types.WINDOW.performance.getEntries || !utils.browserPerformanceTimeOrigin) { return; } debugBuild.DEBUG_BUILD && utils.logger.log("[Tracing] Adding & adjusting spans using Performance API"); const timeOrigin = msToSec(utils.browserPerformanceTimeOrigin); const performanceEntries = performance3.getEntries(); const { op, start_timestamp: transactionStartTime } = core.spanToJSON(transaction); performanceEntries.slice(_performanceCursor).forEach((entry) => { const startTime = msToSec(entry.startTime); const duration = msToSec(entry.duration); if (transaction.op === "navigation" && transactionStartTime && timeOrigin + startTime < transactionStartTime) { return; } switch (entry.entryType) { case "navigation": { _addNavigationSpans(transaction, entry, timeOrigin); break; } case "mark": case "paint": case "measure": { _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin); const firstHidden = getVisibilityWatcher.getVisibilityWatcher(); const shouldRecord = entry.startTime < firstHidden.firstHiddenTime; if (entry.name === "first-paint" && shouldRecord) { debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding FP"); _measurements["fp"] = { value: entry.startTime, unit: "millisecond" }; } if (entry.name === "first-contentful-paint" && shouldRecord) { debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding FCP"); _measurements["fcp"] = { value: entry.startTime, unit: "millisecond" }; } break; } case "resource": { _addResourceSpans(transaction, entry, entry.name, startTime, duration, timeOrigin); break; } } }); _performanceCursor = Math.max(performanceEntries.length - 1, 0); _trackNavigator(transaction); if (op === "pageload") { _addTtfbRequestTimeToMeasurements(_measurements); ["fcp", "fp", "lcp"].forEach((name) => { if (!_measurements[name] || !transactionStartTime || timeOrigin >= transactionStartTime) { return; } const oldValue = _measurements[name].value; const measurementTimestamp = timeOrigin + msToSec(oldValue); const normalizedValue = Math.abs((measurementTimestamp - transactionStartTime) * 1e3); const delta = normalizedValue - oldValue; debugBuild.DEBUG_BUILD && utils.logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`); _measurements[name].value = normalizedValue; }); const fidMark = _measurements["mark.fid"]; if (fidMark && _measurements["fid"]) { utils$1._startChild(transaction, { description: "first input delay", endTimestamp: fidMark.value + msToSec(_measurements["fid"].value), op: "ui.action", origin: "auto.ui.browser.metrics", startTimestamp: fidMark.value }); delete _measurements["mark.fid"]; } if (!("fcp" in _measurements)) { delete _measurements.cls; } Object.keys(_measurements).forEach((measurementName) => { core.setMeasurement(measurementName, _measurements[measurementName].value, _measurements[measurementName].unit); }); _tagMetricInfo(transaction); } _lcpEntry = void 0; _clsEntry = void 0; _measurements = {}; } function _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin) { const measureStartTimestamp = timeOrigin + startTime; const measureEndTimestamp = measureStartTimestamp + duration; utils$1._startChild(transaction, { description: entry.name, endTimestamp: measureEndTimestamp, op: entry.entryType, origin: "auto.resource.browser.metrics", startTimestamp: measureStartTimestamp }); return measureStartTimestamp; } function _addNavigationSpans(transaction, entry, timeOrigin) { ["unloadEvent", "redirect", "domContentLoadedEvent", "loadEvent", "connect"].forEach((event) => { _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin); }); _addPerformanceNavigationTiming(transaction, entry, "secureConnection", timeOrigin, "TLS/SSL", "connectEnd"); _addPerformanceNavigationTiming(transaction, entry, "fetch", timeOrigin, "cache", "domainLookupStart"); _addPerformanceNavigationTiming(transaction, entry, "domainLookup", timeOrigin, "DNS"); _addRequest(transaction, entry, timeOrigin); } function _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin, description, eventEnd) { const end = eventEnd ? entry[eventEnd] : entry[`${event}End`]; const start = entry[`${event}Start`]; if (!start || !end) { return; } utils$1._startChild(transaction, { op: "browser", origin: "auto.browser.browser.metrics", description: description || event, startTimestamp: timeOrigin + msToSec(start), endTimestamp: timeOrigin + msToSec(end) }); } function _addRequest(transaction, entry, timeOrigin) { if (entry.responseEnd) { utils$1._startChild(transaction, { op: "browser", origin: "auto.browser.browser.metrics", description: "request", startTimestamp: timeOrigin + msToSec(entry.requestStart), endTimestamp: timeOrigin + msToSec(entry.responseEnd) }); utils$1._startChild(transaction, { op: "browser", origin: "auto.browser.browser.metrics", description: "response", startTimestamp: timeOrigin + msToSec(entry.responseStart), endTimestamp: timeOrigin + msToSec(entry.responseEnd) }); } } function _addResourceSpans(transaction, entry, resourceUrl, startTime, duration, timeOrigin) { if (entry.initiatorType === "xmlhttprequest" || entry.initiatorType === "fetch") { return; } const parsedUrl = utils.parseUrl(resourceUrl); const data = {}; setResourceEntrySizeData(data, entry, "transferSize", "http.response_transfer_size"); setResourceEntrySizeData(data, entry, "encodedBodySize", "http.response_content_length"); setResourceEntrySizeData(data, entry, "decodedBodySize", "http.decoded_response_content_length"); if ("renderBlockingStatus" in entry) { data["resource.render_blocking_status"] = entry.renderBlockingStatus; } if (parsedUrl.protocol) { data["url.scheme"] = parsedUrl.protocol.split(":").pop(); } if (parsedUrl.host) { data["server.address"] = parsedUrl.host; } data["url.same_origin"] = resourceUrl.includes(types.WINDOW.location.origin); const startTimestamp = timeOrigin + startTime; const endTimestamp = startTimestamp + duration; utils$1._startChild(transaction, { description: resourceUrl.replace(types.WINDOW.location.origin, ""), endTimestamp, op: entry.initiatorType ? `resource.${entry.initiatorType}` : "resource.other", origin: "auto.resource.browser.metrics", startTimestamp, data }); } function _trackNavigator(transaction) { const navigator2 = types.WINDOW.navigator; if (!navigator2) { return; } const connection = navigator2.connection; if (connection) { if (connection.effectiveType) { transaction.setTag("effectiveConnectionType", connection.effectiveType); } if (connection.type) { transaction.setTag("connectionType", connection.type); } if (utils$1.isMeasurementValue(connection.rtt)) { _measurements["connection.rtt"] = { value: connection.rtt, unit: "millisecond" }; } } if (utils$1.isMeasurementValue(navigator2.deviceMemory)) { transaction.setTag("deviceMemory", `${navigator2.deviceMemory} GB`); } if (utils$1.isMeasurementValue(navigator2.hardwareConcurrency)) { transaction.setTag("hardwareConcurrency", String(navigator2.hardwareConcurrency)); } } function _tagMetricInfo(transaction) { if (_lcpEntry) { debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding LCP Data"); if (_lcpEntry.element) { transaction.setTag("lcp.element", utils.htmlTreeAsString(_lcpEntry.element)); } if (_lcpEntry.id) { transaction.setTag("lcp.id", _lcpEntry.id); } if (_lcpEntry.url) { transaction.setTag("lcp.url", _lcpEntry.url.trim().slice(0, 200)); } transaction.setTag("lcp.size", _lcpEntry.size); } if (_clsEntry && _clsEntry.sources) { debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding CLS Data"); _clsEntry.sources.forEach( (source, index) => ( // TODO: Can we rewrite this to an attribute? // eslint-disable-next-line deprecation/deprecation transaction.setTag(`cls.source.${index + 1}`, utils.htmlTreeAsString(source.node)) ) ); } } function setResourceEntrySizeData(data, entry, key, dataKey) { const entryVal = entry[key]; if (entryVal != null && entryVal < MAX_INT_AS_BYTES) { data[dataKey] = entryVal; } } function _addTtfbRequestTimeToMeasurements(_measurements2) { const navEntry = getNavigationEntry.getNavigationEntry(); if (!navEntry) { return; } const { responseStart, requestStart } = navEntry; if (requestStart <= responseStart) { debugBuild.DEBUG_BUILD && utils.logger.log("[Measurements] Adding TTFB Request Time"); _measurements2["ttfb.requestTime"] = { value: responseStart - requestStart, unit: "millisecond" }; } } function getSampleRate(transactionContext, options, interactionsSampleRate) { if (!core.hasTracingEnabled(options)) { return false; } let sampleRate; if (transactionContext !== void 0 && typeof options.tracesSampler === "function") { sampleRate = options.tracesSampler({ transactionContext, name: transactionContext.name, parentSampled: transactionContext.parentSampled, attributes: { // eslint-disable-next-line deprecation/deprecation ...transactionContext.data, ...transactionContext.attributes }, location: types.WINDOW.location }); } else if (transactionContext !== void 0 && transactionContext.sampled !== void 0) { sampleRate = transactionContext.sampled; } else if (typeof options.tracesSampleRate !== "undefined") { sampleRate = options.tracesSampleRate; } else { sampleRate = 1; } if (!core.isValidSampleRate(sampleRate)) { debugBuild.DEBUG_BUILD && utils.logger.warn("[Tracing] Discarding interaction span because of invalid sample rate."); return false; } if (sampleRate === true) { return interactionsSampleRate; } else if (sampleRate === false) { return 0; } return sampleRate * interactionsSampleRate; } exports2._addMeasureSpans = _addMeasureSpans; exports2._addResourceSpans = _addResourceSpans; exports2.addPerformanceEntries = addPerformanceEntries; exports2.startTrackingINP = startTrackingINP; exports2.startTrackingInteractions = startTrackingInteractions; exports2.startTrackingLongTasks = startTrackingLongTasks; exports2.startTrackingWebVitals = startTrackingWebVitals; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/common/fetch.js var require_fetch2 = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/common/fetch.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); function instrumentFetchRequest(handlerData, shouldCreateSpan, shouldAttachHeaders, spans, spanOrigin = "auto.http.browser") { if (!core.hasTracingEnabled() || !handlerData.fetchData) { return void 0; } const shouldCreateSpanResult = shouldCreateSpan(handlerData.fetchData.url); if (handlerData.endTimestamp && shouldCreateSpanResult) { const spanId = handlerData.fetchData.__span; if (!spanId) return; const span2 = spans[spanId]; if (span2) { endSpan(span2, handlerData); delete spans[spanId]; } return void 0; } const scope = core.getCurrentScope(); const client2 = core.getClient(); const { method, url: url3 } = handlerData.fetchData; const fullUrl = getFullURL(url3); const host = fullUrl ? utils.parseUrl(fullUrl).host : void 0; const span = shouldCreateSpanResult ? core.startInactiveSpan({ name: `${method} ${url3}`, onlyIfParent: true, attributes: { url: url3, type: "fetch", "http.method": method, "http.url": fullUrl, "server.address": host, [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin }, op: "http.client" }) : void 0; if (span) { handlerData.fetchData.__span = span.spanContext().spanId; spans[span.spanContext().spanId] = span; } if (shouldAttachHeaders(handlerData.fetchData.url) && client2) { const request = handlerData.args[0]; handlerData.args[1] = handlerData.args[1] || {}; const options = handlerData.args[1]; options.headers = addTracingHeadersToFetchRequest(request, client2, scope, options, span); } return span; } function addTracingHeadersToFetchRequest(request, client2, scope, options, requestSpan) { const span = requestSpan || scope.getSpan(); const isolationScope = core.getIsolationScope(); const { traceId, spanId, sampled, dsc } = { ...isolationScope.getPropagationContext(), ...scope.getPropagationContext() }; const sentryTraceHeader = span ? core.spanToTraceHeader(span) : utils.generateSentryTraceHeader(traceId, spanId, sampled); const sentryBaggageHeader = utils.dynamicSamplingContextToSentryBaggageHeader( dsc || (span ? core.getDynamicSamplingContextFromSpan(span) : core.getDynamicSamplingContextFromClient(traceId, client2, scope)) ); const headers = options.headers || (typeof Request !== "undefined" && utils.isInstanceOf(request, Request) ? request.headers : void 0); if (!headers) { return { "sentry-trace": sentryTraceHeader, baggage: sentryBaggageHeader }; } else if (typeof Headers !== "undefined" && utils.isInstanceOf(headers, Headers)) { const newHeaders = new Headers(headers); newHeaders.append("sentry-trace", sentryTraceHeader); if (sentryBaggageHeader) { newHeaders.append(utils.BAGGAGE_HEADER_NAME, sentryBaggageHeader); } return newHeaders; } else if (Array.isArray(headers)) { const newHeaders = [...headers, ["sentry-trace", sentryTraceHeader]]; if (sentryBaggageHeader) { newHeaders.push([utils.BAGGAGE_HEADER_NAME, sentryBaggageHeader]); } return newHeaders; } else { const existingBaggageHeader = "baggage" in headers ? headers.baggage : void 0; const newBaggageHeaders = []; if (Array.isArray(existingBaggageHeader)) { newBaggageHeaders.push(...existingBaggageHeader); } else if (existingBaggageHeader) { newBaggageHeaders.push(existingBaggageHeader); } if (sentryBaggageHeader) { newBaggageHeaders.push(sentryBaggageHeader); } return { ...headers, "sentry-trace": sentryTraceHeader, baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(",") : void 0 }; } } function getFullURL(url3) { try { const parsed = new URL(url3); return parsed.href; } catch (e2) { return void 0; } } function endSpan(span, handlerData) { if (handlerData.response) { core.setHttpStatus(span, handlerData.response.status); const contentLength = handlerData.response && handlerData.response.headers && handlerData.response.headers.get("content-length"); if (contentLength) { const contentLengthNum = parseInt(contentLength); if (contentLengthNum > 0) { span.setAttribute("http.response_content_length", contentLengthNum); } } } else if (handlerData.error) { span.setStatus("internal_error"); } span.end(); } exports2.addTracingHeadersToFetchRequest = addTracingHeadersToFetchRequest; exports2.instrumentFetchRequest = instrumentFetchRequest; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/request.js var require_request = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/request.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var fetch6 = require_fetch2(); var instrument = require_instrument2(); var types = require_types(); var DEFAULT_TRACE_PROPAGATION_TARGETS = ["localhost", /^\/(?!\/)/]; var defaultRequestInstrumentationOptions = { traceFetch: true, traceXHR: true, enableHTTPTimings: true, // TODO (v8): Remove this property tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS, tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS }; function instrumentOutgoingRequests(_options) { const { traceFetch, traceXHR, // eslint-disable-next-line deprecation/deprecation tracePropagationTargets, // eslint-disable-next-line deprecation/deprecation tracingOrigins, shouldCreateSpanForRequest, enableHTTPTimings } = { traceFetch: defaultRequestInstrumentationOptions.traceFetch, traceXHR: defaultRequestInstrumentationOptions.traceXHR, ..._options }; const shouldCreateSpan = typeof shouldCreateSpanForRequest === "function" ? shouldCreateSpanForRequest : (_) => true; const shouldAttachHeadersWithTargets = (url3) => shouldAttachHeaders(url3, tracePropagationTargets || tracingOrigins); const spans = {}; if (traceFetch) { utils.addFetchInstrumentationHandler((handlerData) => { const createdSpan = fetch6.instrumentFetchRequest(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans); if (createdSpan) { const fullUrl = getFullURL(handlerData.fetchData.url); const host = fullUrl ? utils.parseUrl(fullUrl).host : void 0; createdSpan.setAttributes({ "http.url": fullUrl, "server.address": host }); } if (enableHTTPTimings && createdSpan) { addHTTPTimings(createdSpan); } }); } if (traceXHR) { utils.addXhrInstrumentationHandler((handlerData) => { const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans); if (enableHTTPTimings && createdSpan) { addHTTPTimings(createdSpan); } }); } } function isPerformanceResourceTiming(entry) { return entry.entryType === "resource" && "initiatorType" in entry && typeof entry.nextHopProtocol === "string" && (entry.initiatorType === "fetch" || entry.initiatorType === "xmlhttprequest"); } function addHTTPTimings(span) { const { url: url3 } = core.spanToJSON(span).data || {}; if (!url3 || typeof url3 !== "string") { return; } const cleanup = instrument.addPerformanceInstrumentationHandler("resource", ({ entries }) => { entries.forEach((entry) => { if (isPerformanceResourceTiming(entry) && entry.name.endsWith(url3)) { const spanData = resourceTimingEntryToSpanData(entry); spanData.forEach((data) => span.setAttribute(...data)); setTimeout(cleanup); } }); }); } function extractNetworkProtocol(nextHopProtocol) { let name = "unknown"; let version2 = "unknown"; let _name = ""; for (const char of nextHopProtocol) { if (char === "/") { [name, version2] = nextHopProtocol.split("/"); break; } if (!isNaN(Number(char))) { name = _name === "h" ? "http" : _name; version2 = nextHopProtocol.split(_name)[1]; break; } _name += char; } if (_name === nextHopProtocol) { name = _name; } return { name, version: version2 }; } function getAbsoluteTime(time = 0) { return ((utils.browserPerformanceTimeOrigin || performance.timeOrigin) + time) / 1e3; } function resourceTimingEntryToSpanData(resourceTiming) { const { name, version: version2 } = extractNetworkProtocol(resourceTiming.nextHopProtocol); const timingSpanData = []; timingSpanData.push(["network.protocol.version", version2], ["network.protocol.name", name]); if (!utils.browserPerformanceTimeOrigin) { return timingSpanData; } return [ ...timingSpanData, ["http.request.redirect_start", getAbsoluteTime(resourceTiming.redirectStart)], ["http.request.fetch_start", getAbsoluteTime(resourceTiming.fetchStart)], ["http.request.domain_lookup_start", getAbsoluteTime(resourceTiming.domainLookupStart)], ["http.request.domain_lookup_end", getAbsoluteTime(resourceTiming.domainLookupEnd)], ["http.request.connect_start", getAbsoluteTime(resourceTiming.connectStart)], ["http.request.secure_connection_start", getAbsoluteTime(resourceTiming.secureConnectionStart)], ["http.request.connection_end", getAbsoluteTime(resourceTiming.connectEnd)], ["http.request.request_start", getAbsoluteTime(resourceTiming.requestStart)], ["http.request.response_start", getAbsoluteTime(resourceTiming.responseStart)], ["http.request.response_end", getAbsoluteTime(resourceTiming.responseEnd)] ]; } function shouldAttachHeaders(url3, tracePropagationTargets) { return utils.stringMatchesSomePattern(url3, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS); } function xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeaders2, spans) { const xhr = handlerData.xhr; const sentryXhrData = xhr && xhr[utils.SENTRY_XHR_DATA_KEY]; if (!core.hasTracingEnabled() || !xhr || xhr.__sentry_own_request__ || !sentryXhrData) { return void 0; } const shouldCreateSpanResult = shouldCreateSpan(sentryXhrData.url); if (handlerData.endTimestamp && shouldCreateSpanResult) { const spanId = xhr.__sentry_xhr_span_id__; if (!spanId) return; const span2 = spans[spanId]; if (span2 && sentryXhrData.status_code !== void 0) { core.setHttpStatus(span2, sentryXhrData.status_code); span2.end(); delete spans[spanId]; } return void 0; } const scope = core.getCurrentScope(); const isolationScope = core.getIsolationScope(); const fullUrl = getFullURL(sentryXhrData.url); const host = fullUrl ? utils.parseUrl(fullUrl).host : void 0; const span = shouldCreateSpanResult ? core.startInactiveSpan({ name: `${sentryXhrData.method} ${sentryXhrData.url}`, onlyIfParent: true, attributes: { type: "xhr", "http.method": sentryXhrData.method, "http.url": fullUrl, url: sentryXhrData.url, "server.address": host, [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.http.browser" }, op: "http.client" }) : void 0; if (span) { xhr.__sentry_xhr_span_id__ = span.spanContext().spanId; spans[xhr.__sentry_xhr_span_id__] = span; } const client2 = core.getClient(); if (xhr.setRequestHeader && shouldAttachHeaders2(sentryXhrData.url) && client2) { const { traceId, spanId, sampled, dsc } = { ...isolationScope.getPropagationContext(), ...scope.getPropagationContext() }; const sentryTraceHeader = span ? core.spanToTraceHeader(span) : utils.generateSentryTraceHeader(traceId, spanId, sampled); const sentryBaggageHeader = utils.dynamicSamplingContextToSentryBaggageHeader( dsc || (span ? core.getDynamicSamplingContextFromSpan(span) : core.getDynamicSamplingContextFromClient(traceId, client2, scope)) ); setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader); } return span; } function setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader) { try { xhr.setRequestHeader("sentry-trace", sentryTraceHeader); if (sentryBaggageHeader) { xhr.setRequestHeader(utils.BAGGAGE_HEADER_NAME, sentryBaggageHeader); } } catch (_) { } } function getFullURL(url3) { try { const parsed = new URL(url3, types.WINDOW.location.origin); return parsed.href; } catch (e2) { return void 0; } } exports2.DEFAULT_TRACE_PROPAGATION_TARGETS = DEFAULT_TRACE_PROPAGATION_TARGETS; exports2.defaultRequestInstrumentationOptions = defaultRequestInstrumentationOptions; exports2.extractNetworkProtocol = extractNetworkProtocol; exports2.instrumentOutgoingRequests = instrumentOutgoingRequests; exports2.shouldAttachHeaders = shouldAttachHeaders; exports2.xhrCallback = xhrCallback; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/router.js var require_router = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/router.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var debugBuild = require_debug_build3(); var types = require_types(); function instrumentRoutingWithDefaults(customStartTransaction, startTransactionOnPageLoad = true, startTransactionOnLocationChange = true) { if (!types.WINDOW || !types.WINDOW.location) { debugBuild.DEBUG_BUILD && utils.logger.warn("Could not initialize routing instrumentation due to invalid location"); return; } let startingUrl = types.WINDOW.location.href; let activeTransaction; if (startTransactionOnPageLoad) { activeTransaction = customStartTransaction({ name: types.WINDOW.location.pathname, // pageload should always start at timeOrigin (and needs to be in s, not ms) startTimestamp: utils.browserPerformanceTimeOrigin ? utils.browserPerformanceTimeOrigin / 1e3 : void 0, op: "pageload", origin: "auto.pageload.browser", metadata: { source: "url" } }); } if (startTransactionOnLocationChange) { utils.addHistoryInstrumentationHandler(({ to, from }) => { if (from === void 0 && startingUrl && startingUrl.indexOf(to) !== -1) { startingUrl = void 0; return; } if (from !== to) { startingUrl = void 0; if (activeTransaction) { debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`); activeTransaction.end(); } activeTransaction = customStartTransaction({ name: types.WINDOW.location.pathname, op: "navigation", origin: "auto.navigation.browser", metadata: { source: "url" } }); } }); } } exports2.instrumentRoutingWithDefaults = instrumentRoutingWithDefaults; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/browsertracing.js var require_browsertracing = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/browsertracing.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build3(); var backgroundtab = require_backgroundtab(); var instrument = require_instrument2(); var index = require_metrics(); var request = require_request(); var router = require_router(); var types = require_types(); var BROWSER_TRACING_INTEGRATION_ID = "BrowserTracing"; var DEFAULT_BROWSER_TRACING_OPTIONS = { ...core.TRACING_DEFAULTS, markBackgroundTransactions: true, routingInstrumentation: router.instrumentRoutingWithDefaults, startTransactionOnLocationChange: true, startTransactionOnPageLoad: true, enableLongTask: true, enableInp: false, interactionsSampleRate: 1, _experiments: {}, ...request.defaultRequestInstrumentationOptions }; var MAX_INTERACTIONS = 10; var BrowserTracing = class { // This class currently doesn't have a static `id` field like the other integration classes, because it prevented // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects. // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all // integrations. /** Browser Tracing integration options */ /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation constructor(_options) { this.name = BROWSER_TRACING_INTEGRATION_ID; this._hasSetTracePropagationTargets = false; core.addTracingExtensions(); if (debugBuild.DEBUG_BUILD) { this._hasSetTracePropagationTargets = !!(_options && // eslint-disable-next-line deprecation/deprecation (_options.tracePropagationTargets || _options.tracingOrigins)); } this.options = { ...DEFAULT_BROWSER_TRACING_OPTIONS, ..._options }; if (this.options._experiments.enableLongTask !== void 0) { this.options.enableLongTask = this.options._experiments.enableLongTask; } if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) { this.options.tracePropagationTargets = _options.tracingOrigins; } this._collectWebVitals = index.startTrackingWebVitals(); this._interactionIdToRouteNameMapping = {}; if (this.options.enableInp) { index.startTrackingINP(this._interactionIdToRouteNameMapping, this.options.interactionsSampleRate); } if (this.options.enableLongTask) { index.startTrackingLongTasks(); } if (this.options._experiments.enableInteractions) { index.startTrackingInteractions(); } this._latestRoute = { name: void 0, context: void 0 }; } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation setupOnce(_, getCurrentHub) { this._getCurrentHub = getCurrentHub; const hub = getCurrentHub(); const client2 = hub.getClient(); const clientOptions = client2 && client2.getOptions(); const { routingInstrumentation: instrumentRouting, startTransactionOnLocationChange, startTransactionOnPageLoad, markBackgroundTransactions, traceFetch, traceXHR, shouldCreateSpanForRequest, enableHTTPTimings, _experiments } = this.options; const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets; const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets; if (debugBuild.DEBUG_BUILD && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) { utils.logger.warn( "[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used." ); } instrumentRouting( (context) => { const transaction = this._createRouteTransaction(context); this.options._experiments.onStartRouteTransaction && this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub); return transaction; }, startTransactionOnPageLoad, startTransactionOnLocationChange ); if (markBackgroundTransactions) { backgroundtab.registerBackgroundTabDetection(); } if (_experiments.enableInteractions) { this._registerInteractionListener(); } if (this.options.enableInp) { this._registerInpInteractionListener(); } request.instrumentOutgoingRequests({ traceFetch, traceXHR, tracePropagationTargets, shouldCreateSpanForRequest, enableHTTPTimings }); } /** Create routing idle transaction. */ _createRouteTransaction(context) { if (!this._getCurrentHub) { debugBuild.DEBUG_BUILD && utils.logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`); return void 0; } const hub = this._getCurrentHub(); const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options; const isPageloadTransaction = context.op === "pageload"; let expandedContext; if (isPageloadTransaction) { const sentryTrace = isPageloadTransaction ? getMetaContent("sentry-trace") : ""; const baggage = isPageloadTransaction ? getMetaContent("baggage") : void 0; const { traceId, dsc, parentSpanId, sampled } = utils.propagationContextFromHeaders(sentryTrace, baggage); expandedContext = { traceId, parentSpanId, parentSampled: sampled, ...context, metadata: { // eslint-disable-next-line deprecation/deprecation ...context.metadata, dynamicSamplingContext: dsc }, trimEnd: true }; } else { expandedContext = { trimEnd: true, ...context }; } const modifiedContext = typeof beforeNavigate === "function" ? beforeNavigate(expandedContext) : expandedContext; const finalContext = modifiedContext === void 0 ? { ...expandedContext, sampled: false } : modifiedContext; finalContext.metadata = finalContext.name !== expandedContext.name ? ( // eslint-disable-next-line deprecation/deprecation { ...finalContext.metadata, source: "custom" } ) : ( // eslint-disable-next-line deprecation/deprecation finalContext.metadata ); this._latestRoute.name = finalContext.name; this._latestRoute.context = finalContext; if (finalContext.sampled === false) { debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`); } debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`); const { location } = types.WINDOW; const idleTransaction = core.startIdleTransaction( hub, finalContext, idleTimeout, finalTimeout, true, { location }, // for use in the tracesSampler heartbeatInterval, isPageloadTransaction // should wait for finish signal if it's a pageload transaction ); if (isPageloadTransaction) { if (types.WINDOW.document) { types.WINDOW.document.addEventListener("readystatechange", () => { if (["interactive", "complete"].includes(types.WINDOW.document.readyState)) { idleTransaction.sendAutoFinishSignal(); } }); if (["interactive", "complete"].includes(types.WINDOW.document.readyState)) { idleTransaction.sendAutoFinishSignal(); } } } idleTransaction.registerBeforeFinishCallback((transaction) => { this._collectWebVitals(); index.addPerformanceEntries(transaction); }); return idleTransaction; } /** Start listener for interaction transactions */ _registerInteractionListener() { let inflightInteractionTransaction; const registerInteractionTransaction = () => { const { idleTimeout, finalTimeout, heartbeatInterval } = this.options; const op = "ui.action.click"; const currentTransaction = core.getActiveTransaction(); if (currentTransaction && currentTransaction.op && ["navigation", "pageload"].includes(currentTransaction.op)) { debugBuild.DEBUG_BUILD && utils.logger.warn( `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.` ); return void 0; } if (inflightInteractionTransaction) { inflightInteractionTransaction.setFinishReason("interactionInterrupted"); inflightInteractionTransaction.end(); inflightInteractionTransaction = void 0; } if (!this._getCurrentHub) { debugBuild.DEBUG_BUILD && utils.logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`); return void 0; } if (!this._latestRoute.name) { debugBuild.DEBUG_BUILD && utils.logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`); return void 0; } const hub = this._getCurrentHub(); const { location } = types.WINDOW; const context = { name: this._latestRoute.name, op, trimEnd: true, data: { [core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: this._latestRoute.context ? getSource(this._latestRoute.context) : "url" } }; inflightInteractionTransaction = core.startIdleTransaction( hub, context, idleTimeout, finalTimeout, true, { location }, // for use in the tracesSampler heartbeatInterval ); }; ["click"].forEach((type) => { if (types.WINDOW.document) { addEventListener(type, registerInteractionTransaction, { once: false, capture: true }); } }); } /** Creates a listener on interaction entries, and maps interactionIds to the origin path of the interaction */ _registerInpInteractionListener() { const handleEntries = ({ entries }) => { const client2 = core.getClient(); const replay = client2 !== void 0 && client2.getIntegrationByName !== void 0 ? client2.getIntegrationByName("Replay") : void 0; const replayId = replay !== void 0 ? replay.getReplayId() : void 0; const activeTransaction = core.getActiveTransaction(); const currentScope = core.getCurrentScope(); const user = currentScope !== void 0 ? currentScope.getUser() : void 0; entries.forEach((entry) => { if (isPerformanceEventTiming(entry)) { const interactionId = entry.interactionId; if (interactionId === void 0) { return; } const existingInteraction = this._interactionIdToRouteNameMapping[interactionId]; const duration = entry.duration; const startTime = entry.startTime; const keys = Object.keys(this._interactionIdToRouteNameMapping); const minInteractionId = keys.length > 0 ? keys.reduce((a, b) => { return this._interactionIdToRouteNameMapping[a].duration < this._interactionIdToRouteNameMapping[b].duration ? a : b; }) : void 0; if (entry.entryType === "first-input") { const matchingEntry = keys.map((key) => this._interactionIdToRouteNameMapping[key]).some((interaction) => { return interaction.duration === duration && interaction.startTime === startTime; }); if (matchingEntry) { return; } } if (!interactionId) { return; } if (existingInteraction) { existingInteraction.duration = Math.max(existingInteraction.duration, duration); } else if (keys.length < MAX_INTERACTIONS || minInteractionId === void 0 || duration > this._interactionIdToRouteNameMapping[minInteractionId].duration) { const routeName = this._latestRoute.name; const parentContext = this._latestRoute.context; if (routeName && parentContext) { if (minInteractionId && Object.keys(this._interactionIdToRouteNameMapping).length >= MAX_INTERACTIONS) { delete this._interactionIdToRouteNameMapping[minInteractionId]; } this._interactionIdToRouteNameMapping[interactionId] = { routeName, duration, parentContext, user, activeTransaction, replayId, startTime }; } } } }); }; instrument.addPerformanceInstrumentationHandler("event", handleEntries); instrument.addPerformanceInstrumentationHandler("first-input", handleEntries); } }; function getMetaContent(metaName) { const metaTag = utils.getDomElement(`meta[name=${metaName}]`); return metaTag ? metaTag.getAttribute("content") : void 0; } function getSource(context) { const sourceFromAttributes = context.attributes && context.attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; const sourceFromData = context.data && context.data[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; const sourceFromMetadata = context.metadata && context.metadata.source; return sourceFromAttributes || sourceFromData || sourceFromMetadata; } function isPerformanceEventTiming(entry) { return "duration" in entry; } exports2.BROWSER_TRACING_INTEGRATION_ID = BROWSER_TRACING_INTEGRATION_ID; exports2.BrowserTracing = BrowserTracing; exports2.getMetaContent = getMetaContent; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/browserTracingIntegration.js var require_browserTracingIntegration = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/browserTracingIntegration.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build3(); var backgroundtab = require_backgroundtab(); var instrument = require_instrument2(); var index = require_metrics(); var request = require_request(); var types = require_types(); var BROWSER_TRACING_INTEGRATION_ID = "BrowserTracing"; var DEFAULT_BROWSER_TRACING_OPTIONS = { ...core.TRACING_DEFAULTS, instrumentNavigation: true, instrumentPageLoad: true, markBackgroundSpan: true, enableLongTask: true, enableInp: false, interactionsSampleRate: 1, _experiments: {}, ...request.defaultRequestInstrumentationOptions }; var browserTracingIntegration = (_options = {}) => { const _hasSetTracePropagationTargets = debugBuild.DEBUG_BUILD ? !!// eslint-disable-next-line deprecation/deprecation (_options.tracePropagationTargets || _options.tracingOrigins) : false; core.addTracingExtensions(); if (!_options.tracePropagationTargets && _options.tracingOrigins) { _options.tracePropagationTargets = _options.tracingOrigins; } const options = { ...DEFAULT_BROWSER_TRACING_OPTIONS, ..._options }; const _collectWebVitals = index.startTrackingWebVitals(); const interactionIdToRouteNameMapping = {}; if (options.enableInp) { index.startTrackingINP(interactionIdToRouteNameMapping, options.interactionsSampleRate); } if (options.enableLongTask) { index.startTrackingLongTasks(); } if (options._experiments.enableInteractions) { index.startTrackingInteractions(); } const latestRoute = { name: void 0, context: void 0 }; function _createRouteTransaction(context) { const hub = core.getCurrentHub(); const { beforeStartSpan, idleTimeout, finalTimeout, heartbeatInterval } = options; const isPageloadTransaction = context.op === "pageload"; let expandedContext; if (isPageloadTransaction) { const sentryTrace = isPageloadTransaction ? getMetaContent("sentry-trace") : ""; const baggage = isPageloadTransaction ? getMetaContent("baggage") : void 0; const { traceId, dsc, parentSpanId, sampled } = utils.propagationContextFromHeaders(sentryTrace, baggage); expandedContext = { traceId, parentSpanId, parentSampled: sampled, ...context, metadata: { // eslint-disable-next-line deprecation/deprecation ...context.metadata, dynamicSamplingContext: dsc }, trimEnd: true }; } else { expandedContext = { trimEnd: true, ...context }; } const finalContext = beforeStartSpan ? beforeStartSpan(expandedContext) : expandedContext; finalContext.metadata = finalContext.name !== expandedContext.name ? ( // eslint-disable-next-line deprecation/deprecation { ...finalContext.metadata, source: "custom" } ) : ( // eslint-disable-next-line deprecation/deprecation finalContext.metadata ); latestRoute.name = finalContext.name; latestRoute.context = finalContext; if (finalContext.sampled === false) { debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`); } debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`); const { location } = types.WINDOW; const idleTransaction = core.startIdleTransaction( hub, finalContext, idleTimeout, finalTimeout, true, { location }, // for use in the tracesSampler heartbeatInterval, isPageloadTransaction // should wait for finish signal if it's a pageload transaction ); if (isPageloadTransaction && types.WINDOW.document) { types.WINDOW.document.addEventListener("readystatechange", () => { if (["interactive", "complete"].includes(types.WINDOW.document.readyState)) { idleTransaction.sendAutoFinishSignal(); } }); if (["interactive", "complete"].includes(types.WINDOW.document.readyState)) { idleTransaction.sendAutoFinishSignal(); } } idleTransaction.registerBeforeFinishCallback((transaction) => { _collectWebVitals(); index.addPerformanceEntries(transaction); }); return idleTransaction; } return { name: BROWSER_TRACING_INTEGRATION_ID, // eslint-disable-next-line @typescript-eslint/no-empty-function setupOnce: () => { }, afterAllSetup(client2) { const clientOptions = client2.getOptions(); const { markBackgroundSpan, traceFetch, traceXHR, shouldCreateSpanForRequest, enableHTTPTimings, _experiments } = options; const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets; const tracePropagationTargets = clientOptionsTracePropagationTargets || options.tracePropagationTargets; if (debugBuild.DEBUG_BUILD && _hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) { utils.logger.warn( "[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used." ); } let activeSpan; let startingUrl = types.WINDOW.location && types.WINDOW.location.href; if (client2.on) { client2.on("startNavigationSpan", (context) => { if (activeSpan) { debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Finishing current transaction with op: ${core.spanToJSON(activeSpan).op}`); activeSpan.end(); } activeSpan = _createRouteTransaction({ op: "navigation", ...context }); }); client2.on("startPageLoadSpan", (context) => { if (activeSpan) { debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Finishing current transaction with op: ${core.spanToJSON(activeSpan).op}`); activeSpan.end(); } activeSpan = _createRouteTransaction({ op: "pageload", ...context }); }); } if (options.instrumentPageLoad && client2.emit && types.WINDOW.location) { const context = { name: types.WINDOW.location.pathname, // pageload should always start at timeOrigin (and needs to be in s, not ms) startTimestamp: utils.browserPerformanceTimeOrigin ? utils.browserPerformanceTimeOrigin / 1e3 : void 0, origin: "auto.pageload.browser", attributes: { [core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: "url" } }; startBrowserTracingPageLoadSpan(client2, context); } if (options.instrumentNavigation && client2.emit && types.WINDOW.location) { utils.addHistoryInstrumentationHandler(({ to, from }) => { if (from === void 0 && startingUrl && startingUrl.indexOf(to) !== -1) { startingUrl = void 0; return; } if (from !== to) { startingUrl = void 0; const context = { name: types.WINDOW.location.pathname, origin: "auto.navigation.browser", attributes: { [core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: "url" } }; startBrowserTracingNavigationSpan(client2, context); } }); } if (markBackgroundSpan) { backgroundtab.registerBackgroundTabDetection(); } if (_experiments.enableInteractions) { registerInteractionListener(options, latestRoute); } if (options.enableInp) { registerInpInteractionListener(interactionIdToRouteNameMapping, latestRoute); } request.instrumentOutgoingRequests({ traceFetch, traceXHR, tracePropagationTargets, shouldCreateSpanForRequest, enableHTTPTimings }); }, // TODO v8: Remove this again // This is private API that we use to fix converted BrowserTracing integrations in Next.js & SvelteKit options }; }; function startBrowserTracingPageLoadSpan(client2, spanOptions) { if (!client2.emit) { return; } client2.emit("startPageLoadSpan", spanOptions); const span = core.getActiveSpan(); const op = span && core.spanToJSON(span).op; return op === "pageload" ? span : void 0; } function startBrowserTracingNavigationSpan(client2, spanOptions) { if (!client2.emit) { return; } client2.emit("startNavigationSpan", spanOptions); const span = core.getActiveSpan(); const op = span && core.spanToJSON(span).op; return op === "navigation" ? span : void 0; } function getMetaContent(metaName) { const metaTag = utils.getDomElement(`meta[name=${metaName}]`); return metaTag ? metaTag.getAttribute("content") : void 0; } function registerInteractionListener(options, latestRoute) { let inflightInteractionTransaction; const registerInteractionTransaction = () => { const { idleTimeout, finalTimeout, heartbeatInterval } = options; const op = "ui.action.click"; const currentTransaction = core.getActiveTransaction(); if (currentTransaction && currentTransaction.op && ["navigation", "pageload"].includes(currentTransaction.op)) { debugBuild.DEBUG_BUILD && utils.logger.warn( `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.` ); return void 0; } if (inflightInteractionTransaction) { inflightInteractionTransaction.setFinishReason("interactionInterrupted"); inflightInteractionTransaction.end(); inflightInteractionTransaction = void 0; } if (!latestRoute.name) { debugBuild.DEBUG_BUILD && utils.logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`); return void 0; } const { location } = types.WINDOW; const context = { name: latestRoute.name, op, trimEnd: true, data: { [core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: latestRoute.context ? getSource(latestRoute.context) : "url" } }; inflightInteractionTransaction = core.startIdleTransaction( // eslint-disable-next-line deprecation/deprecation core.getCurrentHub(), context, idleTimeout, finalTimeout, true, { location }, // for use in the tracesSampler heartbeatInterval ); }; ["click"].forEach((type) => { if (types.WINDOW.document) { addEventListener(type, registerInteractionTransaction, { once: false, capture: true }); } }); } function isPerformanceEventTiming(entry) { return "duration" in entry; } var MAX_INTERACTIONS = 10; function registerInpInteractionListener(interactionIdToRouteNameMapping, latestRoute) { const handleEntries = ({ entries }) => { const client2 = core.getClient(); const replay = client2 !== void 0 && client2.getIntegrationByName !== void 0 ? client2.getIntegrationByName("Replay") : void 0; const replayId = replay !== void 0 ? replay.getReplayId() : void 0; const activeTransaction = core.getActiveTransaction(); const currentScope = core.getCurrentScope(); const user = currentScope !== void 0 ? currentScope.getUser() : void 0; entries.forEach((entry) => { if (isPerformanceEventTiming(entry)) { const interactionId = entry.interactionId; if (interactionId === void 0) { return; } const existingInteraction = interactionIdToRouteNameMapping[interactionId]; const duration = entry.duration; const startTime = entry.startTime; const keys = Object.keys(interactionIdToRouteNameMapping); const minInteractionId = keys.length > 0 ? keys.reduce((a, b) => { return interactionIdToRouteNameMapping[a].duration < interactionIdToRouteNameMapping[b].duration ? a : b; }) : void 0; if (entry.entryType === "first-input") { const matchingEntry = keys.map((key) => interactionIdToRouteNameMapping[key]).some((interaction) => { return interaction.duration === duration && interaction.startTime === startTime; }); if (matchingEntry) { return; } } if (!interactionId) { return; } if (existingInteraction) { existingInteraction.duration = Math.max(existingInteraction.duration, duration); } else if (keys.length < MAX_INTERACTIONS || minInteractionId === void 0 || duration > interactionIdToRouteNameMapping[minInteractionId].duration) { const routeName = latestRoute.name; const parentContext = latestRoute.context; if (routeName && parentContext) { if (minInteractionId && Object.keys(interactionIdToRouteNameMapping).length >= MAX_INTERACTIONS) { delete interactionIdToRouteNameMapping[minInteractionId]; } interactionIdToRouteNameMapping[interactionId] = { routeName, duration, parentContext, user, activeTransaction, replayId, startTime }; } } } }); }; instrument.addPerformanceInstrumentationHandler("event", handleEntries); instrument.addPerformanceInstrumentationHandler("first-input", handleEntries); } function getSource(context) { const sourceFromAttributes = context.attributes && context.attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; const sourceFromData = context.data && context.data[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; const sourceFromMetadata = context.metadata && context.metadata.source; return sourceFromAttributes || sourceFromData || sourceFromMetadata; } exports2.BROWSER_TRACING_INTEGRATION_ID = BROWSER_TRACING_INTEGRATION_ID; exports2.browserTracingIntegration = browserTracingIntegration; exports2.getMetaContent = getMetaContent; exports2.startBrowserTracingNavigationSpan = startBrowserTracingNavigationSpan; exports2.startBrowserTracingPageLoadSpan = startBrowserTracingPageLoadSpan; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/extensions.js var require_extensions = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/extensions.js"(exports2, module2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); function _autoloadDatabaseIntegrations() { const carrier = core.getMainCarrier(); if (!carrier.__SENTRY__) { return; } const packageToIntegrationMapping = { mongodb() { const integration = utils.dynamicRequire(module2, "./node/integrations/mongo"); return new integration.Mongo(); }, mongoose() { const integration = utils.dynamicRequire(module2, "./node/integrations/mongo"); return new integration.Mongo(); }, mysql() { const integration = utils.dynamicRequire(module2, "./node/integrations/mysql"); return new integration.Mysql(); }, pg() { const integration = utils.dynamicRequire(module2, "./node/integrations/postgres"); return new integration.Postgres(); } }; const mappedPackages = Object.keys(packageToIntegrationMapping).filter((moduleName) => !!utils.loadModule(moduleName)).map((pkg) => { try { return packageToIntegrationMapping[pkg](); } catch (e2) { return void 0; } }).filter((p) => p); if (mappedPackages.length > 0) { carrier.__SENTRY__.integrations = [...carrier.__SENTRY__.integrations || [], ...mappedPackages]; } } function addExtensionMethods() { core.addTracingExtensions(); if (utils.isNodeEnv()) { _autoloadDatabaseIntegrations(); } } exports2.addExtensionMethods = addExtensionMethods; } }); // ../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/index.js var require_cjs3 = __commonJS2({ "../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var express = require_express(); var postgres = require_postgres(); var mysql = require_mysql(); var mongo = require_mongo(); var prisma = require_prisma(); var graphql = require_graphql(); var apollo = require_apollo(); var lazy = require_lazy(); var browsertracing = require_browsertracing(); var browserTracingIntegration = require_browserTracingIntegration(); var request = require_request(); var instrument = require_instrument2(); var fetch6 = require_fetch2(); var extensions = require_extensions(); exports2.IdleTransaction = core.IdleTransaction; exports2.Span = core.Span; exports2.SpanStatus = core.SpanStatus; exports2.Transaction = core.Transaction; exports2.extractTraceparentData = core.extractTraceparentData; exports2.getActiveTransaction = core.getActiveTransaction; exports2.hasTracingEnabled = core.hasTracingEnabled; exports2.spanStatusfromHttpCode = core.spanStatusfromHttpCode; exports2.startIdleTransaction = core.startIdleTransaction; exports2.TRACEPARENT_REGEXP = utils.TRACEPARENT_REGEXP; exports2.stripUrlQueryAndFragment = utils.stripUrlQueryAndFragment; exports2.Express = express.Express; exports2.Postgres = postgres.Postgres; exports2.Mysql = mysql.Mysql; exports2.Mongo = mongo.Mongo; exports2.Prisma = prisma.Prisma; exports2.GraphQL = graphql.GraphQL; exports2.Apollo = apollo.Apollo; exports2.lazyLoadedNodePerformanceMonitoringIntegrations = lazy.lazyLoadedNodePerformanceMonitoringIntegrations; exports2.BROWSER_TRACING_INTEGRATION_ID = browsertracing.BROWSER_TRACING_INTEGRATION_ID; exports2.BrowserTracing = browsertracing.BrowserTracing; exports2.browserTracingIntegration = browserTracingIntegration.browserTracingIntegration; exports2.startBrowserTracingNavigationSpan = browserTracingIntegration.startBrowserTracingNavigationSpan; exports2.startBrowserTracingPageLoadSpan = browserTracingIntegration.startBrowserTracingPageLoadSpan; exports2.defaultRequestInstrumentationOptions = request.defaultRequestInstrumentationOptions; exports2.instrumentOutgoingRequests = request.instrumentOutgoingRequests; exports2.addClsInstrumentationHandler = instrument.addClsInstrumentationHandler; exports2.addFidInstrumentationHandler = instrument.addFidInstrumentationHandler; exports2.addLcpInstrumentationHandler = instrument.addLcpInstrumentationHandler; exports2.addPerformanceInstrumentationHandler = instrument.addPerformanceInstrumentationHandler; exports2.addTracingHeadersToFetchRequest = fetch6.addTracingHeadersToFetchRequest; exports2.instrumentFetchRequest = fetch6.instrumentFetchRequest; exports2.addExtensionMethods = extensions.addExtensionMethods; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/tracing/index.js var require_tracing2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/tracing/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var tracing = require_cjs3(); var utils = require_cjs(); function autoDiscoverNodePerformanceMonitoringIntegrations() { const loadedIntegrations = tracing.lazyLoadedNodePerformanceMonitoringIntegrations.map((tryLoad) => { try { return tryLoad(); } catch (_) { return void 0; } }).filter((integration) => !!integration); if (loadedIntegrations.length === 0) { utils.logger.warn("Performance monitoring integrations could not be automatically loaded."); } return loadedIntegrations.filter((integration) => !!integration.loadDependency()); } exports2.autoDiscoverNodePerformanceMonitoringIntegrations = autoDiscoverNodePerformanceMonitoringIntegrations; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/client.js var require_client = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/client.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var os4 = __require("os"); var util = __require("util"); var core = require_cjs2(); var NodeClient = class extends core.ServerRuntimeClient { /** * Creates a new Node SDK instance. * @param options Configuration options for this SDK. */ constructor(options) { core.applySdkMetadata(options, "node"); options.transportOptions = { textEncoder: new util.TextEncoder(), ...options.transportOptions }; const clientOptions = { ...options, platform: "node", runtime: { name: "node", version: global.process.version }, serverName: options.serverName || global.process.env.SENTRY_NAME || os4.hostname() }; super(clientOptions); } }; exports2.NodeClient = NodeClient; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/base.js var require_base2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/base.js"(exports2) { var { _nullishCoalesce } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var http3 = __require("http"); __require("https"); var INTERNAL = Symbol("AgentBaseInternalState"); var Agent = class extends http3.Agent { // Set by `http.Agent` - missing from `@types/node` constructor(opts) { super(opts); this[INTERNAL] = {}; } /** * Determine whether this is an `http` or `https` request. */ isSecureEndpoint(options) { if (options) { if (typeof options.secureEndpoint === "boolean") { return options.secureEndpoint; } if (typeof options.protocol === "string") { return options.protocol === "https:"; } } const { stack: stack2 } = new Error(); if (typeof stack2 !== "string") return false; return stack2.split("\n").some((l) => l.indexOf("(https.js:") !== -1 || l.indexOf("node:https:") !== -1); } createSocket(req, options, cb) { const connectOpts = { ...options, secureEndpoint: this.isSecureEndpoint(options) }; Promise.resolve().then(() => this.connect(req, connectOpts)).then((socket) => { if (socket instanceof http3.Agent) { return socket.addRequest(req, connectOpts); } this[INTERNAL].currentSocket = socket; super.createSocket(req, options, cb); }, cb); } createConnection() { const socket = this[INTERNAL].currentSocket; this[INTERNAL].currentSocket = void 0; if (!socket) { throw new Error("No socket was returned in the `connect()` function"); } return socket; } get defaultPort() { return _nullishCoalesce(this[INTERNAL].defaultPort, () => this.protocol === "https:" ? 443 : 80); } set defaultPort(v) { if (this[INTERNAL]) { this[INTERNAL].defaultPort = v; } } get protocol() { return _nullishCoalesce(this[INTERNAL].protocol, () => this.isSecureEndpoint() ? "https:" : "http:"); } set protocol(v) { if (this[INTERNAL]) { this[INTERNAL].protocol = v; } } }; exports2.Agent = Agent; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/parse-proxy-response.js var require_parse_proxy_response = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/parse-proxy-response.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); function debug2(...args2) { utils.logger.log("[https-proxy-agent:parse-proxy-response]", ...args2); } function parseProxyResponse(socket) { return new Promise((resolve14, reject) => { let buffersLength = 0; const buffers = []; function read() { const b = socket.read(); if (b) ondata(b); else socket.once("readable", read); } function cleanup() { socket.removeListener("end", onend); socket.removeListener("error", onerror); socket.removeListener("readable", read); } function onend() { cleanup(); debug2("onend"); reject(new Error("Proxy connection ended before receiving CONNECT response")); } function onerror(err) { cleanup(); debug2("onerror %o", err); reject(err); } function ondata(b) { buffers.push(b); buffersLength += b.length; const buffered = Buffer.concat(buffers, buffersLength); const endOfHeaders = buffered.indexOf("\r\n\r\n"); if (endOfHeaders === -1) { debug2("have not received end of HTTP headers yet..."); read(); return; } const headerParts = buffered.slice(0, endOfHeaders).toString("ascii").split("\r\n"); const firstLine = headerParts.shift(); if (!firstLine) { socket.destroy(); return reject(new Error("No header received from proxy CONNECT response")); } const firstLineParts = firstLine.split(" "); const statusCode = +firstLineParts[1]; const statusText = firstLineParts.slice(2).join(" "); const headers = {}; for (const header of headerParts) { if (!header) continue; const firstColon = header.indexOf(":"); if (firstColon === -1) { socket.destroy(); return reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`)); } const key = header.slice(0, firstColon).toLowerCase(); const value = header.slice(firstColon + 1).trimStart(); const current = headers[key]; if (typeof current === "string") { headers[key] = [current, value]; } else if (Array.isArray(current)) { current.push(value); } else { headers[key] = value; } } debug2("got proxy server response: %o %o", firstLine, headers); cleanup(); resolve14({ connect: { statusCode, statusText, headers }, buffered }); } socket.on("error", onerror); socket.on("end", onend); read(); }); } exports2.parseProxyResponse = parseProxyResponse; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/index.js var require_proxy = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/index.js"(exports2) { var { _nullishCoalesce, _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var net = __require("net"); var tls = __require("tls"); var url3 = __require("url"); var utils = require_cjs(); var base = require_base2(); var parseProxyResponse = require_parse_proxy_response(); function debug2(...args2) { utils.logger.log("[https-proxy-agent]", ...args2); } var HttpsProxyAgent = class extends base.Agent { static __initStatic() { this.protocols = ["http", "https"]; } constructor(proxy, opts) { super(opts); this.options = {}; this.proxy = typeof proxy === "string" ? new url3.URL(proxy) : proxy; this.proxyHeaders = _nullishCoalesce(_optionalChain([opts, "optionalAccess", (_2) => _2.headers]), () => ({})); debug2("Creating new HttpsProxyAgent instance: %o", this.proxy.href); const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, ""); const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80; this.connectOpts = { // Attempt to negotiate http/1.1 for proxy servers that support http/2 ALPNProtocols: ["http/1.1"], ...opts ? omit(opts, "headers") : null, host, port }; } /** * Called when the node-core HTTP client library is creating a * new HTTP request. */ async connect(req, opts) { const { proxy } = this; if (!opts.host) { throw new TypeError('No "host" provided'); } let socket; if (proxy.protocol === "https:") { debug2("Creating `tls.Socket`: %o", this.connectOpts); const servername = this.connectOpts.servername || this.connectOpts.host; socket = tls.connect({ ...this.connectOpts, servername: servername && net.isIP(servername) ? void 0 : servername }); } else { debug2("Creating `net.Socket`: %o", this.connectOpts); socket = net.connect(this.connectOpts); } const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders }; const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host; let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\r `; if (proxy.username || proxy.password) { const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`; headers["Proxy-Authorization"] = `Basic ${Buffer.from(auth).toString("base64")}`; } headers.Host = `${host}:${opts.port}`; if (!headers["Proxy-Connection"]) { headers["Proxy-Connection"] = this.keepAlive ? "Keep-Alive" : "close"; } for (const name of Object.keys(headers)) { payload += `${name}: ${headers[name]}\r `; } const proxyResponsePromise = parseProxyResponse.parseProxyResponse(socket); socket.write(`${payload}\r `); const { connect: connect2, buffered } = await proxyResponsePromise; req.emit("proxyConnect", connect2); this.emit("proxyConnect", connect2, req); if (connect2.statusCode === 200) { req.once("socket", resume); if (opts.secureEndpoint) { debug2("Upgrading socket connection to TLS"); const servername = opts.servername || opts.host; return tls.connect({ ...omit(opts, "host", "path", "port"), socket, servername: net.isIP(servername) ? void 0 : servername }); } return socket; } socket.destroy(); const fakeSocket = new net.Socket({ writable: false }); fakeSocket.readable = true; req.once("socket", (s) => { debug2("Replaying proxy buffer for failed request"); s.push(buffered); s.push(null); }); return fakeSocket; } }; HttpsProxyAgent.__initStatic(); function resume(socket) { socket.resume(); } function omit(obj, ...keys) { const ret = {}; let key; for (key in obj) { if (!keys.includes(key)) { ret[key] = obj[key]; } } return ret; } exports2.HttpsProxyAgent = HttpsProxyAgent; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/transports/http.js var require_http = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/transports/http.js"(exports2) { var { _nullishCoalesce } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var http3 = __require("http"); var https = __require("https"); var stream = __require("stream"); var url3 = __require("url"); var zlib = __require("zlib"); var core = require_cjs2(); var utils = require_cjs(); var index = require_proxy(); var GZIP_THRESHOLD = 1024 * 32; function streamFromBody(body) { return new stream.Readable({ read() { this.push(body); this.push(null); } }); } function makeNodeTransport(options) { let urlSegments; try { urlSegments = new url3.URL(options.url); } catch (e2) { utils.consoleSandbox(() => { console.warn( "[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used." ); }); return core.createTransport(options, () => Promise.resolve({})); } const isHttps = urlSegments.protocol === "https:"; const proxy = applyNoProxyOption( urlSegments, options.proxy || (isHttps ? process.env.https_proxy : void 0) || process.env.http_proxy ); const nativeHttpModule = isHttps ? https : http3; const keepAlive = options.keepAlive === void 0 ? false : options.keepAlive; const agent = proxy ? new index.HttpsProxyAgent(proxy) : new nativeHttpModule.Agent({ keepAlive, maxSockets: 30, timeout: 2e3 }); const requestExecutor = createRequestExecutor(options, _nullishCoalesce(options.httpModule, () => nativeHttpModule), agent); return core.createTransport(options, requestExecutor); } function applyNoProxyOption(transportUrlSegments, proxy) { const { no_proxy } = process.env; const urlIsExemptFromProxy = no_proxy && no_proxy.split(",").some( (exemption) => transportUrlSegments.host.endsWith(exemption) || transportUrlSegments.hostname.endsWith(exemption) ); if (urlIsExemptFromProxy) { return void 0; } else { return proxy; } } function createRequestExecutor(options, httpModule, agent) { const { hostname: hostname3, pathname, port, protocol, search } = new url3.URL(options.url); return function makeRequest(request) { return new Promise((resolve14, reject) => { let body = streamFromBody(request.body); const headers = { ...options.headers }; if (request.body.length > GZIP_THRESHOLD) { headers["content-encoding"] = "gzip"; body = body.pipe(zlib.createGzip()); } const req = httpModule.request( { method: "POST", agent, headers, hostname: hostname3, path: `${pathname}${search}`, port, protocol, ca: options.caCerts }, (res) => { res.on("data", () => { }); res.on("end", () => { }); res.setEncoding("utf8"); const retryAfterHeader = _nullishCoalesce(res.headers["retry-after"], () => null); const rateLimitsHeader = _nullishCoalesce(res.headers["x-sentry-rate-limits"], () => null); resolve14({ statusCode: res.statusCode, headers: { "retry-after": retryAfterHeader, "x-sentry-rate-limits": Array.isArray(rateLimitsHeader) ? rateLimitsHeader[0] : rateLimitsHeader } }); } ); req.on("error", reject); body.pipe(req); }); }; } exports2.makeNodeTransport = makeNodeTransport; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/nodeVersion.js var require_nodeVersion = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/nodeVersion.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var NODE_VERSION = utils.parseSemver(process.versions.node); exports2.NODE_VERSION = NODE_VERSION; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/domain.js var require_domain = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/domain.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var domain = __require("domain"); var core = require_cjs2(); function getActiveDomain() { return domain.active; } function getCurrentHub() { const activeDomain = getActiveDomain(); if (!activeDomain) { return void 0; } core.ensureHubOnCarrier(activeDomain); return core.getHubFromCarrier(activeDomain); } function createNewHub(parent) { const carrier = {}; core.ensureHubOnCarrier(carrier, parent); return core.getHubFromCarrier(carrier); } function runWithAsyncContext(callback, options) { const activeDomain = getActiveDomain(); if (activeDomain && _optionalChain([options, "optionalAccess", (_) => _.reuseExisting])) { return callback(); } const local = domain.create(); const parentHub = activeDomain ? core.getHubFromCarrier(activeDomain) : void 0; const newHub = createNewHub(parentHub); core.setHubOnCarrier(local, newHub); return local.bind(() => { return callback(); })(); } function setDomainAsyncContextStrategy() { core.setAsyncContextStrategy({ getCurrentHub, runWithAsyncContext }); } exports2.setDomainAsyncContextStrategy = setDomainAsyncContextStrategy; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/hooks.js var require_hooks = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/hooks.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var async_hooks = __require("async_hooks"); var asyncStorage; function setHooksAsyncContextStrategy() { if (!asyncStorage) { asyncStorage = new async_hooks.AsyncLocalStorage(); } function getCurrentHub() { return asyncStorage.getStore(); } function createNewHub(parent) { const carrier = {}; core.ensureHubOnCarrier(carrier, parent); return core.getHubFromCarrier(carrier); } function runWithAsyncContext(callback, options) { const existingHub = getCurrentHub(); if (existingHub && _optionalChain([options, "optionalAccess", (_) => _.reuseExisting])) { return callback(); } const newHub = createNewHub(existingHub); return asyncStorage.run(newHub, () => { return callback(); }); } core.setAsyncContextStrategy({ getCurrentHub, runWithAsyncContext }); } exports2.setHooksAsyncContextStrategy = setHooksAsyncContextStrategy; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/index.js var require_async = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var nodeVersion = require_nodeVersion(); var domain = require_domain(); var hooks = require_hooks(); function setNodeAsyncContextStrategy() { if (nodeVersion.NODE_VERSION.major >= 14) { hooks.setHooksAsyncContextStrategy(); } else { domain.setDomainAsyncContextStrategy(); } } exports2.setNodeAsyncContextStrategy = setNodeAsyncContextStrategy; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/console.js var require_console2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/console.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var util = __require("util"); var core = require_cjs2(); var utils = require_cjs(); var INTEGRATION_NAME = "Console"; var _consoleIntegration = () => { return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { utils.addConsoleInstrumentationHandler(({ args: args2, level }) => { if (core.getClient() !== client2) { return; } core.addBreadcrumb( { category: "console", level: utils.severityLevelFromString(level), message: util.format.apply(void 0, args2) }, { input: [...args2], level } ); }); } }; }; var consoleIntegration = core.defineIntegration(_consoleIntegration); var Console = core.convertIntegrationFnToClass(INTEGRATION_NAME, consoleIntegration); exports2.Console = Console; exports2.consoleIntegration = consoleIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/context.js var require_context = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/context.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var child_process = __require("child_process"); var fs15 = __require("fs"); var os4 = __require("os"); var path11 = __require("path"); var util = __require("util"); var core = require_cjs2(); var readFileAsync = util.promisify(fs15.readFile); var readDirAsync = util.promisify(fs15.readdir); var INTEGRATION_NAME = "Context"; var _nodeContextIntegration = (options = {}) => { let cachedContext; const _options = { app: true, os: true, device: true, culture: true, cloudResource: true, ...options }; async function addContext(event) { if (cachedContext === void 0) { cachedContext = _getContexts(); } const updatedContext = _updateContext(await cachedContext); event.contexts = { ...event.contexts, app: { ...updatedContext.app, ..._optionalChain([event, "access", (_) => _.contexts, "optionalAccess", (_2) => _2.app]) }, os: { ...updatedContext.os, ..._optionalChain([event, "access", (_3) => _3.contexts, "optionalAccess", (_4) => _4.os]) }, device: { ...updatedContext.device, ..._optionalChain([event, "access", (_5) => _5.contexts, "optionalAccess", (_6) => _6.device]) }, culture: { ...updatedContext.culture, ..._optionalChain([event, "access", (_7) => _7.contexts, "optionalAccess", (_8) => _8.culture]) }, cloud_resource: { ...updatedContext.cloud_resource, ..._optionalChain([event, "access", (_9) => _9.contexts, "optionalAccess", (_10) => _10.cloud_resource]) } }; return event; } async function _getContexts() { const contexts = {}; if (_options.os) { contexts.os = await getOsContext(); } if (_options.app) { contexts.app = getAppContext(); } if (_options.device) { contexts.device = getDeviceContext(_options.device); } if (_options.culture) { const culture = getCultureContext(); if (culture) { contexts.culture = culture; } } if (_options.cloudResource) { contexts.cloud_resource = getCloudResourceContext(); } return contexts; } return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event) { return addContext(event); } }; }; var nodeContextIntegration = core.defineIntegration(_nodeContextIntegration); var Context = core.convertIntegrationFnToClass(INTEGRATION_NAME, nodeContextIntegration); function _updateContext(contexts) { if (_optionalChain([contexts, "optionalAccess", (_11) => _11.app, "optionalAccess", (_12) => _12.app_memory])) { contexts.app.app_memory = process.memoryUsage().rss; } if (_optionalChain([contexts, "optionalAccess", (_13) => _13.device, "optionalAccess", (_14) => _14.free_memory])) { contexts.device.free_memory = os4.freemem(); } return contexts; } async function getOsContext() { const platformId = os4.platform(); switch (platformId) { case "darwin": return getDarwinInfo(); case "linux": return getLinuxInfo(); default: return { name: PLATFORM_NAMES[platformId] || platformId, version: os4.release() }; } } function getCultureContext() { try { if (typeof process.versions.icu !== "string") { return; } const january = /* @__PURE__ */ new Date(9e8); const spanish = new Intl.DateTimeFormat("es", { month: "long" }); if (spanish.format(january) === "enero") { const options = Intl.DateTimeFormat().resolvedOptions(); return { locale: options.locale, timezone: options.timeZone }; } } catch (err) { } return; } function getAppContext() { const app_memory = process.memoryUsage().rss; const app_start_time = new Date(Date.now() - process.uptime() * 1e3).toISOString(); return { app_start_time, app_memory }; } function getDeviceContext(deviceOpt) { const device = {}; let uptime; try { uptime = os4.uptime && os4.uptime(); } catch (e2) { } if (typeof uptime === "number") { device.boot_time = new Date(Date.now() - uptime * 1e3).toISOString(); } device.arch = os4.arch(); if (deviceOpt === true || deviceOpt.memory) { device.memory_size = os4.totalmem(); device.free_memory = os4.freemem(); } if (deviceOpt === true || deviceOpt.cpu) { const cpuInfo = os4.cpus(); if (cpuInfo && cpuInfo.length) { const firstCpu = cpuInfo[0]; device.processor_count = cpuInfo.length; device.cpu_description = firstCpu.model; device.processor_frequency = firstCpu.speed; } } return device; } var PLATFORM_NAMES = { aix: "IBM AIX", freebsd: "FreeBSD", openbsd: "OpenBSD", sunos: "SunOS", win32: "Windows" }; var LINUX_DISTROS = [ { name: "fedora-release", distros: ["Fedora"] }, { name: "redhat-release", distros: ["Red Hat Linux", "Centos"] }, { name: "redhat_version", distros: ["Red Hat Linux"] }, { name: "SuSE-release", distros: ["SUSE Linux"] }, { name: "lsb-release", distros: ["Ubuntu Linux", "Arch Linux"] }, { name: "debian_version", distros: ["Debian"] }, { name: "debian_release", distros: ["Debian"] }, { name: "arch-release", distros: ["Arch Linux"] }, { name: "gentoo-release", distros: ["Gentoo Linux"] }, { name: "novell-release", distros: ["SUSE Linux"] }, { name: "alpine-release", distros: ["Alpine Linux"] } ]; var LINUX_VERSIONS = { alpine: (content) => content, arch: (content) => matchFirst(/distrib_release=(.*)/, content), centos: (content) => matchFirst(/release ([^ ]+)/, content), debian: (content) => content, fedora: (content) => matchFirst(/release (..)/, content), mint: (content) => matchFirst(/distrib_release=(.*)/, content), red: (content) => matchFirst(/release ([^ ]+)/, content), suse: (content) => matchFirst(/VERSION = (.*)\n/, content), ubuntu: (content) => matchFirst(/distrib_release=(.*)/, content) }; function matchFirst(regex, text) { const match = regex.exec(text); return match ? match[1] : void 0; } async function getDarwinInfo() { const darwinInfo = { kernel_version: os4.release(), name: "Mac OS X", version: `10.${Number(os4.release().split(".")[0]) - 4}` }; try { const output2 = await new Promise((resolve14, reject) => { child_process.execFile("/usr/bin/sw_vers", (error3, stdout) => { if (error3) { reject(error3); return; } resolve14(stdout); }); }); darwinInfo.name = matchFirst(/^ProductName:\s+(.*)$/m, output2); darwinInfo.version = matchFirst(/^ProductVersion:\s+(.*)$/m, output2); darwinInfo.build = matchFirst(/^BuildVersion:\s+(.*)$/m, output2); } catch (e2) { } return darwinInfo; } function getLinuxDistroId(name) { return name.split(" ")[0].toLowerCase(); } async function getLinuxInfo() { const linuxInfo = { kernel_version: os4.release(), name: "Linux" }; try { const etcFiles = await readDirAsync("/etc"); const distroFile = LINUX_DISTROS.find((file) => etcFiles.includes(file.name)); if (!distroFile) { return linuxInfo; } const distroPath = path11.join("/etc", distroFile.name); const contents = (await readFileAsync(distroPath, { encoding: "utf-8" })).toLowerCase(); const { distros } = distroFile; linuxInfo.name = distros.find((d) => contents.indexOf(getLinuxDistroId(d)) >= 0) || distros[0]; const id = getLinuxDistroId(linuxInfo.name); linuxInfo.version = LINUX_VERSIONS[id](contents); } catch (e2) { } return linuxInfo; } function getCloudResourceContext() { if (process.env.VERCEL) { return { "cloud.provider": "vercel", "cloud.region": process.env.VERCEL_REGION }; } else if (process.env.AWS_REGION) { return { "cloud.provider": "aws", "cloud.region": process.env.AWS_REGION, "cloud.platform": process.env.AWS_EXECUTION_ENV }; } else if (process.env.GCP_PROJECT) { return { "cloud.provider": "gcp" }; } else if (process.env.ALIYUN_REGION_ID) { return { "cloud.provider": "alibaba_cloud", "cloud.region": process.env.ALIYUN_REGION_ID }; } else if (process.env.WEBSITE_SITE_NAME && process.env.REGION_NAME) { return { "cloud.provider": "azure", "cloud.region": process.env.REGION_NAME }; } else if (process.env.IBM_CLOUD_REGION) { return { "cloud.provider": "ibm_cloud", "cloud.region": process.env.IBM_CLOUD_REGION }; } else if (process.env.TENCENTCLOUD_REGION) { return { "cloud.provider": "tencent_cloud", "cloud.region": process.env.TENCENTCLOUD_REGION, "cloud.account.id": process.env.TENCENTCLOUD_APPID, "cloud.availability_zone": process.env.TENCENTCLOUD_ZONE }; } else if (process.env.NETLIFY) { return { "cloud.provider": "netlify" }; } else if (process.env.FLY_REGION) { return { "cloud.provider": "fly.io", "cloud.region": process.env.FLY_REGION }; } else if (process.env.DYNO) { return { "cloud.provider": "heroku" }; } else { return void 0; } } exports2.Context = Context; exports2.getDeviceContext = getDeviceContext; exports2.nodeContextIntegration = nodeContextIntegration; exports2.readDirAsync = readDirAsync; exports2.readFileAsync = readFileAsync; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/contextlines.js var require_contextlines = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/contextlines.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var fs15 = __require("fs"); var core = require_cjs2(); var utils = require_cjs(); var FILE_CONTENT_CACHE = new utils.LRUMap(100); var DEFAULT_LINES_OF_CONTEXT = 7; var INTEGRATION_NAME = "ContextLines"; function readTextFileAsync(path11) { return new Promise((resolve14, reject) => { fs15.readFile(path11, "utf8", (err, data) => { if (err) reject(err); else resolve14(data); }); }); } var _contextLinesIntegration = (options = {}) => { const contextLines = options.frameContextLines !== void 0 ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event) { return addSourceContext(event, contextLines); } }; }; var contextLinesIntegration = core.defineIntegration(_contextLinesIntegration); var ContextLines = core.convertIntegrationFnToClass(INTEGRATION_NAME, contextLinesIntegration); async function addSourceContext(event, contextLines) { const enqueuedReadSourceFileTasks = {}; const readSourceFileTasks = []; if (contextLines > 0 && _optionalChain([event, "access", (_2) => _2.exception, "optionalAccess", (_3) => _3.values])) { for (const exception of event.exception.values) { if (!_optionalChain([exception, "access", (_4) => _4.stacktrace, "optionalAccess", (_5) => _5.frames])) { continue; } for (let i = exception.stacktrace.frames.length - 1; i >= 0; i--) { const frame = exception.stacktrace.frames[i]; if (frame.filename && !enqueuedReadSourceFileTasks[frame.filename] && !FILE_CONTENT_CACHE.get(frame.filename)) { readSourceFileTasks.push(_readSourceFile(frame.filename)); enqueuedReadSourceFileTasks[frame.filename] = 1; } } } } if (readSourceFileTasks.length > 0) { await Promise.all(readSourceFileTasks); } if (contextLines > 0 && _optionalChain([event, "access", (_6) => _6.exception, "optionalAccess", (_7) => _7.values])) { for (const exception of event.exception.values) { if (exception.stacktrace && exception.stacktrace.frames) { await addSourceContextToFrames(exception.stacktrace.frames, contextLines); } } } return event; } function addSourceContextToFrames(frames, contextLines) { for (const frame of frames) { if (frame.filename && frame.context_line === void 0) { const sourceFileLines = FILE_CONTENT_CACHE.get(frame.filename); if (sourceFileLines) { try { utils.addContextToFrame(sourceFileLines, frame, contextLines); } catch (e2) { } } } } } async function _readSourceFile(filename) { const cachedFile = FILE_CONTENT_CACHE.get(filename); if (cachedFile === null) { return null; } if (cachedFile !== void 0) { return cachedFile; } let content = null; try { const rawFileContents = await readTextFileAsync(filename); content = rawFileContents.split("\n"); } catch (_) { } FILE_CONTENT_CACHE.set(filename, content); return content; } exports2.ContextLines = ContextLines; exports2.contextLinesIntegration = contextLinesIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/debug-build.js var require_debug_build4 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/debug-build.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var DEBUG_BUILD = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__; exports2.DEBUG_BUILD = DEBUG_BUILD; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/utils/http.js var require_http2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/utils/http.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var url3 = __require("url"); var nodeVersion = require_nodeVersion(); function extractRawUrl(requestOptions) { const { protocol, hostname: hostname3, port } = parseRequestOptions(requestOptions); const path11 = requestOptions.path ? requestOptions.path : "/"; return `${protocol}//${hostname3}${port}${path11}`; } function extractUrl(requestOptions) { const { protocol, hostname: hostname3, port } = parseRequestOptions(requestOptions); const path11 = requestOptions.pathname || "/"; const authority = requestOptions.auth ? redactAuthority(requestOptions.auth) : ""; return `${protocol}//${authority}${hostname3}${port}${path11}`; } function redactAuthority(auth) { const [user, password] = auth.split(":"); return `${user ? "[Filtered]" : ""}:${password ? "[Filtered]" : ""}@`; } function cleanSpanDescription(description, requestOptions, request) { if (!description) { return description; } let [method, requestUrl] = description.split(" "); if (requestOptions.host && !requestOptions.protocol) { requestOptions.protocol = _optionalChain([request, "optionalAccess", (_) => _.agent, "optionalAccess", (_2) => _2.protocol]); requestUrl = extractUrl(requestOptions); } if (_optionalChain([requestUrl, "optionalAccess", (_3) => _3.startsWith, "call", (_4) => _4("///")])) { requestUrl = requestUrl.slice(2); } return `${method} ${requestUrl}`; } function urlToOptions(url4) { const options = { protocol: url4.protocol, hostname: typeof url4.hostname === "string" && url4.hostname.startsWith("[") ? url4.hostname.slice(1, -1) : url4.hostname, hash: url4.hash, search: url4.search, pathname: url4.pathname, path: `${url4.pathname || ""}${url4.search || ""}`, href: url4.href }; if (url4.port !== "") { options.port = Number(url4.port); } if (url4.username || url4.password) { options.auth = `${url4.username}:${url4.password}`; } return options; } function normalizeRequestArgs(httpModule, requestArgs) { let callback, requestOptions; if (typeof requestArgs[requestArgs.length - 1] === "function") { callback = requestArgs.pop(); } if (typeof requestArgs[0] === "string") { requestOptions = urlToOptions(new url3.URL(requestArgs[0])); } else if (requestArgs[0] instanceof url3.URL) { requestOptions = urlToOptions(requestArgs[0]); } else { requestOptions = requestArgs[0]; try { const parsed = new url3.URL( requestOptions.path || "", `${requestOptions.protocol || "http:"}//${requestOptions.hostname}` ); requestOptions = { pathname: parsed.pathname, search: parsed.search, hash: parsed.hash, ...requestOptions }; } catch (e2) { } } if (requestArgs.length === 2) { requestOptions = { ...requestOptions, ...requestArgs[1] }; } if (requestOptions.protocol === void 0) { if (nodeVersion.NODE_VERSION.major > 8) { requestOptions.protocol = _optionalChain([_optionalChain([httpModule, "optionalAccess", (_5) => _5.globalAgent]), "optionalAccess", (_6) => _6.protocol]) || _optionalChain([requestOptions.agent, "optionalAccess", (_7) => _7.protocol]) || _optionalChain([requestOptions._defaultAgent, "optionalAccess", (_8) => _8.protocol]); } else { requestOptions.protocol = _optionalChain([requestOptions.agent, "optionalAccess", (_9) => _9.protocol]) || _optionalChain([requestOptions._defaultAgent, "optionalAccess", (_10) => _10.protocol]) || _optionalChain([_optionalChain([httpModule, "optionalAccess", (_11) => _11.globalAgent]), "optionalAccess", (_12) => _12.protocol]); } } if (callback) { return [requestOptions, callback]; } else { return [requestOptions]; } } function parseRequestOptions(requestOptions) { const protocol = requestOptions.protocol || ""; const hostname3 = requestOptions.hostname || requestOptions.host || ""; const port = !requestOptions.port || requestOptions.port === 80 || requestOptions.port === 443 || /^(.*):(\d+)$/.test(hostname3) ? "" : `:${requestOptions.port}`; return { protocol, hostname: hostname3, port }; } exports2.cleanSpanDescription = cleanSpanDescription; exports2.extractRawUrl = extractRawUrl; exports2.extractUrl = extractUrl; exports2.normalizeRequestArgs = normalizeRequestArgs; exports2.urlToOptions = urlToOptions; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/http.js var require_http3 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/http.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build4(); var nodeVersion = require_nodeVersion(); var http3 = require_http2(); var _httpIntegration = (options = {}) => { const { breadcrumbs, tracing, shouldCreateSpanForRequest } = options; const convertedOptions = { breadcrumbs, tracing: tracing === false ? false : utils.dropUndefinedKeys({ // If tracing is forced to `true`, we don't want to set `enableIfHasTracingEnabled` enableIfHasTracingEnabled: tracing === true ? void 0 : true, shouldCreateSpanForRequest }) }; return new Http(convertedOptions); }; var httpIntegration = core.defineIntegration(_httpIntegration); var Http = class _Http { /** * @inheritDoc */ static __initStatic() { this.id = "Http"; } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation __init() { this.name = _Http.id; } /** * @inheritDoc */ constructor(options = {}) { _Http.prototype.__init.call(this); this._breadcrumbs = typeof options.breadcrumbs === "undefined" ? true : options.breadcrumbs; this._tracing = !options.tracing ? void 0 : options.tracing === true ? {} : options.tracing; } /** * @inheritDoc */ setupOnce(_addGlobalEventProcessor, setupOnceGetCurrentHub) { const clientOptions = _optionalChain([setupOnceGetCurrentHub, "call", (_) => _(), "access", (_2) => _2.getClient, "call", (_3) => _3(), "optionalAccess", (_4) => _4.getOptions, "call", (_5) => _5()]); const shouldCreateSpans = _shouldCreateSpans(this._tracing, clientOptions); if (!this._breadcrumbs && !shouldCreateSpans) { return; } if (clientOptions && clientOptions.instrumenter !== "sentry") { debugBuild.DEBUG_BUILD && utils.logger.log("HTTP Integration is skipped because of instrumenter configuration."); return; } const shouldCreateSpanForRequest = _getShouldCreateSpanForRequest(shouldCreateSpans, this._tracing, clientOptions); const tracePropagationTargets = _optionalChain([clientOptions, "optionalAccess", (_6) => _6.tracePropagationTargets]) || _optionalChain([this, "access", (_7) => _7._tracing, "optionalAccess", (_8) => _8.tracePropagationTargets]); const httpModule = __require("http"); const wrappedHttpHandlerMaker = _createWrappedRequestMethodFactory( httpModule, this._breadcrumbs, shouldCreateSpanForRequest, tracePropagationTargets ); utils.fill(httpModule, "get", wrappedHttpHandlerMaker); utils.fill(httpModule, "request", wrappedHttpHandlerMaker); if (nodeVersion.NODE_VERSION.major > 8) { const httpsModule = __require("https"); const wrappedHttpsHandlerMaker = _createWrappedRequestMethodFactory( httpsModule, this._breadcrumbs, shouldCreateSpanForRequest, tracePropagationTargets ); utils.fill(httpsModule, "get", wrappedHttpsHandlerMaker); utils.fill(httpsModule, "request", wrappedHttpsHandlerMaker); } } }; Http.__initStatic(); function _createWrappedRequestMethodFactory(httpModule, breadcrumbsEnabled, shouldCreateSpanForRequest, tracePropagationTargets) { const createSpanUrlMap = new utils.LRUMap(100); const headersUrlMap = new utils.LRUMap(100); const shouldCreateSpan = (url3) => { if (shouldCreateSpanForRequest === void 0) { return true; } const cachedDecision = createSpanUrlMap.get(url3); if (cachedDecision !== void 0) { return cachedDecision; } const decision = shouldCreateSpanForRequest(url3); createSpanUrlMap.set(url3, decision); return decision; }; const shouldAttachTraceData = (url3) => { if (tracePropagationTargets === void 0) { return true; } const cachedDecision = headersUrlMap.get(url3); if (cachedDecision !== void 0) { return cachedDecision; } const decision = utils.stringMatchesSomePattern(url3, tracePropagationTargets); headersUrlMap.set(url3, decision); return decision; }; function addRequestBreadcrumb(event, requestSpanData, req, res) { if (!core.getCurrentHub().getIntegration(Http)) { return; } core.addBreadcrumb( { category: "http", data: { status_code: res && res.statusCode, ...requestSpanData }, type: "http" }, { event, request: req, response: res } ); } return function wrappedRequestMethodFactory(originalRequestMethod) { return function wrappedMethod(...args2) { const requestArgs = http3.normalizeRequestArgs(httpModule, args2); const requestOptions = requestArgs[0]; const rawRequestUrl = http3.extractRawUrl(requestOptions); const requestUrl = http3.extractUrl(requestOptions); const client2 = core.getClient(); if (core.isSentryRequestUrl(requestUrl, client2)) { return originalRequestMethod.apply(httpModule, requestArgs); } const scope = core.getCurrentScope(); const isolationScope = core.getIsolationScope(); const parentSpan = core.getActiveSpan(); const data = getRequestSpanData(requestUrl, requestOptions); const requestSpan = shouldCreateSpan(rawRequestUrl) ? ( // eslint-disable-next-line deprecation/deprecation _optionalChain([parentSpan, "optionalAccess", (_9) => _9.startChild, "call", (_10) => _10({ op: "http.client", origin: "auto.http.node.http", description: `${data["http.method"]} ${data.url}`, data })]) ) : void 0; if (client2 && shouldAttachTraceData(rawRequestUrl)) { const { traceId, spanId, sampled, dsc } = { ...isolationScope.getPropagationContext(), ...scope.getPropagationContext() }; const sentryTraceHeader = requestSpan ? core.spanToTraceHeader(requestSpan) : utils.generateSentryTraceHeader(traceId, spanId, sampled); const sentryBaggageHeader = utils.dynamicSamplingContextToSentryBaggageHeader( dsc || (requestSpan ? core.getDynamicSamplingContextFromSpan(requestSpan) : core.getDynamicSamplingContextFromClient(traceId, client2, scope)) ); addHeadersToRequestOptions(requestOptions, requestUrl, sentryTraceHeader, sentryBaggageHeader); } else { debugBuild.DEBUG_BUILD && utils.logger.log( `[Tracing] Not adding sentry-trace header to outgoing request (${requestUrl}) due to mismatching tracePropagationTargets option.` ); } return originalRequestMethod.apply(httpModule, requestArgs).once("response", function(res) { const req = this; if (breadcrumbsEnabled) { addRequestBreadcrumb("response", data, req, res); } if (requestSpan) { if (res.statusCode) { core.setHttpStatus(requestSpan, res.statusCode); } requestSpan.updateName( http3.cleanSpanDescription(core.spanToJSON(requestSpan).description || "", requestOptions, req) || "" ); requestSpan.end(); } }).once("error", function() { const req = this; if (breadcrumbsEnabled) { addRequestBreadcrumb("error", data, req); } if (requestSpan) { core.setHttpStatus(requestSpan, 500); requestSpan.updateName( http3.cleanSpanDescription(core.spanToJSON(requestSpan).description || "", requestOptions, req) || "" ); requestSpan.end(); } }); }; }; } function addHeadersToRequestOptions(requestOptions, requestUrl, sentryTraceHeader, sentryBaggageHeader) { const headers = requestOptions.headers || {}; if (headers["sentry-trace"]) { return; } debugBuild.DEBUG_BUILD && utils.logger.log(`[Tracing] Adding sentry-trace header ${sentryTraceHeader} to outgoing request to "${requestUrl}": `); requestOptions.headers = { ...requestOptions.headers, "sentry-trace": sentryTraceHeader, // Setting a header to `undefined` will crash in node so we only set the baggage header when it's defined ...sentryBaggageHeader && sentryBaggageHeader.length > 0 && { baggage: normalizeBaggageHeader(requestOptions, sentryBaggageHeader) } }; } function getRequestSpanData(requestUrl, requestOptions) { const method = requestOptions.method || "GET"; const data = { url: requestUrl, "http.method": method }; if (requestOptions.hash) { data["http.fragment"] = requestOptions.hash.substring(1); } if (requestOptions.search) { data["http.query"] = requestOptions.search.substring(1); } return data; } function normalizeBaggageHeader(requestOptions, sentryBaggageHeader) { if (!requestOptions.headers || !requestOptions.headers.baggage) { return sentryBaggageHeader; } else if (!sentryBaggageHeader) { return requestOptions.headers.baggage; } else if (Array.isArray(requestOptions.headers.baggage)) { return [...requestOptions.headers.baggage, sentryBaggageHeader]; } return [requestOptions.headers.baggage, sentryBaggageHeader]; } function _shouldCreateSpans(tracingOptions, clientOptions) { return tracingOptions === void 0 ? false : tracingOptions.enableIfHasTracingEnabled ? core.hasTracingEnabled(clientOptions) : true; } function _getShouldCreateSpanForRequest(shouldCreateSpans, tracingOptions, clientOptions) { const handler = shouldCreateSpans ? ( // eslint-disable-next-line deprecation/deprecation _optionalChain([tracingOptions, "optionalAccess", (_11) => _11.shouldCreateSpanForRequest]) || _optionalChain([clientOptions, "optionalAccess", (_12) => _12.shouldCreateSpanForRequest]) ) : () => false; return handler; } exports2.Http = Http; exports2._getShouldCreateSpanForRequest = _getShouldCreateSpanForRequest; exports2._shouldCreateSpans = _shouldCreateSpans; exports2.httpIntegration = httpIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/common.js var require_common = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/common.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); function createRateLimiter(maxPerSecond, enable3, disable3) { let count = 0; let retrySeconds = 5; let disabledTimeout = 0; setInterval(() => { if (disabledTimeout === 0) { if (count > maxPerSecond) { retrySeconds *= 2; disable3(retrySeconds); if (retrySeconds > 86400) { retrySeconds = 86400; } disabledTimeout = retrySeconds; } } else { disabledTimeout -= 1; if (disabledTimeout === 0) { enable3(); } } count = 0; }, 1e3).unref(); return () => { count += 1; }; } function isAnonymous(name) { return name !== void 0 && (name.length === 0 || name === "?" || name === ""); } function functionNamesMatch(a, b) { return a === b || isAnonymous(a) && isAnonymous(b); } function hashFrames(frames) { if (frames === void 0) { return; } return frames.slice(-10).reduce((acc, frame) => `${acc},${frame.function},${frame.lineno},${frame.colno}`, ""); } function hashFromStack(stackParser, stack2) { if (stack2 === void 0) { return void 0; } return hashFrames(stackParser(stack2, 1)); } exports2.createRateLimiter = createRateLimiter; exports2.functionNamesMatch = functionNamesMatch; exports2.hashFrames = hashFrames; exports2.hashFromStack = hashFromStack; exports2.isAnonymous = isAnonymous; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/local-variables-sync.js var require_local_variables_sync = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/local-variables-sync.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var nodeVersion = require_nodeVersion(); var common2 = require_common(); function createCallbackList(complete) { let callbacks = []; let completedCalled = false; function checkedComplete(result) { callbacks = []; if (completedCalled) { return; } completedCalled = true; complete(result); } callbacks.push(checkedComplete); function add9(fn2) { callbacks.push(fn2); } function next(result) { const popped = callbacks.pop() || checkedComplete; try { popped(result); } catch (_) { checkedComplete(result); } } return { add: add9, next }; } var AsyncSession = class { /** Throws if inspector API is not available */ constructor() { const { Session } = __require("inspector"); this._session = new Session(); } /** @inheritdoc */ configureAndConnect(onPause, captureAll) { this._session.connect(); this._session.on("Debugger.paused", (event) => { onPause(event, () => { this._session.post("Debugger.resume"); }); }); this._session.post("Debugger.enable"); this._session.post("Debugger.setPauseOnExceptions", { state: captureAll ? "all" : "uncaught" }); } setPauseOnExceptions(captureAll) { this._session.post("Debugger.setPauseOnExceptions", { state: captureAll ? "all" : "uncaught" }); } /** @inheritdoc */ getLocalVariables(objectId, complete) { this._getProperties(objectId, (props) => { const { add: add9, next } = createCallbackList(complete); for (const prop of props) { if (_optionalChain([prop, "optionalAccess", (_2) => _2.value, "optionalAccess", (_3) => _3.objectId]) && _optionalChain([prop, "optionalAccess", (_4) => _4.value, "access", (_5) => _5.className]) === "Array") { const id = prop.value.objectId; add9((vars) => this._unrollArray(id, prop.name, vars, next)); } else if (_optionalChain([prop, "optionalAccess", (_6) => _6.value, "optionalAccess", (_7) => _7.objectId]) && _optionalChain([prop, "optionalAccess", (_8) => _8.value, "optionalAccess", (_9) => _9.className]) === "Object") { const id = prop.value.objectId; add9((vars) => this._unrollObject(id, prop.name, vars, next)); } else if (_optionalChain([prop, "optionalAccess", (_10) => _10.value, "optionalAccess", (_11) => _11.value]) != null || _optionalChain([prop, "optionalAccess", (_12) => _12.value, "optionalAccess", (_13) => _13.description]) != null) { add9((vars) => this._unrollOther(prop, vars, next)); } } next({}); }); } /** * Gets all the PropertyDescriptors of an object */ _getProperties(objectId, next) { this._session.post( "Runtime.getProperties", { objectId, ownProperties: true }, (err, params2) => { if (err) { next([]); } else { next(params2.result); } } ); } /** * Unrolls an array property */ _unrollArray(objectId, name, vars, next) { this._getProperties(objectId, (props) => { vars[name] = props.filter((v) => v.name !== "length" && !isNaN(parseInt(v.name, 10))).sort((a, b) => parseInt(a.name, 10) - parseInt(b.name, 10)).map((v) => _optionalChain([v, "optionalAccess", (_14) => _14.value, "optionalAccess", (_15) => _15.value])); next(vars); }); } /** * Unrolls an object property */ _unrollObject(objectId, name, vars, next) { this._getProperties(objectId, (props) => { vars[name] = props.map((v) => [v.name, _optionalChain([v, "optionalAccess", (_16) => _16.value, "optionalAccess", (_17) => _17.value])]).reduce((obj, [key, val]) => { obj[key] = val; return obj; }, {}); next(vars); }); } /** * Unrolls other properties */ _unrollOther(prop, vars, next) { if (_optionalChain([prop, "optionalAccess", (_18) => _18.value, "optionalAccess", (_19) => _19.value]) != null) { vars[prop.name] = prop.value.value; } else if (_optionalChain([prop, "optionalAccess", (_20) => _20.value, "optionalAccess", (_21) => _21.description]) != null && _optionalChain([prop, "optionalAccess", (_22) => _22.value, "optionalAccess", (_23) => _23.type]) !== "function") { vars[prop.name] = `<${prop.value.description}>`; } next(vars); } }; function tryNewAsyncSession() { try { return new AsyncSession(); } catch (e2) { return void 0; } } var INTEGRATION_NAME = "LocalVariables"; var _localVariablesSyncIntegration = (options = {}, session = tryNewAsyncSession()) => { const cachedFrames = new utils.LRUMap(20); let rateLimiter; let shouldProcessEvent = false; function handlePaused(stackParser, { params: { reason, data, callFrames } }, complete) { if (reason !== "exception" && reason !== "promiseRejection") { complete(); return; } _optionalChain([rateLimiter, "optionalCall", (_24) => _24()]); const exceptionHash = common2.hashFromStack(stackParser, _optionalChain([data, "optionalAccess", (_25) => _25.description])); if (exceptionHash == void 0) { complete(); return; } const { add: add9, next } = createCallbackList((frames) => { cachedFrames.set(exceptionHash, frames); complete(); }); for (let i = 0; i < Math.min(callFrames.length, 5); i++) { const { scopeChain, functionName, this: obj } = callFrames[i]; const localScope = scopeChain.find((scope) => scope.type === "local"); const fn2 = obj.className === "global" || !obj.className ? functionName : `${obj.className}.${functionName}`; if (_optionalChain([localScope, "optionalAccess", (_26) => _26.object, "access", (_27) => _27.objectId]) === void 0) { add9((frames) => { frames[i] = { function: fn2 }; next(frames); }); } else { const id = localScope.object.objectId; add9( (frames) => _optionalChain([session, "optionalAccess", (_28) => _28.getLocalVariables, "call", (_29) => _29(id, (vars) => { frames[i] = { function: fn2, vars }; next(frames); })]) ); } } next([]); } function addLocalVariablesToException(exception) { const hash = common2.hashFrames(_optionalChain([exception, "optionalAccess", (_30) => _30.stacktrace, "optionalAccess", (_31) => _31.frames])); if (hash === void 0) { return; } const cachedFrame = cachedFrames.remove(hash); if (cachedFrame === void 0) { return; } const frames = (_optionalChain([exception, "access", (_32) => _32.stacktrace, "optionalAccess", (_33) => _33.frames]) || []).filter((frame) => frame.function !== "new Promise"); for (let i = 0; i < frames.length; i++) { const frameIndex = frames.length - i - 1; if (!frames[frameIndex] || !cachedFrame[i]) { break; } if ( // We need to have vars to add cachedFrame[i].vars === void 0 || // We're not interested in frames that are not in_app because the vars are not relevant frames[frameIndex].in_app === false || // The function names need to match !common2.functionNamesMatch(frames[frameIndex].function, cachedFrame[i].function) ) { continue; } frames[frameIndex].vars = cachedFrame[i].vars; } } function addLocalVariablesToEvent(event) { for (const exception of _optionalChain([event, "optionalAccess", (_34) => _34.exception, "optionalAccess", (_35) => _35.values]) || []) { addLocalVariablesToException(exception); } return event; } return { name: INTEGRATION_NAME, setupOnce() { const client2 = core.getClient(); const clientOptions = _optionalChain([client2, "optionalAccess", (_36) => _36.getOptions, "call", (_37) => _37()]); if (session && _optionalChain([clientOptions, "optionalAccess", (_38) => _38.includeLocalVariables])) { const unsupportedNodeVersion = nodeVersion.NODE_VERSION.major < 18; if (unsupportedNodeVersion) { utils.logger.log("The `LocalVariables` integration is only supported on Node >= v18."); return; } const captureAll = options.captureAllExceptions !== false; session.configureAndConnect( (ev, complete) => handlePaused(clientOptions.stackParser, ev, complete), captureAll ); if (captureAll) { const max = options.maxExceptionsPerSecond || 50; rateLimiter = common2.createRateLimiter( max, () => { utils.logger.log("Local variables rate-limit lifted."); _optionalChain([session, "optionalAccess", (_39) => _39.setPauseOnExceptions, "call", (_40) => _40(true)]); }, (seconds) => { utils.logger.log( `Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${seconds} seconds.` ); _optionalChain([session, "optionalAccess", (_41) => _41.setPauseOnExceptions, "call", (_42) => _42(false)]); } ); } shouldProcessEvent = true; } }, processEvent(event) { if (shouldProcessEvent) { return addLocalVariablesToEvent(event); } return event; }, // These are entirely for testing _getCachedFramesCount() { return cachedFrames.size; }, _getFirstCachedFrame() { return cachedFrames.values()[0]; } }; }; var localVariablesSyncIntegration = core.defineIntegration(_localVariablesSyncIntegration); var LocalVariablesSync = core.convertIntegrationFnToClass( INTEGRATION_NAME, localVariablesSyncIntegration ); exports2.LocalVariablesSync = LocalVariablesSync; exports2.createCallbackList = createCallbackList; exports2.localVariablesSyncIntegration = localVariablesSyncIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/index.js var require_local_variables = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var localVariablesSync = require_local_variables_sync(); var LocalVariables = localVariablesSync.LocalVariablesSync; var localVariablesIntegration = localVariablesSync.localVariablesSyncIntegration; exports2.LocalVariables = LocalVariables; exports2.localVariablesIntegration = localVariablesIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/modules.js var require_modules = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/modules.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var fs15 = __require("fs"); var path11 = __require("path"); var core = require_cjs2(); var moduleCache; var INTEGRATION_NAME = "Modules"; function getPaths() { try { return __require.cache ? Object.keys(__require.cache) : []; } catch (e2) { return []; } } function collectModules() { const mainPaths = __require.main && __require.main.paths || []; const paths = getPaths(); const infos = {}; const seen = {}; paths.forEach((path$1) => { let dir = path$1; const updir = () => { const orig = dir; dir = path11.dirname(orig); if (!dir || orig === dir || seen[orig]) { return void 0; } if (mainPaths.indexOf(dir) < 0) { return updir(); } const pkgfile = path11.join(orig, "package.json"); seen[orig] = true; if (!fs15.existsSync(pkgfile)) { return updir(); } try { const info = JSON.parse(fs15.readFileSync(pkgfile, "utf8")); infos[info.name] = info.version; } catch (_oO) { } }; updir(); }); return infos; } function _getModules() { if (!moduleCache) { moduleCache = collectModules(); } return moduleCache; } var _modulesIntegration = () => { return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event) { event.modules = { ...event.modules, ..._getModules() }; return event; } }; }; var modulesIntegration = core.defineIntegration(_modulesIntegration); var Modules = core.convertIntegrationFnToClass(INTEGRATION_NAME, modulesIntegration); exports2.Modules = Modules; exports2.modulesIntegration = modulesIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/utils/errorhandling.js var require_errorhandling = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/utils/errorhandling.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build4(); var DEFAULT_SHUTDOWN_TIMEOUT = 2e3; function logAndExitProcess(error3) { utils.consoleSandbox(() => { console.error(error3); }); const client2 = core.getClient(); if (client2 === void 0) { debugBuild.DEBUG_BUILD && utils.logger.warn("No NodeClient was defined, we are exiting the process now."); global.process.exit(1); } const options = client2.getOptions(); const timeout = options && options.shutdownTimeout && options.shutdownTimeout > 0 && options.shutdownTimeout || DEFAULT_SHUTDOWN_TIMEOUT; client2.close(timeout).then( (result) => { if (!result) { debugBuild.DEBUG_BUILD && utils.logger.warn("We reached the timeout for emptying the request buffer, still exiting now!"); } global.process.exit(1); }, (error4) => { debugBuild.DEBUG_BUILD && utils.logger.error(error4); } ); } exports2.logAndExitProcess = logAndExitProcess; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/onuncaughtexception.js var require_onuncaughtexception = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/onuncaughtexception.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build4(); var errorhandling = require_errorhandling(); var INTEGRATION_NAME = "OnUncaughtException"; var _onUncaughtExceptionIntegration = (options = {}) => { const _options = { exitEvenIfOtherHandlersAreRegistered: true, ...options }; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { global.process.on("uncaughtException", makeErrorHandler(client2, _options)); } }; }; var onUncaughtExceptionIntegration = core.defineIntegration(_onUncaughtExceptionIntegration); var OnUncaughtException = core.convertIntegrationFnToClass( INTEGRATION_NAME, onUncaughtExceptionIntegration ); function makeErrorHandler(client2, options) { const timeout = 2e3; let caughtFirstError = false; let caughtSecondError = false; let calledFatalError = false; let firstError; const clientOptions = client2.getOptions(); return Object.assign( (error3) => { let onFatalError = errorhandling.logAndExitProcess; if (options.onFatalError) { onFatalError = options.onFatalError; } else if (clientOptions.onFatalError) { onFatalError = clientOptions.onFatalError; } const userProvidedListenersCount = global.process.listeners("uncaughtException").reduce((acc, listener) => { if ( // There are 3 listeners we ignore: listener.name === "domainUncaughtExceptionClear" || // as soon as we're using domains this listener is attached by node itself listener.tag && listener.tag === "sentry_tracingErrorCallback" || // the handler we register for tracing listener._errorHandler ) { return acc; } else { return acc + 1; } }, 0); const processWouldExit = userProvidedListenersCount === 0; const shouldApplyFatalHandlingLogic = options.exitEvenIfOtherHandlersAreRegistered || processWouldExit; if (!caughtFirstError) { firstError = error3; caughtFirstError = true; if (core.getClient() === client2) { core.captureException(error3, { originalException: error3, captureContext: { level: "fatal" }, mechanism: { handled: false, type: "onuncaughtexception" } }); } if (!calledFatalError && shouldApplyFatalHandlingLogic) { calledFatalError = true; onFatalError(error3); } } else { if (shouldApplyFatalHandlingLogic) { if (calledFatalError) { debugBuild.DEBUG_BUILD && utils.logger.warn( "uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown" ); errorhandling.logAndExitProcess(error3); } else if (!caughtSecondError) { caughtSecondError = true; setTimeout(() => { if (!calledFatalError) { calledFatalError = true; onFatalError(firstError, error3); } }, timeout); } } } }, { _errorHandler: true } ); } exports2.OnUncaughtException = OnUncaughtException; exports2.makeErrorHandler = makeErrorHandler; exports2.onUncaughtExceptionIntegration = onUncaughtExceptionIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/onunhandledrejection.js var require_onunhandledrejection = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/onunhandledrejection.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var errorhandling = require_errorhandling(); var INTEGRATION_NAME = "OnUnhandledRejection"; var _onUnhandledRejectionIntegration = (options = {}) => { const mode = options.mode || "warn"; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { global.process.on("unhandledRejection", makeUnhandledPromiseHandler(client2, { mode })); } }; }; var onUnhandledRejectionIntegration = core.defineIntegration(_onUnhandledRejectionIntegration); var OnUnhandledRejection = core.convertIntegrationFnToClass( INTEGRATION_NAME, onUnhandledRejectionIntegration ); function makeUnhandledPromiseHandler(client2, options) { return function sendUnhandledPromise(reason, promise) { if (core.getClient() !== client2) { return; } core.captureException(reason, { originalException: promise, captureContext: { extra: { unhandledPromiseRejection: true } }, mechanism: { handled: false, type: "onunhandledrejection" } }); handleRejection2(reason, options); }; } function handleRejection2(reason, options) { const rejectionWarning = "This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:"; if (options.mode === "warn") { utils.consoleSandbox(() => { console.warn(rejectionWarning); console.error(reason && reason.stack ? reason.stack : reason); }); } else if (options.mode === "strict") { utils.consoleSandbox(() => { console.warn(rejectionWarning); }); errorhandling.logAndExitProcess(reason); } } exports2.OnUnhandledRejection = OnUnhandledRejection; exports2.makeUnhandledPromiseHandler = makeUnhandledPromiseHandler; exports2.onUnhandledRejectionIntegration = onUnhandledRejectionIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/spotlight.js var require_spotlight = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/spotlight.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var http3 = __require("http"); var url3 = __require("url"); var core = require_cjs2(); var utils = require_cjs(); var INTEGRATION_NAME = "Spotlight"; var _spotlightIntegration = (options = {}) => { const _options = { sidecarUrl: options.sidecarUrl || "http://localhost:8969/stream" }; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { if (typeof process === "object" && process.env && process.env.NODE_ENV !== "development") { utils.logger.warn("[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?"); } connectToSpotlight(client2, _options); } }; }; var spotlightIntegration = core.defineIntegration(_spotlightIntegration); var Spotlight = core.convertIntegrationFnToClass(INTEGRATION_NAME, spotlightIntegration); function connectToSpotlight(client2, options) { const spotlightUrl = parseSidecarUrl(options.sidecarUrl); if (!spotlightUrl) { return; } let failedRequests = 0; if (typeof client2.on !== "function") { utils.logger.warn("[Spotlight] Cannot connect to spotlight due to missing method on SDK client (`client.on`)"); return; } client2.on("beforeEnvelope", (envelope) => { if (failedRequests > 3) { utils.logger.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests"); return; } const serializedEnvelope = utils.serializeEnvelope(envelope); const request = getNativeHttpRequest(); const req = request( { method: "POST", path: spotlightUrl.pathname, hostname: spotlightUrl.hostname, port: spotlightUrl.port, headers: { "Content-Type": "application/x-sentry-envelope" } }, (res) => { res.on("data", () => { }); res.on("end", () => { }); res.setEncoding("utf8"); } ); req.on("error", () => { failedRequests++; utils.logger.warn("[Spotlight] Failed to send envelope to Spotlight Sidecar"); }); req.write(serializedEnvelope); req.end(); }); } function parseSidecarUrl(url$1) { try { return new url3.URL(`${url$1}`); } catch (e2) { utils.logger.warn(`[Spotlight] Invalid sidecar URL: ${url$1}`); return void 0; } } function getNativeHttpRequest() { const { request } = http3; if (isWrapped(request)) { return request.__sentry_original__; } return request; } function isWrapped(impl) { return "__sentry_original__" in impl; } exports2.Spotlight = Spotlight; exports2.getNativeHttpRequest = getNativeHttpRequest; exports2.spotlightIntegration = spotlightIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/undici/index.js var require_undici = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/undici/index.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var nodeVersion = require_nodeVersion(); exports2.ChannelName = void 0; (function(ChannelName) { const RequestCreate = "undici:request:create"; ChannelName["RequestCreate"] = RequestCreate; const RequestEnd = "undici:request:headers"; ChannelName["RequestEnd"] = RequestEnd; const RequestError = "undici:request:error"; ChannelName["RequestError"] = RequestError; })(exports2.ChannelName || (exports2.ChannelName = {})); var _nativeNodeFetchintegration = (options) => { return new Undici(options); }; var nativeNodeFetchintegration = core.defineIntegration(_nativeNodeFetchintegration); var Undici = class _Undici { /** * @inheritDoc */ static __initStatic() { this.id = "Undici"; } /** * @inheritDoc */ // eslint-disable-next-line deprecation/deprecation __init() { this.name = _Undici.id; } __init2() { this._createSpanUrlMap = new utils.LRUMap(100); } __init3() { this._headersUrlMap = new utils.LRUMap(100); } constructor(_options = {}) { _Undici.prototype.__init.call(this); _Undici.prototype.__init2.call(this); _Undici.prototype.__init3.call(this); _Undici.prototype.__init4.call(this); _Undici.prototype.__init5.call(this); _Undici.prototype.__init6.call(this); this._options = { breadcrumbs: _options.breadcrumbs === void 0 ? true : _options.breadcrumbs, tracing: _options.tracing, shouldCreateSpanForRequest: _options.shouldCreateSpanForRequest }; } /** * @inheritDoc */ setupOnce(_addGlobalEventProcessor) { if (nodeVersion.NODE_VERSION.major < 16) { return; } let ds; try { ds = __require("diagnostics_channel"); } catch (e2) { } if (!ds || !ds.subscribe) { return; } ds.subscribe(exports2.ChannelName.RequestCreate, this._onRequestCreate); ds.subscribe(exports2.ChannelName.RequestEnd, this._onRequestEnd); ds.subscribe(exports2.ChannelName.RequestError, this._onRequestError); } /** Helper that wraps shouldCreateSpanForRequest option */ _shouldCreateSpan(url3) { if (this._options.tracing === false || this._options.tracing === void 0 && !core.hasTracingEnabled()) { return false; } if (this._options.shouldCreateSpanForRequest === void 0) { return true; } const cachedDecision = this._createSpanUrlMap.get(url3); if (cachedDecision !== void 0) { return cachedDecision; } const decision = this._options.shouldCreateSpanForRequest(url3); this._createSpanUrlMap.set(url3, decision); return decision; } __init4() { this._onRequestCreate = (message2) => { if (!_optionalChain([core.getClient, "call", (_10) => _10(), "optionalAccess", (_11) => _11.getIntegration, "call", (_12) => _12(_Undici)])) { return; } const { request } = message2; const stringUrl = request.origin ? request.origin.toString() + request.path : request.path; const client2 = core.getClient(); if (!client2) { return; } if (core.isSentryRequestUrl(stringUrl, client2) || request.__sentry_span__ !== void 0) { return; } const clientOptions = client2.getOptions(); const scope = core.getCurrentScope(); const isolationScope = core.getIsolationScope(); const parentSpan = core.getActiveSpan(); const span = this._shouldCreateSpan(stringUrl) ? createRequestSpan(parentSpan, request, stringUrl) : void 0; if (span) { request.__sentry_span__ = span; } const shouldAttachTraceData = (url3) => { if (clientOptions.tracePropagationTargets === void 0) { return true; } const cachedDecision = this._headersUrlMap.get(url3); if (cachedDecision !== void 0) { return cachedDecision; } const decision = utils.stringMatchesSomePattern(url3, clientOptions.tracePropagationTargets); this._headersUrlMap.set(url3, decision); return decision; }; if (shouldAttachTraceData(stringUrl)) { const { traceId, spanId, sampled, dsc } = { ...isolationScope.getPropagationContext(), ...scope.getPropagationContext() }; const sentryTraceHeader = span ? core.spanToTraceHeader(span) : utils.generateSentryTraceHeader(traceId, spanId, sampled); const sentryBaggageHeader = utils.dynamicSamplingContextToSentryBaggageHeader( dsc || (span ? core.getDynamicSamplingContextFromSpan(span) : core.getDynamicSamplingContextFromClient(traceId, client2, scope)) ); setHeadersOnRequest(request, sentryTraceHeader, sentryBaggageHeader); } }; } __init5() { this._onRequestEnd = (message2) => { if (!_optionalChain([core.getClient, "call", (_13) => _13(), "optionalAccess", (_14) => _14.getIntegration, "call", (_15) => _15(_Undici)])) { return; } const { request, response } = message2; const stringUrl = request.origin ? request.origin.toString() + request.path : request.path; if (core.isSentryRequestUrl(stringUrl, core.getClient())) { return; } const span = request.__sentry_span__; if (span) { core.setHttpStatus(span, response.statusCode); span.end(); } if (this._options.breadcrumbs) { core.addBreadcrumb( { category: "http", data: { method: request.method, status_code: response.statusCode, url: stringUrl }, type: "http" }, { event: "response", request, response } ); } }; } __init6() { this._onRequestError = (message2) => { if (!_optionalChain([core.getClient, "call", (_16) => _16(), "optionalAccess", (_17) => _17.getIntegration, "call", (_18) => _18(_Undici)])) { return; } const { request } = message2; const stringUrl = request.origin ? request.origin.toString() + request.path : request.path; if (core.isSentryRequestUrl(stringUrl, core.getClient())) { return; } const span = request.__sentry_span__; if (span) { span.setStatus("internal_error"); span.end(); } if (this._options.breadcrumbs) { core.addBreadcrumb( { category: "http", data: { method: request.method, url: stringUrl }, level: "error", type: "http" }, { event: "error", request } ); } }; } }; Undici.__initStatic(); function setHeadersOnRequest(request, sentryTrace, sentryBaggageHeader) { let hasSentryHeaders; if (Array.isArray(request.headers)) { hasSentryHeaders = request.headers.some((headerLine) => headerLine === "sentry-trace"); } else { const headerLines = request.headers.split("\r\n"); hasSentryHeaders = headerLines.some((headerLine) => headerLine.startsWith("sentry-trace:")); } if (hasSentryHeaders) { return; } request.addHeader("sentry-trace", sentryTrace); if (sentryBaggageHeader) { request.addHeader("baggage", sentryBaggageHeader); } } function createRequestSpan(activeSpan, request, stringUrl) { const url3 = utils.parseUrl(stringUrl); const method = request.method || "GET"; const data = { "http.method": method }; if (url3.search) { data["http.query"] = url3.search; } if (url3.hash) { data["http.fragment"] = url3.hash; } return _optionalChain([activeSpan, "optionalAccess", (_19) => _19.startChild, "call", (_20) => _20({ op: "http.client", origin: "auto.http.node.undici", description: `${method} ${utils.getSanitizedUrlString(url3)}`, data })]); } exports2.Undici = Undici; exports2.nativeNodeFetchintegration = nativeNodeFetchintegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/module.js var require_module = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/module.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var path11 = __require("path"); var utils = require_cjs(); function normalizeWindowsPath(path12) { return path12.replace(/^[A-Z]:/, "").replace(/\\/g, "/"); } function createGetModuleFromFilename(basePath2 = process.argv[1] ? utils.dirname(process.argv[1]) : process.cwd(), isWindows = path11.sep === "\\") { const normalizedBase = isWindows ? normalizeWindowsPath(basePath2) : basePath2; return (filename) => { if (!filename) { return; } const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename; let { dir, base: file, ext } = path11.posix.parse(normalizedFilename); if (ext === ".js" || ext === ".mjs" || ext === ".cjs") { file = file.slice(0, ext.length * -1); } if (!dir) { dir = "."; } const n = dir.lastIndexOf("/node_modules"); if (n > -1) { return `${dir.slice(n + 14).replace(/\//g, ".")}:${file}`; } if (dir.startsWith(normalizedBase)) { let moduleName = dir.slice(normalizedBase.length + 1).replace(/\//g, "."); if (moduleName) { moduleName += ":"; } moduleName += file; return moduleName; } return file; }; } exports2.createGetModuleFromFilename = createGetModuleFromFilename; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/sdk.js var require_sdk2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/sdk.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var index$2 = require_async(); var client2 = require_client(); var console2 = require_console2(); var context = require_context(); var contextlines = require_contextlines(); var http3 = require_http3(); var index$1 = require_local_variables(); var modules = require_modules(); var onuncaughtexception = require_onuncaughtexception(); var onunhandledrejection = require_onunhandledrejection(); var spotlight = require_spotlight(); var index = require_undici(); var module$1 = require_module(); var http$1 = require_http(); var defaultIntegrations = [ // Common core.inboundFiltersIntegration(), core.functionToStringIntegration(), core.linkedErrorsIntegration(), core.requestDataIntegration(), // Native Wrappers console2.consoleIntegration(), http3.httpIntegration(), index.nativeNodeFetchintegration(), // Global Handlers onuncaughtexception.onUncaughtExceptionIntegration(), onunhandledrejection.onUnhandledRejectionIntegration(), // Event Info contextlines.contextLinesIntegration(), index$1.localVariablesIntegration(), context.nodeContextIntegration(), modules.modulesIntegration() ]; function getDefaultIntegrations(_options) { const carrier = core.getMainCarrier(); const autoloadedIntegrations = _optionalChain([carrier, "access", (_) => _.__SENTRY__, "optionalAccess", (_2) => _2.integrations]) || []; return [ // eslint-disable-next-line deprecation/deprecation ...defaultIntegrations, ...autoloadedIntegrations ]; } function init2(options = {}) { index$2.setNodeAsyncContextStrategy(); if (options.defaultIntegrations === void 0) { options.defaultIntegrations = getDefaultIntegrations(); } if (options.dsn === void 0 && process.env.SENTRY_DSN) { options.dsn = process.env.SENTRY_DSN; } const sentryTracesSampleRate = process.env.SENTRY_TRACES_SAMPLE_RATE; if (options.tracesSampleRate === void 0 && sentryTracesSampleRate) { const tracesSampleRate = parseFloat(sentryTracesSampleRate); if (isFinite(tracesSampleRate)) { options.tracesSampleRate = tracesSampleRate; } } if (options.release === void 0) { const detectedRelease = getSentryRelease(); if (detectedRelease !== void 0) { options.release = detectedRelease; } else { options.autoSessionTracking = false; } } if (options.environment === void 0 && process.env.SENTRY_ENVIRONMENT) { options.environment = process.env.SENTRY_ENVIRONMENT; } if (options.autoSessionTracking === void 0 && options.dsn !== void 0) { options.autoSessionTracking = true; } if (options.instrumenter === void 0) { options.instrumenter = "sentry"; } const clientOptions = { ...options, stackParser: utils.stackParserFromStackParserOptions(options.stackParser || defaultStackParser), integrations: core.getIntegrationsToSetup(options), transport: options.transport || http$1.makeNodeTransport }; core.initAndBind(options.clientClass || client2.NodeClient, clientOptions); if (options.autoSessionTracking) { startSessionTracking(); } updateScopeFromEnvVariables(); if (options.spotlight) { const client3 = core.getClient(); if (client3 && client3.addIntegration) { const integrations = client3.getOptions().integrations; for (const integration of integrations) { client3.addIntegration(integration); } client3.addIntegration( spotlight.spotlightIntegration({ sidecarUrl: typeof options.spotlight === "string" ? options.spotlight : void 0 }) ); } } } function isAutoSessionTrackingEnabled(client3) { if (client3 === void 0) { return false; } const clientOptions = client3 && client3.getOptions(); if (clientOptions && clientOptions.autoSessionTracking !== void 0) { return clientOptions.autoSessionTracking; } return false; } function getSentryRelease(fallback) { if (process.env.SENTRY_RELEASE) { return process.env.SENTRY_RELEASE; } if (utils.GLOBAL_OBJ.SENTRY_RELEASE && utils.GLOBAL_OBJ.SENTRY_RELEASE.id) { return utils.GLOBAL_OBJ.SENTRY_RELEASE.id; } return ( // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables process.env.GITHUB_SHA || // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata process.env.COMMIT_REF || // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables process.env.VERCEL_GIT_COMMIT_SHA || process.env.VERCEL_GITHUB_COMMIT_SHA || process.env.VERCEL_GITLAB_COMMIT_SHA || process.env.VERCEL_BITBUCKET_COMMIT_SHA || // Zeit (now known as Vercel) process.env.ZEIT_GITHUB_COMMIT_SHA || process.env.ZEIT_GITLAB_COMMIT_SHA || process.env.ZEIT_BITBUCKET_COMMIT_SHA || // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables process.env.CF_PAGES_COMMIT_SHA || fallback ); } var defaultStackParser = utils.createStackParser(utils.nodeStackLineParser(module$1.createGetModuleFromFilename())); function startSessionTracking() { core.startSession(); process.on("beforeExit", () => { const session = core.getIsolationScope().getSession(); const terminalStates = ["exited", "crashed"]; if (session && !terminalStates.includes(session.status)) { core.endSession(); } }); } function updateScopeFromEnvVariables() { const sentryUseEnvironment = (process.env.SENTRY_USE_ENVIRONMENT || "").toLowerCase(); if (!["false", "n", "no", "off", "0"].includes(sentryUseEnvironment)) { const sentryTraceEnv = process.env.SENTRY_TRACE; const baggageEnv = process.env.SENTRY_BAGGAGE; const propagationContext = utils.propagationContextFromHeaders(sentryTraceEnv, baggageEnv); core.getCurrentScope().setPropagationContext(propagationContext); } } exports2.defaultIntegrations = defaultIntegrations; exports2.defaultStackParser = defaultStackParser; exports2.getDefaultIntegrations = getDefaultIntegrations; exports2.getSentryRelease = getSentryRelease; exports2.init = init2; exports2.isAutoSessionTrackingEnabled = isAutoSessionTrackingEnabled; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/utils.js var require_utils6 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/utils.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var fs15 = __require("fs"); var path11 = __require("path"); function deepReadDirSync(targetDir) { const targetDirAbsPath = path11.resolve(targetDir); if (!fs15.existsSync(targetDirAbsPath)) { throw new Error(`Cannot read contents of ${targetDirAbsPath}. Directory does not exist.`); } if (!fs15.statSync(targetDirAbsPath).isDirectory()) { throw new Error(`Cannot read contents of ${targetDirAbsPath}, because it is not a directory.`); } const deepReadCurrentDir = (currentDirAbsPath) => { return fs15.readdirSync(currentDirAbsPath).reduce((absPaths, itemName) => { const itemAbsPath = path11.join(currentDirAbsPath, itemName); if (fs15.statSync(itemAbsPath).isDirectory()) { return absPaths.concat(deepReadCurrentDir(itemAbsPath)); } absPaths.push(itemAbsPath); return absPaths; }, []); }; return deepReadCurrentDir(targetDirAbsPath).map((absPath) => path11.relative(targetDirAbsPath, absPath)); } exports2.deepReadDirSync = deepReadDirSync; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/worker-script.js var require_worker_script = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/worker-script.js"(exports2) { exports2.base64WorkerScript = "aW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJ2luc3BlY3Rvcic7CmltcG9ydCB7IHdvcmtlckRhdGEsIHBhcmVudFBvcnQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcyc7CmltcG9ydCB7IHBvc2l4LCBzZXAgfSBmcm9tICdwYXRoJzsKaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJzsKaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnOwppbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7CmltcG9ydCB7IFVSTCB9IGZyb20gJ3VybCc7CmltcG9ydCB7IGNyZWF0ZUd6aXAgfSBmcm9tICd6bGliJzsKaW1wb3J0ICogYXMgbmV0IGZyb20gJ25ldCc7CmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnOwoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZApjb25zdCBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIG9uZSBvZiBhIGZldyBFcnJvciBvciBFcnJvci1saWtlCiAqIHtAbGluayBpc0Vycm9yfS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXJyb3Iod2F0KSB7CiAgc3dpdGNoIChvYmplY3RUb1N0cmluZy5jYWxsKHdhdCkpIHsKICAgIGNhc2UgJ1tvYmplY3QgRXJyb3JdJzoKICAgIGNhc2UgJ1tvYmplY3QgRXhjZXB0aW9uXSc6CiAgICBjYXNlICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nOgogICAgICByZXR1cm4gdHJ1ZTsKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybiBpc0luc3RhbmNlT2Yod2F0LCBFcnJvcik7CiAgfQp9Ci8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgZ2l2ZW4gYnVpbHQtaW4gY2xhc3MuCiAqCiAqIEBwYXJhbSB3YXQgVGhlIHZhbHVlIHRvIGJlIGNoZWNrZWQKICogQHBhcmFtIGNsYXNzTmFtZQogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0J1aWx0aW4od2F0LCBjbGFzc05hbWUpIHsKICByZXR1cm4gb2JqZWN0VG9TdHJpbmcuY2FsbCh3YXQpID09PSBgW29iamVjdCAke2NsYXNzTmFtZX1dYDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIHN0cmluZwogKiB7QGxpbmsgaXNTdHJpbmd9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNTdHJpbmcod2F0KSB7CiAgcmV0dXJuIGlzQnVpbHRpbih3YXQsICdTdHJpbmcnKTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBvYmplY3QgbGl0ZXJhbCwgb3IgYSBjbGFzcyBpbnN0YW5jZS4KICoge0BsaW5rIGlzUGxhaW5PYmplY3R9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh3YXQpIHsKICByZXR1cm4gaXNCdWlsdGluKHdhdCwgJ09iamVjdCcpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEV2ZW50IGluc3RhbmNlCiAqIHtAbGluayBpc0V2ZW50fS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXZlbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHdhdCwgRXZlbnQpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEVsZW1lbnQgaW5zdGFuY2UKICoge0BsaW5rIGlzRWxlbWVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0VsZW1lbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBpc0luc3RhbmNlT2Yod2F0LCBFbGVtZW50KTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlIGhhcyBhIHRoZW4gZnVuY3Rpb24uCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKi8KZnVuY3Rpb24gaXNUaGVuYWJsZSh3YXQpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgcmV0dXJuIEJvb2xlYW4od2F0ICYmIHdhdC50aGVuICYmIHR5cGVvZiB3YXQudGhlbiA9PT0gJ2Z1bmN0aW9uJyk7Cn0KCi8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSdzIHR5cGUgaXMgYSBTeW50aGV0aWNFdmVudAogKiB7QGxpbmsgaXNTeW50aGV0aWNFdmVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1N5bnRoZXRpY0V2ZW50KHdhdCkgewogIHJldHVybiBpc1BsYWluT2JqZWN0KHdhdCkgJiYgJ25hdGl2ZUV2ZW50JyBpbiB3YXQgJiYgJ3ByZXZlbnREZWZhdWx0JyBpbiB3YXQgJiYgJ3N0b3BQcm9wYWdhdGlvbicgaW4gd2F0Owp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUgaXMgTmFOCiAqIHtAbGluayBpc05hTn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc05hTiQxKHdhdCkgewogIHJldHVybiB0eXBlb2Ygd2F0ID09PSAnbnVtYmVyJyAmJiB3YXQgIT09IHdhdDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiBwcm92aWRlZCBjb25zdHJ1Y3Rvci4KICoge0BsaW5rIGlzSW5zdGFuY2VPZn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcGFyYW0gYmFzZSBBIGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQgaW4gYSBjaGVjay4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNJbnN0YW5jZU9mKHdhdCwgYmFzZSkgewogIHRyeSB7CiAgICByZXR1cm4gd2F0IGluc3RhbmNlb2YgYmFzZTsKICB9IGNhdGNoIChfZSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIFZ1ZSBWaWV3TW9kZWwuCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1Z1ZVZpZXdNb2RlbCh3YXQpIHsKICAvLyBOb3QgdXNpbmcgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBiZWNhdXNlIGluIFZ1ZSAzIGl0IHdvdWxkIHJlYWQgdGhlIGluc3RhbmNlJ3MgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykgcHJvcGVydHkuCiAgcmV0dXJuICEhKHR5cGVvZiB3YXQgPT09ICdvYmplY3QnICYmIHdhdCAhPT0gbnVsbCAmJiAoKHdhdCApLl9faXNWdWUgfHwgKHdhdCApLl9pc1Z1ZSkpOwp9CgovKiogSW50ZXJuYWwgZ2xvYmFsIHdpdGggY29tbW9uIHByb3BlcnRpZXMgYW5kIFNlbnRyeSBleHRlbnNpb25zICAqLwoKLy8gVGhlIGNvZGUgYmVsb3cgZm9yICdpc0dsb2JhbE9iaicgYW5kICdHTE9CQUxfT0JKJyB3YXMgY29waWVkIGZyb20gY29yZS1qcyBiZWZvcmUgbW9kaWZpY2F0aW9uCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvMWI5NDRkZjU1MjgyY2RjOTljOTBkYjVmNDllYjBiNmVkYTJjYzBhMy9wYWNrYWdlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMKLy8gY29yZS1qcyBoYXMgdGhlIGZvbGxvd2luZyBsaWNlbmNlOgovLwovLyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYKLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQovLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAovLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgovLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgovLyBUSEUgU09GVFdBUkUuCgovKiogUmV0dXJucyAnb2JqJyBpZiBpdCdzIHRoZSBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWQgKi8KZnVuY3Rpb24gaXNHbG9iYWxPYmoob2JqKSB7CiAgcmV0dXJuIG9iaiAmJiBvYmouTWF0aCA9PSBNYXRoID8gb2JqIDogdW5kZWZpbmVkOwp9CgovKiogR2V0J3MgdGhlIGdsb2JhbCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IEphdmFTY3JpcHQgcnVudGltZSAqLwpjb25zdCBHTE9CQUxfT0JKID0KICAodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgaXNHbG9iYWxPYmooZ2xvYmFsVGhpcykpIHx8CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscwogICh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHdpbmRvdykpIHx8CiAgKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHNlbGYpKSB8fAogICh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKGdsb2JhbCkpIHx8CiAgKGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzOwogIH0pKCkgfHwKICB7fTsKCi8qKgogKiBAZGVwcmVjYXRlZCBVc2UgR0xPQkFMX09CSiBpbnN0ZWFkIG9yIFdJTkRPVyBmcm9tIEBzZW50cnkvYnJvd3Nlci4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjgKICovCmZ1bmN0aW9uIGdldEdsb2JhbE9iamVjdCgpIHsKICByZXR1cm4gR0xPQkFMX09CSiA7Cn0KCi8qKgogKiBSZXR1cm5zIGEgZ2xvYmFsIHNpbmdsZXRvbiBjb250YWluZWQgaW4gdGhlIGdsb2JhbCBgX19TRU5UUllfX2Agb2JqZWN0LgogKgogKiBJZiB0aGUgc2luZ2xldG9uIGRvZXNuJ3QgYWxyZWFkeSBleGlzdCBpbiBgX19TRU5UUllfX2AsIGl0IHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUgZ2l2ZW4gZmFjdG9yeQogKiBmdW5jdGlvbiBhbmQgYWRkZWQgdG8gdGhlIGBfX1NFTlRSWV9fYCBvYmplY3QuCiAqCiAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgdGhlIGdsb2JhbCBzaW5nbGV0b24gb24gX19TRU5UUllfXwogKiBAcGFyYW0gY3JlYXRvciBjcmVhdG9yIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBzaW5nbGV0b24gaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0IG9uIGBfX1NFTlRSWV9fYAogKiBAcGFyYW0gb2JqIChPcHRpb25hbCkgVGhlIGdsb2JhbCBvYmplY3Qgb24gd2hpY2ggdG8gbG9vayBmb3IgYF9fU0VOVFJZX19gLCBpZiBub3QgYEdMT0JBTF9PQkpgJ3MgcmV0dXJuIHZhbHVlCiAqIEByZXR1cm5zIHRoZSBzaW5nbGV0b24KICovCmZ1bmN0aW9uIGdldEdsb2JhbFNpbmdsZXRvbihuYW1lLCBjcmVhdG9yLCBvYmopIHsKICBjb25zdCBnYmwgPSAob2JqIHx8IEdMT0JBTF9PQkopIDsKICBjb25zdCBfX1NFTlRSWV9fID0gKGdibC5fX1NFTlRSWV9fID0gZ2JsLl9fU0VOVFJZX18gfHwge30pOwogIGNvbnN0IHNpbmdsZXRvbiA9IF9fU0VOVFJZX19bbmFtZV0gfHwgKF9fU0VOVFJZX19bbmFtZV0gPSBjcmVhdG9yKCkpOwogIHJldHVybiBzaW5nbGV0b247Cn0KCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpjb25zdCBXSU5ET1cgPSBnZXRHbG9iYWxPYmplY3QoKTsKCmNvbnN0IERFRkFVTFRfTUFYX1NUUklOR19MRU5HVEggPSA4MDsKCi8qKgogKiBHaXZlbiBhIGNoaWxkIERPTSBlbGVtZW50LCByZXR1cm5zIGEgcXVlcnktc2VsZWN0b3Igc3RhdGVtZW50IGRlc2NyaWJpbmcgdGhhdAogKiBhbmQgaXRzIGFuY2VzdG9ycwogKiBlLmcuIFtIVE1MRWxlbWVudF0gPT4gYm9keSA+IGRpdiA+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gaHRtbFRyZWVBc1N0cmluZygKICBlbGVtLAogIG9wdGlvbnMgPSB7fSwKKSB7CiAgaWYgKCFlbGVtKSB7CiAgICByZXR1cm4gJzx1bmtub3duPic7CiAgfQoKICAvLyB0cnkvY2F0Y2ggYm90aDoKICAvLyAtIGFjY2Vzc2luZyBldmVudC50YXJnZXQgKHNlZSBnZXRzZW50cnkvcmF2ZW4tanMjODM4LCAjNzY4KQogIC8vIC0gYGh0bWxUcmVlQXNTdHJpbmdgIGJlY2F1c2UgaXQncyBjb21wbGV4LCBhbmQganVzdCBhY2Nlc3NpbmcgdGhlIERPTSBpbmNvcnJlY3RseQogIC8vIC0gY2FuIHRocm93IGFuIGV4Y2VwdGlvbiBpbiBzb21lIGNpcmN1bXN0YW5jZXMuCiAgdHJ5IHsKICAgIGxldCBjdXJyZW50RWxlbSA9IGVsZW0gOwogICAgY29uc3QgTUFYX1RSQVZFUlNFX0hFSUdIVCA9IDU7CiAgICBjb25zdCBvdXQgPSBbXTsKICAgIGxldCBoZWlnaHQgPSAwOwogICAgbGV0IGxlbiA9IDA7CiAgICBjb25zdCBzZXBhcmF0b3IgPSAnID4gJzsKICAgIGNvbnN0IHNlcExlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7CiAgICBsZXQgbmV4dFN0cjsKICAgIGNvbnN0IGtleUF0dHJzID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBvcHRpb25zLmtleUF0dHJzOwogICAgY29uc3QgbWF4U3RyaW5nTGVuZ3RoID0gKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoKSB8fCBERUZBVUxUX01BWF9TVFJJTkdfTEVOR1RIOwoKICAgIHdoaWxlIChjdXJyZW50RWxlbSAmJiBoZWlnaHQrKyA8IE1BWF9UUkFWRVJTRV9IRUlHSFQpIHsKICAgICAgbmV4dFN0ciA9IF9odG1sRWxlbWVudEFzU3RyaW5nKGN1cnJlbnRFbGVtLCBrZXlBdHRycyk7CiAgICAgIC8vIGJhaWwgb3V0IGlmCiAgICAgIC8vIC0gbmV4dFN0ciBpcyB0aGUgJ2h0bWwnIGVsZW1lbnQKICAgICAgLy8gLSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgdGhhdCB3b3VsZCBiZSBjcmVhdGVkIGV4Y2VlZHMgbWF4U3RyaW5nTGVuZ3RoCiAgICAgIC8vICAgKGlnbm9yZSB0aGlzIGxpbWl0IGlmIHdlIGFyZSBvbiB0aGUgZmlyc3QgaXRlcmF0aW9uKQogICAgICBpZiAobmV4dFN0ciA9PT0gJ2h0bWwnIHx8IChoZWlnaHQgPiAxICYmIGxlbiArIG91dC5sZW5ndGggKiBzZXBMZW5ndGggKyBuZXh0U3RyLmxlbmd0aCA+PSBtYXhTdHJpbmdMZW5ndGgpKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIG91dC5wdXNoKG5leHRTdHIpOwoKICAgICAgbGVuICs9IG5leHRTdHIubGVuZ3RoOwogICAgICBjdXJyZW50RWxlbSA9IGN1cnJlbnRFbGVtLnBhcmVudE5vZGU7CiAgICB9CgogICAgcmV0dXJuIG91dC5yZXZlcnNlKCkuam9pbihzZXBhcmF0b3IpOwogIH0gY2F0Y2ggKF9vTykgewogICAgcmV0dXJuICc8dW5rbm93bj4nOwogIH0KfQoKLyoqCiAqIFJldHVybnMgYSBzaW1wbGUsIHF1ZXJ5LXNlbGVjdG9yIHJlcHJlc2VudGF0aW9uIG9mIGEgRE9NIGVsZW1lbnQKICogZS5nLiBbSFRNTEVsZW1lbnRdID0+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gX2h0bWxFbGVtZW50QXNTdHJpbmcoZWwsIGtleUF0dHJzKSB7CiAgY29uc3QgZWxlbSA9IGVsCgo7CgogIGNvbnN0IG91dCA9IFtdOwogIGxldCBjbGFzc05hbWU7CiAgbGV0IGNsYXNzZXM7CiAgbGV0IGtleTsKICBsZXQgYXR0cjsKICBsZXQgaTsKCiAgaWYgKCFlbGVtIHx8ICFlbGVtLnRhZ05hbWUpIHsKICAgIHJldHVybiAnJzsKICB9CgogIC8vIEB0cy1leHBlY3QtZXJyb3IgV0lORE9XIGhhcyBIVE1MRWxlbWVudAogIGlmIChXSU5ET1cuSFRNTEVsZW1lbnQpIHsKICAgIC8vIElmIHVzaW5nIHRoZSBjb21wb25lbnQgbmFtZSBhbm5vdGF0aW9uIHBsdWdpbiwgdGhpcyB2YWx1ZSBtYXkgYmUgYXZhaWxhYmxlIG9uIHRoZSBET00gbm9kZQogICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBlbGVtLmRhdGFzZXQgJiYgZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXSkgewogICAgICByZXR1cm4gZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXTsKICAgIH0KICB9CgogIG91dC5wdXNoKGVsZW0udGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKCiAgLy8gUGFpcnMgb2YgYXR0cmlidXRlIGtleXMgZGVmaW5lZCBpbiBgc2VyaWFsaXplQXR0cmlidXRlYCBhbmQgdGhlaXIgdmFsdWVzIG9uIGVsZW1lbnQuCiAgY29uc3Qga2V5QXR0clBhaXJzID0KICAgIGtleUF0dHJzICYmIGtleUF0dHJzLmxlbmd0aAogICAgICA/IGtleUF0dHJzLmZpbHRlcihrZXlBdHRyID0+IGVsZW0uZ2V0QXR0cmlidXRlKGtleUF0dHIpKS5tYXAoa2V5QXR0ciA9PiBba2V5QXR0ciwgZWxlbS5nZXRBdHRyaWJ1dGUoa2V5QXR0cildKQogICAgICA6IG51bGw7CgogIGlmIChrZXlBdHRyUGFpcnMgJiYga2V5QXR0clBhaXJzLmxlbmd0aCkgewogICAga2V5QXR0clBhaXJzLmZvckVhY2goa2V5QXR0clBhaXIgPT4gewogICAgICBvdXQucHVzaChgWyR7a2V5QXR0clBhaXJbMF19PSIke2tleUF0dHJQYWlyWzFdfSJdYCk7CiAgICB9KTsKICB9IGVsc2UgewogICAgaWYgKGVsZW0uaWQpIHsKICAgICAgb3V0LnB1c2goYCMke2VsZW0uaWR9YCk7CiAgICB9CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdAogICAgY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWU7CiAgICBpZiAoY2xhc3NOYW1lICYmIGlzU3RyaW5nKGNsYXNzTmFtZSkpIHsKICAgICAgY2xhc3NlcyA9IGNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3V0LnB1c2goYC4ke2NsYXNzZXNbaV19YCk7CiAgICAgIH0KICAgIH0KICB9CiAgY29uc3QgYWxsb3dlZEF0dHJzID0gWydhcmlhLWxhYmVsJywgJ3R5cGUnLCAnbmFtZScsICd0aXRsZScsICdhbHQnXTsKICBmb3IgKGkgPSAwOyBpIDwgYWxsb3dlZEF0dHJzLmxlbmd0aDsgaSsrKSB7CiAgICBrZXkgPSBhbGxvd2VkQXR0cnNbaV07CiAgICBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoa2V5KTsKICAgIGlmIChhdHRyKSB7CiAgICAgIG91dC5wdXNoKGBbJHtrZXl9PSIke2F0dHJ9Il1gKTsKICAgIH0KICB9CiAgcmV0dXJuIG91dC5qb2luKCcnKTsKfQoKLyoqCiAqIFRoaXMgc2VydmVzIGFzIGEgYnVpbGQgdGltZSBmbGFnIHRoYXQgd2lsbCBiZSB0cnVlIGJ5IGRlZmF1bHQsIGJ1dCBmYWxzZSBpbiBub24tZGVidWcgYnVpbGRzIG9yIGlmIHVzZXJzIHJlcGxhY2UgYF9fU0VOVFJZX0RFQlVHX19gIGluIHRoZWlyIGdlbmVyYXRlZCBjb2RlLgogKgogKiBBVFRFTlRJT046IFRoaXMgY29uc3RhbnQgbXVzdCBuZXZlciBjcm9zcyBwYWNrYWdlIGJvdW5kYXJpZXMgKGkuZS4gYmUgZXhwb3J0ZWQpIHRvIGd1YXJhbnRlZSB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciB0cmVlIHNoYWtpbmcuCiAqLwpjb25zdCBERUJVR19CVUlMRCQxID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCi8qKiBQcmVmaXggZm9yIGxvZ2dpbmcgc3RyaW5ncyAqLwpjb25zdCBQUkVGSVggPSAnU2VudHJ5IExvZ2dlciAnOwoKY29uc3QgQ09OU09MRV9MRVZFTFMgPSBbCiAgJ2RlYnVnJywKICAnaW5mbycsCiAgJ3dhcm4nLAogICdlcnJvcicsCiAgJ2xvZycsCiAgJ2Fzc2VydCcsCiAgJ3RyYWNlJywKXSA7CgovKiogVGhpcyBtYXkgYmUgbXV0YXRlZCBieSB0aGUgY29uc29sZSBpbnN0cnVtZW50YXRpb24uICovCmNvbnN0IG9yaWdpbmFsQ29uc29sZU1ldGhvZHMKCiA9IHt9OwoKLyoqIEpTRG9jICovCgovKioKICogVGVtcG9yYXJpbHkgZGlzYWJsZSBzZW50cnkgY29uc29sZSBpbnN0cnVtZW50YXRpb25zLgogKgogKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIHJ1biBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBgY29uc29sZWAgbWVzc2FnZXMKICogQHJldHVybnMgVGhlIHJlc3VsdHMgb2YgdGhlIGNhbGxiYWNrCiAqLwpmdW5jdGlvbiBjb25zb2xlU2FuZGJveChjYWxsYmFjaykgewogIGlmICghKCdjb25zb2xlJyBpbiBHTE9CQUxfT0JKKSkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfQoKICBjb25zdCBjb25zb2xlID0gR0xPQkFMX09CSi5jb25zb2xlIDsKICBjb25zdCB3cmFwcGVkRnVuY3MgPSB7fTsKCiAgY29uc3Qgd3JhcHBlZExldmVscyA9IE9iamVjdC5rZXlzKG9yaWdpbmFsQ29uc29sZU1ldGhvZHMpIDsKCiAgLy8gUmVzdG9yZSBhbGwgd3JhcHBlZCBjb25zb2xlIG1ldGhvZHMKICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgY29uc3Qgb3JpZ2luYWxDb25zb2xlTWV0aG9kID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kc1tsZXZlbF0gOwogICAgd3JhcHBlZEZ1bmNzW2xldmVsXSA9IGNvbnNvbGVbbGV2ZWxdIDsKICAgIGNvbnNvbGVbbGV2ZWxdID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kOwogIH0pOwoKICB0cnkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfSBmaW5hbGx5IHsKICAgIC8vIFJldmVydCByZXN0b3JhdGlvbiB0byB3cmFwcGVkIHN0YXRlCiAgICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgICBjb25zb2xlW2xldmVsXSA9IHdyYXBwZWRGdW5jc1tsZXZlbF0gOwogICAgfSk7CiAgfQp9CgpmdW5jdGlvbiBtYWtlTG9nZ2VyKCkgewogIGxldCBlbmFibGVkID0gZmFsc2U7CiAgY29uc3QgbG9nZ2VyID0gewogICAgZW5hYmxlOiAoKSA9PiB7CiAgICAgIGVuYWJsZWQgPSB0cnVlOwogICAgfSwKICAgIGRpc2FibGU6ICgpID0+IHsKICAgICAgZW5hYmxlZCA9IGZhbHNlOwogICAgfSwKICAgIGlzRW5hYmxlZDogKCkgPT4gZW5hYmxlZCwKICB9OwoKICBpZiAoREVCVUdfQlVJTEQkMSkgewogICAgQ09OU09MRV9MRVZFTFMuZm9yRWFjaChuYW1lID0+IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgICAgbG9nZ2VyW25hbWVdID0gKC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICAgY29uc29sZVNhbmRib3goKCkgPT4gewogICAgICAgICAgICBHTE9CQUxfT0JKLmNvbnNvbGVbbmFtZV0oYCR7UFJFRklYfVske25hbWV9XTpgLCAuLi5hcmdzKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfTsKICAgIH0pOwogIH0gZWxzZSB7CiAgICBDT05TT0xFX0xFVkVMUy5mb3JFYWNoKG5hbWUgPT4gewogICAgICBsb2dnZXJbbmFtZV0gPSAoKSA9PiB1bmRlZmluZWQ7CiAgICB9KTsKICB9CgogIHJldHVybiBsb2dnZXIgOwp9Cgpjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKCk7CgovKioKICogUmVuZGVycyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHNuLgogKgogKiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgcmVuZGVyIHRoZSBwdWJsaWMgcmVwcmVzZW50YXRpb24gd2l0aG91dCB0aGUgcGFzc3dvcmQKICogY29tcG9uZW50LiBUbyBnZXQgdGhlIGRlcHJlY2F0ZWQgcHJpdmF0ZSByZXByZXNlbnRhdGlvbiwgc2V0IGB3aXRoUGFzc3dvcmRgCiAqIHRvIHRydWUuCiAqCiAqIEBwYXJhbSB3aXRoUGFzc3dvcmQgV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHBhc3N3b3JkIHdpbGwgYmUgaW5jbHVkZWQuCiAqLwpmdW5jdGlvbiBkc25Ub1N0cmluZyhkc24sIHdpdGhQYXNzd29yZCA9IGZhbHNlKSB7CiAgY29uc3QgeyBob3N0LCBwYXRoLCBwYXNzLCBwb3J0LCBwcm9qZWN0SWQsIHByb3RvY29sLCBwdWJsaWNLZXkgfSA9IGRzbjsKICByZXR1cm4gKAogICAgYCR7cHJvdG9jb2x9Oi8vJHtwdWJsaWNLZXl9JHt3aXRoUGFzc3dvcmQgJiYgcGFzcyA/IGA6JHtwYXNzfWAgOiAnJ31gICsKICAgIGBAJHtob3N0fSR7cG9ydCA/IGA6JHtwb3J0fWAgOiAnJ30vJHtwYXRoID8gYCR7cGF0aH0vYCA6IHBhdGh9JHtwcm9qZWN0SWR9YAogICk7Cn0KCi8qKiBBbiBlcnJvciBlbWl0dGVkIGJ5IFNlbnRyeSBTREtzIGFuZCByZWxhdGVkIHV0aWxpdGllcy4gKi8KY2xhc3MgU2VudHJ5RXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgLyoqIERpc3BsYXkgbmFtZSBvZiB0aGlzIGVycm9yIGluc3RhbmNlLiAqLwoKICAgY29uc3RydWN0b3IoIG1lc3NhZ2UsIGxvZ0xldmVsID0gJ3dhcm4nKSB7CiAgICBzdXBlcihtZXNzYWdlKTt0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgdGhpcy5uYW1lID0gbmV3LnRhcmdldC5wcm90b3R5cGUuY29uc3RydWN0b3IubmFtZTsKICAgIC8vIFRoaXMgc2V0cyB0aGUgcHJvdG90eXBlIHRvIGJlIGBFcnJvcmAsIG5vdCBgU2VudHJ5RXJyb3JgLiBJdCdzIHVuY2xlYXIgd2h5IHdlIGRvIHRoaXMsIGJ1dCBjb21tZW50aW5nIHRoaXMgbGluZQogICAgLy8gb3V0IGNhdXNlcyB2YXJpb3VzIChzZWVtaW5nbHkgdG90YWxseSB1bnJlbGF0ZWQpIHBsYXl3cmlnaHQgdGVzdHMgY29uc2lzdGVudGx5IHRpbWUgb3V0LiBGWUksIHRoaXMgbWFrZXMKICAgIC8vIGluc3RhbmNlcyBvZiBgU2VudHJ5RXJyb3JgIGZhaWwgYG9iaiBpbnN0YW5jZW9mIFNlbnRyeUVycm9yYCBjaGVja3MuCiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOwogICAgdGhpcy5sb2dMZXZlbCA9IGxvZ0xldmVsOwogIH0KfQoKLyoqCiAqIEVuY29kZXMgZ2l2ZW4gb2JqZWN0IGludG8gdXJsLWZyaWVuZGx5IGZvcm1hdAogKgogKiBAcGFyYW0gb2JqZWN0IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHNlcmlhbGl6YWJsZSB2YWx1ZXMKICogQHJldHVybnMgc3RyaW5nIEVuY29kZWQKICovCmZ1bmN0aW9uIHVybEVuY29kZShvYmplY3QpIHsKICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KQogICAgLm1hcChrZXkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9iamVjdFtrZXldKX1gKQogICAgLmpvaW4oJyYnKTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYW55IGBFcnJvcmAgb3IgYEV2ZW50YCBpbnRvIGEgcGxhaW4gb2JqZWN0IHdpdGggYWxsIG9mIHRoZWlyIGVudW1lcmFibGUgcHJvcGVydGllcywgYW5kIHNvbWUgb2YgdGhlaXIKICogbm9uLWVudW1lcmFibGUgcHJvcGVydGllcyBhdHRhY2hlZC4KICoKICogQHBhcmFtIHZhbHVlIEluaXRpYWwgc291cmNlIHRoYXQgd2UgaGF2ZSB0byB0cmFuc2Zvcm0gaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHVzYWJsZSBieSB0aGUgc2VyaWFsaXplcgogKiBAcmV0dXJucyBBbiBFdmVudCBvciBFcnJvciB0dXJuZWQgaW50byBhbiBvYmplY3QgLSBvciB0aGUgdmFsdWUgYXJndXJtZW50IGl0c2VsZiwgd2hlbiB2YWx1ZSBpcyBuZWl0aGVyIGFuIEV2ZW50IG5vcgogKiAgYW4gRXJyb3IuCiAqLwpmdW5jdGlvbiBjb252ZXJ0VG9QbGFpbk9iamVjdCgKICB2YWx1ZSwKKQoKIHsKICBpZiAoaXNFcnJvcih2YWx1ZSkpIHsKICAgIHJldHVybiB7CiAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsCiAgICAgIG5hbWU6IHZhbHVlLm5hbWUsCiAgICAgIHN0YWNrOiB2YWx1ZS5zdGFjaywKICAgICAgLi4uZ2V0T3duUHJvcGVydGllcyh2YWx1ZSksCiAgICB9OwogIH0gZWxzZSBpZiAoaXNFdmVudCh2YWx1ZSkpIHsKICAgIGNvbnN0IG5ld09iagoKID0gewogICAgICB0eXBlOiB2YWx1ZS50eXBlLAogICAgICB0YXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLnRhcmdldCksCiAgICAgIGN1cnJlbnRUYXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLmN1cnJlbnRUYXJnZXQpLAogICAgICAuLi5nZXRPd25Qcm9wZXJ0aWVzKHZhbHVlKSwKICAgIH07CgogICAgaWYgKHR5cGVvZiBDdXN0b21FdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHZhbHVlLCBDdXN0b21FdmVudCkpIHsKICAgICAgbmV3T2JqLmRldGFpbCA9IHZhbHVlLmRldGFpbDsKICAgIH0KCiAgICByZXR1cm4gbmV3T2JqOwogIH0gZWxzZSB7CiAgICByZXR1cm4gdmFsdWU7CiAgfQp9CgovKiogQ3JlYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGFyZ2V0IG9mIGFuIGBFdmVudGAgb2JqZWN0ICovCmZ1bmN0aW9uIHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHRhcmdldCkgewogIHRyeSB7CiAgICByZXR1cm4gaXNFbGVtZW50KHRhcmdldCkgPyBodG1sVHJlZUFzU3RyaW5nKHRhcmdldCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGFyZ2V0KTsKICB9IGNhdGNoIChfb08pIHsKICAgIHJldHVybiAnPHVua25vd24+JzsKICB9Cn0KCi8qKiBGaWx0ZXJzIG91dCBhbGwgYnV0IGFuIG9iamVjdCdzIG93biBwcm9wZXJ0aWVzICovCmZ1bmN0aW9uIGdldE93blByb3BlcnRpZXMob2JqKSB7CiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkgewogICAgY29uc3QgZXh0cmFjdGVkUHJvcHMgPSB7fTsKICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gb2JqKSB7CiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wZXJ0eSkpIHsKICAgICAgICBleHRyYWN0ZWRQcm9wc1twcm9wZXJ0eV0gPSAob2JqIClbcHJvcGVydHldOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZXh0cmFjdGVkUHJvcHM7CiAgfSBlbHNlIHsKICAgIHJldHVybiB7fTsKICB9Cn0KCi8qKgogKiBHaXZlbiBhbnkgb2JqZWN0LCByZXR1cm4gYSBuZXcgb2JqZWN0IGhhdmluZyByZW1vdmVkIGFsbCBmaWVsZHMgd2hvc2UgdmFsdWUgd2FzIGB1bmRlZmluZWRgLgogKiBXb3JrcyByZWN1cnNpdmVseSBvbiBvYmplY3RzIGFuZCBhcnJheXMuCiAqCiAqIEF0dGVudGlvbjogVGhpcyBmdW5jdGlvbiBrZWVwcyBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSByZXR1cm5lZCBvYmplY3QuCiAqLwpmdW5jdGlvbiBkcm9wVW5kZWZpbmVkS2V5cyhpbnB1dFZhbHVlKSB7CiAgLy8gVGhpcyBtYXAga2VlcHMgdHJhY2sgb2Ygd2hhdCBhbHJlYWR5IHZpc2l0ZWQgbm9kZXMgbWFwIHRvLgogIC8vIE91ciBTZXQgLSBiYXNlZCBtZW1vQnVpbGRlciBkb2Vzbid0IHdvcmsgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gdGhlIG91dHB1dCBvYmplY3QgdG8gaGF2ZSB0aGUgc2FtZSBjaXJjdWxhcgogIC8vIHJlZmVyZW5jZXMgYXMgdGhlIGlucHV0IG9iamVjdC4KICBjb25zdCBtZW1vaXphdGlvbk1hcCA9IG5ldyBNYXAoKTsKCiAgLy8gVGhpcyBmdW5jdGlvbiBqdXN0IHByb3hpZXMgYF9kcm9wVW5kZWZpbmVkS2V5c2AgdG8ga2VlcCB0aGUgYG1lbW9CdWlsZGVyYCBvdXQgb2YgdGhpcyBmdW5jdGlvbidzIEFQSQogIHJldHVybiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApOwp9CgpmdW5jdGlvbiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApIHsKICBpZiAoaXNQb2pvKGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBvYmplY3QgaXQgd2FzIG1hcHBlZCB0byBpbiB0aGUgbmV3IG9iamVjdAogICAgY29uc3QgbWVtb1ZhbCA9IG1lbW9pemF0aW9uTWFwLmdldChpbnB1dFZhbHVlKTsKICAgIGlmIChtZW1vVmFsICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIG1lbW9WYWwgOwogICAgfQoKICAgIGNvbnN0IHJldHVyblZhbHVlID0ge307CiAgICAvLyBTdG9yZSB0aGUgbWFwcGluZyBvZiB0aGlzIHZhbHVlIGluIGNhc2Ugd2UgdmlzaXQgaXQgYWdhaW4sIGluIGNhc2Ugb2YgY2lyY3VsYXIgZGF0YQogICAgbWVtb2l6YXRpb25NYXAuc2V0KGlucHV0VmFsdWUsIHJldHVyblZhbHVlKTsKCiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpbnB1dFZhbHVlKSkgewogICAgICBpZiAodHlwZW9mIGlucHV0VmFsdWVba2V5XSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICByZXR1cm5WYWx1ZVtrZXldID0gX2Ryb3BVbmRlZmluZWRLZXlzKGlucHV0VmFsdWVba2V5XSwgbWVtb2l6YXRpb25NYXApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIGlmIChBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBhcnJheSBpdCB3YXMgbWFwcGVkIHRvIGluIHRoZSBuZXcgb2JqZWN0CiAgICBjb25zdCBtZW1vVmFsID0gbWVtb2l6YXRpb25NYXAuZ2V0KGlucHV0VmFsdWUpOwogICAgaWYgKG1lbW9WYWwgIT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm4gbWVtb1ZhbCA7CiAgICB9CgogICAgY29uc3QgcmV0dXJuVmFsdWUgPSBbXTsKICAgIC8vIFN0b3JlIHRoZSBtYXBwaW5nIG9mIHRoaXMgdmFsdWUgaW4gY2FzZSB3ZSB2aXNpdCBpdCBhZ2FpbiwgaW4gY2FzZSBvZiBjaXJjdWxhciBkYXRhCiAgICBtZW1vaXphdGlvbk1hcC5zZXQoaW5wdXRWYWx1ZSwgcmV0dXJuVmFsdWUpOwoKICAgIGlucHV0VmFsdWUuZm9yRWFjaCgoaXRlbSkgPT4gewogICAgICByZXR1cm5WYWx1ZS5wdXNoKF9kcm9wVW5kZWZpbmVkS2V5cyhpdGVtLCBtZW1vaXphdGlvbk1hcCkpOwogICAgfSk7CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIHJldHVybiBpbnB1dFZhbHVlOwp9CgpmdW5jdGlvbiBpc1Bvam8oaW5wdXQpIHsKICBpZiAoIWlzUGxhaW5PYmplY3QoaW5wdXQpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICB0cnkgewogICAgY29uc3QgbmFtZSA9IChPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXQpICkuY29uc3RydWN0b3IubmFtZTsKICAgIHJldHVybiAhbmFtZSB8fCBuYW1lID09PSAnT2JqZWN0JzsKICB9IGNhdGNoIChlKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn0KCi8qKgogKiBEb2VzIHRoaXMgZmlsZW5hbWUgbG9vayBsaWtlIGl0J3MgcGFydCBvZiB0aGUgYXBwIGNvZGU/CiAqLwpmdW5jdGlvbiBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUsIGlzTmF0aXZlID0gZmFsc2UpIHsKICBjb25zdCBpc0ludGVybmFsID0KICAgIGlzTmF0aXZlIHx8CiAgICAoZmlsZW5hbWUgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSBsaW51eCBwYXRoCiAgICAgICFmaWxlbmFtZS5zdGFydHNXaXRoKCcvJykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSB3aW5kb3dzIHBhdGgKICAgICAgIWZpbGVuYW1lLm1hdGNoKC9eW0EtWl06LykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgdGhlIHBhdGggaXMgc3RhcnRpbmcgd2l0aCBhIGRvdAogICAgICAhZmlsZW5hbWUuc3RhcnRzV2l0aCgnLicpICYmCiAgICAgIC8vIEl0J3Mgbm90IGludGVybmFsIGlmIHRoZSBmcmFtZSBoYXMgYSBwcm90b2NvbC4gSW4gbm9kZSwgdGhpcyBpcyB1c3VhbGx5IHRoZSBjYXNlIGlmIHRoZSBmaWxlIGdvdCBwcmUtcHJvY2Vzc2VkIHdpdGggYSBidW5kbGVyIGxpa2Ugd2VicGFjawogICAgICAhZmlsZW5hbWUubWF0Y2goL15bYS16QS1aXShbYS16QS1aMC05LlwtK10pKjpcL1wvLykpOyAvLyBTY2hlbWEgZnJvbTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM2NDE3ODIKCiAgLy8gaW5fYXBwIGlzIGFsbCB0aGF0J3Mgbm90IGFuIGludGVybmFsIE5vZGUgZnVuY3Rpb24gb3IgYSBtb2R1bGUgd2l0aGluIG5vZGVfbW9kdWxlcwogIC8vIG5vdGUgdGhhdCBpc05hdGl2ZSBhcHBlYXJzIHRvIHJldHVybiB0cnVlIGV2ZW4gZm9yIG5vZGUgY29yZSBsaWJyYXJpZXMKICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9yYXZlbi1ub2RlL2lzc3Vlcy8xNzYKCiAgcmV0dXJuICFpc0ludGVybmFsICYmIGZpbGVuYW1lICE9PSB1bmRlZmluZWQgJiYgIWZpbGVuYW1lLmluY2x1ZGVzKCdub2RlX21vZHVsZXMvJyk7Cn0KCmNvbnN0IFNUQUNLVFJBQ0VfRlJBTUVfTElNSVQgPSA1MDsKY29uc3QgU1RSSVBfRlJBTUVfUkVHRVhQID0gL2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vOwoKLyoqCiAqIFJlbW92ZXMgU2VudHJ5IGZyYW1lcyBmcm9tIHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgc3RhY2sgaWYgcHJlc2VudCBhbmQgZW5mb3JjZXMgYSBsaW1pdCBvZiBtYXggbnVtYmVyIG9mIGZyYW1lcy4KICogQXNzdW1lcyBzdGFjayBpbnB1dCBpcyBvcmRlcmVkIGZyb20gdG9wIHRvIGJvdHRvbSBhbmQgcmV0dXJucyB0aGUgcmV2ZXJzZSByZXByZXNlbnRhdGlvbiBzbyBjYWxsIHNpdGUgb2YgdGhlCiAqIGZ1bmN0aW9uIHRoYXQgY2F1c2VkIHRoZSBjcmFzaCBpcyB0aGUgbGFzdCBmcmFtZSBpbiB0aGUgYXJyYXkuCiAqIEBoaWRkZW4KICovCmZ1bmN0aW9uIHN0cmlwU2VudHJ5RnJhbWVzQW5kUmV2ZXJzZShzdGFjaykgewogIGlmICghc3RhY2subGVuZ3RoKSB7CiAgICByZXR1cm4gW107CiAgfQoKICBjb25zdCBsb2NhbFN0YWNrID0gQXJyYXkuZnJvbShzdGFjayk7CgogIC8vIElmIHN0YWNrIHN0YXJ0cyB3aXRoIG9uZSBvZiBvdXIgQVBJIGNhbGxzLCByZW1vdmUgaXQgKHN0YXJ0cywgbWVhbmluZyBpdCdzIHRoZSB0b3Agb2YgdGhlIHN0YWNrIC0gYWthIGxhc3QgY2FsbCkKICBpZiAoL3NlbnRyeVdyYXBwZWQvLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgbG9jYWxTdGFjay5wb3AoKTsKICB9CgogIC8vIFJldmVyc2luZyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcm9jZWR1cmUgYWxsb3dzIHVzIHRvIGp1c3QgcG9wIHRoZSB2YWx1ZXMgb2ZmIHRoZSBzdGFjawogIGxvY2FsU3RhY2sucmV2ZXJzZSgpOwoKICAvLyBJZiBzdGFjayBlbmRzIHdpdGggb25lIG9mIG91ciBpbnRlcm5hbCBBUEkgY2FsbHMsIHJlbW92ZSBpdCAoZW5kcywgbWVhbmluZyBpdCdzIHRoZSBib3R0b20gb2YgdGhlIHN0YWNrIC0gYWthIHRvcC1tb3N0IGNhbGwpCiAgaWYgKFNUUklQX0ZSQU1FX1JFR0VYUC50ZXN0KGxvY2FsU3RhY2tbbG9jYWxTdGFjay5sZW5ndGggLSAxXS5mdW5jdGlvbiB8fCAnJykpIHsKICAgIGxvY2FsU3RhY2sucG9wKCk7CgogICAgLy8gV2hlbiB1c2luZyBzeW50aGV0aWMgZXZlbnRzLCB3ZSB3aWxsIGhhdmUgYSAyIGxldmVscyBkZWVwIHN0YWNrLCBhcyBgbmV3IEVycm9yKCdTZW50cnkgc3ludGhldGljRXhjZXB0aW9uJylgCiAgICAvLyBpcyBwcm9kdWNlZCB3aXRoaW4gdGhlIGh1YiBpdHNlbGYsIG1ha2luZyBpdDoKICAgIC8vCiAgICAvLyAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKCkKICAgIC8vICAgZ2V0Q3VycmVudEh1YigpLmNhcHR1cmVFeGNlcHRpb24oKQogICAgLy8KICAgIC8vIGluc3RlYWQgb2YganVzdCB0aGUgdG9wIGBTZW50cnlgIGNhbGwgaXRzZWxmLgogICAgLy8gVGhpcyBmb3JjZXMgdXMgdG8gcG9zc2libHkgc3RyaXAgYW4gYWRkaXRpb25hbCBmcmFtZSBpbiB0aGUgZXhhY3Qgc2FtZSB3YXMgYXMgYWJvdmUuCiAgICBpZiAoU1RSSVBfRlJBTUVfUkVHRVhQLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgICBsb2NhbFN0YWNrLnBvcCgpOwogICAgfQogIH0KCiAgcmV0dXJuIGxvY2FsU3RhY2suc2xpY2UoMCwgU1RBQ0tUUkFDRV9GUkFNRV9MSU1JVCkubWFwKGZyYW1lID0+ICh7CiAgICAuLi5mcmFtZSwKICAgIGZpbGVuYW1lOiBmcmFtZS5maWxlbmFtZSB8fCBsb2NhbFN0YWNrW2xvY2FsU3RhY2subGVuZ3RoIC0gMV0uZmlsZW5hbWUsCiAgICBmdW5jdGlvbjogZnJhbWUuZnVuY3Rpb24gfHwgJz8nLAogIH0pKTsKfQoKY29uc3QgZGVmYXVsdEZ1bmN0aW9uTmFtZSA9ICc8YW5vbnltb3VzPic7CgovKioKICogU2FmZWx5IGV4dHJhY3QgZnVuY3Rpb24gbmFtZSBmcm9tIGl0c2VsZgogKi8KZnVuY3Rpb24gZ2V0RnVuY3Rpb25OYW1lKGZuKSB7CiAgdHJ5IHsKICAgIGlmICghZm4gfHwgdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogICAgfQogICAgcmV0dXJuIGZuLm5hbWUgfHwgZGVmYXVsdEZ1bmN0aW9uTmFtZTsKICB9IGNhdGNoIChlKSB7CiAgICAvLyBKdXN0IGFjY2Vzc2luZyBjdXN0b20gcHJvcHMgaW4gc29tZSBTZWxlbml1bSBlbnZpcm9ubWVudHMKICAgIC8vIGNhbiBjYXVzZSBhICJQZXJtaXNzaW9uIGRlbmllZCIgZXhjZXB0aW9uIChzZWUgcmF2ZW4tanMjNDk1KS4KICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogIH0KfQoKLyoqCiAqIFVVSUQ0IGdlbmVyYXRvcgogKgogKiBAcmV0dXJucyBzdHJpbmcgR2VuZXJhdGVkIFVVSUQ0LgogKi8KZnVuY3Rpb24gdXVpZDQoKSB7CiAgY29uc3QgZ2JsID0gR0xPQkFMX09CSiA7CiAgY29uc3QgY3J5cHRvID0gZ2JsLmNyeXB0byB8fCBnYmwubXNDcnlwdG87CgogIGxldCBnZXRSYW5kb21CeXRlID0gKCkgPT4gTWF0aC5yYW5kb20oKSAqIDE2OwogIHRyeSB7CiAgICBpZiAoY3J5cHRvICYmIGNyeXB0by5yYW5kb21VVUlEKSB7CiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpLnJlcGxhY2UoLy0vZywgJycpOwogICAgfQogICAgaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7CiAgICAgIGdldFJhbmRvbUJ5dGUgPSAoKSA9PiB7CiAgICAgICAgLy8gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBtaWdodCByZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgdGhlIHR5cGVkIGFycmF5CiAgICAgICAgLy8gaW4gb2xkIENocm9taXVtIHZlcnNpb25zIChlLmcuIDIzLjAuMTIzNS4wICgxNTE0MjIpKQogICAgICAgIC8vIEhvd2V2ZXIsIGB0eXBlZEFycmF5YCBpcyBzdGlsbCBmaWxsZWQgaW4tcGxhY2UuCiAgICAgICAgLy8gQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3J5cHRvL2dldFJhbmRvbVZhbHVlcyN0eXBlZGFycmF5CiAgICAgICAgY29uc3QgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KDEpOwogICAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXModHlwZWRBcnJheSk7CiAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlbMF07CiAgICAgIH07CiAgICB9CiAgfSBjYXRjaCAoXykgewogICAgLy8gc29tZSBydW50aW1lcyBjYW4gY3Jhc2ggaW52b2tpbmcgY3J5cHRvCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy84OTM1CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9ob3ctdG8tY3JlYXRlLWEtZ3VpZC11dWlkLWluLWphdmFzY3JpcHQvMjExNzUyMyMyMTE3NTIzCiAgLy8gQ29uY2F0ZW5hdGluZyB0aGUgZm9sbG93aW5nIG51bWJlcnMgYXMgc3RyaW5ncyByZXN1bHRzIGluICcxMDAwMDAwMDEwMDA0MDAwODAwMDEwMDAwMDAwMDAwMCcKICByZXR1cm4gKChbMWU3XSApICsgMWUzICsgNGUzICsgOGUzICsgMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgYyA9PgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2UKICAgICgoYyApIF4gKChnZXRSYW5kb21CeXRlKCkgJiAxNSkgPj4gKChjICkgLyA0KSkpLnRvU3RyaW5nKDE2KSwKICApOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGlucHV0IGlzIGFscmVhZHkgYW4gYXJyYXksIGFuZCBpZiBpdCBpc24ndCwgd3JhcHMgaXQgaW4gb25lLgogKgogKiBAcGFyYW0gbWF5YmVBcnJheSBJbnB1dCB0byB0dXJuIGludG8gYW4gYXJyYXksIGlmIG5lY2Vzc2FyeQogKiBAcmV0dXJucyBUaGUgaW5wdXQsIGlmIGFscmVhZHkgYW4gYXJyYXksIG9yIGFuIGFycmF5IHdpdGggdGhlIGlucHV0IGFzIHRoZSBvbmx5IGVsZW1lbnQsIGlmIG5vdAogKi8KZnVuY3Rpb24gYXJyYXlpZnkobWF5YmVBcnJheSkgewogIHJldHVybiBBcnJheS5pc0FycmF5KG1heWJlQXJyYXkpID8gbWF5YmVBcnJheSA6IFttYXliZUFycmF5XTsKfQoKLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzICovCi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi8KCi8qKgogKiBIZWxwZXIgdG8gZGVjeWNsZSBqc29uIG9iamVjdHMKICovCmZ1bmN0aW9uIG1lbW9CdWlsZGVyKCkgewogIGNvbnN0IGhhc1dlYWtTZXQgPSB0eXBlb2YgV2Vha1NldCA9PT0gJ2Z1bmN0aW9uJzsKICBjb25zdCBpbm5lciA9IGhhc1dlYWtTZXQgPyBuZXcgV2Vha1NldCgpIDogW107CiAgZnVuY3Rpb24gbWVtb2l6ZShvYmopIHsKICAgIGlmIChoYXNXZWFrU2V0KSB7CiAgICAgIGlmIChpbm5lci5oYXMob2JqKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIGlubmVyLmFkZChvYmopOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2YKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHsKICAgICAgY29uc3QgdmFsdWUgPSBpbm5lcltpXTsKICAgICAgaWYgKHZhbHVlID09PSBvYmopIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQogICAgaW5uZXIucHVzaChvYmopOwogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gdW5tZW1vaXplKG9iaikgewogICAgaWYgKGhhc1dlYWtTZXQpIHsKICAgICAgaW5uZXIuZGVsZXRlKG9iaik7CiAgICB9IGVsc2UgewogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlubmVyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGlubmVyW2ldID09PSBvYmopIHsKICAgICAgICAgIGlubmVyLnNwbGljZShpLCAxKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICByZXR1cm4gW21lbW9pemUsIHVubWVtb2l6ZV07Cn0KCi8qKgogKiBSZWN1cnNpdmVseSBub3JtYWxpemVzIHRoZSBnaXZlbiBvYmplY3QuCiAqCiAqIC0gQ3JlYXRlcyBhIGNvcHkgdG8gcHJldmVudCBvcmlnaW5hbCBpbnB1dCBtdXRhdGlvbgogKiAtIFNraXBzIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMKICogLSBXaGVuIHN0cmluZ2lmeWluZywgY2FsbHMgYHRvSlNPTmAgaWYgaW1wbGVtZW50ZWQKICogLSBSZW1vdmVzIGNpcmN1bGFyIHJlZmVyZW5jZXMKICogLSBUcmFuc2xhdGVzIG5vbi1zZXJpYWxpemFibGUgdmFsdWVzIChgdW5kZWZpbmVkYC9gTmFOYC9mdW5jdGlvbnMpIHRvIHNlcmlhbGl6YWJsZSBmb3JtYXQKICogLSBUcmFuc2xhdGVzIGtub3duIGdsb2JhbCBvYmplY3RzL2NsYXNzZXMgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25zCiAqIC0gVGFrZXMgY2FyZSBvZiBgRXJyb3JgIG9iamVjdCBzZXJpYWxpemF0aW9uCiAqIC0gT3B0aW9uYWxseSBsaW1pdHMgZGVwdGggb2YgZmluYWwgb3V0cHV0CiAqIC0gT3B0aW9uYWxseSBsaW1pdHMgbnVtYmVyIG9mIHByb3BlcnRpZXMvZWxlbWVudHMgaW5jbHVkZWQgaW4gYW55IHNpbmdsZSBvYmplY3QvYXJyYXkKICoKICogQHBhcmFtIGlucHV0IFRoZSBvYmplY3QgdG8gYmUgbm9ybWFsaXplZC4KICogQHBhcmFtIGRlcHRoIFRoZSBtYXggZGVwdGggdG8gd2hpY2ggdG8gbm9ybWFsaXplIHRoZSBvYmplY3QuIChBbnl0aGluZyBkZWVwZXIgc3RyaW5naWZpZWQgd2hvbGUuKQogKiBAcGFyYW0gbWF4UHJvcGVydGllcyBUaGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBvciBwcm9wZXJ0aWVzIHRvIGJlIGluY2x1ZGVkIGluIGFueSBzaW5nbGUgYXJyYXkgb3IKICogb2JqZWN0IGluIHRoZSBub3JtYWxsaXplZCBvdXRwdXQuCiAqIEByZXR1cm5zIEEgbm9ybWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QsIG9yIGAiKipub24tc2VyaWFsaXphYmxlKioiYCBpZiBhbnkgZXJyb3JzIGFyZSB0aHJvd24gZHVyaW5nIG5vcm1hbGl6YXRpb24uCiAqLwovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQpmdW5jdGlvbiBub3JtYWxpemUoaW5wdXQsIGRlcHRoID0gMTAwLCBtYXhQcm9wZXJ0aWVzID0gK0luZmluaXR5KSB7CiAgdHJ5IHsKICAgIC8vIHNpbmNlIHdlJ3JlIGF0IHRoZSBvdXRlcm1vc3QgbGV2ZWwsIHdlIGRvbid0IHByb3ZpZGUgYSBrZXkKICAgIHJldHVybiB2aXNpdCgnJywgaW5wdXQsIGRlcHRoLCBtYXhQcm9wZXJ0aWVzKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiB7IEVSUk9SOiBgKipub24tc2VyaWFsaXphYmxlKiogKCR7ZXJyfSlgIH07CiAgfQp9CgovKioKICogVmlzaXRzIGEgbm9kZSB0byBwZXJmb3JtIG5vcm1hbGl6YXRpb24gb24gaXQKICoKICogQHBhcmFtIGtleSBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5vZGUKICogQHBhcmFtIHZhbHVlIFRoZSBub2RlIHRvIGJlIHZpc2l0ZWQKICogQHBhcmFtIGRlcHRoIE9wdGlvbmFsIG51bWJlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aAogKiBAcGFyYW0gbWF4UHJvcGVydGllcyBPcHRpb25hbCBtYXhpbXVtIG51bWJlciBvZiBwcm9wZXJ0aWVzL2VsZW1lbnRzIGluY2x1ZGVkIGluIGFueSBzaW5nbGUgb2JqZWN0L2FycmF5CiAqIEBwYXJhbSBtZW1vIE9wdGlvbmFsIE1lbW8gY2xhc3MgaGFuZGxpbmcgZGVjeWNsaW5nCiAqLwpmdW5jdGlvbiB2aXNpdCgKICBrZXksCiAgdmFsdWUsCiAgZGVwdGggPSArSW5maW5pdHksCiAgbWF4UHJvcGVydGllcyA9ICtJbmZpbml0eSwKICBtZW1vID0gbWVtb0J1aWxkZXIoKSwKKSB7CiAgY29uc3QgW21lbW9pemUsIHVubWVtb2l6ZV0gPSBtZW1vOwoKICAvLyBHZXQgdGhlIHNpbXBsZSBjYXNlcyBvdXQgb2YgdGhlIHdheSBmaXJzdAogIGlmICgKICAgIHZhbHVlID09IG51bGwgfHwgLy8gdGhpcyBtYXRjaGVzIG51bGwgYW5kIHVuZGVmaW5lZCAtPiBlcWVxIG5vdCBlcWVxZXEKICAgIChbJ251bWJlcicsICdib29sZWFuJywgJ3N0cmluZyddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSkgJiYgIWlzTmFOJDEodmFsdWUpKQogICkgewogICAgcmV0dXJuIHZhbHVlIDsKICB9CgogIGNvbnN0IHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5VmFsdWUoa2V5LCB2YWx1ZSk7CgogIC8vIEFueXRoaW5nIHdlIGNvdWxkIHBvdGVudGlhbGx5IGRpZyBpbnRvIG1vcmUgKG9iamVjdHMgb3IgYXJyYXlzKSB3aWxsIGhhdmUgY29tZSBiYWNrIGFzIGAiW29iamVjdCBYWFhYXSJgLgogIC8vIEV2ZXJ5dGhpbmcgZWxzZSB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIHNlcmlhbGl6ZWQsIHNvIGlmIHdlIGRvbid0IHNlZSB0aGF0IHBhdHRlcm4sIHdlJ3JlIGRvbmUuCiAgaWYgKCFzdHJpbmdpZmllZC5zdGFydHNXaXRoKCdbb2JqZWN0ICcpKSB7CiAgICByZXR1cm4gc3RyaW5naWZpZWQ7CiAgfQoKICAvLyBGcm9tIGhlcmUgb24sIHdlIGNhbiBhc3NlcnQgdGhhdCBgdmFsdWVgIGlzIGVpdGhlciBhbiBvYmplY3Qgb3IgYW4gYXJyYXkuCgogIC8vIERvIG5vdCBub3JtYWxpemUgb2JqZWN0cyB0aGF0IHdlIGtub3cgaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4gQXMgYSBnZW5lcmFsIHJ1bGUsIHRoZQogIC8vICJfX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXyIgcHJvcGVydHkgc2hvdWxkIG9ubHkgYmUgdXNlZCBzcGFyaW5nbHkgYW5kIG9ubHkgc2hvdWxkIG9ubHkgYmUgc2V0IG9uIG9iamVjdHMgdGhhdAogIC8vIGhhdmUgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuCiAgaWYgKCh2YWx1ZSApWydfX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXyddKSB7CiAgICByZXR1cm4gdmFsdWUgOwogIH0KCiAgLy8gV2UgY2FuIHNldCBgX19zZW50cnlfb3ZlcnJpZGVfbm9ybWFsaXphdGlvbl9kZXB0aF9fYCBvbiBhbiBvYmplY3QgdG8gZW5zdXJlIHRoYXQgZnJvbSB0aGVyZQogIC8vIFdlIGtlZXAgYSBjZXJ0YWluIGFtb3VudCBvZiBkZXB0aC4KICAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseSwgZS5nLiB3ZSB1c2UgaXQgZm9yIHRoZSByZWR1eCBpbnRlZ3JhdGlvbiB0byBlbnN1cmUgd2UgZ2V0IGEgY2VydGFpbiBhbW91bnQgb2Ygc3RhdGUuCiAgY29uc3QgcmVtYWluaW5nRGVwdGggPQogICAgdHlwZW9mICh2YWx1ZSApWydfX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18nXSA9PT0gJ251bWJlcicKICAgICAgPyAoKHZhbHVlIClbJ19fc2VudHJ5X292ZXJyaWRlX25vcm1hbGl6YXRpb25fZGVwdGhfXyddICkKICAgICAgOiBkZXB0aDsKCiAgLy8gV2UncmUgYWxzbyBkb25lIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIG1heCBkZXB0aAogIGlmIChyZW1haW5pbmdEZXB0aCA9PT0gMCkgewogICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGBzZXJpYWxpemVkYCBpcyBhIHN0cmluZyBvZiB0aGUgZm9ybSBgIltvYmplY3QgWFhYWF0iYC4gQ2xlYW4gaXQgdXAgc28gaXQncyBqdXN0IGAiW1hYWFhdImAuCiAgICByZXR1cm4gc3RyaW5naWZpZWQucmVwbGFjZSgnb2JqZWN0ICcsICcnKTsKICB9CgogIC8vIElmIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGlzIGJyYW5jaCwgYmFpbCBvdXQsIGFzIGl0J3MgY2lyY3VsYXIgcmVmZXJlbmNlLiBJZiBub3QsIG5vdGUgdGhhdCB3ZSdyZSBzZWVpbmcgaXQgbm93LgogIGlmIChtZW1vaXplKHZhbHVlKSkgewogICAgcmV0dXJuICdbQ2lyY3VsYXIgfl0nOwogIH0KCiAgLy8gSWYgdGhlIHZhbHVlIGhhcyBhIGB0b0pTT05gIG1ldGhvZCwgd2UgY2FsbCBpdCB0byBleHRyYWN0IG1vcmUgaW5mb3JtYXRpb24KICBjb25zdCB2YWx1ZVdpdGhUb0pTT04gPSB2YWx1ZSA7CiAgaWYgKHZhbHVlV2l0aFRvSlNPTiAmJiB0eXBlb2YgdmFsdWVXaXRoVG9KU09OLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykgewogICAgdHJ5IHsKICAgICAgY29uc3QganNvblZhbHVlID0gdmFsdWVXaXRoVG9KU09OLnRvSlNPTigpOwogICAgICAvLyBXZSBuZWVkIHRvIG5vcm1hbGl6ZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGAudG9KU09OKClgIGluIGNhc2UgaXQgaGFzIGNpcmN1bGFyIHJlZmVyZW5jZXMKICAgICAgcmV0dXJuIHZpc2l0KCcnLCBqc29uVmFsdWUsIHJlbWFpbmluZ0RlcHRoIC0gMSwgbWF4UHJvcGVydGllcywgbWVtbyk7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgLy8gcGFzcyAoVGhlIGJ1aWx0LWluIGB0b0pTT05gIGZhaWxlZCwgYnV0IHdlIGNhbiBzdGlsbCB0cnkgdG8gZG8gaXQgb3Vyc2VsdmVzKQogICAgfQogIH0KCiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHdlIGVpdGhlciBoYXZlIGFuIG9iamVjdCBvciBhbiBhcnJheSwgd2UgaGF2ZW4ndCBzZWVuIGl0IGJlZm9yZSwgYW5kIHdlJ3JlIGdvaW5nIHRvIHJlY3Vyc2UKICAvLyBiZWNhdXNlIHdlIGhhdmVuJ3QgeWV0IHJlYWNoZWQgdGhlIG1heCBkZXB0aC4gQ3JlYXRlIGFuIGFjY3VtdWxhdG9yIHRvIGhvbGQgdGhlIHJlc3VsdHMgb2YgdmlzaXRpbmcgZWFjaAogIC8vIHByb3BlcnR5L2VudHJ5LCBhbmQga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHdlIGFkZCB0byBpdC4KICBjb25zdCBub3JtYWxpemVkID0gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gW10gOiB7fSkgOwogIGxldCBudW1BZGRlZCA9IDA7CgogIC8vIEJlZm9yZSB3ZSBiZWdpbiwgY29udmVydGBFcnJvcmAgYW5kYEV2ZW50YCBpbnN0YW5jZXMgaW50byBwbGFpbiBvYmplY3RzLCBzaW5jZSBzb21lIG9mIGVhY2ggb2YgdGhlaXIgcmVsZXZhbnQKICAvLyBwcm9wZXJ0aWVzIGFyZSBub24tZW51bWVyYWJsZSBhbmQgb3RoZXJ3aXNlIHdvdWxkIGdldCBtaXNzZWQuCiAgY29uc3QgdmlzaXRhYmxlID0gY29udmVydFRvUGxhaW5PYmplY3QodmFsdWUgKTsKCiAgZm9yIChjb25zdCB2aXNpdEtleSBpbiB2aXNpdGFibGUpIHsKICAgIC8vIEF2b2lkIGl0ZXJhdGluZyBvdmVyIGZpZWxkcyBpbiB0aGUgcHJvdG90eXBlIGlmIHRoZXkndmUgc29tZWhvdyBiZWVuIGV4cG9zZWQgdG8gZW51bWVyYXRpb24uCiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2aXNpdGFibGUsIHZpc2l0S2V5KSkgewogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAobnVtQWRkZWQgPj0gbWF4UHJvcGVydGllcykgewogICAgICBub3JtYWxpemVkW3Zpc2l0S2V5XSA9ICdbTWF4UHJvcGVydGllcyB+XSc7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIFJlY3Vyc2l2ZWx5IHZpc2l0IGFsbCB0aGUgY2hpbGQgbm9kZXMKICAgIGNvbnN0IHZpc2l0VmFsdWUgPSB2aXNpdGFibGVbdmlzaXRLZXldOwogICAgbm9ybWFsaXplZFt2aXNpdEtleV0gPSB2aXNpdCh2aXNpdEtleSwgdmlzaXRWYWx1ZSwgcmVtYWluaW5nRGVwdGggLSAxLCBtYXhQcm9wZXJ0aWVzLCBtZW1vKTsKCiAgICBudW1BZGRlZCsrOwogIH0KCiAgLy8gT25jZSB3ZSd2ZSB2aXNpdGVkIGFsbCB0aGUgYnJhbmNoZXMsIHJlbW92ZSB0aGUgcGFyZW50IGZyb20gbWVtbyBzdG9yYWdlCiAgdW5tZW1vaXplKHZhbHVlKTsKCiAgLy8gUmV0dXJuIGFjY3VtdWxhdGVkIHZhbHVlcwogIHJldHVybiBub3JtYWxpemVkOwp9CgovKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovCi8qKgogKiBTdHJpbmdpZnkgdGhlIGdpdmVuIHZhbHVlLiBIYW5kbGVzIHZhcmlvdXMga25vd24gc3BlY2lhbCB2YWx1ZXMgYW5kIHR5cGVzLgogKgogKiBOb3QgbWVhbnQgdG8gYmUgdXNlZCBvbiBzaW1wbGUgcHJpbWl0aXZlcyB3aGljaCBhbHJlYWR5IGhhdmUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24sIGFzIGl0IHdpbGwsIGZvciBleGFtcGxlLCB0dXJuCiAqIHRoZSBudW1iZXIgMTIzMSBpbnRvICJbT2JqZWN0IE51bWJlcl0iLCBub3Igb24gYG51bGxgLCBhcyBpdCB3aWxsIHRocm93LgogKgogKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHN0cmluZ2lmeQogKiBAcmV0dXJucyBBIHN0cmluZ2lmaWVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiB2YWx1ZQogKi8KZnVuY3Rpb24gc3RyaW5naWZ5VmFsdWUoCiAga2V5LAogIC8vIHRoaXMgdHlwZSBpcyBhIHRpbnkgYml0IG9mIGEgY2hlYXQsIHNpbmNlIHRoaXMgZnVuY3Rpb24gZG9lcyBoYW5kbGUgTmFOICh3aGljaCBpcyB0ZWNobmljYWxseSBhIG51bWJlciksIGJ1dCBmb3IKICAvLyBvdXIgaW50ZXJuYWwgdXNlLCBpdCdsbCBkbwogIHZhbHVlLAopIHsKICB0cnkgewogICAgaWYgKGtleSA9PT0gJ2RvbWFpbicgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAodmFsdWUgKS5fZXZlbnRzKSB7CiAgICAgIHJldHVybiAnW0RvbWFpbl0nOwogICAgfQoKICAgIGlmIChrZXkgPT09ICdkb21haW5FbWl0dGVyJykgewogICAgICByZXR1cm4gJ1tEb21haW5FbWl0dGVyXSc7CiAgICB9CgogICAgLy8gSXQncyBzYWZlIHRvIHVzZSBgZ2xvYmFsYCwgYHdpbmRvd2AsIGFuZCBgZG9jdW1lbnRgIGhlcmUgaW4gdGhpcyBtYW5uZXIsIGFzIHdlIGFyZSBhc3NlcnRpbmcgdXNpbmcgYHR5cGVvZmAgZmlyc3QKICAgIC8vIHdoaWNoIHdvbid0IHRocm93IGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50LgoKICAgIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gZ2xvYmFsKSB7CiAgICAgIHJldHVybiAnW0dsb2JhbF0nOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gd2luZG93KSB7CiAgICAgIHJldHVybiAnW1dpbmRvd10nOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlID09PSBkb2N1bWVudCkgewogICAgICByZXR1cm4gJ1tEb2N1bWVudF0nOwogICAgfQoKICAgIGlmIChpc1Z1ZVZpZXdNb2RlbCh2YWx1ZSkpIHsKICAgICAgcmV0dXJuICdbVnVlVmlld01vZGVsXSc7CiAgICB9CgogICAgLy8gUmVhY3QncyBTeW50aGV0aWNFdmVudCB0aGluZ3kKICAgIGlmIChpc1N5bnRoZXRpY0V2ZW50KHZhbHVlKSkgewogICAgICByZXR1cm4gJ1tTeW50aGV0aWNFdmVudF0nOwogICAgfQoKICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSB2YWx1ZSkgewogICAgICByZXR1cm4gJ1tOYU5dJzsKICAgIH0KCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBgW0Z1bmN0aW9uOiAke2dldEZ1bmN0aW9uTmFtZSh2YWx1ZSl9XWA7CiAgICB9CgogICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcpIHsKICAgICAgcmV0dXJuIGBbJHtTdHJpbmcodmFsdWUpfV1gOwogICAgfQoKICAgIC8vIHN0cmluZ2lmaWVkIEJpZ0ludHMgYXJlIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gcmVndWxhciBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGxhYmVsIHRoZW0gdG8gYXZvaWQgY29uZnVzaW9uCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JykgewogICAgICByZXR1cm4gYFtCaWdJbnQ6ICR7U3RyaW5nKHZhbHVlKX1dYDsKICAgIH0KCiAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBrbm9ja2VkIG91dCBhbGwgdGhlIHNwZWNpYWwgY2FzZXMgYW5kIHRoZSBwcmltaXRpdmVzLCBhbGwgd2UgaGF2ZSBsZWZ0IGFyZSBvYmplY3RzLiBTaW1wbHkgY2FzdGluZwogICAgLy8gdGhlbSB0byBzdHJpbmdzIG1lYW5zIHRoYXQgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2hpY2ggaGF2ZW4ndCBkZWZpbmVkIHRoZWlyIGB0b1N0cmluZ1RhZ2Agd2lsbCBqdXN0IGNvbWUgb3V0IGFzCiAgICAvLyBgIltvYmplY3QgT2JqZWN0XSJgLiBJZiB3ZSBpbnN0ZWFkIGxvb2sgYXQgdGhlIGNvbnN0cnVjdG9yJ3MgbmFtZSAod2hpY2ggaXMgdGhlIHNhbWUgYXMgdGhlIG5hbWUgb2YgdGhlIGNsYXNzKSwKICAgIC8vIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCBvbmx5IHBsYWluIG9iamVjdHMgY29tZSBvdXQgdGhhdCB3YXkuCiAgICBjb25zdCBvYmpOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKHZhbHVlKTsKCiAgICAvLyBIYW5kbGUgSFRNTCBFbGVtZW50cwogICAgaWYgKC9eSFRNTChcdyopRWxlbWVudCQvLnRlc3Qob2JqTmFtZSkpIHsKICAgICAgcmV0dXJuIGBbSFRNTEVsZW1lbnQ6ICR7b2JqTmFtZX1dYDsKICAgIH0KCiAgICByZXR1cm4gYFtvYmplY3QgJHtvYmpOYW1lfV1gOwogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIGAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHtlcnJ9KWA7CiAgfQp9Ci8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqLwoKZnVuY3Rpb24gZ2V0Q29uc3RydWN0b3JOYW1lKHZhbHVlKSB7CiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTsKCiAgcmV0dXJuIHByb3RvdHlwZSA/IHByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lIDogJ251bGwgcHJvdG90eXBlJzsKfQoKLyoqCiAqIE5vcm1hbGl6ZXMgVVJMcyBpbiBleGNlcHRpb25zIGFuZCBzdGFja3RyYWNlcyB0byBhIGJhc2UgcGF0aCBzbyBTZW50cnkgY2FuIGZpbmdlcnByaW50CiAqIGFjcm9zcyBwbGF0Zm9ybXMgYW5kIHdvcmtpbmcgZGlyZWN0b3J5LgogKgogKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gYmUgbm9ybWFsaXplZC4KICogQHBhcmFtIGJhc2VQYXRoIFRoZSBhcHBsaWNhdGlvbiBiYXNlIHBhdGguCiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIFVSTC4KICovCmZ1bmN0aW9uIG5vcm1hbGl6ZVVybFRvQmFzZSh1cmwsIGJhc2VQYXRoKSB7CiAgY29uc3QgZXNjYXBlZEJhc2UgPSBiYXNlUGF0aAogICAgLy8gQmFja3NsYXNoIHRvIGZvcndhcmQKICAgIC5yZXBsYWNlKC9cXC9nLCAnLycpCiAgICAvLyBFc2NhcGUgUmVnRXhwIHNwZWNpYWwgY2hhcmFjdGVycwogICAgLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrKj8uXS9nLCAnXFwkJicpOwoKICBsZXQgbmV3VXJsID0gdXJsOwogIHRyeSB7CiAgICBuZXdVcmwgPSBkZWNvZGVVUkkodXJsKTsKICB9IGNhdGNoIChfT28pIHsKICAgIC8vIFNvbWV0aW1lIHRoaXMgYnJlYWtzCiAgfQogIHJldHVybiAoCiAgICBuZXdVcmwKICAgICAgLnJlcGxhY2UoL1xcL2csICcvJykKICAgICAgLnJlcGxhY2UoL3dlYnBhY2s6XC8/L2csICcnKSAvLyBSZW1vdmUgaW50ZXJtZWRpYXRlIGJhc2UgcGF0aAogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHNlbnRyeS1pbnRlcm5hbC9zZGsvbm8tcmVnZXhwLWNvbnN0cnVjdG9yCiAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoYChmaWxlOi8vKT8vKiR7ZXNjYXBlZEJhc2V9LypgLCAnaWcnKSwgJ2FwcDovLy8nKQogICk7Cn0KCi8vIFNsaWdodGx5IG1vZGlmaWVkIChubyBJRTggc3VwcG9ydCwgRVM2KSBhbmQgdHJhbnNjcmliZWQgdG8gVHlwZVNjcmlwdAoKLy8gU3BsaXQgYSBmaWxlbmFtZSBpbnRvIFtyb290LCBkaXIsIGJhc2VuYW1lLCBleHRdLCB1bml4IHZlcnNpb24KLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy4KY29uc3Qgc3BsaXRQYXRoUmUgPSAvXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87Ci8qKiBKU0RvYyAqLwpmdW5jdGlvbiBzcGxpdFBhdGgoZmlsZW5hbWUpIHsKICAvLyBUcnVuY2F0ZSBmaWxlcyBuYW1lcyBncmVhdGVyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIHRvIGF2b2lkIHJlZ2V4IGRvcwogIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvcHVsbC84NzM3I2Rpc2N1c3Npb25fcjEyODU3MTkxNzIKICBjb25zdCB0cnVuY2F0ZWQgPSBmaWxlbmFtZS5sZW5ndGggPiAxMDI0ID8gYDx0cnVuY2F0ZWQ+JHtmaWxlbmFtZS5zbGljZSgtMTAyNCl9YCA6IGZpbGVuYW1lOwogIGNvbnN0IHBhcnRzID0gc3BsaXRQYXRoUmUuZXhlYyh0cnVuY2F0ZWQpOwogIHJldHVybiBwYXJ0cyA/IHBhcnRzLnNsaWNlKDEpIDogW107Cn0KCi8qKiBKU0RvYyAqLwpmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHsKICBjb25zdCByZXN1bHQgPSBzcGxpdFBhdGgocGF0aCk7CiAgY29uc3Qgcm9vdCA9IHJlc3VsdFswXTsKICBsZXQgZGlyID0gcmVzdWx0WzFdOwoKICBpZiAoIXJvb3QgJiYgIWRpcikgewogICAgLy8gTm8gZGlybmFtZSB3aGF0c29ldmVyCiAgICByZXR1cm4gJy4nOwogIH0KCiAgaWYgKGRpcikgewogICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2gKICAgIGRpciA9IGRpci5zbGljZSgwLCBkaXIubGVuZ3RoIC0gMSk7CiAgfQoKICByZXR1cm4gcm9vdCArIGRpcjsKfQoKLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlICovCgovKiogU3luY1Byb21pc2UgaW50ZXJuYWwgc3RhdGVzICovCnZhciBTdGF0ZXM7IChmdW5jdGlvbiAoU3RhdGVzKSB7CiAgLyoqIFBlbmRpbmcgKi8KICBjb25zdCBQRU5ESU5HID0gMDsgU3RhdGVzW1N0YXRlc1siUEVORElORyJdID0gUEVORElOR10gPSAiUEVORElORyI7CiAgLyoqIFJlc29sdmVkIC8gT0sgKi8KICBjb25zdCBSRVNPTFZFRCA9IDE7IFN0YXRlc1tTdGF0ZXNbIlJFU09MVkVEIl0gPSBSRVNPTFZFRF0gPSAiUkVTT0xWRUQiOwogIC8qKiBSZWplY3RlZCAvIEVycm9yICovCiAgY29uc3QgUkVKRUNURUQgPSAyOyBTdGF0ZXNbU3RhdGVzWyJSRUpFQ1RFRCJdID0gUkVKRUNURURdID0gIlJFSkVDVEVEIjsKfSkoU3RhdGVzIHx8IChTdGF0ZXMgPSB7fSkpOwoKLy8gT3ZlcmxvYWRzIHNvIHdlIGNhbiBjYWxsIHJlc29sdmVkU3luY1Byb21pc2Ugd2l0aG91dCBhcmd1bWVudHMgYW5kIGdlbmVyaWMgYXJndW1lbnQKCi8qKgogKiBDcmVhdGVzIGEgcmVzb2x2ZWQgc3luYyBwcm9taXNlLgogKgogKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aAogKiBAcmV0dXJucyB0aGUgcmVzb2x2ZWQgc3luYyBwcm9taXNlCiAqLwpmdW5jdGlvbiByZXNvbHZlZFN5bmNQcm9taXNlKHZhbHVlKSB7CiAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZShyZXNvbHZlID0+IHsKICAgIHJlc29sdmUodmFsdWUpOwogIH0pOwp9CgovKioKICogQ3JlYXRlcyBhIHJlamVjdGVkIHN5bmMgcHJvbWlzZS4KICoKICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byByZWplY3QgdGhlIHByb21pc2Ugd2l0aAogKiBAcmV0dXJucyB0aGUgcmVqZWN0ZWQgc3luYyBwcm9taXNlCiAqLwpmdW5jdGlvbiByZWplY3RlZFN5bmNQcm9taXNlKHJlYXNvbikgewogIHJldHVybiBuZXcgU3luY1Byb21pc2UoKF8sIHJlamVjdCkgPT4gewogICAgcmVqZWN0KHJlYXNvbik7CiAgfSk7Cn0KCi8qKgogKiBUaGVuYWJsZSBjbGFzcyB0aGF0IGJlaGF2ZXMgbGlrZSBhIFByb21pc2UgYW5kIGZvbGxvd3MgaXQncyBpbnRlcmZhY2UKICogYnV0IGlzIG5vdCBhc3luYyBpbnRlcm5hbGx5CiAqLwpjbGFzcyBTeW5jUHJvbWlzZSB7CgogICBjb25zdHJ1Y3RvcigKICAgIGV4ZWN1dG9yLAogICkge1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQuY2FsbCh0aGlzKTtTeW5jUHJvbWlzZS5wcm90b3R5cGUuX19pbml0Mi5jYWxsKHRoaXMpO1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQzLmNhbGwodGhpcyk7U3luY1Byb21pc2UucHJvdG90eXBlLl9faW5pdDQuY2FsbCh0aGlzKTsKICAgIHRoaXMuX3N0YXRlID0gU3RhdGVzLlBFTkRJTkc7CiAgICB0aGlzLl9oYW5kbGVycyA9IFtdOwoKICAgIHRyeSB7CiAgICAgIGV4ZWN1dG9yKHRoaXMuX3Jlc29sdmUsIHRoaXMuX3JlamVjdCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMuX3JlamVjdChlKTsKICAgIH0KICB9CgogIC8qKiBKU0RvYyAqLwogICB0aGVuKAogICAgb25mdWxmaWxsZWQsCiAgICBvbnJlamVjdGVkLAogICkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIHRoaXMuX2hhbmRsZXJzLnB1c2goWwogICAgICAgIGZhbHNlLAogICAgICAgIHJlc3VsdCA9PiB7CiAgICAgICAgICBpZiAoIW9uZnVsZmlsbGVkKSB7CiAgICAgICAgICAgIC8vIFRPRE86IMKvXF8o44OEKV8vwq8KICAgICAgICAgICAgLy8gVE9ETzogRklYTUUKICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQgKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShvbmZ1bGZpbGxlZChyZXN1bHQpKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgIHJlamVjdChlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcmVhc29uID0+IHsKICAgICAgICAgIGlmICghb25yZWplY3RlZCkgewogICAgICAgICAgICByZWplY3QocmVhc29uKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShvbnJlamVjdGVkKHJlYXNvbikpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgcmVqZWN0KGUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgXSk7CiAgICAgIHRoaXMuX2V4ZWN1dGVIYW5kbGVycygpOwogICAgfSk7CiAgfQoKICAvKiogSlNEb2MgKi8KICAgY2F0Y2goCiAgICBvbnJlamVjdGVkLAogICkgewogICAgcmV0dXJuIHRoaXMudGhlbih2YWwgPT4gdmFsLCBvbnJlamVjdGVkKTsKICB9CgogIC8qKiBKU0RvYyAqLwogICBmaW5hbGx5KG9uZmluYWxseSkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIGxldCB2YWw7CiAgICAgIGxldCBpc1JlamVjdGVkOwoKICAgICAgcmV0dXJuIHRoaXMudGhlbigKICAgICAgICB2YWx1ZSA9PiB7CiAgICAgICAgICBpc1JlamVjdGVkID0gZmFsc2U7CiAgICAgICAgICB2YWwgPSB2YWx1ZTsKICAgICAgICAgIGlmIChvbmZpbmFsbHkpIHsKICAgICAgICAgICAgb25maW5hbGx5KCk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZWFzb24gPT4gewogICAgICAgICAgaXNSZWplY3RlZCA9IHRydWU7CiAgICAgICAgICB2YWwgPSByZWFzb247CiAgICAgICAgICBpZiAob25maW5hbGx5KSB7CiAgICAgICAgICAgIG9uZmluYWxseSgpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICkudGhlbigoKSA9PiB7CiAgICAgICAgaWYgKGlzUmVqZWN0ZWQpIHsKICAgICAgICAgIHJlamVjdCh2YWwpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmVzb2x2ZSh2YWwgKTsKICAgICAgfSk7CiAgICB9KTsKICB9CgogIC8qKiBKU0RvYyAqLwogICAgX19pbml0KCkge3RoaXMuX3Jlc29sdmUgPSAodmFsdWUpID0+IHsKICAgIHRoaXMuX3NldFJlc3VsdChTdGF0ZXMuUkVTT0xWRUQsIHZhbHVlKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQyKCkge3RoaXMuX3JlamVjdCA9IChyZWFzb24pID0+IHsKICAgIHRoaXMuX3NldFJlc3VsdChTdGF0ZXMuUkVKRUNURUQsIHJlYXNvbik7CiAgfTt9CgogIC8qKiBKU0RvYyAqLwogICAgX19pbml0MygpIHt0aGlzLl9zZXRSZXN1bHQgPSAoc3RhdGUsIHZhbHVlKSA9PiB7CiAgICBpZiAodGhpcy5fc3RhdGUgIT09IFN0YXRlcy5QRU5ESU5HKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaXNUaGVuYWJsZSh2YWx1ZSkpIHsKICAgICAgdm9pZCAodmFsdWUgKS50aGVuKHRoaXMuX3Jlc29sdmUsIHRoaXMuX3JlamVjdCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlOwogICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKCiAgICB0aGlzLl9leGVjdXRlSGFuZGxlcnMoKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQ0KCkge3RoaXMuX2V4ZWN1dGVIYW5kbGVycyA9ICgpID0+IHsKICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gU3RhdGVzLlBFTkRJTkcpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGNvbnN0IGNhY2hlZEhhbmRsZXJzID0gdGhpcy5faGFuZGxlcnMuc2xpY2UoKTsKICAgIHRoaXMuX2hhbmRsZXJzID0gW107CgogICAgY2FjaGVkSGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHsKICAgICAgaWYgKGhhbmRsZXJbMF0pIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gU3RhdGVzLlJFU09MVkVEKSB7CiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlcwogICAgICAgIGhhbmRsZXJbMV0odGhpcy5fdmFsdWUgKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSBTdGF0ZXMuUkVKRUNURUQpIHsKICAgICAgICBoYW5kbGVyWzJdKHRoaXMuX3ZhbHVlKTsKICAgICAgfQoKICAgICAgaGFuZGxlclswXSA9IHRydWU7CiAgICB9KTsKICB9O30KfQoKLyoqCiAqIENyZWF0ZXMgYW4gbmV3IFByb21pc2VCdWZmZXIgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBsaW1pdAogKiBAcGFyYW0gbGltaXQgbWF4IG51bWJlciBvZiBwcm9taXNlcyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gdGhlIGJ1ZmZlcgogKi8KZnVuY3Rpb24gbWFrZVByb21pc2VCdWZmZXIobGltaXQpIHsKICBjb25zdCBidWZmZXIgPSBbXTsKCiAgZnVuY3Rpb24gaXNSZWFkeSgpIHsKICAgIHJldHVybiBsaW1pdCA9PT0gdW5kZWZpbmVkIHx8IGJ1ZmZlci5sZW5ndGggPCBsaW1pdDsKICB9CgogIC8qKgogICAqIFJlbW92ZSBhIHByb21pc2UgZnJvbSB0aGUgcXVldWUuCiAgICoKICAgKiBAcGFyYW0gdGFzayBDYW4gYmUgYW55IFByb21pc2VMaWtlPFQ+CiAgICogQHJldHVybnMgUmVtb3ZlZCBwcm9taXNlLgogICAqLwogIGZ1bmN0aW9uIHJlbW92ZSh0YXNrKSB7CiAgICByZXR1cm4gYnVmZmVyLnNwbGljZShidWZmZXIuaW5kZXhPZih0YXNrKSwgMSlbMF07CiAgfQoKICAvKioKICAgKiBBZGQgYSBwcm9taXNlIChyZXByZXNlbnRpbmcgYW4gaW4tZmxpZ2h0IGFjdGlvbikgdG8gdGhlIHF1ZXVlLCBhbmQgc2V0IGl0IHRvIHJlbW92ZSBpdHNlbGYgb24gZnVsZmlsbG1lbnQuCiAgICoKICAgKiBAcGFyYW0gdGFza1Byb2R1Y2VyIEEgZnVuY3Rpb24gcHJvZHVjaW5nIGFueSBQcm9taXNlTGlrZTxUPjsgSW4gcHJldmlvdXMgdmVyc2lvbnMgdGhpcyB1c2VkIHRvIGJlIGB0YXNrOgogICAqICAgICAgICBQcm9taXNlTGlrZTxUPmAsIGJ1dCB1bmRlciB0aGF0IG1vZGVsLCBQcm9taXNlcyB3ZXJlIGluc3RhbnRseSBjcmVhdGVkIG9uIHRoZSBjYWxsLXNpdGUgYW5kIHRoZWlyIGV4ZWN1dG9yCiAgICogICAgICAgIGZ1bmN0aW9ucyB0aGVyZWZvcmUgcmFuIGltbWVkaWF0ZWx5LiBUaHVzLCBldmVuIGlmIHRoZSBidWZmZXIgd2FzIGZ1bGwsIHRoZSBhY3Rpb24gc3RpbGwgaGFwcGVuZWQuIEJ5CiAgICogICAgICAgIHJlcXVpcmluZyB0aGUgcHJvbWlzZSB0byBiZSB3cmFwcGVkIGluIGEgZnVuY3Rpb24sIHdlIGNhbiBkZWZlciBwcm9taXNlIGNyZWF0aW9uIHVudGlsIGFmdGVyIHRoZSBidWZmZXIKICAgKiAgICAgICAgbGltaXQgY2hlY2suCiAgICogQHJldHVybnMgVGhlIG9yaWdpbmFsIHByb21pc2UuCiAgICovCiAgZnVuY3Rpb24gYWRkKHRhc2tQcm9kdWNlcikgewogICAgaWYgKCFpc1JlYWR5KCkpIHsKICAgICAgcmV0dXJuIHJlamVjdGVkU3luY1Byb21pc2UobmV3IFNlbnRyeUVycm9yKCdOb3QgYWRkaW5nIFByb21pc2UgYmVjYXVzZSBidWZmZXIgbGltaXQgd2FzIHJlYWNoZWQuJykpOwogICAgfQoKICAgIC8vIHN0YXJ0IHRoZSB0YXNrIGFuZCBhZGQgaXRzIHByb21pc2UgdG8gdGhlIHF1ZXVlCiAgICBjb25zdCB0YXNrID0gdGFza1Byb2R1Y2VyKCk7CiAgICBpZiAoYnVmZmVyLmluZGV4T2YodGFzaykgPT09IC0xKSB7CiAgICAgIGJ1ZmZlci5wdXNoKHRhc2spOwogICAgfQogICAgdm9pZCB0YXNrCiAgICAgIC50aGVuKCgpID0+IHJlbW92ZSh0YXNrKSkKICAgICAgLy8gVXNlIGB0aGVuKG51bGwsIHJlamVjdGlvbkhhbmRsZXIpYCByYXRoZXIgdGhhbiBgY2F0Y2gocmVqZWN0aW9uSGFuZGxlcilgIHNvIHRoYXQgd2UgY2FuIHVzZSBgUHJvbWlzZUxpa2VgCiAgICAgIC8vIHJhdGhlciB0aGFuIGBQcm9taXNlYC4gYFByb21pc2VMaWtlYCBkb2Vzbid0IGhhdmUgYSBgLmNhdGNoYCBtZXRob2QsIG1ha2luZyBpdHMgcG9seWZpbGwgc21hbGxlci4gKEVTNSBkaWRuJ3QKICAgICAgLy8gaGF2ZSBwcm9taXNlcywgc28gVFMgaGFzIHRvIHBvbHlmaWxsIHdoZW4gZG93bi1jb21waWxpbmcuKQogICAgICAudGhlbihudWxsLCAoKSA9PgogICAgICAgIHJlbW92ZSh0YXNrKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYWRkIGFub3RoZXIgY2F0Y2ggaGVyZSBiZWNhdXNlIGByZW1vdmUoKWAgc3RhcnRzIGEgbmV3IHByb21pc2UgY2hhaW4uCiAgICAgICAgfSksCiAgICAgICk7CiAgICByZXR1cm4gdGFzazsKICB9CgogIC8qKgogICAqIFdhaXQgZm9yIGFsbCBwcm9taXNlcyBpbiB0aGUgcXVldWUgdG8gcmVzb2x2ZSBvciBmb3IgdGltZW91dCB0byBleHBpcmUsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4KICAgKgogICAqIEBwYXJhbSB0aW1lb3V0IFRoZSB0aW1lLCBpbiBtcywgYWZ0ZXIgd2hpY2ggdG8gcmVzb2x2ZSB0byBgZmFsc2VgIGlmIHRoZSBxdWV1ZSBpcyBzdGlsbCBub24tZW1wdHkuIFBhc3NpbmcgYDBgIChvcgogICAqIG5vdCBwYXNzaW5nIGFueXRoaW5nKSB3aWxsIG1ha2UgdGhlIHByb21pc2Ugd2FpdCBhcyBsb25nIGFzIGl0IHRha2VzIGZvciB0aGUgcXVldWUgdG8gZHJhaW4gYmVmb3JlIHJlc29sdmluZyB0bwogICAqIGB0cnVlYC4KICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHRvIGB0cnVlYCBpZiB0aGUgcXVldWUgaXMgYWxyZWFkeSBlbXB0eSBvciBkcmFpbnMgYmVmb3JlIHRoZSB0aW1lb3V0LCBhbmQKICAgKiBgZmFsc2VgIG90aGVyd2lzZQogICAqLwogIGZ1bmN0aW9uIGRyYWluKHRpbWVvdXQpIHsKICAgIHJldHVybiBuZXcgU3luY1Byb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBsZXQgY291bnRlciA9IGJ1ZmZlci5sZW5ndGg7CgogICAgICBpZiAoIWNvdW50ZXIpIHsKICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTsKICAgICAgfQoKICAgICAgLy8gd2FpdCBmb3IgYHRpbWVvdXRgIG1zIGFuZCB0aGVuIHJlc29sdmUgdG8gYGZhbHNlYCAoaWYgbm90IGNhbmNlbGxlZCBmaXJzdCkKICAgICAgY29uc3QgY2FwdHVyZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgaWYgKHRpbWVvdXQgJiYgdGltZW91dCA+IDApIHsKICAgICAgICAgIHJlc29sdmUoZmFsc2UpOwogICAgICAgIH0KICAgICAgfSwgdGltZW91dCk7CgogICAgICAvLyBpZiBhbGwgcHJvbWlzZXMgcmVzb2x2ZSBpbiB0aW1lLCBjYW5jZWwgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRvIGB0cnVlYAogICAgICBidWZmZXIuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICB2b2lkIHJlc29sdmVkU3luY1Byb21pc2UoaXRlbSkudGhlbigoKSA9PiB7CiAgICAgICAgICBpZiAoIS0tY291bnRlcikgewogICAgICAgICAgICBjbGVhclRpbWVvdXQoY2FwdHVyZWRTZXRUaW1lb3V0KTsKICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9LCByZWplY3QpOwogICAgICB9KTsKICAgIH0pOwogIH0KCiAgcmV0dXJuIHsKICAgICQ6IGJ1ZmZlciwKICAgIGFkZCwKICAgIGRyYWluLAogIH07Cn0KCmNvbnN0IE9ORV9TRUNPTkRfSU5fTVMgPSAxMDAwOwoKLyoqCiAqIEEgcGFydGlhbCBkZWZpbml0aW9uIG9mIHRoZSBbUGVyZm9ybWFuY2UgV2ViIEFQSV17QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BlcmZvcm1hbmNlfQogKiBmb3IgYWNjZXNzaW5nIGEgaGlnaC1yZXNvbHV0aW9uIG1vbm90b25pYyBjbG9jay4KICovCgovKioKICogUmV0dXJucyBhIHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoIHVzaW5nIHRoZSBEYXRlIEFQSS4KICoKICogVE9ETyh2OCk6IFJldHVybiB0eXBlIHNob3VsZCBiZSByb3VuZGVkLgogKi8KZnVuY3Rpb24gZGF0ZVRpbWVzdGFtcEluU2Vjb25kcygpIHsKICByZXR1cm4gRGF0ZS5ub3coKSAvIE9ORV9TRUNPTkRfSU5fTVM7Cn0KCi8qKgogKiBSZXR1cm5zIGEgd3JhcHBlciBhcm91bmQgdGhlIG5hdGl2ZSBQZXJmb3JtYW5jZSBBUEkgYnJvd3NlciBpbXBsZW1lbnRhdGlvbiwgb3IgdW5kZWZpbmVkIGZvciBicm93c2VycyB0aGF0IGRvIG5vdAogKiBzdXBwb3J0IHRoZSBBUEkuCiAqCiAqIFdyYXBwaW5nIHRoZSBuYXRpdmUgQVBJIHdvcmtzIGFyb3VuZCBkaWZmZXJlbmNlcyBpbiBiZWhhdmlvciBmcm9tIGRpZmZlcmVudCBicm93c2Vycy4KICovCmZ1bmN0aW9uIGNyZWF0ZVVuaXhUaW1lc3RhbXBJblNlY29uZHNGdW5jKCkgewogIGNvbnN0IHsgcGVyZm9ybWFuY2UgfSA9IEdMT0JBTF9PQkogOwogIGlmICghcGVyZm9ybWFuY2UgfHwgIXBlcmZvcm1hbmNlLm5vdykgewogICAgcmV0dXJuIGRhdGVUaW1lc3RhbXBJblNlY29uZHM7CiAgfQoKICAvLyBTb21lIGJyb3dzZXIgYW5kIGVudmlyb25tZW50cyBkb24ndCBoYXZlIGEgdGltZU9yaWdpbiwgc28gd2UgZmFsbGJhY2sgdG8KICAvLyB1c2luZyBEYXRlLm5vdygpIHRvIGNvbXB1dGUgdGhlIHN0YXJ0aW5nIHRpbWUuCiAgY29uc3QgYXBwcm94U3RhcnRpbmdUaW1lT3JpZ2luID0gRGF0ZS5ub3coKSAtIHBlcmZvcm1hbmNlLm5vdygpOwogIGNvbnN0IHRpbWVPcmlnaW4gPSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luID09IHVuZGVmaW5lZCA/IGFwcHJveFN0YXJ0aW5nVGltZU9yaWdpbiA6IHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47CgogIC8vIHBlcmZvcm1hbmNlLm5vdygpIGlzIGEgbW9ub3RvbmljIGNsb2NrLCB3aGljaCBtZWFucyBpdCBzdGFydHMgYXQgMCB3aGVuIHRoZSBwcm9jZXNzIGJlZ2lucy4gVG8gZ2V0IHRoZSBjdXJyZW50CiAgLy8gd2FsbCBjbG9jayB0aW1lIChhY3R1YWwgVU5JWCB0aW1lc3RhbXApLCB3ZSBuZWVkIHRvIGFkZCB0aGUgc3RhcnRpbmcgdGltZSBvcmlnaW4gYW5kIHRoZSBjdXJyZW50IHRpbWUgZWxhcHNlZC4KICAvLwogIC8vIFRPRE86IFRoaXMgZG9lcyBub3QgYWNjb3VudCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIG1vbm90b25pYyBjbG9jayB0aGF0IHBvd2VycyBwZXJmb3JtYW5jZS5ub3coKSBkcmlmdHMgZnJvbSB0aGUKICAvLyB3YWxsIGNsb2NrIHRpbWUsIHdoaWNoIGNhdXNlcyB0aGUgcmV0dXJuZWQgdGltZXN0YW1wIHRvIGJlIGluYWNjdXJhdGUuIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBob3cgdG8gZGV0ZWN0IGFuZAogIC8vIGNvcnJlY3QgZm9yIHRoaXMuCiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTkwCiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbWRuL2NvbnRlbnQvaXNzdWVzLzQ3MTMKICAvLyBTZWU6IGh0dHBzOi8vZGV2LnRvL25vYW1yL3doZW4tYS1taWxsaXNlY29uZC1pcy1ub3QtYS1taWxsaXNlY29uZC0zaDYKICByZXR1cm4gKCkgPT4gewogICAgcmV0dXJuICh0aW1lT3JpZ2luICsgcGVyZm9ybWFuY2Uubm93KCkpIC8gT05FX1NFQ09ORF9JTl9NUzsKICB9Owp9CgovKioKICogUmV0dXJucyBhIHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoIHVzaW5nIGVpdGhlciB0aGUgUGVyZm9ybWFuY2Ugb3IgRGF0ZSBBUElzLCBkZXBlbmRpbmcgb24gdGhlCiAqIGF2YWlsYWJpbGl0eSBvZiB0aGUgUGVyZm9ybWFuY2UgQVBJLgogKgogKiBCVUc6IE5vdGUgdGhhdCBiZWNhdXNlIG9mIGhvdyBicm93c2VycyBpbXBsZW1lbnQgdGhlIFBlcmZvcm1hbmNlIEFQSSwgdGhlIGNsb2NrIG1pZ2h0IHN0b3Agd2hlbiB0aGUgY29tcHV0ZXIgaXMKICogYXNsZWVwLiBUaGlzIGNyZWF0ZXMgYSBza2V3IGJldHdlZW4gYGRhdGVUaW1lc3RhbXBJblNlY29uZHNgIGFuZCBgdGltZXN0YW1wSW5TZWNvbmRzYC4gVGhlCiAqIHNrZXcgY2FuIGdyb3cgdG8gYXJiaXRyYXJ5IGFtb3VudHMgbGlrZSBkYXlzLCB3ZWVrcyBvciBtb250aHMuCiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTkwLgogKi8KY29uc3QgdGltZXN0YW1wSW5TZWNvbmRzID0gY3JlYXRlVW5peFRpbWVzdGFtcEluU2Vjb25kc0Z1bmMoKTsKCi8qKgogKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4gVGhpcyB2YWx1ZSBpcyBvbmx5IHVzYWJsZSBpbiBhIGJyb3dzZXIsIGFuZCBvbmx5IHdoZW4gdGhlCiAqIHBlcmZvcm1hbmNlIEFQSSBpcyBhdmFpbGFibGUuCiAqLwooKCkgPT4gewogIC8vIFVuZm9ydHVuYXRlbHkgYnJvd3NlcnMgbWF5IHJlcG9ydCBhbiBpbmFjY3VyYXRlIHRpbWUgb3JpZ2luIGRhdGEsIHRocm91Z2ggZWl0aGVyIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gb3IKICAvLyBwZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0LCB3aGljaCByZXN1bHRzIGluIHBvb3IgcmVzdWx0cyBpbiBwZXJmb3JtYW5jZSBkYXRhLiBXZSBvbmx5IHRyZWF0IHRpbWUgb3JpZ2luCiAgLy8gZGF0YSBhcyByZWxpYWJsZSBpZiB0aGV5IGFyZSB3aXRoaW4gYSByZWFzb25hYmxlIHRocmVzaG9sZCBvZiB0aGUgY3VycmVudCB0aW1lLgoKICBjb25zdCB7IHBlcmZvcm1hbmNlIH0gPSBHTE9CQUxfT0JKIDsKICBpZiAoIXBlcmZvcm1hbmNlIHx8ICFwZXJmb3JtYW5jZS5ub3cpIHsKICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQoKICBjb25zdCB0aHJlc2hvbGQgPSAzNjAwICogMTAwMDsKICBjb25zdCBwZXJmb3JtYW5jZU5vdyA9IHBlcmZvcm1hbmNlLm5vdygpOwogIGNvbnN0IGRhdGVOb3cgPSBEYXRlLm5vdygpOwoKICAvLyBpZiB0aW1lT3JpZ2luIGlzbid0IGF2YWlsYWJsZSBzZXQgZGVsdGEgdG8gdGhyZXNob2xkIHNvIGl0IGlzbid0IHVzZWQKICBjb25zdCB0aW1lT3JpZ2luRGVsdGEgPSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luCiAgICA/IE1hdGguYWJzKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBwZXJmb3JtYW5jZU5vdyAtIGRhdGVOb3cpCiAgICA6IHRocmVzaG9sZDsKICBjb25zdCB0aW1lT3JpZ2luSXNSZWxpYWJsZSA9IHRpbWVPcmlnaW5EZWx0YSA8IHRocmVzaG9sZDsKCiAgLy8gV2hpbGUgcGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4sIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4KICAvLyBpcyBub3QgYXMgd2lkZWx5IHN1cHBvcnRlZC4gTmFtZWx5LCBwZXJmb3JtYW5jZS50aW1lT3JpZ2luIGlzIHVuZGVmaW5lZCBpbiBTYWZhcmkgYXMgb2Ygd3JpdGluZy4KICAvLyBBbHNvIGFzIG9mIHdyaXRpbmcsIHBlcmZvcm1hbmNlLnRpbWluZyBpcyBub3QgYXZhaWxhYmxlIGluIFdlYiBXb3JrZXJzIGluIG1haW5zdHJlYW0gYnJvd3NlcnMsIHNvIGl0IGlzIG5vdCBhbHdheXMKICAvLyBhIHZhbGlkIGZhbGxiYWNrLiBJbiB0aGUgYWJzZW5jZSBvZiBhbiBpbml0aWFsIHRpbWUgcHJvdmlkZWQgYnkgdGhlIGJyb3dzZXIsIGZhbGxiYWNrIHRvIHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUKICAvLyBEYXRlIEFQSS4KICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICBjb25zdCBuYXZpZ2F0aW9uU3RhcnQgPSBwZXJmb3JtYW5jZS50aW1pbmcgJiYgcGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydDsKICBjb25zdCBoYXNOYXZpZ2F0aW9uU3RhcnQgPSB0eXBlb2YgbmF2aWdhdGlvblN0YXJ0ID09PSAnbnVtYmVyJzsKICAvLyBpZiBuYXZpZ2F0aW9uU3RhcnQgaXNuJ3QgYXZhaWxhYmxlIHNldCBkZWx0YSB0byB0aHJlc2hvbGQgc28gaXQgaXNuJ3QgdXNlZAogIGNvbnN0IG5hdmlnYXRpb25TdGFydERlbHRhID0gaGFzTmF2aWdhdGlvblN0YXJ0ID8gTWF0aC5hYnMobmF2aWdhdGlvblN0YXJ0ICsgcGVyZm9ybWFuY2VOb3cgLSBkYXRlTm93KSA6IHRocmVzaG9sZDsKICBjb25zdCBuYXZpZ2F0aW9uU3RhcnRJc1JlbGlhYmxlID0gbmF2aWdhdGlvblN0YXJ0RGVsdGEgPCB0aHJlc2hvbGQ7CgogIGlmICh0aW1lT3JpZ2luSXNSZWxpYWJsZSB8fCBuYXZpZ2F0aW9uU3RhcnRJc1JlbGlhYmxlKSB7CiAgICAvLyBVc2UgdGhlIG1vcmUgcmVsaWFibGUgdGltZSBvcmlnaW4KICAgIGlmICh0aW1lT3JpZ2luRGVsdGEgPD0gbmF2aWdhdGlvblN0YXJ0RGVsdGEpIHsKICAgICAgcmV0dXJuIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmF2aWdhdGlvblN0YXJ0OwogICAgfQogIH0KICByZXR1cm4gZGF0ZU5vdzsKfSkoKTsKCi8qKgogKiBDcmVhdGVzIGFuIGVudmVsb3BlLgogKiBNYWtlIHN1cmUgdG8gYWx3YXlzIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgZ2VuZXJpYyB0byB0aGlzIGZ1bmN0aW9uCiAqIHNvIHRoYXQgdGhlIGVudmVsb3BlIHR5cGVzIHJlc29sdmUgY29ycmVjdGx5LgogKi8KZnVuY3Rpb24gY3JlYXRlRW52ZWxvcGUoaGVhZGVycywgaXRlbXMgPSBbXSkgewogIHJldHVybiBbaGVhZGVycywgaXRlbXNdIDsKfQoKLyoqCiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGxvb3AgdGhyb3VnaCB0aGUgaXRlbXMgYW5kIGl0ZW0gdHlwZXMgb2YgYW4gZW52ZWxvcGUuCiAqIChUaGlzIGZ1bmN0aW9uIHdhcyBtb3N0bHkgY3JlYXRlZCBiZWNhdXNlIHdvcmtpbmcgd2l0aCBlbnZlbG9wZSB0eXBlcyBpcyBwYWluZnVsIGF0IHRoZSBtb21lbnQpCiAqCiAqIElmIHRoZSBjYWxsYmFjayByZXR1cm5zIHRydWUsIHRoZSByZXN0IG9mIHRoZSBpdGVtcyB3aWxsIGJlIHNraXBwZWQuCiAqLwpmdW5jdGlvbiBmb3JFYWNoRW52ZWxvcGVJdGVtKAogIGVudmVsb3BlLAogIGNhbGxiYWNrLAopIHsKICBjb25zdCBlbnZlbG9wZUl0ZW1zID0gZW52ZWxvcGVbMV07CgogIGZvciAoY29uc3QgZW52ZWxvcGVJdGVtIG9mIGVudmVsb3BlSXRlbXMpIHsKICAgIGNvbnN0IGVudmVsb3BlSXRlbVR5cGUgPSBlbnZlbG9wZUl0ZW1bMF0udHlwZTsKICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGVudmVsb3BlSXRlbSwgZW52ZWxvcGVJdGVtVHlwZSk7CgogICAgaWYgKHJlc3VsdCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIHJldHVybiBmYWxzZTsKfQoKLyoqCiAqIEVuY29kZSBhIHN0cmluZyB0byBVVEY4LgogKi8KZnVuY3Rpb24gZW5jb2RlVVRGOChpbnB1dCwgdGV4dEVuY29kZXIpIHsKICBjb25zdCB1dGY4ID0gdGV4dEVuY29kZXIgfHwgbmV3IFRleHRFbmNvZGVyKCk7CiAgcmV0dXJuIHV0ZjguZW5jb2RlKGlucHV0KTsKfQoKLyoqCiAqIFNlcmlhbGl6ZXMgYW4gZW52ZWxvcGUuCiAqLwpmdW5jdGlvbiBzZXJpYWxpemVFbnZlbG9wZShlbnZlbG9wZSwgdGV4dEVuY29kZXIpIHsKICBjb25zdCBbZW52SGVhZGVycywgaXRlbXNdID0gZW52ZWxvcGU7CgogIC8vIEluaXRpYWxseSB3ZSBjb25zdHJ1Y3Qgb3VyIGVudmVsb3BlIGFzIGEgc3RyaW5nIGFuZCBvbmx5IGNvbnZlcnQgdG8gYmluYXJ5IGNodW5rcyBpZiB3ZSBlbmNvdW50ZXIgYmluYXJ5IGRhdGEKICBsZXQgcGFydHMgPSBKU09OLnN0cmluZ2lmeShlbnZIZWFkZXJzKTsKCiAgZnVuY3Rpb24gYXBwZW5kKG5leHQpIHsKICAgIGlmICh0eXBlb2YgcGFydHMgPT09ICdzdHJpbmcnKSB7CiAgICAgIHBhcnRzID0gdHlwZW9mIG5leHQgPT09ICdzdHJpbmcnID8gcGFydHMgKyBuZXh0IDogW2VuY29kZVVURjgocGFydHMsIHRleHRFbmNvZGVyKSwgbmV4dF07CiAgICB9IGVsc2UgewogICAgICBwYXJ0cy5wdXNoKHR5cGVvZiBuZXh0ID09PSAnc3RyaW5nJyA/IGVuY29kZVVURjgobmV4dCwgdGV4dEVuY29kZXIpIDogbmV4dCk7CiAgICB9CiAgfQoKICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGNvbnN0IFtpdGVtSGVhZGVycywgcGF5bG9hZF0gPSBpdGVtOwoKICAgIGFwcGVuZChgXG4ke0pTT04uc3RyaW5naWZ5KGl0ZW1IZWFkZXJzKX1cbmApOwoKICAgIGlmICh0eXBlb2YgcGF5bG9hZCA9PT0gJ3N0cmluZycgfHwgcGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHsKICAgICAgYXBwZW5kKHBheWxvYWQpOwogICAgfSBlbHNlIHsKICAgICAgbGV0IHN0cmluZ2lmaWVkUGF5bG9hZDsKICAgICAgdHJ5IHsKICAgICAgICBzdHJpbmdpZmllZFBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIC8vIEluIGNhc2UsIGRlc3BpdGUgYWxsIG91ciBlZmZvcnRzIHRvIGtlZXAgYHBheWxvYWRgIGNpcmN1bGFyLWRlcGVuZGVuY3ktZnJlZSwgYEpTT04uc3RyaW5pZnkoKWAgc3RpbGwKICAgICAgICAvLyBmYWlscywgd2UgdHJ5IGFnYWluIGFmdGVyIG5vcm1hbGl6aW5nIGl0IGFnYWluIHdpdGggaW5maW5pdGUgbm9ybWFsaXphdGlvbiBkZXB0aC4gVGhpcyBvZiBjb3Vyc2UgaGFzIGEKICAgICAgICAvLyBwZXJmb3JtYW5jZSBpbXBhY3QgYnV0IGluIHRoaXMgY2FzZSBhIHBlcmZvcm1hbmNlIGhpdCBpcyBiZXR0ZXIgdGhhbiB0aHJvd2luZy4KICAgICAgICBzdHJpbmdpZmllZFBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShub3JtYWxpemUocGF5bG9hZCkpOwogICAgICB9CiAgICAgIGFwcGVuZChzdHJpbmdpZmllZFBheWxvYWQpOwogICAgfQogIH0KCiAgcmV0dXJuIHR5cGVvZiBwYXJ0cyA9PT0gJ3N0cmluZycgPyBwYXJ0cyA6IGNvbmNhdEJ1ZmZlcnMocGFydHMpOwp9CgpmdW5jdGlvbiBjb25jYXRCdWZmZXJzKGJ1ZmZlcnMpIHsKICBjb25zdCB0b3RhbExlbmd0aCA9IGJ1ZmZlcnMucmVkdWNlKChhY2MsIGJ1ZikgPT4gYWNjICsgYnVmLmxlbmd0aCwgMCk7CgogIGNvbnN0IG1lcmdlZCA9IG5ldyBVaW50OEFycmF5KHRvdGFsTGVuZ3RoKTsKICBsZXQgb2Zmc2V0ID0gMDsKICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7CiAgICBtZXJnZWQuc2V0KGJ1ZmZlciwgb2Zmc2V0KTsKICAgIG9mZnNldCArPSBidWZmZXIubGVuZ3RoOwogIH0KCiAgcmV0dXJuIG1lcmdlZDsKfQoKY29uc3QgSVRFTV9UWVBFX1RPX0RBVEFfQ0FURUdPUllfTUFQID0gewogIHNlc3Npb246ICdzZXNzaW9uJywKICBzZXNzaW9uczogJ3Nlc3Npb24nLAogIGF0dGFjaG1lbnQ6ICdhdHRhY2htZW50JywKICB0cmFuc2FjdGlvbjogJ3RyYW5zYWN0aW9uJywKICBldmVudDogJ2Vycm9yJywKICBjbGllbnRfcmVwb3J0OiAnaW50ZXJuYWwnLAogIHVzZXJfcmVwb3J0OiAnZGVmYXVsdCcsCiAgcHJvZmlsZTogJ3Byb2ZpbGUnLAogIHJlcGxheV9ldmVudDogJ3JlcGxheScsCiAgcmVwbGF5X3JlY29yZGluZzogJ3JlcGxheScsCiAgY2hlY2tfaW46ICdtb25pdG9yJywKICBmZWVkYmFjazogJ2ZlZWRiYWNrJywKICBzcGFuOiAnc3BhbicsCiAgc3RhdHNkOiAnbWV0cmljX2J1Y2tldCcsCn07CgovKioKICogTWFwcyB0aGUgdHlwZSBvZiBhbiBlbnZlbG9wZSBpdGVtIHRvIGEgZGF0YSBjYXRlZ29yeS4KICovCmZ1bmN0aW9uIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSB7CiAgcmV0dXJuIElURU1fVFlQRV9UT19EQVRBX0NBVEVHT1JZX01BUFt0eXBlXTsKfQoKLyoqIEV4dHJhY3RzIHRoZSBtaW5pbWFsIFNESyBpbmZvIGZyb20gdGhlIG1ldGFkYXRhIG9yIGFuIGV2ZW50cyAqLwpmdW5jdGlvbiBnZXRTZGtNZXRhZGF0YUZvckVudmVsb3BlSGVhZGVyKG1ldGFkYXRhT3JFdmVudCkgewogIGlmICghbWV0YWRhdGFPckV2ZW50IHx8ICFtZXRhZGF0YU9yRXZlbnQuc2RrKSB7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IHsgbmFtZSwgdmVyc2lvbiB9ID0gbWV0YWRhdGFPckV2ZW50LnNkazsKICByZXR1cm4geyBuYW1lLCB2ZXJzaW9uIH07Cn0KCi8qKgogKiBDcmVhdGVzIGV2ZW50IGVudmVsb3BlIGhlYWRlcnMsIGJhc2VkIG9uIGV2ZW50LCBzZGsgaW5mbyBhbmQgdHVubmVsCiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIHBhY2thZ2UgdG8gbWFrZSBpdCBhdmFpbGFibGUgaW4gUmVwbGF5CiAqLwpmdW5jdGlvbiBjcmVhdGVFdmVudEVudmVsb3BlSGVhZGVycygKICBldmVudCwKICBzZGtJbmZvLAogIHR1bm5lbCwKICBkc24sCikgewogIGNvbnN0IGR5bmFtaWNTYW1wbGluZ0NvbnRleHQgPSBldmVudC5zZGtQcm9jZXNzaW5nTWV0YWRhdGEgJiYgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7CiAgcmV0dXJuIHsKICAgIGV2ZW50X2lkOiBldmVudC5ldmVudF9pZCAsCiAgICBzZW50X2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAuLi4oc2RrSW5mbyAmJiB7IHNkazogc2RrSW5mbyB9KSwKICAgIC4uLighIXR1bm5lbCAmJiBkc24gJiYgeyBkc246IGRzblRvU3RyaW5nKGRzbikgfSksCiAgICAuLi4oZHluYW1pY1NhbXBsaW5nQ29udGV4dCAmJiB7CiAgICAgIHRyYWNlOiBkcm9wVW5kZWZpbmVkS2V5cyh7IC4uLmR5bmFtaWNTYW1wbGluZ0NvbnRleHQgfSksCiAgICB9KSwKICB9Owp9CgovLyBJbnRlbnRpb25hbGx5IGtlZXBpbmcgdGhlIGtleSBicm9hZCwgYXMgd2UgZG9uJ3Qga25vdyBmb3Igc3VyZSB3aGF0IHJhdGUgbGltaXQgaGVhZGVycyBnZXQgcmV0dXJuZWQgZnJvbSBiYWNrZW5kCgpjb25zdCBERUZBVUxUX1JFVFJZX0FGVEVSID0gNjAgKiAxMDAwOyAvLyA2MCBzZWNvbmRzCgovKioKICogRXh0cmFjdHMgUmV0cnktQWZ0ZXIgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCBoZWFkZXIgb3IgcmV0dXJucyBkZWZhdWx0IHZhbHVlCiAqIEBwYXJhbSBoZWFkZXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICdSZXRyeS1BZnRlcicgaGVhZGVyCiAqIEBwYXJhbSBub3cgY3VycmVudCB1bml4IHRpbWVzdGFtcAogKgogKi8KZnVuY3Rpb24gcGFyc2VSZXRyeUFmdGVySGVhZGVyKGhlYWRlciwgbm93ID0gRGF0ZS5ub3coKSkgewogIGNvbnN0IGhlYWRlckRlbGF5ID0gcGFyc2VJbnQoYCR7aGVhZGVyfWAsIDEwKTsKICBpZiAoIWlzTmFOKGhlYWRlckRlbGF5KSkgewogICAgcmV0dXJuIGhlYWRlckRlbGF5ICogMTAwMDsKICB9CgogIGNvbnN0IGhlYWRlckRhdGUgPSBEYXRlLnBhcnNlKGAke2hlYWRlcn1gKTsKICBpZiAoIWlzTmFOKGhlYWRlckRhdGUpKSB7CiAgICByZXR1cm4gaGVhZGVyRGF0ZSAtIG5vdzsKICB9CgogIHJldHVybiBERUZBVUxUX1JFVFJZX0FGVEVSOwp9CgovKioKICogR2V0cyB0aGUgdGltZSB0aGF0IHRoZSBnaXZlbiBjYXRlZ29yeSBpcyBkaXNhYmxlZCB1bnRpbCBmb3IgcmF0ZSBsaW1pdGluZy4KICogSW4gY2FzZSBubyBjYXRlZ29yeS1zcGVjaWZpYyBsaW1pdCBpcyBzZXQgYnV0IGEgZ2VuZXJhbCByYXRlIGxpbWl0IGFjcm9zcyBhbGwgY2F0ZWdvcmllcyBpcyBhY3RpdmUsCiAqIHRoYXQgdGltZSBpcyByZXR1cm5lZC4KICoKICogQHJldHVybiB0aGUgdGltZSBpbiBtcyB0aGF0IHRoZSBjYXRlZ29yeSBpcyBkaXNhYmxlZCB1bnRpbCBvciAwIGlmIHRoZXJlJ3Mgbm8gYWN0aXZlIHJhdGUgbGltaXQuCiAqLwpmdW5jdGlvbiBkaXNhYmxlZFVudGlsKGxpbWl0cywgZGF0YUNhdGVnb3J5KSB7CiAgcmV0dXJuIGxpbWl0c1tkYXRhQ2F0ZWdvcnldIHx8IGxpbWl0cy5hbGwgfHwgMDsKfQoKLyoqCiAqIENoZWNrcyBpZiBhIGNhdGVnb3J5IGlzIHJhdGUgbGltaXRlZAogKi8KZnVuY3Rpb24gaXNSYXRlTGltaXRlZChsaW1pdHMsIGRhdGFDYXRlZ29yeSwgbm93ID0gRGF0ZS5ub3coKSkgewogIHJldHVybiBkaXNhYmxlZFVudGlsKGxpbWl0cywgZGF0YUNhdGVnb3J5KSA+IG5vdzsKfQoKLyoqCiAqIFVwZGF0ZSByYXRlbGltaXRzIGZyb20gaW5jb21pbmcgaGVhZGVycy4KICoKICogQHJldHVybiB0aGUgdXBkYXRlZCBSYXRlTGltaXRzIG9iamVjdC4KICovCmZ1bmN0aW9uIHVwZGF0ZVJhdGVMaW1pdHMoCiAgbGltaXRzLAogIHsgc3RhdHVzQ29kZSwgaGVhZGVycyB9LAogIG5vdyA9IERhdGUubm93KCksCikgewogIGNvbnN0IHVwZGF0ZWRSYXRlTGltaXRzID0gewogICAgLi4ubGltaXRzLAogIH07CgogIC8vICJUaGUgbmFtZSBpcyBjYXNlLWluc2Vuc2l0aXZlLiIKICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSGVhZGVycy9nZXQKICBjb25zdCByYXRlTGltaXRIZWFkZXIgPSBoZWFkZXJzICYmIGhlYWRlcnNbJ3gtc2VudHJ5LXJhdGUtbGltaXRzJ107CiAgY29uc3QgcmV0cnlBZnRlckhlYWRlciA9IGhlYWRlcnMgJiYgaGVhZGVyc1sncmV0cnktYWZ0ZXInXTsKCiAgaWYgKHJhdGVMaW1pdEhlYWRlcikgewogICAgLyoqCiAgICAgKiByYXRlIGxpbWl0IGhlYWRlcnMgYXJlIG9mIHRoZSBmb3JtCiAgICAgKiAgICAgPGhlYWRlcj4sPGhlYWRlcj4sLi4KICAgICAqIHdoZXJlIGVhY2ggPGhlYWRlcj4gaXMgb2YgdGhlIGZvcm0KICAgICAqICAgICA8cmV0cnlfYWZ0ZXI+OiA8Y2F0ZWdvcmllcz46IDxzY29wZT46IDxyZWFzb25fY29kZT46IDxuYW1lc3BhY2VzPgogICAgICogd2hlcmUKICAgICAqICAgICA8cmV0cnlfYWZ0ZXI+IGlzIGEgZGVsYXkgaW4gc2Vjb25kcwogICAgICogICAgIDxjYXRlZ29yaWVzPiBpcyB0aGUgZXZlbnQgdHlwZShzKSAoZXJyb3IsIHRyYW5zYWN0aW9uLCBldGMpIGJlaW5nIHJhdGUgbGltaXRlZCBhbmQgaXMgb2YgdGhlIGZvcm0KICAgICAqICAgICAgICAgPGNhdGVnb3J5Pjs8Y2F0ZWdvcnk+Oy4uLgogICAgICogICAgIDxzY29wZT4gaXMgd2hhdCdzIGJlaW5nIGxpbWl0ZWQgKG9yZywgcHJvamVjdCwgb3Iga2V5KSAtIGlnbm9yZWQgYnkgU0RLCiAgICAgKiAgICAgPHJlYXNvbl9jb2RlPiBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nIGxpa2UgIm9yZ19xdW90YSIgLSBpZ25vcmVkIGJ5IFNESwogICAgICogICAgIDxuYW1lc3BhY2VzPiBTZW1pY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgbWV0cmljIG5hbWVzcGFjZSBpZGVudGlmaWVycy4gRGVmaW5lcyB3aGljaCBuYW1lc3BhY2Uocykgd2lsbCBiZSBhZmZlY3RlZC4KICAgICAqICAgICAgICAgT25seSBwcmVzZW50IGlmIHJhdGUgbGltaXQgYXBwbGllcyB0byB0aGUgbWV0cmljX2J1Y2tldCBkYXRhIGNhdGVnb3J5LgogICAgICovCiAgICBmb3IgKGNvbnN0IGxpbWl0IG9mIHJhdGVMaW1pdEhlYWRlci50cmltKCkuc3BsaXQoJywnKSkgewogICAgICBjb25zdCBbcmV0cnlBZnRlciwgY2F0ZWdvcmllcywgLCAsIG5hbWVzcGFjZXNdID0gbGltaXQuc3BsaXQoJzonLCA1KTsKICAgICAgY29uc3QgaGVhZGVyRGVsYXkgPSBwYXJzZUludChyZXRyeUFmdGVyLCAxMCk7CiAgICAgIGNvbnN0IGRlbGF5ID0gKCFpc05hTihoZWFkZXJEZWxheSkgPyBoZWFkZXJEZWxheSA6IDYwKSAqIDEwMDA7IC8vIDYwc2VjIGRlZmF1bHQKICAgICAgaWYgKCFjYXRlZ29yaWVzKSB7CiAgICAgICAgdXBkYXRlZFJhdGVMaW1pdHMuYWxsID0gbm93ICsgZGVsYXk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzLnNwbGl0KCc7JykpIHsKICAgICAgICAgIGlmIChjYXRlZ29yeSA9PT0gJ21ldHJpY19idWNrZXQnKSB7CiAgICAgICAgICAgIC8vIG5hbWVzcGFjZXMgd2lsbCBiZSBwcmVzZW50IHdoZW4gY2F0ZWdvcnkgPT09ICdtZXRyaWNfYnVja2V0JwogICAgICAgICAgICBpZiAoIW5hbWVzcGFjZXMgfHwgbmFtZXNwYWNlcy5zcGxpdCgnOycpLmluY2x1ZGVzKCdjdXN0b20nKSkgewogICAgICAgICAgICAgIHVwZGF0ZWRSYXRlTGltaXRzW2NhdGVnb3J5XSA9IG5vdyArIGRlbGF5OwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB1cGRhdGVkUmF0ZUxpbWl0c1tjYXRlZ29yeV0gPSBub3cgKyBkZWxheTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9IGVsc2UgaWYgKHJldHJ5QWZ0ZXJIZWFkZXIpIHsKICAgIHVwZGF0ZWRSYXRlTGltaXRzLmFsbCA9IG5vdyArIHBhcnNlUmV0cnlBZnRlckhlYWRlcihyZXRyeUFmdGVySGVhZGVyLCBub3cpOwogIH0gZWxzZSBpZiAoc3RhdHVzQ29kZSA9PT0gNDI5KSB7CiAgICB1cGRhdGVkUmF0ZUxpbWl0cy5hbGwgPSBub3cgKyA2MCAqIDEwMDA7CiAgfQoKICByZXR1cm4gdXBkYXRlZFJhdGVMaW1pdHM7Cn0KCi8qKgogKiBBIG5vZGUuanMgd2F0Y2hkb2cgdGltZXIKICogQHBhcmFtIHBvbGxJbnRlcnZhbCBUaGUgaW50ZXJ2YWwgdGhhdCB3ZSBleHBlY3QgdG8gZ2V0IHBvbGxlZCBhdAogKiBAcGFyYW0gYW5yVGhyZXNob2xkIFRoZSB0aHJlc2hvbGQgZm9yIHdoZW4gd2UgY29uc2lkZXIgQU5SCiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gY2FsbCBmb3IgQU5SCiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBwb2xsYCBhbmQgYGVuYWJsZWRgIGZ1bmN0aW9ucyB7QGxpbmsgV2F0Y2hkb2dSZXR1cm59CiAqLwpmdW5jdGlvbiB3YXRjaGRvZ1RpbWVyKAogIGNyZWF0ZVRpbWVyLAogIHBvbGxJbnRlcnZhbCwKICBhbnJUaHJlc2hvbGQsCiAgY2FsbGJhY2ssCikgewogIGNvbnN0IHRpbWVyID0gY3JlYXRlVGltZXIoKTsKICBsZXQgdHJpZ2dlcmVkID0gZmFsc2U7CiAgbGV0IGVuYWJsZWQgPSB0cnVlOwoKICBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICBjb25zdCBkaWZmTXMgPSB0aW1lci5nZXRUaW1lTXMoKTsKCiAgICBpZiAodHJpZ2dlcmVkID09PSBmYWxzZSAmJiBkaWZmTXMgPiBwb2xsSW50ZXJ2YWwgKyBhbnJUaHJlc2hvbGQpIHsKICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKICAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CgogICAgaWYgKGRpZmZNcyA8IHBvbGxJbnRlcnZhbCArIGFuclRocmVzaG9sZCkgewogICAgICB0cmlnZ2VyZWQgPSBmYWxzZTsKICAgIH0KICB9LCAyMCk7CgogIHJldHVybiB7CiAgICBwb2xsOiAoKSA9PiB7CiAgICAgIHRpbWVyLnJlc2V0KCk7CiAgICB9LAogICAgZW5hYmxlZDogKHN0YXRlKSA9PiB7CiAgICAgIGVuYWJsZWQgPSBzdGF0ZTsKICAgIH0sCiAgfTsKfQoKLy8gdHlwZXMgY29waWVkIGZyb20gaW5zcGVjdG9yLmQudHMKCi8qKgogKiBDb252ZXJ0cyBEZWJ1Z2dlci5DYWxsRnJhbWUgdG8gU2VudHJ5IFN0YWNrRnJhbWUKICovCmZ1bmN0aW9uIGNhbGxGcmFtZVRvU3RhY2tGcmFtZSgKICBmcmFtZSwKICB1cmwsCiAgZ2V0TW9kdWxlRnJvbUZpbGVuYW1lLAopIHsKICBjb25zdCBmaWxlbmFtZSA9IHVybCA/IHVybC5yZXBsYWNlKC9eZmlsZTpcL1wvLywgJycpIDogdW5kZWZpbmVkOwoKICAvLyBDYWxsRnJhbWUgcm93L2NvbCBhcmUgMCBiYXNlZCwgd2hlcmVhcyBTdGFja0ZyYW1lIGFyZSAxIGJhc2VkCiAgY29uc3QgY29sbm8gPSBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgKyAxIDogdW5kZWZpbmVkOwogIGNvbnN0IGxpbmVubyA9IGZyYW1lLmxvY2F0aW9uLmxpbmVOdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5saW5lTnVtYmVyICsgMSA6IHVuZGVmaW5lZDsKCiAgcmV0dXJuIGRyb3BVbmRlZmluZWRLZXlzKHsKICAgIGZpbGVuYW1lLAogICAgbW9kdWxlOiBnZXRNb2R1bGVGcm9tRmlsZW5hbWUoZmlsZW5hbWUpLAogICAgZnVuY3Rpb246IGZyYW1lLmZ1bmN0aW9uTmFtZSB8fCAnPycsCiAgICBjb2xubywKICAgIGxpbmVubywKICAgIGluX2FwcDogZmlsZW5hbWUgPyBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUpIDogdW5kZWZpbmVkLAogIH0pOwp9CgovKioKICogVGhpcyBzZXJ2ZXMgYXMgYSBidWlsZCB0aW1lIGZsYWcgdGhhdCB3aWxsIGJlIHRydWUgYnkgZGVmYXVsdCwgYnV0IGZhbHNlIGluIG5vbi1kZWJ1ZyBidWlsZHMgb3IgaWYgdXNlcnMgcmVwbGFjZSBgX19TRU5UUllfREVCVUdfX2AgaW4gdGhlaXIgZ2VuZXJhdGVkIGNvZGUuCiAqCiAqIEFUVEVOVElPTjogVGhpcyBjb25zdGFudCBtdXN0IG5ldmVyIGNyb3NzIHBhY2thZ2UgYm91bmRhcmllcyAoaS5lLiBiZSBleHBvcnRlZCkgdG8gZ3VhcmFudGVlIHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIHRyZWUgc2hha2luZy4KICovCmNvbnN0IERFQlVHX0JVSUxEID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCmNvbnN0IERFRkFVTFRfRU5WSVJPTk1FTlQgPSAncHJvZHVjdGlvbic7CgovKioKICogUmV0dXJucyB0aGUgZ2xvYmFsIGV2ZW50IHByb2Nlc3NvcnMuCiAqIEBkZXByZWNhdGVkIEdsb2JhbCBldmVudCBwcm9jZXNzb3JzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICovCmZ1bmN0aW9uIGdldEdsb2JhbEV2ZW50UHJvY2Vzc29ycygpIHsKICByZXR1cm4gZ2V0R2xvYmFsU2luZ2xldG9uKCdnbG9iYWxFdmVudFByb2Nlc3NvcnMnLCAoKSA9PiBbXSk7Cn0KCi8qKgogKiBQcm9jZXNzIGFuIGFycmF5IG9mIGV2ZW50IHByb2Nlc3NvcnMsIHJldHVybmluZyB0aGUgcHJvY2Vzc2VkIGV2ZW50IChvciBgbnVsbGAgaWYgdGhlIGV2ZW50IHdhcyBkcm9wcGVkKS4KICovCmZ1bmN0aW9uIG5vdGlmeUV2ZW50UHJvY2Vzc29ycygKICBwcm9jZXNzb3JzLAogIGV2ZW50LAogIGhpbnQsCiAgaW5kZXggPSAwLAopIHsKICByZXR1cm4gbmV3IFN5bmNQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGNvbnN0IHByb2Nlc3NvciA9IHByb2Nlc3NvcnNbaW5kZXhdOwogICAgaWYgKGV2ZW50ID09PSBudWxsIHx8IHR5cGVvZiBwcm9jZXNzb3IgIT09ICdmdW5jdGlvbicpIHsKICAgICAgcmVzb2x2ZShldmVudCk7CiAgICB9IGVsc2UgewogICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzb3IoeyAuLi5ldmVudCB9LCBoaW50KSA7CgogICAgICBERUJVR19CVUlMRCAmJiBwcm9jZXNzb3IuaWQgJiYgcmVzdWx0ID09PSBudWxsICYmIGxvZ2dlci5sb2coYEV2ZW50IHByb2Nlc3NvciAiJHtwcm9jZXNzb3IuaWR9IiBkcm9wcGVkIGV2ZW50YCk7CgogICAgICBpZiAoaXNUaGVuYWJsZShyZXN1bHQpKSB7CiAgICAgICAgdm9pZCByZXN1bHQKICAgICAgICAgIC50aGVuKGZpbmFsID0+IG5vdGlmeUV2ZW50UHJvY2Vzc29ycyhwcm9jZXNzb3JzLCBmaW5hbCwgaGludCwgaW5kZXggKyAxKS50aGVuKHJlc29sdmUpKQogICAgICAgICAgLnRoZW4obnVsbCwgcmVqZWN0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2b2lkIG5vdGlmeUV2ZW50UHJvY2Vzc29ycyhwcm9jZXNzb3JzLCByZXN1bHQsIGhpbnQsIGluZGV4ICsgMSkKICAgICAgICAgIC50aGVuKHJlc29sdmUpCiAgICAgICAgICAudGhlbihudWxsLCByZWplY3QpOwogICAgICB9CiAgICB9CiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgbmV3IGBTZXNzaW9uYCBvYmplY3QgYnkgc2V0dGluZyBjZXJ0YWluIGRlZmF1bHQgcGFyYW1ldGVycy4gSWYgb3B0aW9uYWwgQHBhcmFtIGNvbnRleHQKICogaXMgcGFzc2VkLCB0aGUgcGFzc2VkIHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8gdGhlIHNlc3Npb24gb2JqZWN0LgogKgogKiBAcGFyYW0gY29udGV4dCAob3B0aW9uYWwpIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIHRoZSByZXR1cm5lZCBzZXNzaW9uIG9iamVjdAogKgogKiBAcmV0dXJucyBhIG5ldyBgU2Vzc2lvbmAgb2JqZWN0CiAqLwpmdW5jdGlvbiBtYWtlU2Vzc2lvbihjb250ZXh0KSB7CiAgLy8gQm90aCB0aW1lc3RhbXAgYW5kIHN0YXJ0ZWQgYXJlIGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guCiAgY29uc3Qgc3RhcnRpbmdUaW1lID0gdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGNvbnN0IHNlc3Npb24gPSB7CiAgICBzaWQ6IHV1aWQ0KCksCiAgICBpbml0OiB0cnVlLAogICAgdGltZXN0YW1wOiBzdGFydGluZ1RpbWUsCiAgICBzdGFydGVkOiBzdGFydGluZ1RpbWUsCiAgICBkdXJhdGlvbjogMCwKICAgIHN0YXR1czogJ29rJywKICAgIGVycm9yczogMCwKICAgIGlnbm9yZUR1cmF0aW9uOiBmYWxzZSwKICAgIHRvSlNPTjogKCkgPT4gc2Vzc2lvblRvSlNPTihzZXNzaW9uKSwKICB9OwoKICBpZiAoY29udGV4dCkgewogICAgdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0KTsKICB9CgogIHJldHVybiBzZXNzaW9uOwp9CgovKioKICogVXBkYXRlcyBhIHNlc3Npb24gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgcGFzc2VkIGluIHRoZSBjb250ZXh0LgogKgogKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBwYXNzZWQgb2JqZWN0IGFuZCByZXR1cm5zIHZvaWQuCiAqIChIYWQgdG8gZG8gdGhpcyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG5ldyBhbmQgdXBkYXRlZCBzZXNzaW9uIGJlY2F1c2UgY2xvc2luZyBhbmQgc2VuZGluZyBhIHNlc3Npb24KICogbWFrZXMgYW4gdXBkYXRlIHRvIHRoZSBzZXNzaW9uIGFmdGVyIGl0IHdhcyBwYXNzZWQgdG8gdGhlIHNlbmRpbmcgbG9naWMuCiAqIEBzZWUgQmFzZUNsaWVudC5jYXB0dXJlU2Vzc2lvbiApCiAqCiAqIEBwYXJhbSBzZXNzaW9uIHRoZSBgU2Vzc2lvbmAgdG8gdXBkYXRlCiAqIEBwYXJhbSBjb250ZXh0IHRoZSBgU2Vzc2lvbkNvbnRleHRgIGhvbGRpbmcgdGhlIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgdXBkYXRlZCBpbiBAcGFyYW0gc2Vzc2lvbgogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHkKZnVuY3Rpb24gdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0ID0ge30pIHsKICBpZiAoY29udGV4dC51c2VyKSB7CiAgICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQudXNlci5pcF9hZGRyZXNzKSB7CiAgICAgIHNlc3Npb24uaXBBZGRyZXNzID0gY29udGV4dC51c2VyLmlwX2FkZHJlc3M7CiAgICB9CgogICAgaWYgKCFzZXNzaW9uLmRpZCAmJiAhY29udGV4dC5kaWQpIHsKICAgICAgc2Vzc2lvbi5kaWQgPSBjb250ZXh0LnVzZXIuaWQgfHwgY29udGV4dC51c2VyLmVtYWlsIHx8IGNvbnRleHQudXNlci51c2VybmFtZTsKICAgIH0KICB9CgogIHNlc3Npb24udGltZXN0YW1wID0gY29udGV4dC50aW1lc3RhbXAgfHwgdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGlmIChjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbSkgewogICAgc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20gPSBjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbTsKICB9CgogIGlmIChjb250ZXh0Lmlnbm9yZUR1cmF0aW9uKSB7CiAgICBzZXNzaW9uLmlnbm9yZUR1cmF0aW9uID0gY29udGV4dC5pZ25vcmVEdXJhdGlvbjsKICB9CiAgaWYgKGNvbnRleHQuc2lkKSB7CiAgICAvLyBHb29kIGVub3VnaCB1dWlkIHZhbGlkYXRpb24uIOKAlCBLYW1pbAogICAgc2Vzc2lvbi5zaWQgPSBjb250ZXh0LnNpZC5sZW5ndGggPT09IDMyID8gY29udGV4dC5zaWQgOiB1dWlkNCgpOwogIH0KICBpZiAoY29udGV4dC5pbml0ICE9PSB1bmRlZmluZWQpIHsKICAgIHNlc3Npb24uaW5pdCA9IGNvbnRleHQuaW5pdDsKICB9CiAgaWYgKCFzZXNzaW9uLmRpZCAmJiBjb250ZXh0LmRpZCkgewogICAgc2Vzc2lvbi5kaWQgPSBgJHtjb250ZXh0LmRpZH1gOwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuc3RhcnRlZCA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uc3RhcnRlZCA9IGNvbnRleHQuc3RhcnRlZDsKICB9CiAgaWYgKHNlc3Npb24uaWdub3JlRHVyYXRpb24pIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSB1bmRlZmluZWQ7CiAgfSBlbHNlIGlmICh0eXBlb2YgY29udGV4dC5kdXJhdGlvbiA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSBjb250ZXh0LmR1cmF0aW9uOwogIH0gZWxzZSB7CiAgICBjb25zdCBkdXJhdGlvbiA9IHNlc3Npb24udGltZXN0YW1wIC0gc2Vzc2lvbi5zdGFydGVkOwogICAgc2Vzc2lvbi5kdXJhdGlvbiA9IGR1cmF0aW9uID49IDAgPyBkdXJhdGlvbiA6IDA7CiAgfQogIGlmIChjb250ZXh0LnJlbGVhc2UpIHsKICAgIHNlc3Npb24ucmVsZWFzZSA9IGNvbnRleHQucmVsZWFzZTsKICB9CiAgaWYgKGNvbnRleHQuZW52aXJvbm1lbnQpIHsKICAgIHNlc3Npb24uZW52aXJvbm1lbnQgPSBjb250ZXh0LmVudmlyb25tZW50OwogIH0KICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQuaXBBZGRyZXNzKSB7CiAgICBzZXNzaW9uLmlwQWRkcmVzcyA9IGNvbnRleHQuaXBBZGRyZXNzOwogIH0KICBpZiAoIXNlc3Npb24udXNlckFnZW50ICYmIGNvbnRleHQudXNlckFnZW50KSB7CiAgICBzZXNzaW9uLnVzZXJBZ2VudCA9IGNvbnRleHQudXNlckFnZW50OwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuZXJyb3JzID09PSAnbnVtYmVyJykgewogICAgc2Vzc2lvbi5lcnJvcnMgPSBjb250ZXh0LmVycm9yczsKICB9CiAgaWYgKGNvbnRleHQuc3RhdHVzKSB7CiAgICBzZXNzaW9uLnN0YXR1cyA9IGNvbnRleHQuc3RhdHVzOwogIH0KfQoKLyoqCiAqIENsb3NlcyBhIHNlc3Npb24gYnkgc2V0dGluZyBpdHMgc3RhdHVzIGFuZCB1cGRhdGluZyB0aGUgc2Vzc2lvbiBvYmplY3Qgd2l0aCBpdC4KICogSW50ZXJuYWxseSBjYWxscyBgdXBkYXRlU2Vzc2lvbmAgdG8gdXBkYXRlIHRoZSBwYXNzZWQgc2Vzc2lvbiBvYmplY3QuCiAqCiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHBhc3NlZCBzZXNzaW9uIChAc2VlIHVwZGF0ZVNlc3Npb24gZm9yIGV4cGxhbmF0aW9uKS4KICoKICogQHBhcmFtIHNlc3Npb24gdGhlIGBTZXNzaW9uYCBvYmplY3QgdG8gYmUgY2xvc2VkCiAqIEBwYXJhbSBzdGF0dXMgdGhlIGBTZXNzaW9uU3RhdHVzYCB3aXRoIHdoaWNoIHRoZSBzZXNzaW9uIHdhcyBjbG9zZWQuIElmIHlvdSBkb24ndCBwYXNzIGEgc3RhdHVzLAogKiAgICAgICAgICAgICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBrZWVwIHRoZSBwcmV2aW91c2x5IHNldCBzdGF0dXMsIHVubGVzcyBpdCB3YXMgYCdvaydgIGluIHdoaWNoIGNhc2UKICogICAgICAgICAgICAgICBpdCBpcyBjaGFuZ2VkIHRvIGAnZXhpdGVkJ2AuCiAqLwpmdW5jdGlvbiBjbG9zZVNlc3Npb24oc2Vzc2lvbiwgc3RhdHVzKSB7CiAgbGV0IGNvbnRleHQgPSB7fTsKICBpZiAoc3RhdHVzKSB7CiAgICBjb250ZXh0ID0geyBzdGF0dXMgfTsKICB9IGVsc2UgaWYgKHNlc3Npb24uc3RhdHVzID09PSAnb2snKSB7CiAgICBjb250ZXh0ID0geyBzdGF0dXM6ICdleGl0ZWQnIH07CiAgfQoKICB1cGRhdGVTZXNzaW9uKHNlc3Npb24sIGNvbnRleHQpOwp9CgovKioKICogU2VyaWFsaXplcyBhIHBhc3NlZCBzZXNzaW9uIG9iamVjdCB0byBhIEpTT04gb2JqZWN0IHdpdGggYSBzbGlnaHRseSBkaWZmZXJlbnQgc3RydWN0dXJlLgogKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBTZW50cnkgYmFja2VuZCByZXF1aXJlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBzY2hlbWEgb2YgYSBzZXNzaW9uCiAqIHRoYW4gdGhlIG9uZSB0aGUgSlMgU0RLcyB1c2UgaW50ZXJuYWxseS4KICoKICogQHBhcmFtIHNlc3Npb24gdGhlIHNlc3Npb24gdG8gYmUgY29udmVydGVkCiAqCiAqIEByZXR1cm5zIGEgSlNPTiBvYmplY3Qgb2YgdGhlIHBhc3NlZCBzZXNzaW9uCiAqLwpmdW5jdGlvbiBzZXNzaW9uVG9KU09OKHNlc3Npb24pIHsKICByZXR1cm4gZHJvcFVuZGVmaW5lZEtleXMoewogICAgc2lkOiBgJHtzZXNzaW9uLnNpZH1gLAogICAgaW5pdDogc2Vzc2lvbi5pbml0LAogICAgLy8gTWFrZSBzdXJlIHRoYXQgc2VjIGlzIGNvbnZlcnRlZCB0byBtcyBmb3IgZGF0ZSBjb25zdHJ1Y3RvcgogICAgc3RhcnRlZDogbmV3IERhdGUoc2Vzc2lvbi5zdGFydGVkICogMTAwMCkudG9JU09TdHJpbmcoKSwKICAgIHRpbWVzdGFtcDogbmV3IERhdGUoc2Vzc2lvbi50aW1lc3RhbXAgKiAxMDAwKS50b0lTT1N0cmluZygpLAogICAgc3RhdHVzOiBzZXNzaW9uLnN0YXR1cywKICAgIGVycm9yczogc2Vzc2lvbi5lcnJvcnMsCiAgICBkaWQ6IHR5cGVvZiBzZXNzaW9uLmRpZCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHNlc3Npb24uZGlkID09PSAnc3RyaW5nJyA/IGAke3Nlc3Npb24uZGlkfWAgOiB1bmRlZmluZWQsCiAgICBkdXJhdGlvbjogc2Vzc2lvbi5kdXJhdGlvbiwKICAgIGFibm9ybWFsX21lY2hhbmlzbTogc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20sCiAgICBhdHRyczogewogICAgICByZWxlYXNlOiBzZXNzaW9uLnJlbGVhc2UsCiAgICAgIGVudmlyb25tZW50OiBzZXNzaW9uLmVudmlyb25tZW50LAogICAgICBpcF9hZGRyZXNzOiBzZXNzaW9uLmlwQWRkcmVzcywKICAgICAgdXNlcl9hZ2VudDogc2Vzc2lvbi51c2VyQWdlbnQsCiAgICB9LAogIH0pOwp9Cgpjb25zdCBUUkFDRV9GTEFHX1NBTVBMRUQgPSAweDE7CgovKioKICogQ29udmVydCBhIHNwYW4gdG8gYSB0cmFjZSBjb250ZXh0LCB3aGljaCBjYW4gYmUgc2VudCBhcyB0aGUgYHRyYWNlYCBjb250ZXh0IGluIGFuIGV2ZW50LgogKi8KZnVuY3Rpb24gc3BhblRvVHJhY2VDb250ZXh0KHNwYW4pIHsKICBjb25zdCB7IHNwYW5JZDogc3Bhbl9pZCwgdHJhY2VJZDogdHJhY2VfaWQgfSA9IHNwYW4uc3BhbkNvbnRleHQoKTsKICBjb25zdCB7IGRhdGEsIG9wLCBwYXJlbnRfc3Bhbl9pZCwgc3RhdHVzLCB0YWdzLCBvcmlnaW4gfSA9IHNwYW5Ub0pTT04oc3Bhbik7CgogIHJldHVybiBkcm9wVW5kZWZpbmVkS2V5cyh7CiAgICBkYXRhLAogICAgb3AsCiAgICBwYXJlbnRfc3Bhbl9pZCwKICAgIHNwYW5faWQsCiAgICBzdGF0dXMsCiAgICB0YWdzLAogICAgdHJhY2VfaWQsCiAgICBvcmlnaW4sCiAgfSk7Cn0KCi8qKgogKiBDb252ZXJ0IGEgc3BhbiB0byBhIEpTT04gcmVwcmVzZW50YXRpb24uCiAqIE5vdGUgdGhhdCBhbGwgZmllbGRzIHJldHVybmVkIGhlcmUgYXJlIG9wdGlvbmFsIGFuZCBuZWVkIHRvIGJlIGd1YXJkZWQgYWdhaW5zdC4KICoKICogTm90ZTogQmVjYXVzZSBvZiB0aGlzLCB3ZSBjdXJyZW50bHkgaGF2ZSBhIGNpcmN1bGFyIHR5cGUgZGVwZW5kZW5jeSAod2hpY2ggd2Ugb3B0ZWQgb3V0IG9mIGluIHBhY2thZ2UuanNvbikuCiAqIFRoaXMgaXMgbm90IGF2b2lkYWJsZSBhcyB3ZSBuZWVkIGBzcGFuVG9KU09OYCBpbiBgc3BhblV0aWxzLnRzYCwgd2hpY2ggaW4gdHVybiBpcyBuZWVkZWQgYnkgYHNwYW4udHNgIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICogQW5kIGBzcGFuVG9KU09OYCBuZWVkcyB0aGUgU3BhbiBjbGFzcyBmcm9tIGBzcGFuLnRzYCB0byBjaGVjayBoZXJlLgogKiBUT0RPIHY4OiBXaGVuIHdlIHJlbW92ZSB0aGUgZGVwcmVjYXRlZCBzdHVmZiBmcm9tIGBzcGFuLnRzYCwgd2UgY2FuIHJlbW92ZSB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSBhZ2Fpbi4KICovCmZ1bmN0aW9uIHNwYW5Ub0pTT04oc3BhbikgewogIGlmIChzcGFuSXNTcGFuQ2xhc3Moc3BhbikpIHsKICAgIHJldHVybiBzcGFuLmdldFNwYW5KU09OKCk7CiAgfQoKICAvLyBGYWxsYmFjazogV2UgYWxzbyBjaGVjayBmb3IgYC50b0pTT04oKWAgaGVyZS4uLgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGlmICh0eXBlb2Ygc3Bhbi50b0pTT04gPT09ICdmdW5jdGlvbicpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgcmV0dXJuIHNwYW4udG9KU09OKCk7CiAgfQoKICByZXR1cm4ge307Cn0KCi8qKgogKiBTYWRseSwgZHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY3kgY2hlY2tzIHdlIGNhbm5vdCBhY3R1YWxseSBpbXBvcnQgdGhlIFNwYW4gY2xhc3MgaGVyZSBhbmQgY2hlY2sgZm9yIGluc3RhbmNlb2YuCiAqIDooIFNvIGluc3RlYWQgd2UgYXBwcm94aW1hdGUgdGhpcyBieSBjaGVja2luZyBpZiBpdCBoYXMgdGhlIGBnZXRTcGFuSlNPTmAgbWV0aG9kLgogKi8KZnVuY3Rpb24gc3BhbklzU3BhbkNsYXNzKHNwYW4pIHsKICByZXR1cm4gdHlwZW9mIChzcGFuICkuZ2V0U3BhbkpTT04gPT09ICdmdW5jdGlvbic7Cn0KCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgYSBzcGFuIGlzIHNhbXBsZWQuCiAqIEluIG1vc3QgY2FzZXMsIHlvdSBzaG91bGQganVzdCB1c2UgYHNwYW4uaXNSZWNvcmRpbmcoKWAgaW5zdGVhZC4KICogSG93ZXZlciwgdGhpcyBoYXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2VtYW50aWMsIGFzIGl0IGFsc28gcmV0dXJucyBmYWxzZSBpZiB0aGUgc3BhbiBpcyBmaW5pc2hlZC4KICogU28gaW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBkaXN0aW5jdGlvbiBpcyBpbXBvcnRhbnQsIHVzZSB0aGlzIG1ldGhvZC4KICovCmZ1bmN0aW9uIHNwYW5Jc1NhbXBsZWQoc3BhbikgewogIC8vIFdlIGFsaWduIG91ciB0cmFjZSBmbGFncyB3aXRoIHRoZSBvbmVzIE9wZW5UZWxlbWV0cnkgdXNlCiAgLy8gU28gd2UgYWxzbyBjaGVjayBmb3Igc2FtcGxlZCB0aGUgc2FtZSB3YXkgdGhleSBkby4KICBjb25zdCB7IHRyYWNlRmxhZ3MgfSA9IHNwYW4uc3BhbkNvbnRleHQoKTsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZQogIHJldHVybiBCb29sZWFuKHRyYWNlRmxhZ3MgJiBUUkFDRV9GTEFHX1NBTVBMRUQpOwp9CgovKioKICogR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIGNsaWVudC4KICovCmZ1bmN0aW9uIGdldENsaWVudCgpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICByZXR1cm4gZ2V0Q3VycmVudEh1YigpLmdldENsaWVudCgpOwp9CgovKioKICogR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIHNjb3BlLgogKi8KZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkgewogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIHJldHVybiBnZXRDdXJyZW50SHViKCkuZ2V0U2NvcGUoKTsKfQoKLyoqCiAqIFJldHVybnMgdGhlIHJvb3Qgc3BhbiBvZiBhIGdpdmVuIHNwYW4uCiAqCiAqIEFzIGxvbmcgYXMgd2UgdXNlIGBUcmFuc2FjdGlvbmBzIGludGVybmFsbHksIHRoZSByZXR1cm5lZCByb290IHNwYW4KICogd2lsbCBiZSBhIGBUcmFuc2FjdGlvbmAgYnV0IGJlIGF3YXJlIHRoYXQgdGhpcyBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KICoKICogSWYgdGhlIGdpdmVuIHNwYW4gaGFzIG5vIHJvb3Qgc3BhbiBvciB0cmFuc2FjdGlvbiwgYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuCiAqLwpmdW5jdGlvbiBnZXRSb290U3BhbihzcGFuKSB7CiAgLy8gVE9ETyAodjgpOiBSZW1vdmUgdGhpcyBjaGVjayBhbmQganVzdCByZXR1cm4gc3BhbgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIHJldHVybiBzcGFuLnRyYW5zYWN0aW9uOwp9CgovKioKICogQ3JlYXRlcyBhIGR5bmFtaWMgc2FtcGxpbmcgY29udGV4dCBmcm9tIGEgY2xpZW50LgogKgogKiBEaXNwYXRjaGVzIHRoZSBgY3JlYXRlRHNjYCBsaWZlY3ljbGUgaG9vayBhcyBhIHNpZGUgZWZmZWN0LgogKi8KZnVuY3Rpb24gZ2V0RHluYW1pY1NhbXBsaW5nQ29udGV4dEZyb21DbGllbnQoCiAgdHJhY2VfaWQsCiAgY2xpZW50LAogIHNjb3BlLAopIHsKICBjb25zdCBvcHRpb25zID0gY2xpZW50LmdldE9wdGlvbnMoKTsKCiAgY29uc3QgeyBwdWJsaWNLZXk6IHB1YmxpY19rZXkgfSA9IGNsaWVudC5nZXREc24oKSB8fCB7fTsKICAvLyBUT0RPKHY4KTogUmVtb3ZlIHNlZ21lbnQgZnJvbSBVc2VyCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgY29uc3QgeyBzZWdtZW50OiB1c2VyX3NlZ21lbnQgfSA9IChzY29wZSAmJiBzY29wZS5nZXRVc2VyKCkpIHx8IHt9OwoKICBjb25zdCBkc2MgPSBkcm9wVW5kZWZpbmVkS2V5cyh7CiAgICBlbnZpcm9ubWVudDogb3B0aW9ucy5lbnZpcm9ubWVudCB8fCBERUZBVUxUX0VOVklST05NRU5ULAogICAgcmVsZWFzZTogb3B0aW9ucy5yZWxlYXNlLAogICAgdXNlcl9zZWdtZW50LAogICAgcHVibGljX2tleSwKICAgIHRyYWNlX2lkLAogIH0pIDsKCiAgY2xpZW50LmVtaXQgJiYgY2xpZW50LmVtaXQoJ2NyZWF0ZURzYycsIGRzYyk7CgogIHJldHVybiBkc2M7Cn0KCi8qKgogKiBBIFNwYW4gd2l0aCBhIGZyb3plbiBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQuCiAqLwoKLyoqCiAqIENyZWF0ZXMgYSBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQgZnJvbSBhIHNwYW4gKGFuZCBjbGllbnQgYW5kIHNjb3BlKQogKgogKiBAcGFyYW0gc3BhbiB0aGUgc3BhbiBmcm9tIHdoaWNoIGEgZmV3IHZhbHVlcyBsaWtlIHRoZSByb290IHNwYW4gbmFtZSBhbmQgc2FtcGxlIHJhdGUgYXJlIGV4dHJhY3RlZC4KICoKICogQHJldHVybnMgYSBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQKICovCmZ1bmN0aW9uIGdldER5bmFtaWNTYW1wbGluZ0NvbnRleHRGcm9tU3BhbihzcGFuKSB7CiAgY29uc3QgY2xpZW50ID0gZ2V0Q2xpZW50KCk7CiAgaWYgKCFjbGllbnQpIHsKICAgIHJldHVybiB7fTsKICB9CgogIC8vIHBhc3NpbmcgZW1pdD1mYWxzZSBoZXJlIHRvIG9ubHkgZW1pdCBsYXRlciBvbmNlIHRoZSBEU0MgaXMgYWN0dWFsbHkgcG9wdWxhdGVkCiAgY29uc3QgZHNjID0gZ2V0RHluYW1pY1NhbXBsaW5nQ29udGV4dEZyb21DbGllbnQoc3BhblRvSlNPTihzcGFuKS50cmFjZV9pZCB8fCAnJywgY2xpZW50LCBnZXRDdXJyZW50U2NvcGUoKSk7CgogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHY3RnJvemVuRHNjIGFzIGEgVHJhbnNhY3Rpb24gd2lsbCBubyBsb25nZXIgaGF2ZSBfZnJvemVuRHluYW1pY1NhbXBsaW5nQ29udGV4dAogIGNvbnN0IHR4biA9IGdldFJvb3RTcGFuKHNwYW4pIDsKICBpZiAoIXR4bikgewogICAgcmV0dXJuIGRzYzsKICB9CgogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHY3RnJvemVuRHNjIGFzIGEgVHJhbnNhY3Rpb24gd2lsbCBubyBsb25nZXIgaGF2ZSBfZnJvemVuRHluYW1pY1NhbXBsaW5nQ29udGV4dAogIC8vIEZvciBub3cgd2UgbmVlZCB0byBhdm9pZCBicmVha2luZyB1c2VycyB3aG8gZGlyZWN0bHkgY3JlYXRlZCBhIHR4biB3aXRoIGEgRFNDLCB3aGVyZSB0aGlzIGZpZWxkIGlzIHN0aWxsIHNldC4KICAvLyBAc2VlIFRyYW5zYWN0aW9uIGNsYXNzIGNvbnN0cnVjdG9yCiAgY29uc3QgdjdGcm96ZW5Ec2MgPSB0eG4gJiYgdHhuLl9mcm96ZW5EeW5hbWljU2FtcGxpbmdDb250ZXh0OwogIGlmICh2N0Zyb3plbkRzYykgewogICAgcmV0dXJuIHY3RnJvemVuRHNjOwogIH0KCiAgLy8gVE9ETyAodjgpOiBSZXBsYWNlIHR4bi5tZXRhZGF0YSB3aXRoIHR4bi5hdHRyaWJ1dGVzW10KICAvLyBXZSBjYW4ndCBkbyB0aGlzIHlldCBiZWNhdXNlIGF0dHJpYnV0ZXMgYXJlbid0IGFsd2F5cyBzZXQgeWV0LgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGNvbnN0IHsgc2FtcGxlUmF0ZTogbWF5YmVTYW1wbGVSYXRlLCBzb3VyY2UgfSA9IHR4bi5tZXRhZGF0YTsKICBpZiAobWF5YmVTYW1wbGVSYXRlICE9IG51bGwpIHsKICAgIGRzYy5zYW1wbGVfcmF0ZSA9IGAke21heWJlU2FtcGxlUmF0ZX1gOwogIH0KCiAgLy8gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIGEgdHJhbnNhY3Rpb24gbmFtZSBpbiB0aGUgRFNDIGlmIHRoZSBzb3VyY2UgaXMgInVybCIgYmVjYXVzZSBVUkxzIG1pZ2h0IGNvbnRhaW4gUElJCiAgY29uc3QganNvblNwYW4gPSBzcGFuVG9KU09OKHR4bik7CgogIC8vIGFmdGVyIEpTT04gY29udmVyc2lvbiwgdHhuLm5hbWUgYmVjb21lcyBqc29uU3Bhbi5kZXNjcmlwdGlvbgogIGlmIChzb3VyY2UgJiYgc291cmNlICE9PSAndXJsJykgewogICAgZHNjLnRyYW5zYWN0aW9uID0ganNvblNwYW4uZGVzY3JpcHRpb247CiAgfQoKICBkc2Muc2FtcGxlZCA9IFN0cmluZyhzcGFuSXNTYW1wbGVkKHR4bikpOwoKICBjbGllbnQuZW1pdCAmJiBjbGllbnQuZW1pdCgnY3JlYXRlRHNjJywgZHNjKTsKCiAgcmV0dXJuIGRzYzsKfQoKLyoqCiAqIEFwcGxpZXMgZGF0YSBmcm9tIHRoZSBzY29wZSB0byB0aGUgZXZlbnQgYW5kIHJ1bnMgYWxsIGV2ZW50IHByb2Nlc3NvcnMgb24gaXQuCiAqLwpmdW5jdGlvbiBhcHBseVNjb3BlRGF0YVRvRXZlbnQoZXZlbnQsIGRhdGEpIHsKICBjb25zdCB7IGZpbmdlcnByaW50LCBzcGFuLCBicmVhZGNydW1icywgc2RrUHJvY2Vzc2luZ01ldGFkYXRhIH0gPSBkYXRhOwoKICAvLyBBcHBseSBnZW5lcmFsIGRhdGEKICBhcHBseURhdGFUb0V2ZW50KGV2ZW50LCBkYXRhKTsKCiAgLy8gV2Ugd2FudCB0byBzZXQgdGhlIHRyYWNlIGNvbnRleHQgZm9yIG5vcm1hbCBldmVudHMgb25seSBpZiB0aGVyZSBpc24ndCBhbHJlYWR5CiAgLy8gYSB0cmFjZSBjb250ZXh0IG9uIHRoZSBldmVudC4gVGhlcmUgaXMgYSBwcm9kdWN0IGZlYXR1cmUgaW4gcGxhY2Ugd2hlcmUgd2UgbGluawogIC8vIGVycm9ycyB3aXRoIHRyYW5zYWN0aW9uIGFuZCBpdCByZWxpZXMgb24gdGhhdC4KICBpZiAoc3BhbikgewogICAgYXBwbHlTcGFuVG9FdmVudChldmVudCwgc3Bhbik7CiAgfQoKICBhcHBseUZpbmdlcnByaW50VG9FdmVudChldmVudCwgZmluZ2VycHJpbnQpOwogIGFwcGx5QnJlYWRjcnVtYnNUb0V2ZW50KGV2ZW50LCBicmVhZGNydW1icyk7CiAgYXBwbHlTZGtNZXRhZGF0YVRvRXZlbnQoZXZlbnQsIHNka1Byb2Nlc3NpbmdNZXRhZGF0YSk7Cn0KCmZ1bmN0aW9uIGFwcGx5RGF0YVRvRXZlbnQoZXZlbnQsIGRhdGEpIHsKICBjb25zdCB7CiAgICBleHRyYSwKICAgIHRhZ3MsCiAgICB1c2VyLAogICAgY29udGV4dHMsCiAgICBsZXZlbCwKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdHJhbnNhY3Rpb25OYW1lLAogIH0gPSBkYXRhOwoKICBjb25zdCBjbGVhbmVkRXh0cmEgPSBkcm9wVW5kZWZpbmVkS2V5cyhleHRyYSk7CiAgaWYgKGNsZWFuZWRFeHRyYSAmJiBPYmplY3Qua2V5cyhjbGVhbmVkRXh0cmEpLmxlbmd0aCkgewogICAgZXZlbnQuZXh0cmEgPSB7IC4uLmNsZWFuZWRFeHRyYSwgLi4uZXZlbnQuZXh0cmEgfTsKICB9CgogIGNvbnN0IGNsZWFuZWRUYWdzID0gZHJvcFVuZGVmaW5lZEtleXModGFncyk7CiAgaWYgKGNsZWFuZWRUYWdzICYmIE9iamVjdC5rZXlzKGNsZWFuZWRUYWdzKS5sZW5ndGgpIHsKICAgIGV2ZW50LnRhZ3MgPSB7IC4uLmNsZWFuZWRUYWdzLCAuLi5ldmVudC50YWdzIH07CiAgfQoKICBjb25zdCBjbGVhbmVkVXNlciA9IGRyb3BVbmRlZmluZWRLZXlzKHVzZXIpOwogIGlmIChjbGVhbmVkVXNlciAmJiBPYmplY3Qua2V5cyhjbGVhbmVkVXNlcikubGVuZ3RoKSB7CiAgICBldmVudC51c2VyID0geyAuLi5jbGVhbmVkVXNlciwgLi4uZXZlbnQudXNlciB9OwogIH0KCiAgY29uc3QgY2xlYW5lZENvbnRleHRzID0gZHJvcFVuZGVmaW5lZEtleXMoY29udGV4dHMpOwogIGlmIChjbGVhbmVkQ29udGV4dHMgJiYgT2JqZWN0LmtleXMoY2xlYW5lZENvbnRleHRzKS5sZW5ndGgpIHsKICAgIGV2ZW50LmNvbnRleHRzID0geyAuLi5jbGVhbmVkQ29udGV4dHMsIC4uLmV2ZW50LmNvbnRleHRzIH07CiAgfQoKICBpZiAobGV2ZWwpIHsKICAgIGV2ZW50LmxldmVsID0gbGV2ZWw7CiAgfQoKICBpZiAodHJhbnNhY3Rpb25OYW1lKSB7CiAgICBldmVudC50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uTmFtZTsKICB9Cn0KCmZ1bmN0aW9uIGFwcGx5QnJlYWRjcnVtYnNUb0V2ZW50KGV2ZW50LCBicmVhZGNydW1icykgewogIGNvbnN0IG1lcmdlZEJyZWFkY3J1bWJzID0gWy4uLihldmVudC5icmVhZGNydW1icyB8fCBbXSksIC4uLmJyZWFkY3J1bWJzXTsKICBldmVudC5icmVhZGNydW1icyA9IG1lcmdlZEJyZWFkY3J1bWJzLmxlbmd0aCA/IG1lcmdlZEJyZWFkY3J1bWJzIDogdW5kZWZpbmVkOwp9CgpmdW5jdGlvbiBhcHBseVNka01ldGFkYXRhVG9FdmVudChldmVudCwgc2RrUHJvY2Vzc2luZ01ldGFkYXRhKSB7CiAgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0gewogICAgLi4uZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLAogICAgLi4uc2RrUHJvY2Vzc2luZ01ldGFkYXRhLAogIH07Cn0KCmZ1bmN0aW9uIGFwcGx5U3BhblRvRXZlbnQoZXZlbnQsIHNwYW4pIHsKICBldmVudC5jb250ZXh0cyA9IHsgdHJhY2U6IHNwYW5Ub1RyYWNlQ29udGV4dChzcGFuKSwgLi4uZXZlbnQuY29udGV4dHMgfTsKICBjb25zdCByb290U3BhbiA9IGdldFJvb3RTcGFuKHNwYW4pOwogIGlmIChyb290U3BhbikgewogICAgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0gewogICAgICBkeW5hbWljU2FtcGxpbmdDb250ZXh0OiBnZXREeW5hbWljU2FtcGxpbmdDb250ZXh0RnJvbVNwYW4oc3BhbiksCiAgICAgIC4uLmV2ZW50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwKICAgIH07CiAgICBjb25zdCB0cmFuc2FjdGlvbk5hbWUgPSBzcGFuVG9KU09OKHJvb3RTcGFuKS5kZXNjcmlwdGlvbjsKICAgIGlmICh0cmFuc2FjdGlvbk5hbWUpIHsKICAgICAgZXZlbnQudGFncyA9IHsgdHJhbnNhY3Rpb246IHRyYW5zYWN0aW9uTmFtZSwgLi4uZXZlbnQudGFncyB9OwogICAgfQogIH0KfQoKLyoqCiAqIEFwcGxpZXMgZmluZ2VycHJpbnQgZnJvbSB0aGUgc2NvcGUgdG8gdGhlIGV2ZW50IGlmIHRoZXJlJ3Mgb25lLAogKiB1c2VzIG1lc3NhZ2UgaWYgdGhlcmUncyBvbmUgaW5zdGVhZCBvciBnZXQgcmlkIG9mIGVtcHR5IGZpbmdlcnByaW50CiAqLwpmdW5jdGlvbiBhcHBseUZpbmdlcnByaW50VG9FdmVudChldmVudCwgZmluZ2VycHJpbnQpIHsKICAvLyBNYWtlIHN1cmUgaXQncyBhbiBhcnJheSBmaXJzdCBhbmQgd2UgYWN0dWFsbHkgaGF2ZSBzb21ldGhpbmcgaW4gcGxhY2UKICBldmVudC5maW5nZXJwcmludCA9IGV2ZW50LmZpbmdlcnByaW50ID8gYXJyYXlpZnkoZXZlbnQuZmluZ2VycHJpbnQpIDogW107CgogIC8vIElmIHdlIGhhdmUgc29tZXRoaW5nIG9uIHRoZSBzY29wZSwgdGhlbiBtZXJnZSBpdCB3aXRoIGV2ZW50CiAgaWYgKGZpbmdlcnByaW50KSB7CiAgICBldmVudC5maW5nZXJwcmludCA9IGV2ZW50LmZpbmdlcnByaW50LmNvbmNhdChmaW5nZXJwcmludCk7CiAgfQoKICAvLyBJZiB3ZSBoYXZlIG5vIGRhdGEgYXQgYWxsLCByZW1vdmUgZW1wdHkgYXJyYXkgZGVmYXVsdAogIGlmIChldmVudC5maW5nZXJwcmludCAmJiAhZXZlbnQuZmluZ2VycHJpbnQubGVuZ3RoKSB7CiAgICBkZWxldGUgZXZlbnQuZmluZ2VycHJpbnQ7CiAgfQp9CgovKioKICogRGVmYXVsdCB2YWx1ZSBmb3IgbWF4aW11bSBudW1iZXIgb2YgYnJlYWRjcnVtYnMgYWRkZWQgdG8gYW4gZXZlbnQuCiAqLwpjb25zdCBERUZBVUxUX01BWF9CUkVBRENSVU1CUyA9IDEwMDsKCi8qKgogKiBIb2xkcyBhZGRpdGlvbmFsIGV2ZW50IGluZm9ybWF0aW9uLiB7QGxpbmsgU2NvcGUuYXBwbHlUb0V2ZW50fSB3aWxsIGJlCiAqIGNhbGxlZCBieSB0aGUgY2xpZW50IGJlZm9yZSBhbiBldmVudCB3aWxsIGJlIHNlbnQuCiAqLwpjbGFzcyBTY29wZSAgewogIC8qKiBGbGFnIGlmIG5vdGlmeWluZyBpcyBoYXBwZW5pbmcuICovCgogIC8qKiBDYWxsYmFjayBmb3IgY2xpZW50IHRvIHJlY2VpdmUgc2NvcGUgY2hhbmdlcy4gKi8KCiAgLyoqIENhbGxiYWNrIGxpc3QgdGhhdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB7QGxpbmsgYXBwbHlUb0V2ZW50fS4gKi8KCiAgLyoqIEFycmF5IG9mIGJyZWFkY3J1bWJzLiAqLwoKICAvKiogVXNlciAqLwoKICAvKiogVGFncyAqLwoKICAvKiogRXh0cmEgKi8KCiAgLyoqIENvbnRleHRzICovCgogIC8qKiBBdHRhY2htZW50cyAqLwoKICAvKiogUHJvcGFnYXRpb24gQ29udGV4dCBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAqLwoKICAvKioKICAgKiBBIHBsYWNlIHRvIHN0YXNoIGRhdGEgd2hpY2ggaXMgbmVlZGVkIGF0IHNvbWUgcG9pbnQgaW4gdGhlIFNESydzIGV2ZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUgYnV0IHdoaWNoIHNob3VsZG4ndCBnZXQKICAgKiBzZW50IHRvIFNlbnRyeQogICAqLwoKICAvKiogRmluZ2VycHJpbnQgKi8KCiAgLyoqIFNldmVyaXR5ICovCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCgogIC8qKgogICAqIFRyYW5zYWN0aW9uIE5hbWUKICAgKi8KCiAgLyoqIFNwYW4gKi8KCiAgLyoqIFNlc3Npb24gKi8KCiAgLyoqIFJlcXVlc3QgTW9kZSBTZXNzaW9uIFN0YXR1cyAqLwoKICAvKiogVGhlIGNsaWVudCBvbiB0aGlzIHNjb3BlICovCgogIC8vIE5PVEU6IEFueSBmaWVsZCB3aGljaCBnZXRzIGFkZGVkIGhlcmUgc2hvdWxkIGdldCBhZGRlZCBub3Qgb25seSB0byB0aGUgY29uc3RydWN0b3IgYnV0IGFsc28gdG8gdGhlIGBjbG9uZWAgbWV0aG9kLgoKICAgY29uc3RydWN0b3IoKSB7CiAgICB0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKICAgIHRoaXMuX3Njb3BlTGlzdGVuZXJzID0gW107CiAgICB0aGlzLl9ldmVudFByb2Nlc3NvcnMgPSBbXTsKICAgIHRoaXMuX2JyZWFkY3J1bWJzID0gW107CiAgICB0aGlzLl9hdHRhY2htZW50cyA9IFtdOwogICAgdGhpcy5fdXNlciA9IHt9OwogICAgdGhpcy5fdGFncyA9IHt9OwogICAgdGhpcy5fZXh0cmEgPSB7fTsKICAgIHRoaXMuX2NvbnRleHRzID0ge307CiAgICB0aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEgPSB7fTsKICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IGdlbmVyYXRlUHJvcGFnYXRpb25Db250ZXh0KCk7CiAgfQoKICAvKioKICAgKiBJbmhlcml0IHZhbHVlcyBmcm9tIHRoZSBwYXJlbnQgc2NvcGUuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzY29wZS5jbG9uZSgpYCBhbmQgYG5ldyBTY29wZSgpYCBpbnN0ZWFkLgogICAqLwogICBzdGF0aWMgY2xvbmUoc2NvcGUpIHsKICAgIHJldHVybiBzY29wZSA/IHNjb3BlLmNsb25lKCkgOiBuZXcgU2NvcGUoKTsKICB9CgogIC8qKgogICAqIENsb25lIHRoaXMgc2NvcGUgaW5zdGFuY2UuCiAgICovCiAgIGNsb25lKCkgewogICAgY29uc3QgbmV3U2NvcGUgPSBuZXcgU2NvcGUoKTsKICAgIG5ld1Njb3BlLl9icmVhZGNydW1icyA9IFsuLi50aGlzLl9icmVhZGNydW1ic107CiAgICBuZXdTY29wZS5fdGFncyA9IHsgLi4udGhpcy5fdGFncyB9OwogICAgbmV3U2NvcGUuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSB9OwogICAgbmV3U2NvcGUuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cyB9OwogICAgbmV3U2NvcGUuX3VzZXIgPSB0aGlzLl91c2VyOwogICAgbmV3U2NvcGUuX2xldmVsID0gdGhpcy5fbGV2ZWw7CiAgICBuZXdTY29wZS5fc3BhbiA9IHRoaXMuX3NwYW47CiAgICBuZXdTY29wZS5fc2Vzc2lvbiA9IHRoaXMuX3Nlc3Npb247CiAgICBuZXdTY29wZS5fdHJhbnNhY3Rpb25OYW1lID0gdGhpcy5fdHJhbnNhY3Rpb25OYW1lOwogICAgbmV3U2NvcGUuX2ZpbmdlcnByaW50ID0gdGhpcy5fZmluZ2VycHJpbnQ7CiAgICBuZXdTY29wZS5fZXZlbnRQcm9jZXNzb3JzID0gWy4uLnRoaXMuX2V2ZW50UHJvY2Vzc29yc107CiAgICBuZXdTY29wZS5fcmVxdWVzdFNlc3Npb24gPSB0aGlzLl9yZXF1ZXN0U2Vzc2lvbjsKICAgIG5ld1Njb3BlLl9hdHRhY2htZW50cyA9IFsuLi50aGlzLl9hdHRhY2htZW50c107CiAgICBuZXdTY29wZS5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0geyAuLi50aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEgfTsKICAgIG5ld1Njb3BlLl9wcm9wYWdhdGlvbkNvbnRleHQgPSB7IC4uLnRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCB9OwogICAgbmV3U2NvcGUuX2NsaWVudCA9IHRoaXMuX2NsaWVudDsKCiAgICByZXR1cm4gbmV3U2NvcGU7CiAgfQoKICAvKiogVXBkYXRlIHRoZSBjbGllbnQgb24gdGhlIHNjb3BlLiAqLwogICBzZXRDbGllbnQoY2xpZW50KSB7CiAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7CiAgfQoKICAvKioKICAgKiBHZXQgdGhlIGNsaWVudCBhc3NpZ25lZCB0byB0aGlzIHNjb3BlLgogICAqCiAgICogSXQgaXMgZ2VuZXJhbGx5IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgZ2xvYmFsIGZ1bmN0aW9uIGBTZW50cnkuZ2V0Q2xpZW50KClgIGluc3RlYWQsIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuCiAgICovCiAgIGdldENsaWVudCgpIHsKICAgIHJldHVybiB0aGlzLl9jbGllbnQ7CiAgfQoKICAvKioKICAgKiBBZGQgaW50ZXJuYWwgb24gY2hhbmdlIGxpc3RlbmVyLiBVc2VkIGZvciBzdWIgU0RLcyB0aGF0IG5lZWQgdG8gc3RvcmUgdGhlIHNjb3BlLgogICAqIEBoaWRkZW4KICAgKi8KICAgYWRkU2NvcGVMaXN0ZW5lcihjYWxsYmFjaykgewogICAgdGhpcy5fc2NvcGVMaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBhZGRFdmVudFByb2Nlc3NvcihjYWxsYmFjaykgewogICAgdGhpcy5fZXZlbnRQcm9jZXNzb3JzLnB1c2goY2FsbGJhY2spOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRVc2VyKHVzZXIpIHsKICAgIC8vIElmIG51bGwgaXMgcGFzc2VkIHdlIHdhbnQgdG8gdW5zZXQgZXZlcnl0aGluZywgYnV0IHN0aWxsIGRlZmluZSBrZXlzLAogICAgLy8gc28gdGhhdCBsYXRlciBkb3duIGluIHRoZSBwaXBlbGluZSBhbnkgZXhpc3RpbmcgdmFsdWVzIGFyZSBjbGVhcmVkLgogICAgdGhpcy5fdXNlciA9IHVzZXIgfHwgewogICAgICBlbWFpbDogdW5kZWZpbmVkLAogICAgICBpZDogdW5kZWZpbmVkLAogICAgICBpcF9hZGRyZXNzOiB1bmRlZmluZWQsCiAgICAgIHNlZ21lbnQ6IHVuZGVmaW5lZCwKICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgIH07CgogICAgaWYgKHRoaXMuX3Nlc3Npb24pIHsKICAgICAgdXBkYXRlU2Vzc2lvbih0aGlzLl9zZXNzaW9uLCB7IHVzZXIgfSk7CiAgICB9CgogICAgdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0VXNlcigpIHsKICAgIHJldHVybiB0aGlzLl91c2VyOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0UmVxdWVzdFNlc3Npb24oKSB7CiAgICByZXR1cm4gdGhpcy5fcmVxdWVzdFNlc3Npb247CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRSZXF1ZXN0U2Vzc2lvbihyZXF1ZXN0U2Vzc2lvbikgewogICAgdGhpcy5fcmVxdWVzdFNlc3Npb24gPSByZXF1ZXN0U2Vzc2lvbjsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgc2V0VGFncyh0YWdzKSB7CiAgICB0aGlzLl90YWdzID0gewogICAgICAuLi50aGlzLl90YWdzLAogICAgICAuLi50YWdzLAogICAgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldFRhZyhrZXksIHZhbHVlKSB7CiAgICB0aGlzLl90YWdzID0geyAuLi50aGlzLl90YWdzLCBba2V5XTogdmFsdWUgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldEV4dHJhcyhleHRyYXMpIHsKICAgIHRoaXMuX2V4dHJhID0gewogICAgICAuLi50aGlzLl9leHRyYSwKICAgICAgLi4uZXh0cmFzLAogICAgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldEV4dHJhKGtleSwgZXh0cmEpIHsKICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgW2tleV06IGV4dHJhIH07CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRGaW5nZXJwcmludChmaW5nZXJwcmludCkgewogICAgdGhpcy5fZmluZ2VycHJpbnQgPSBmaW5nZXJwcmludDsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldExldmVsKAogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBsZXZlbCwKICApIHsKICAgIHRoaXMuX2xldmVsID0gbGV2ZWw7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBuYW1lIG9uIHRoZSBzY29wZSBmb3IgZnV0dXJlIGV2ZW50cy4KICAgKi8KICAgc2V0VHJhbnNhY3Rpb25OYW1lKG5hbWUpIHsKICAgIHRoaXMuX3RyYW5zYWN0aW9uTmFtZSA9IG5hbWU7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRDb250ZXh0KGtleSwgY29udGV4dCkgewogICAgaWYgKGNvbnRleHQgPT09IG51bGwpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZQogICAgICBkZWxldGUgdGhpcy5fY29udGV4dHNba2V5XTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX2NvbnRleHRzW2tleV0gPSBjb250ZXh0OwogICAgfQoKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIFNldHMgdGhlIFNwYW4gb24gdGhlIHNjb3BlLgogICAqIEBwYXJhbSBzcGFuIFNwYW4KICAgKiBAZGVwcmVjYXRlZCBJbnN0ZWFkIG9mIHNldHRpbmcgYSBzcGFuIG9uIGEgc2NvcGUsIHVzZSBgc3RhcnRTcGFuKClgL2BzdGFydFNwYW5NYW51YWwoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0U3BhbihzcGFuKSB7CiAgICB0aGlzLl9zcGFuID0gc3BhbjsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGBTcGFuYCBpZiB0aGVyZSBpcyBvbmUuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBnZXRBY3RpdmVTcGFuKClgIGluc3RlYWQuCiAgICovCiAgIGdldFNwYW4oKSB7CiAgICByZXR1cm4gdGhpcy5fc3BhbjsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGBUcmFuc2FjdGlvbmAgYXR0YWNoZWQgdG8gdGhlIHNjb3BlIChpZiB0aGVyZSBpcyBvbmUpLgogICAqIEBkZXByZWNhdGVkIFlvdSBzaG91bGQgbm90IHJlbHkgb24gdGhlIHRyYW5zYWN0aW9uLCBidXQganVzdCB1c2UgYHN0YXJ0U3BhbigpYCBBUElzIGluc3RlYWQuCiAgICovCiAgIGdldFRyYW5zYWN0aW9uKCkgewogICAgLy8gT2Z0ZW4sIHRoaXMgc3BhbiAoaWYgaXQgZXhpc3RzIGF0IGFsbCkgd2lsbCBiZSBhIHRyYW5zYWN0aW9uLCBidXQgaXQncyBub3QgZ3VhcmFudGVlZCB0byBiZS4gUmVnYXJkbGVzcywgaXQgd2lsbAogICAgLy8gaGF2ZSBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnRseS1hY3RpdmUgdHJhbnNhY3Rpb24uCiAgICBjb25zdCBzcGFuID0gdGhpcy5fc3BhbjsKICAgIC8vIENhbm5vdCByZXBsYWNlIHdpdGggZ2V0Um9vdFNwYW4gYmVjYXVzZSBnZXRSb290U3BhbiByZXR1cm5zIGEgc3Bhbiwgbm90IGEgdHJhbnNhY3Rpb24KICAgIC8vIEFsc28sIHRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBhbnl3YXkuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHJldHVybiBzcGFuICYmIHNwYW4udHJhbnNhY3Rpb247CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRTZXNzaW9uKHNlc3Npb24pIHsKICAgIGlmICghc2Vzc2lvbikgewogICAgICBkZWxldGUgdGhpcy5fc2Vzc2lvbjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX3Nlc3Npb24gPSBzZXNzaW9uOwogICAgfQogICAgdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0U2Vzc2lvbigpIHsKICAgIHJldHVybiB0aGlzLl9zZXNzaW9uOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgdXBkYXRlKGNhcHR1cmVDb250ZXh0KSB7CiAgICBpZiAoIWNhcHR1cmVDb250ZXh0KSB7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGNvbnN0IHNjb3BlVG9NZXJnZSA9IHR5cGVvZiBjYXB0dXJlQ29udGV4dCA9PT0gJ2Z1bmN0aW9uJyA/IGNhcHR1cmVDb250ZXh0KHRoaXMpIDogY2FwdHVyZUNvbnRleHQ7CgogICAgaWYgKHNjb3BlVG9NZXJnZSBpbnN0YW5jZW9mIFNjb3BlKSB7CiAgICAgIGNvbnN0IHNjb3BlRGF0YSA9IHNjb3BlVG9NZXJnZS5nZXRTY29wZURhdGEoKTsKCiAgICAgIHRoaXMuX3RhZ3MgPSB7IC4uLnRoaXMuX3RhZ3MsIC4uLnNjb3BlRGF0YS50YWdzIH07CiAgICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgLi4uc2NvcGVEYXRhLmV4dHJhIH07CiAgICAgIHRoaXMuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cywgLi4uc2NvcGVEYXRhLmNvbnRleHRzIH07CiAgICAgIGlmIChzY29wZURhdGEudXNlciAmJiBPYmplY3Qua2V5cyhzY29wZURhdGEudXNlcikubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5fdXNlciA9IHNjb3BlRGF0YS51c2VyOwogICAgICB9CiAgICAgIGlmIChzY29wZURhdGEubGV2ZWwpIHsKICAgICAgICB0aGlzLl9sZXZlbCA9IHNjb3BlRGF0YS5sZXZlbDsKICAgICAgfQogICAgICBpZiAoc2NvcGVEYXRhLmZpbmdlcnByaW50Lmxlbmd0aCkgewogICAgICAgIHRoaXMuX2ZpbmdlcnByaW50ID0gc2NvcGVEYXRhLmZpbmdlcnByaW50OwogICAgICB9CiAgICAgIGlmIChzY29wZVRvTWVyZ2UuZ2V0UmVxdWVzdFNlc3Npb24oKSkgewogICAgICAgIHRoaXMuX3JlcXVlc3RTZXNzaW9uID0gc2NvcGVUb01lcmdlLmdldFJlcXVlc3RTZXNzaW9uKCk7CiAgICAgIH0KICAgICAgaWYgKHNjb3BlRGF0YS5wcm9wYWdhdGlvbkNvbnRleHQpIHsKICAgICAgICB0aGlzLl9wcm9wYWdhdGlvbkNvbnRleHQgPSBzY29wZURhdGEucHJvcGFnYXRpb25Db250ZXh0OwogICAgICB9CiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc2NvcGVUb01lcmdlKSkgewogICAgICBjb25zdCBzY29wZUNvbnRleHQgPSBjYXB0dXJlQ29udGV4dCA7CiAgICAgIHRoaXMuX3RhZ3MgPSB7IC4uLnRoaXMuX3RhZ3MsIC4uLnNjb3BlQ29udGV4dC50YWdzIH07CiAgICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgLi4uc2NvcGVDb250ZXh0LmV4dHJhIH07CiAgICAgIHRoaXMuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cywgLi4uc2NvcGVDb250ZXh0LmNvbnRleHRzIH07CiAgICAgIGlmIChzY29wZUNvbnRleHQudXNlcikgewogICAgICAgIHRoaXMuX3VzZXIgPSBzY29wZUNvbnRleHQudXNlcjsKICAgICAgfQogICAgICBpZiAoc2NvcGVDb250ZXh0LmxldmVsKSB7CiAgICAgICAgdGhpcy5fbGV2ZWwgPSBzY29wZUNvbnRleHQubGV2ZWw7CiAgICAgIH0KICAgICAgaWYgKHNjb3BlQ29udGV4dC5maW5nZXJwcmludCkgewogICAgICAgIHRoaXMuX2ZpbmdlcnByaW50ID0gc2NvcGVDb250ZXh0LmZpbmdlcnByaW50OwogICAgICB9CiAgICAgIGlmIChzY29wZUNvbnRleHQucmVxdWVzdFNlc3Npb24pIHsKICAgICAgICB0aGlzLl9yZXF1ZXN0U2Vzc2lvbiA9IHNjb3BlQ29udGV4dC5yZXF1ZXN0U2Vzc2lvbjsKICAgICAgfQogICAgICBpZiAoc2NvcGVDb250ZXh0LnByb3BhZ2F0aW9uQ29udGV4dCkgewogICAgICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IHNjb3BlQ29udGV4dC5wcm9wYWdhdGlvbkNvbnRleHQ7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGNsZWFyKCkgewogICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbXTsKICAgIHRoaXMuX3RhZ3MgPSB7fTsKICAgIHRoaXMuX2V4dHJhID0ge307CiAgICB0aGlzLl91c2VyID0ge307CiAgICB0aGlzLl9jb250ZXh0cyA9IHt9OwogICAgdGhpcy5fbGV2ZWwgPSB1bmRlZmluZWQ7CiAgICB0aGlzLl90cmFuc2FjdGlvbk5hbWUgPSB1bmRlZmluZWQ7CiAgICB0aGlzLl9maW5nZXJwcmludCA9IHVuZGVmaW5lZDsKICAgIHRoaXMuX3JlcXVlc3RTZXNzaW9uID0gdW5kZWZpbmVkOwogICAgdGhpcy5fc3BhbiA9IHVuZGVmaW5lZDsKICAgIHRoaXMuX3Nlc3Npb24gPSB1bmRlZmluZWQ7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgdGhpcy5fYXR0YWNobWVudHMgPSBbXTsKICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IGdlbmVyYXRlUHJvcGFnYXRpb25Db250ZXh0KCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGFkZEJyZWFkY3J1bWIoYnJlYWRjcnVtYiwgbWF4QnJlYWRjcnVtYnMpIHsKICAgIGNvbnN0IG1heENydW1icyA9IHR5cGVvZiBtYXhCcmVhZGNydW1icyA9PT0gJ251bWJlcicgPyBtYXhCcmVhZGNydW1icyA6IERFRkFVTFRfTUFYX0JSRUFEQ1JVTUJTOwoKICAgIC8vIE5vIGRhdGEgaGFzIGJlZW4gY2hhbmdlZCwgc28gZG9uJ3Qgbm90aWZ5IHNjb3BlIGxpc3RlbmVycwogICAgaWYgKG1heENydW1icyA8PSAwKSB7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGNvbnN0IG1lcmdlZEJyZWFkY3J1bWIgPSB7CiAgICAgIHRpbWVzdGFtcDogZGF0ZVRpbWVzdGFtcEluU2Vjb25kcygpLAogICAgICAuLi5icmVhZGNydW1iLAogICAgfTsKCiAgICBjb25zdCBicmVhZGNydW1icyA9IHRoaXMuX2JyZWFkY3J1bWJzOwogICAgYnJlYWRjcnVtYnMucHVzaChtZXJnZWRCcmVhZGNydW1iKTsKICAgIHRoaXMuX2JyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnMubGVuZ3RoID4gbWF4Q3J1bWJzID8gYnJlYWRjcnVtYnMuc2xpY2UoLW1heENydW1icykgOiBicmVhZGNydW1iczsKCiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwoKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0TGFzdEJyZWFkY3J1bWIoKSB7CiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnNbdGhpcy5fYnJlYWRjcnVtYnMubGVuZ3RoIC0gMV07CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBjbGVhckJyZWFkY3J1bWJzKCkgewogICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbXTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGFkZEF0dGFjaG1lbnQoYXR0YWNobWVudCkgewogICAgdGhpcy5fYXR0YWNobWVudHMucHVzaChhdHRhY2htZW50KTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYGdldFNjb3BlRGF0YSgpYCBpbnN0ZWFkLgogICAqLwogICBnZXRBdHRhY2htZW50cygpIHsKICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNjb3BlRGF0YSgpOwoKICAgIHJldHVybiBkYXRhLmF0dGFjaG1lbnRzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgY2xlYXJBdHRhY2htZW50cygpIHsKICAgIHRoaXMuX2F0dGFjaG1lbnRzID0gW107CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKiBAaW5oZXJpdERvYyAqLwogICBnZXRTY29wZURhdGEoKSB7CiAgICBjb25zdCB7CiAgICAgIF9icmVhZGNydW1icywKICAgICAgX2F0dGFjaG1lbnRzLAogICAgICBfY29udGV4dHMsCiAgICAgIF90YWdzLAogICAgICBfZXh0cmEsCiAgICAgIF91c2VyLAogICAgICBfbGV2ZWwsCiAgICAgIF9maW5nZXJwcmludCwKICAgICAgX2V2ZW50UHJvY2Vzc29ycywKICAgICAgX3Byb3BhZ2F0aW9uQ29udGV4dCwKICAgICAgX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSwKICAgICAgX3RyYW5zYWN0aW9uTmFtZSwKICAgICAgX3NwYW4sCiAgICB9ID0gdGhpczsKCiAgICByZXR1cm4gewogICAgICBicmVhZGNydW1iczogX2JyZWFkY3J1bWJzLAogICAgICBhdHRhY2htZW50czogX2F0dGFjaG1lbnRzLAogICAgICBjb250ZXh0czogX2NvbnRleHRzLAogICAgICB0YWdzOiBfdGFncywKICAgICAgZXh0cmE6IF9leHRyYSwKICAgICAgdXNlcjogX3VzZXIsCiAgICAgIGxldmVsOiBfbGV2ZWwsCiAgICAgIGZpbmdlcnByaW50OiBfZmluZ2VycHJpbnQgfHwgW10sCiAgICAgIGV2ZW50UHJvY2Vzc29yczogX2V2ZW50UHJvY2Vzc29ycywKICAgICAgcHJvcGFnYXRpb25Db250ZXh0OiBfcHJvcGFnYXRpb25Db250ZXh0LAogICAgICBzZGtQcm9jZXNzaW5nTWV0YWRhdGE6IF9zZGtQcm9jZXNzaW5nTWV0YWRhdGEsCiAgICAgIHRyYW5zYWN0aW9uTmFtZTogX3RyYW5zYWN0aW9uTmFtZSwKICAgICAgc3BhbjogX3NwYW4sCiAgICB9OwogIH0KCiAgLyoqCiAgICogQXBwbGllcyBkYXRhIGZyb20gdGhlIHNjb3BlIHRvIHRoZSBldmVudCBhbmQgcnVucyBhbGwgZXZlbnQgcHJvY2Vzc29ycyBvbiBpdC4KICAgKgogICAqIEBwYXJhbSBldmVudCBFdmVudAogICAqIEBwYXJhbSBoaW50IE9iamVjdCBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiwgZm9yIHVzZSBieSB0aGUgZXZlbnQgcHJvY2Vzc29ycy4KICAgKiBAaGlkZGVuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBhcHBseVNjb3BlRGF0YVRvRXZlbnQoKWAgZGlyZWN0bHkKICAgKi8KICAgYXBwbHlUb0V2ZW50KAogICAgZXZlbnQsCiAgICBoaW50ID0ge30sCiAgICBhZGRpdGlvbmFsRXZlbnRQcm9jZXNzb3JzID0gW10sCiAgKSB7CiAgICBhcHBseVNjb3BlRGF0YVRvRXZlbnQoZXZlbnQsIHRoaXMuZ2V0U2NvcGVEYXRhKCkpOwoKICAgIC8vIFRPRE8gKHY4KTogVXBkYXRlIHRoaXMgb3JkZXIgdG8gYmU6IEdsb2JhbCA+IENsaWVudCA+IFNjb3BlCiAgICBjb25zdCBldmVudFByb2Nlc3NvcnMgPSBbCiAgICAgIC4uLmFkZGl0aW9uYWxFdmVudFByb2Nlc3NvcnMsCiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICAuLi5nZXRHbG9iYWxFdmVudFByb2Nlc3NvcnMoKSwKICAgICAgLi4udGhpcy5fZXZlbnRQcm9jZXNzb3JzLAogICAgXTsKCiAgICByZXR1cm4gbm90aWZ5RXZlbnRQcm9jZXNzb3JzKGV2ZW50UHJvY2Vzc29ycywgZXZlbnQsIGhpbnQpOwogIH0KCiAgLyoqCiAgICogQWRkIGRhdGEgd2hpY2ggd2lsbCBiZSBhY2Nlc3NpYmxlIGR1cmluZyBldmVudCBwcm9jZXNzaW5nIGJ1dCB3b24ndCBnZXQgc2VudCB0byBTZW50cnkKICAgKi8KICAgc2V0U0RLUHJvY2Vzc2luZ01ldGFkYXRhKG5ld0RhdGEpIHsKICAgIHRoaXMuX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSA9IHsgLi4udGhpcy5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhLCAuLi5uZXdEYXRhIH07CgogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRQcm9wYWdhdGlvbkNvbnRleHQoY29udGV4dCkgewogICAgdGhpcy5fcHJvcGFnYXRpb25Db250ZXh0ID0gY29udGV4dDsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0UHJvcGFnYXRpb25Db250ZXh0KCkgewogICAgcmV0dXJuIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dDsKICB9CgogIC8qKgogICAqIENhcHR1cmUgYW4gZXhjZXB0aW9uIGZvciB0aGlzIHNjb3BlLgogICAqCiAgICogQHBhcmFtIGV4Y2VwdGlvbiBUaGUgZXhjZXB0aW9uIHRvIGNhcHR1cmUuCiAgICogQHBhcmFtIGhpbnQgT3B0aW5hbCBhZGRpdGlvbmFsIGRhdGEgdG8gYXR0YWNoIHRvIHRoZSBTZW50cnkgZXZlbnQuCiAgICogQHJldHVybnMgdGhlIGlkIG9mIHRoZSBjYXB0dXJlZCBTZW50cnkgZXZlbnQuCiAgICovCiAgIGNhcHR1cmVFeGNlcHRpb24oZXhjZXB0aW9uLCBoaW50KSB7CiAgICBjb25zdCBldmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCk7CgogICAgaWYgKCF0aGlzLl9jbGllbnQpIHsKICAgICAgbG9nZ2VyLndhcm4oJ05vIGNsaWVudCBjb25maWd1cmVkIG9uIHNjb3BlIC0gd2lsbCBub3QgY2FwdHVyZSBleGNlcHRpb24hJyk7CiAgICAgIHJldHVybiBldmVudElkOwogICAgfQoKICAgIGNvbnN0IHN5bnRoZXRpY0V4Y2VwdGlvbiA9IG5ldyBFcnJvcignU2VudHJ5IHN5bnRoZXRpY0V4Y2VwdGlvbicpOwoKICAgIHRoaXMuX2NsaWVudC5jYXB0dXJlRXhjZXB0aW9uKAogICAgICBleGNlcHRpb24sCiAgICAgIHsKICAgICAgICBvcmlnaW5hbEV4Y2VwdGlvbjogZXhjZXB0aW9uLAogICAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgICAuLi5oaW50LAogICAgICAgIGV2ZW50X2lkOiBldmVudElkLAogICAgICB9LAogICAgICB0aGlzLAogICAgKTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIENhcHR1cmUgYSBtZXNzYWdlIGZvciB0aGlzIHNjb3BlLgogICAqCiAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gY2FwdHVyZS4KICAgKiBAcGFyYW0gbGV2ZWwgQW4gb3B0aW9uYWwgc2V2ZXJpdHkgbGV2ZWwgdG8gcmVwb3J0IHRoZSBtZXNzYWdlIHdpdGguCiAgICogQHBhcmFtIGhpbnQgT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhIHRvIGF0dGFjaCB0byB0aGUgU2VudHJ5IGV2ZW50LgogICAqIEByZXR1cm5zIHRoZSBpZCBvZiB0aGUgY2FwdHVyZWQgbWVzc2FnZS4KICAgKi8KICAgY2FwdHVyZU1lc3NhZ2UobWVzc2FnZSwgbGV2ZWwsIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKTsKCiAgICBpZiAoIXRoaXMuX2NsaWVudCkgewogICAgICBsb2dnZXIud2FybignTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIG1lc3NhZ2UhJyk7CiAgICAgIHJldHVybiBldmVudElkOwogICAgfQoKICAgIGNvbnN0IHN5bnRoZXRpY0V4Y2VwdGlvbiA9IG5ldyBFcnJvcihtZXNzYWdlKTsKCiAgICB0aGlzLl9jbGllbnQuY2FwdHVyZU1lc3NhZ2UoCiAgICAgIG1lc3NhZ2UsCiAgICAgIGxldmVsLAogICAgICB7CiAgICAgICAgb3JpZ2luYWxFeGNlcHRpb246IG1lc3NhZ2UsCiAgICAgICAgc3ludGhldGljRXhjZXB0aW9uLAogICAgICAgIC4uLmhpbnQsCiAgICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICAgIH0sCiAgICAgIHRoaXMsCiAgICApOwoKICAgIHJldHVybiBldmVudElkOwogIH0KCiAgLyoqCiAgICogQ2FwdHVyZXMgYSBtYW51YWxseSBjcmVhdGVkIGV2ZW50IGZvciB0aGlzIHNjb3BlIGFuZCBzZW5kcyBpdCB0byBTZW50cnkuCiAgICoKICAgKiBAcGFyYW0gZXhjZXB0aW9uIFRoZSBldmVudCB0byBjYXB0dXJlLgogICAqIEBwYXJhbSBoaW50IE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YSB0byBhdHRhY2ggdG8gdGhlIFNlbnRyeSBldmVudC4KICAgKiBAcmV0dXJucyB0aGUgaWQgb2YgdGhlIGNhcHR1cmVkIGV2ZW50LgogICAqLwogICBjYXB0dXJlRXZlbnQoZXZlbnQsIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKTsKCiAgICBpZiAoIXRoaXMuX2NsaWVudCkgewogICAgICBsb2dnZXIud2FybignTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50IScpOwogICAgICByZXR1cm4gZXZlbnRJZDsKICAgIH0KCiAgICB0aGlzLl9jbGllbnQuY2FwdHVyZUV2ZW50KGV2ZW50LCB7IC4uLmhpbnQsIGV2ZW50X2lkOiBldmVudElkIH0sIHRoaXMpOwoKICAgIHJldHVybiBldmVudElkOwogIH0KCiAgLyoqCiAgICogVGhpcyB3aWxsIGJlIGNhbGxlZCBvbiBldmVyeSBzZXQgY2FsbC4KICAgKi8KICAgX25vdGlmeVNjb3BlTGlzdGVuZXJzKCkgewogICAgLy8gV2UgbmVlZCB0aGlzIGNoZWNrIGZvciB0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnMgdG8gYmUgYWJsZSB0byB3b3JrIG9uIHNjb3BlIGR1cmluZyB1cGRhdGVzCiAgICAvLyBJZiB0aGlzIGNoZWNrIGlzIG5vdCBoZXJlIHdlJ2xsIHByb2R1Y2UgZW5kbGVzcyByZWN1cnNpb24gd2hlbiBzb21ldGhpbmcgaXMgZG9uZSB3aXRoIHRoZSBzY29wZQogICAgLy8gZHVyaW5nIHRoZSBjYWxsYmFjay4KICAgIGlmICghdGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzKSB7CiAgICAgIHRoaXMuX25vdGlmeWluZ0xpc3RlbmVycyA9IHRydWU7CiAgICAgIHRoaXMuX3Njb3BlTGlzdGVuZXJzLmZvckVhY2goY2FsbGJhY2sgPT4gewogICAgICAgIGNhbGxiYWNrKHRoaXMpOwogICAgICB9KTsKICAgICAgdGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzID0gZmFsc2U7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBnZW5lcmF0ZVByb3BhZ2F0aW9uQ29udGV4dCgpIHsKICByZXR1cm4gewogICAgdHJhY2VJZDogdXVpZDQoKSwKICAgIHNwYW5JZDogdXVpZDQoKS5zdWJzdHJpbmcoMTYpLAogIH07Cn0KCmNvbnN0IFNES19WRVJTSU9OID0gJzcuMTIwLjEnOwoKLyoqCiAqIEFQSSBjb21wYXRpYmlsaXR5IHZlcnNpb24gb2YgdGhpcyBodWIuCiAqCiAqIFdBUk5JTkc6IFRoaXMgbnVtYmVyIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB3aGVuIHRoZSBnbG9iYWwgaW50ZXJmYWNlCiAqIGNoYW5nZXMgYW5kIG5ldyBtZXRob2RzIGFyZSBpbnRyb2R1Y2VkLgogKgogKiBAaGlkZGVuCiAqLwpjb25zdCBBUElfVkVSU0lPTiA9IHBhcnNlRmxvYXQoU0RLX1ZFUlNJT04pOwoKLyoqCiAqIERlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgYnJlYWRjcnVtYnMgYWRkZWQgdG8gYW4gZXZlbnQuIENhbiBiZSBvdmVyd3JpdHRlbgogKiB3aXRoIHtAbGluayBPcHRpb25zLm1heEJyZWFkY3J1bWJzfS4KICovCmNvbnN0IERFRkFVTFRfQlJFQURDUlVNQlMgPSAxMDA7CgovKioKICogQGRlcHJlY2F0ZWQgVGhlIGBIdWJgIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDggb2YgdGhlIFNESyBpbiBmYXZvdXIgb2YgYFNjb3BlYCBhbmQgYENsaWVudGAgb2JqZWN0cy4KICoKICogSWYgeW91IHByZXZpb3VzbHkgdXNlZCB0aGUgYEh1YmAgY2xhc3MgZGlyZWN0bHksIHJlcGxhY2UgaXQgd2l0aCBgU2NvcGVgIGFuZCBgQ2xpZW50YCBvYmplY3RzLiBNb3JlIGluZm9ybWF0aW9uOgogKiAtIFtNdWx0aXBsZSBTZW50cnkgSW5zdGFuY2VzXShodHRwczovL2RvY3Muc2VudHJ5LmlvL3BsYXRmb3Jtcy9qYXZhc2NyaXB0L2Jlc3QtcHJhY3RpY2VzL211bHRpcGxlLXNlbnRyeS1pbnN0YW5jZXMvKQogKiAtIFtCcm93c2VyIEV4dGVuc2lvbnNdKGh0dHBzOi8vZG9jcy5zZW50cnkuaW8vcGxhdGZvcm1zL2phdmFzY3JpcHQvYmVzdC1wcmFjdGljZXMvYnJvd3Nlci1leHRlbnNpb25zLykKICoKICogU29tZSBvZiBvdXIgQVBJcyBhcmUgdHlwZWQgd2l0aCB0aGUgSHViIGNsYXNzIGluc3RlYWQgb2YgdGhlIGludGVyZmFjZSAoZS5nLiBgZ2V0Q3VycmVudEh1YmApLiBNb3N0IG9mIHRoZW0gYXJlIGRlcHJlY2F0ZWQKICogdGhlbXNlbHZlcyBhbmQgd2lsbCBhbHNvIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA4LiBNb3JlIGluZm9ybWF0aW9uOgogKiAtIFtNaWdyYXRpb24gR3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvYmxvYi9kZXZlbG9wL01JR1JBVElPTi5tZCNkZXByZWNhdGUtaHViKQogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCmNsYXNzIEh1YiAgewogIC8qKiBJcyBhIHtAbGluayBMYXllcn1bXSBjb250YWluaW5nIHRoZSBjbGllbnQgYW5kIHNjb3BlICovCgogIC8qKiBDb250YWlucyB0aGUgbGFzdCBldmVudCBpZCBvZiBhIGNhcHR1cmVkIGV2ZW50LiAgKi8KCiAgLyoqCiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgaHViLCB3aWxsIHB1c2ggb25lIHtAbGluayBMYXllcn0gaW50byB0aGUKICAgKiBpbnRlcm5hbCBzdGFjayBvbiBjcmVhdGlvbi4KICAgKgogICAqIEBwYXJhbSBjbGllbnQgYm91bmQgdG8gdGhlIGh1Yi4KICAgKiBAcGFyYW0gc2NvcGUgYm91bmQgdG8gdGhlIGh1Yi4KICAgKiBAcGFyYW0gdmVyc2lvbiBudW1iZXIsIGhpZ2hlciBudW1iZXIgbWVhbnMgaGlnaGVyIHByaW9yaXR5LgogICAqCiAgICogQGRlcHJlY2F0ZWQgSW5zdGFudGlhdGlvbiBvZiBIdWIgb2JqZWN0cyBpcyBkZXByZWNhdGVkIGFuZCB0aGUgY29uc3RydWN0b3Igd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gOCBvZiB0aGUgU0RLLgogICAqCiAgICogSWYgeW91IGFyZSBjdXJyZW50bHkgdXNpbmcgdGhlIEh1YiBmb3IgbXVsdGktY2xpZW50IHVzZSBsaWtlIHNvOgogICAqCiAgICogYGBgCiAgICogLy8gT0xECiAgICogY29uc3QgaHViID0gbmV3IEh1YigpOwogICAqIGh1Yi5iaW5kQ2xpZW50KGNsaWVudCk7CiAgICogbWFrZU1haW4oaHViKQogICAqIGBgYAogICAqCiAgICogaW5zdGVhZCBpbml0aWFsaXplIHRoZSBjbGllbnQgYXMgZm9sbG93czoKICAgKgogICAqIGBgYAogICAqIC8vIE5FVwogICAqIFNlbnRyeS53aXRoSXNvbGF0aW9uU2NvcGUoKCkgPT4gewogICAqICAgIFNlbnRyeS5zZXRDdXJyZW50Q2xpZW50KGNsaWVudCk7CiAgICogICAgY2xpZW50LmluaXQoKTsKICAgKiB9KTsKICAgKiBgYGAKICAgKgogICAqIElmIHlvdSBhcmUgdXNpbmcgdGhlIEh1YiB0byBjYXB0dXJlIGV2ZW50cyBsaWtlIHNvOgogICAqCiAgICogYGBgCiAgICogLy8gT0xECiAgICogY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpOwogICAqIGNvbnN0IGh1YiA9IG5ldyBIdWIoY2xpZW50KTsKICAgKiBodWIuY2FwdHVyZUV4Y2VwdGlvbigpCiAgICogYGBgCiAgICoKICAgKiBpbnN0ZWFkIGNhcHR1cmUgaXNvbGF0ZWQgZXZlbnRzIGFzIGZvbGxvd3M6CiAgICoKICAgKiBgYGAKICAgKiAvLyBORVcKICAgKiBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KCk7CiAgICogY29uc3Qgc2NvcGUgPSBuZXcgU2NvcGUoKTsKICAgKiBzY29wZS5zZXRDbGllbnQoY2xpZW50KTsKICAgKiBzY29wZS5jYXB0dXJlRXhjZXB0aW9uKCk7CiAgICogYGBgCiAgICovCiAgIGNvbnN0cnVjdG9yKAogICAgY2xpZW50LAogICAgc2NvcGUsCiAgICBpc29sYXRpb25TY29wZSwKICAgICAgX3ZlcnNpb24gPSBBUElfVkVSU0lPTiwKICApIHt0aGlzLl92ZXJzaW9uID0gX3ZlcnNpb247CiAgICBsZXQgYXNzaWduZWRTY29wZTsKICAgIGlmICghc2NvcGUpIHsKICAgICAgYXNzaWduZWRTY29wZSA9IG5ldyBTY29wZSgpOwogICAgICBhc3NpZ25lZFNjb3BlLnNldENsaWVudChjbGllbnQpOwogICAgfSBlbHNlIHsKICAgICAgYXNzaWduZWRTY29wZSA9IHNjb3BlOwogICAgfQoKICAgIGxldCBhc3NpZ25lZElzb2xhdGlvblNjb3BlOwogICAgaWYgKCFpc29sYXRpb25TY29wZSkgewogICAgICBhc3NpZ25lZElzb2xhdGlvblNjb3BlID0gbmV3IFNjb3BlKCk7CiAgICAgIGFzc2lnbmVkSXNvbGF0aW9uU2NvcGUuc2V0Q2xpZW50KGNsaWVudCk7CiAgICB9IGVsc2UgewogICAgICBhc3NpZ25lZElzb2xhdGlvblNjb3BlID0gaXNvbGF0aW9uU2NvcGU7CiAgICB9CgogICAgdGhpcy5fc3RhY2sgPSBbeyBzY29wZTogYXNzaWduZWRTY29wZSB9XTsKCiAgICBpZiAoY2xpZW50KSB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICB0aGlzLmJpbmRDbGllbnQoY2xpZW50KTsKICAgIH0KCiAgICB0aGlzLl9pc29sYXRpb25TY29wZSA9IGFzc2lnbmVkSXNvbGF0aW9uU2NvcGU7CiAgfQoKICAvKioKICAgKiBDaGVja3MgaWYgdGhpcyBodWIncyB2ZXJzaW9uIGlzIG9sZGVyIHRoYW4gdGhlIGdpdmVuIHZlcnNpb24uCiAgICoKICAgKiBAcGFyYW0gdmVyc2lvbiBBIHZlcnNpb24gbnVtYmVyIHRvIGNvbXBhcmUgdG8uCiAgICogQHJldHVybiBUcnVlIGlmIHRoZSBnaXZlbiB2ZXJzaW9uIGlzIG5ld2VyOyBvdGhlcndpc2UgZmFsc2UuCiAgICoKICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICAgKi8KICAgaXNPbGRlclRoYW4odmVyc2lvbikgewogICAgcmV0dXJuIHRoaXMuX3ZlcnNpb24gPCB2ZXJzaW9uOwogIH0KCiAgLyoqCiAgICogVGhpcyBiaW5kcyB0aGUgZ2l2ZW4gY2xpZW50IHRvIHRoZSBjdXJyZW50IHNjb3BlLgogICAqIEBwYXJhbSBjbGllbnQgQW4gU0RLIGNsaWVudCAoY2xpZW50KSBpbnN0YW5jZS4KICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgaW5pdEFuZEJpbmQoKWAgZGlyZWN0bHksIG9yIGBzZXRDdXJyZW50Q2xpZW50KClgIGFuZC9vciBgY2xpZW50LmluaXQoKWAgaW5zdGVhZC4KICAgKi8KICAgYmluZENsaWVudChjbGllbnQpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgdG9wID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgdG9wLmNsaWVudCA9IGNsaWVudDsKICAgIHRvcC5zY29wZS5zZXRDbGllbnQoY2xpZW50KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgaWYgKGNsaWVudCAmJiBjbGllbnQuc2V0dXBJbnRlZ3JhdGlvbnMpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIGNsaWVudC5zZXR1cEludGVncmF0aW9ucygpOwogICAgfQogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgd2l0aFNjb3BlYCBpbnN0ZWFkLgogICAqLwogICBwdXNoU2NvcGUoKSB7CiAgICAvLyBXZSB3YW50IHRvIGNsb25lIHRoZSBjb250ZW50IG9mIHByZXYgc2NvcGUKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldFNjb3BlKCkuY2xvbmUoKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTdGFjaygpLnB1c2goewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgY2xpZW50OiB0aGlzLmdldENsaWVudCgpLAogICAgICBzY29wZSwKICAgIH0pOwogICAgcmV0dXJuIHNjb3BlOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgd2l0aFNjb3BlYCBpbnN0ZWFkLgogICAqLwogICBwb3BTY29wZSgpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgaWYgKHRoaXMuZ2V0U3RhY2soKS5sZW5ndGggPD0gMSkgcmV0dXJuIGZhbHNlOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gISF0aGlzLmdldFN0YWNrKCkucG9wKCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkud2l0aFNjb3BlKClgIGluc3RlYWQuCiAgICovCiAgIHdpdGhTY29wZShjYWxsYmFjaykgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBzY29wZSA9IHRoaXMucHVzaFNjb3BlKCk7CgogICAgbGV0IG1heWJlUHJvbWlzZVJlc3VsdDsKICAgIHRyeSB7CiAgICAgIG1heWJlUHJvbWlzZVJlc3VsdCA9IGNhbGxiYWNrKHNjb3BlKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIHRoaXMucG9wU2NvcGUoKTsKICAgICAgdGhyb3cgZTsKICAgIH0KCiAgICBpZiAoaXNUaGVuYWJsZShtYXliZVByb21pc2VSZXN1bHQpKSB7CiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBpc1RoZW5hYmxlIHJldHVybnMgdGhlIHdyb25nIHR5cGUKICAgICAgcmV0dXJuIG1heWJlUHJvbWlzZVJlc3VsdC50aGVuKAogICAgICAgIHJlcyA9PiB7CiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgICAgIHRoaXMucG9wU2NvcGUoKTsKICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgfSwKICAgICAgICBlID0+IHsKICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICAgICAgdGhpcy5wb3BTY29wZSgpOwogICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9LAogICAgICApOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5wb3BTY29wZSgpOwogICAgcmV0dXJuIG1heWJlUHJvbWlzZVJlc3VsdDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5nZXRDbGllbnQoKWAgaW5zdGVhZC4KICAgKi8KICAgZ2V0Q2xpZW50KCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLmNsaWVudCA7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBzY29wZSBvZiB0aGUgdG9wIHN0YWNrLgogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuZ2V0Q3VycmVudFNjb3BlKClgIGluc3RlYWQuCiAgICovCiAgIGdldFNjb3BlKCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLnNjb3BlOwogIH0KCiAgLyoqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuZ2V0SXNvbGF0aW9uU2NvcGUoKWAgaW5zdGVhZC4KICAgKi8KICAgZ2V0SXNvbGF0aW9uU2NvcGUoKSB7CiAgICByZXR1cm4gdGhpcy5faXNvbGF0aW9uU2NvcGU7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBzY29wZSBzdGFjayBmb3IgZG9tYWlucyBvciB0aGUgcHJvY2Vzcy4KICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICAgKi8KICAgZ2V0U3RhY2soKSB7CiAgICByZXR1cm4gdGhpcy5fc3RhY2s7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSB0b3Btb3N0IHNjb3BlIGxheWVyIGluIHRoZSBvcmRlciBkb21haW4gPiBsb2NhbCA+IHByb2Nlc3MuCiAgICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjguCiAgICovCiAgIGdldFN0YWNrVG9wKCkgewogICAgcmV0dXJuIHRoaXMuX3N0YWNrW3RoaXMuX3N0YWNrLmxlbmd0aCAtIDFdOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZUV4Y2VwdGlvbihleGNlcHRpb24sIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSAodGhpcy5fbGFzdEV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKSk7CiAgICBjb25zdCBzeW50aGV0aWNFeGNlcHRpb24gPSBuZXcgRXJyb3IoJ1NlbnRyeSBzeW50aGV0aWNFeGNlcHRpb24nKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLmNhcHR1cmVFeGNlcHRpb24oZXhjZXB0aW9uLCB7CiAgICAgIG9yaWdpbmFsRXhjZXB0aW9uOiBleGNlcHRpb24sCiAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgLi4uaGludCwKICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICB9KTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgIGBTZW50cnkuY2FwdHVyZU1lc3NhZ2UoKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZU1lc3NhZ2UoCiAgICBtZXNzYWdlLAogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBsZXZlbCwKICAgIGhpbnQsCiAgKSB7CiAgICBjb25zdCBldmVudElkID0gKHRoaXMuX2xhc3RFdmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCkpOwogICAgY29uc3Qgc3ludGhldGljRXhjZXB0aW9uID0gbmV3IEVycm9yKG1lc3NhZ2UpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuY2FwdHVyZU1lc3NhZ2UobWVzc2FnZSwgbGV2ZWwsIHsKICAgICAgb3JpZ2luYWxFeGNlcHRpb246IG1lc3NhZ2UsCiAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgLi4uaGludCwKICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICB9KTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5jYXB0dXJlRXZlbnQoKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZUV2ZW50KGV2ZW50LCBoaW50KSB7CiAgICBjb25zdCBldmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCk7CiAgICBpZiAoIWV2ZW50LnR5cGUpIHsKICAgICAgdGhpcy5fbGFzdEV2ZW50SWQgPSBldmVudElkOwogICAgfQogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuY2FwdHVyZUV2ZW50KGV2ZW50LCB7IC4uLmhpbnQsIGV2ZW50X2lkOiBldmVudElkIH0pOwogICAgcmV0dXJuIGV2ZW50SWQ7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjguCiAgICovCiAgIGxhc3RFdmVudElkKCkgewogICAgcmV0dXJuIHRoaXMuX2xhc3RFdmVudElkOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmFkZEJyZWFkY3J1bWIoKWAgaW5zdGVhZC4KICAgKi8KICAgYWRkQnJlYWRjcnVtYihicmVhZGNydW1iLCBoaW50KSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IHsgc2NvcGUsIGNsaWVudCB9ID0gdGhpcy5nZXRTdGFja1RvcCgpOwoKICAgIGlmICghY2xpZW50KSByZXR1cm47CgogICAgY29uc3QgeyBiZWZvcmVCcmVhZGNydW1iID0gbnVsbCwgbWF4QnJlYWRjcnVtYnMgPSBERUZBVUxUX0JSRUFEQ1JVTUJTIH0gPQogICAgICAoY2xpZW50LmdldE9wdGlvbnMgJiYgY2xpZW50LmdldE9wdGlvbnMoKSkgfHwge307CgogICAgaWYgKG1heEJyZWFkY3J1bWJzIDw9IDApIHJldHVybjsKCiAgICBjb25zdCB0aW1lc3RhbXAgPSBkYXRlVGltZXN0YW1wSW5TZWNvbmRzKCk7CiAgICBjb25zdCBtZXJnZWRCcmVhZGNydW1iID0geyB0aW1lc3RhbXAsIC4uLmJyZWFkY3J1bWIgfTsKICAgIGNvbnN0IGZpbmFsQnJlYWRjcnVtYiA9IGJlZm9yZUJyZWFkY3J1bWIKICAgICAgPyAoY29uc29sZVNhbmRib3goKCkgPT4gYmVmb3JlQnJlYWRjcnVtYihtZXJnZWRCcmVhZGNydW1iLCBoaW50KSkgKQogICAgICA6IG1lcmdlZEJyZWFkY3J1bWI7CgogICAgaWYgKGZpbmFsQnJlYWRjcnVtYiA9PT0gbnVsbCkgcmV0dXJuOwoKICAgIGlmIChjbGllbnQuZW1pdCkgewogICAgICBjbGllbnQuZW1pdCgnYmVmb3JlQWRkQnJlYWRjcnVtYicsIGZpbmFsQnJlYWRjcnVtYiwgaGludCk7CiAgICB9CgogICAgLy8gVE9ETyh2OCk6IEkga25vdyB0aGlzIGNvbW1lbnQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgYmVjYXVzZSB0aGUgaHViIHdpbGwgYmUgZGVwcmVjYXRlZCBidXQgSSBzdGlsbCB3YW50ZWQgdG8KICAgIC8vIHdyaXRlIGl0IGRvd24uIEluIHRoZW9yeSwgd2Ugd291bGQgaGF2ZSB0byBhZGQgdGhlIGJyZWFkY3J1bWJzIHRvIHRoZSBpc29sYXRpb24gc2NvcGUgaGVyZSwgaG93ZXZlciwgdGhhdCB3b3VsZAogICAgLy8gZHVwbGljYXRlIGFsbCBvZiB0aGUgYnJlYWRjcnVtYnMuIFRoZXJlIHdhcyB0aGUgcG9zc2liaWxpdHkgb2YgYWRkaW5nIGJyZWFkY3J1bWJzIHRvIGJvdGgsIHRoZSBpc29sYXRpb24gc2NvcGUKICAgIC8vIGFuZCB0aGUgbm9ybWFsIHNjb3BlLCBhbmQgZGVkdXBsaWNhdGluZyBpdCBkb3duIHRoZSBsaW5lIGluIHRoZSBldmVudCBwcm9jZXNzaW5nIHBpcGVsaW5lLiBIb3dldmVyLCB0aGF0IHdvdWxkCiAgICAvLyBoYXZlIGJlZW4gdmVyeSBmcmFnaWxlLCBiZWNhdXNlIHRoZSBicmVhZGNydW1iIG9iamVjdHMgd291bGQgaGF2ZSBuZWVkZWQgdG8ga2VlcCB0aGVpciBpZGVudGl0eSBhbGwgdGhyb3VnaG91dAogICAgLy8gdGhlIGV2ZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUuCiAgICAvLyBJbiB0aGUgbmV3IGltcGxlbWVudGF0aW9uLCB0aGUgdG9wIGxldmVsIGBTZW50cnkuYWRkQnJlYWRjcnVtYigpYCBzaG91bGQgT05MWSB3cml0ZSB0byB0aGUgaXNvbGF0aW9uIHNjb3BlLgoKICAgIHNjb3BlLmFkZEJyZWFkY3J1bWIoZmluYWxCcmVhZGNydW1iLCBtYXhCcmVhZGNydW1icyk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldFVzZXIoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0VXNlcih1c2VyKSB7CiAgICAvLyBUT0RPKHY4KTogVGhlIHRvcCBsZXZlbCBgU2VudHJ5LnNldFVzZXIoKWAgZnVuY3Rpb24gc2hvdWxkIHdyaXRlIE9OTFkgdG8gdGhlIGlzb2xhdGlvbiBzY29wZS4KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLnNldFVzZXIodXNlcik7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0SXNvbGF0aW9uU2NvcGUoKS5zZXRVc2VyKHVzZXIpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5zZXRUYWdzKClgIGluc3RlYWQuCiAgICovCiAgIHNldFRhZ3ModGFncykgewogICAgLy8gVE9ETyh2OCk6IFRoZSB0b3AgbGV2ZWwgYFNlbnRyeS5zZXRUYWdzKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRUYWdzKHRhZ3MpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldElzb2xhdGlvblNjb3BlKCkuc2V0VGFncyh0YWdzKTsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuc2V0RXh0cmFzKClgIGluc3RlYWQuCiAgICovCiAgIHNldEV4dHJhcyhleHRyYXMpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0RXh0cmFzKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRFeHRyYXMoZXh0cmFzKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRJc29sYXRpb25TY29wZSgpLnNldEV4dHJhcyhleHRyYXMpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5zZXRUYWcoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0VGFnKGtleSwgdmFsdWUpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0VGFnKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRUYWcoa2V5LCB2YWx1ZSk7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0SXNvbGF0aW9uU2NvcGUoKS5zZXRUYWcoa2V5LCB2YWx1ZSk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldEV4dHJhKClgIGluc3RlYWQuCiAgICovCiAgIHNldEV4dHJhKGtleSwgZXh0cmEpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0RXh0cmEoKWAgZnVuY3Rpb24gc2hvdWxkIHdyaXRlIE9OTFkgdG8gdGhlIGlzb2xhdGlvbiBzY29wZS4KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLnNldEV4dHJhKGtleSwgZXh0cmEpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldElzb2xhdGlvblNjb3BlKCkuc2V0RXh0cmEoa2V5LCBleHRyYSk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldENvbnRleHQoKWAgaW5zdGVhZC4KICAgKi8KICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQogICBzZXRDb250ZXh0KG5hbWUsIGNvbnRleHQpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0Q29udGV4dCgpYCBmdW5jdGlvbiBzaG91bGQgd3JpdGUgT05MWSB0byB0aGUgaXNvbGF0aW9uIHNjb3BlLgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuc2V0Q29udGV4dChuYW1lLCBjb250ZXh0KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRJc29sYXRpb25TY29wZSgpLnNldENvbnRleHQobmFtZSwgY29udGV4dCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBnZXRTY29wZSgpYCBkaXJlY3RseS4KICAgKi8KICAgY29uZmlndXJlU2NvcGUoY2FsbGJhY2spIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgeyBzY29wZSwgY2xpZW50IH0gPSB0aGlzLmdldFN0YWNrVG9wKCk7CiAgICBpZiAoY2xpZW50KSB7CiAgICAgIGNhbGxiYWNrKHNjb3BlKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgIHJ1bihjYWxsYmFjaykgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBvbGRIdWIgPSBtYWtlTWFpbih0aGlzKTsKICAgIHRyeSB7CiAgICAgIGNhbGxiYWNrKHRoaXMpOwogICAgfSBmaW5hbGx5IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIG1ha2VNYWluKG9sZEh1Yik7CiAgICB9CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmdldENsaWVudCgpLmdldEludGVncmF0aW9uQnlOYW1lKClgIGluc3RlYWQuCiAgICovCiAgIGdldEludGVncmF0aW9uKGludGVncmF0aW9uKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KCk7CiAgICBpZiAoIWNsaWVudCkgcmV0dXJuIG51bGw7CiAgICB0cnkgewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgcmV0dXJuIGNsaWVudC5nZXRJbnRlZ3JhdGlvbihpbnRlZ3JhdGlvbik7CiAgICB9IGNhdGNoIChfb08pIHsKICAgICAgREVCVUdfQlVJTEQgJiYgbG9nZ2VyLndhcm4oYENhbm5vdCByZXRyaWV2ZSBpbnRlZ3JhdGlvbiAke2ludGVncmF0aW9uLmlkfSBmcm9tIHRoZSBjdXJyZW50IEh1YmApOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIC8qKgogICAqIFN0YXJ0cyBhIG5ldyBgVHJhbnNhY3Rpb25gIGFuZCByZXR1cm5zIGl0LiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCB0byBtYW51YWwgdHJhY2luZyBpbnN0cnVtZW50YXRpb24uCiAgICoKICAgKiBBIHRyZWUgc3RydWN0dXJlIGNhbiBiZSBidWlsdCBieSBhZGRpbmcgY2hpbGQgc3BhbnMgdG8gdGhlIHRyYW5zYWN0aW9uLCBhbmQgY2hpbGQgc3BhbnMgdG8gb3RoZXIgc3BhbnMuIFRvIHN0YXJ0IGEKICAgKiBuZXcgY2hpbGQgc3BhbiB3aXRoaW4gdGhlIHRyYW5zYWN0aW9uIG9yIGFueSBzcGFuLCBjYWxsIHRoZSByZXNwZWN0aXZlIGAuc3RhcnRDaGlsZCgpYCBtZXRob2QuCiAgICoKICAgKiBFdmVyeSBjaGlsZCBzcGFuIG11c3QgYmUgZmluaXNoZWQgYmVmb3JlIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCwgb3RoZXJ3aXNlIHRoZSB1bmZpbmlzaGVkIHNwYW5zIGFyZSBkaXNjYXJkZWQuCiAgICoKICAgKiBUaGUgdHJhbnNhY3Rpb24gbXVzdCBiZSBmaW5pc2hlZCB3aXRoIGEgY2FsbCB0byBpdHMgYC5lbmQoKWAgbWV0aG9kLCBhdCB3aGljaCBwb2ludCB0aGUgdHJhbnNhY3Rpb24gd2l0aCBhbGwgaXRzCiAgICogZmluaXNoZWQgY2hpbGQgc3BhbnMgd2lsbCBiZSBzZW50IHRvIFNlbnRyeS4KICAgKgogICAqIEBwYXJhbSBjb250ZXh0IFByb3BlcnRpZXMgb2YgdGhlIG5ldyBgVHJhbnNhY3Rpb25gLgogICAqIEBwYXJhbSBjdXN0b21TYW1wbGluZ0NvbnRleHQgSW5mb3JtYXRpb24gZ2l2ZW4gdG8gdGhlIHRyYW5zYWN0aW9uIHNhbXBsaW5nIGZ1bmN0aW9uIChhbG9uZyB3aXRoIGNvbnRleHQtZGVwZW5kZW50CiAgICogZGVmYXVsdCB2YWx1ZXMpLiBTZWUge0BsaW5rIE9wdGlvbnMudHJhY2VzU2FtcGxlcn0uCiAgICoKICAgKiBAcmV0dXJucyBUaGUgdHJhbnNhY3Rpb24gd2hpY2ggd2FzIGp1c3Qgc3RhcnRlZAogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzdGFydFNwYW4oKWAsIGBzdGFydFNwYW5NYW51YWwoKWAgb3IgYHN0YXJ0SW5hY3RpdmVTcGFuKClgIGluc3RlYWQuCiAgICovCiAgIHN0YXJ0VHJhbnNhY3Rpb24oY29udGV4dCwgY3VzdG9tU2FtcGxpbmdDb250ZXh0KSB7CiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jYWxsRXh0ZW5zaW9uTWV0aG9kKCdzdGFydFRyYW5zYWN0aW9uJywgY29udGV4dCwgY3VzdG9tU2FtcGxpbmdDb250ZXh0KTsKCiAgICBpZiAoREVCVUdfQlVJTEQgJiYgIXJlc3VsdCkgewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQoKTsKICAgICAgaWYgKCFjbGllbnQpIHsKICAgICAgICBsb2dnZXIud2FybigKICAgICAgICAgICJUcmFjaW5nIGV4dGVuc2lvbiAnc3RhcnRUcmFuc2FjdGlvbicgaXMgbWlzc2luZy4gWW91IHNob3VsZCAnaW5pdCcgdGhlIFNESyBiZWZvcmUgY2FsbGluZyAnc3RhcnRUcmFuc2FjdGlvbiciLAogICAgICAgICk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbG9nZ2VyLndhcm4oYFRyYWNpbmcgZXh0ZW5zaW9uICdzdGFydFRyYW5zYWN0aW9uJyBoYXMgbm90IGJlZW4gYWRkZWQuIENhbGwgJ2FkZFRyYWNpbmdFeHRlbnNpb25zJyBiZWZvcmUgY2FsbGluZyAnaW5pdCc6ClNlbnRyeS5hZGRUcmFjaW5nRXh0ZW5zaW9ucygpOwpTZW50cnkuaW5pdCh7Li4ufSk7CmApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzcGFuVG9UcmFjZUhlYWRlcigpYCBpbnN0ZWFkLgogICAqLwogICB0cmFjZUhlYWRlcnMoKSB7CiAgICByZXR1cm4gdGhpcy5fY2FsbEV4dGVuc2lvbk1ldGhvZCgndHJhY2VIZWFkZXJzJyk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIHRvcCBsZXZlbCBgY2FwdHVyZVNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIGNhcHR1cmVTZXNzaW9uKGVuZFNlc3Npb24gPSBmYWxzZSkgewogICAgLy8gYm90aCBzZW5kIHRoZSB1cGRhdGUgYW5kIHB1bGwgdGhlIHNlc3Npb24gZnJvbSB0aGUgc2NvcGUKICAgIGlmIChlbmRTZXNzaW9uKSB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICByZXR1cm4gdGhpcy5lbmRTZXNzaW9uKCk7CiAgICB9CgogICAgLy8gb25seSBzZW5kIHRoZSB1cGRhdGUKICAgIHRoaXMuX3NlbmRTZXNzaW9uVXBkYXRlKCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSB0b3AgbGV2ZWwgYGVuZFNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIGVuZFNlc3Npb24oKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IGxheWVyID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgY29uc3Qgc2NvcGUgPSBsYXllci5zY29wZTsKICAgIGNvbnN0IHNlc3Npb24gPSBzY29wZS5nZXRTZXNzaW9uKCk7CiAgICBpZiAoc2Vzc2lvbikgewogICAgICBjbG9zZVNlc3Npb24oc2Vzc2lvbik7CiAgICB9CiAgICB0aGlzLl9zZW5kU2Vzc2lvblVwZGF0ZSgpOwoKICAgIC8vIHRoZSBzZXNzaW9uIGlzIG92ZXI7IHRha2UgaXQgb2ZmIG9mIHRoZSBzY29wZQogICAgc2NvcGUuc2V0U2Vzc2lvbigpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgdG9wIGxldmVsIGBzdGFydFNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIHN0YXJ0U2Vzc2lvbihjb250ZXh0KSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IHsgc2NvcGUsIGNsaWVudCB9ID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgY29uc3QgeyByZWxlYXNlLCBlbnZpcm9ubWVudCA9IERFRkFVTFRfRU5WSVJPTk1FTlQgfSA9IChjbGllbnQgJiYgY2xpZW50LmdldE9wdGlvbnMoKSkgfHwge307CgogICAgLy8gV2lsbCBmZXRjaCB1c2VyQWdlbnQgaWYgY2FsbGVkIGZyb20gYnJvd3NlciBzZGsKICAgIGNvbnN0IHsgdXNlckFnZW50IH0gPSBHTE9CQUxfT0JKLm5hdmlnYXRvciB8fCB7fTsKCiAgICBjb25zdCBzZXNzaW9uID0gbWFrZVNlc3Npb24oewogICAgICByZWxlYXNlLAogICAgICBlbnZpcm9ubWVudCwKICAgICAgdXNlcjogc2NvcGUuZ2V0VXNlcigpLAogICAgICAuLi4odXNlckFnZW50ICYmIHsgdXNlckFnZW50IH0pLAogICAgICAuLi5jb250ZXh0LAogICAgfSk7CgogICAgLy8gRW5kIGV4aXN0aW5nIHNlc3Npb24gaWYgdGhlcmUncyBvbmUKICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gc2NvcGUuZ2V0U2Vzc2lvbiAmJiBzY29wZS5nZXRTZXNzaW9uKCk7CiAgICBpZiAoY3VycmVudFNlc3Npb24gJiYgY3VycmVudFNlc3Npb24uc3RhdHVzID09PSAnb2snKSB7CiAgICAgIHVwZGF0ZVNlc3Npb24oY3VycmVudFNlc3Npb24sIHsgc3RhdHVzOiAnZXhpdGVkJyB9KTsKICAgIH0KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5lbmRTZXNzaW9uKCk7CgogICAgLy8gQWZ0ZXJ3YXJkcyB3ZSBzZXQgdGhlIG5ldyBzZXNzaW9uIG9uIHRoZSBzY29wZQogICAgc2NvcGUuc2V0U2Vzc2lvbihzZXNzaW9uKTsKCiAgICByZXR1cm4gc2Vzc2lvbjsKICB9CgogIC8qKgogICAqIFJldHVybnMgaWYgZGVmYXVsdCBQSUkgc2hvdWxkIGJlIHNlbnQgdG8gU2VudHJ5IGFuZCBwcm9wYWdhdGVkIGluIG91cmdvaW5nIHJlcXVlc3RzCiAgICogd2hlbiBUcmFjaW5nIGlzIHVzZWQuCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgdG9wLWxldmVsIGBnZXRDbGllbnQoKS5nZXRPcHRpb25zKCkuc2VuZERlZmF1bHRQaWlgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24KICAgKiBvbmx5IHVubmVjZXNzYXJpbHkgaW5jcmVhc2VkIEFQSSBzdXJmYWNlIGJ1dCBvbmx5IHdyYXBwZWQgYWNjZXNzaW5nIHRoZSBvcHRpb24uCiAgICovCiAgIHNob3VsZFNlbmREZWZhdWx0UGlpKCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBjbGllbnQgPSB0aGlzLmdldENsaWVudCgpOwogICAgY29uc3Qgb3B0aW9ucyA9IGNsaWVudCAmJiBjbGllbnQuZ2V0T3B0aW9ucygpOwogICAgcmV0dXJuIEJvb2xlYW4ob3B0aW9ucyAmJiBvcHRpb25zLnNlbmREZWZhdWx0UGlpKTsKICB9CgogIC8qKgogICAqIFNlbmRzIHRoZSBjdXJyZW50IFNlc3Npb24gb24gdGhlIHNjb3BlCiAgICovCiAgIF9zZW5kU2Vzc2lvblVwZGF0ZSgpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgeyBzY29wZSwgY2xpZW50IH0gPSB0aGlzLmdldFN0YWNrVG9wKCk7CgogICAgY29uc3Qgc2Vzc2lvbiA9IHNjb3BlLmdldFNlc3Npb24oKTsKICAgIGlmIChzZXNzaW9uICYmIGNsaWVudCAmJiBjbGllbnQuY2FwdHVyZVNlc3Npb24pIHsKICAgICAgY2xpZW50LmNhcHR1cmVTZXNzaW9uKHNlc3Npb24pOwogICAgfQogIH0KCiAgLyoqCiAgICogQ2FsbHMgZ2xvYmFsIGV4dGVuc2lvbiBtZXRob2QgYW5kIGJpbmRpbmcgY3VycmVudCBpbnN0YW5jZSB0byB0aGUgZnVuY3Rpb24gY2FsbAogICAqLwogIC8vIEB0cy1leHBlY3QtZXJyb3IgRnVuY3Rpb24gbGFja3MgZW5kaW5nIHJldHVybiBzdGF0ZW1lbnQgYW5kIHJldHVybiB0eXBlIGRvZXMgbm90IGluY2x1ZGUgJ3VuZGVmaW5lZCcuIHRzKDIzNjYpCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgX2NhbGxFeHRlbnNpb25NZXRob2QobWV0aG9kLCAuLi5hcmdzKSB7CiAgICBjb25zdCBjYXJyaWVyID0gZ2V0TWFpbkNhcnJpZXIoKTsKICAgIGNvbnN0IHNlbnRyeSA9IGNhcnJpZXIuX19TRU5UUllfXzsKICAgIGlmIChzZW50cnkgJiYgc2VudHJ5LmV4dGVuc2lvbnMgJiYgdHlwZW9mIHNlbnRyeS5leHRlbnNpb25zW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmV0dXJuIHNlbnRyeS5leHRlbnNpb25zW21ldGhvZF0uYXBwbHkodGhpcywgYXJncyk7CiAgICB9CiAgICBERUJVR19CVUlMRCAmJiBsb2dnZXIud2FybihgRXh0ZW5zaW9uIG1ldGhvZCAke21ldGhvZH0gY291bGRuJ3QgYmUgZm91bmQsIGRvaW5nIG5vdGhpbmcuYCk7CiAgfQp9CgovKioKICogUmV0dXJucyB0aGUgZ2xvYmFsIHNoaW0gcmVnaXN0cnkuCiAqCiAqIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JsZW1hdGljLCBiZWNhdXNlIGRlc3BpdGUgYWx3YXlzIHJldHVybmluZyBhIHZhbGlkIENhcnJpZXIsCiAqIGl0IGhhcyBhbiBvcHRpb25hbCBgX19TRU5UUllfX2AgcHJvcGVydHksIHdoaWNoIHRoZW4gaW4gdHVybiByZXF1aXJlcyB1cyB0byBhbHdheXMgcGVyZm9ybSBhbiB1bm5lY2Vzc2FyeSBjaGVjawogKiBhdCB0aGUgY2FsbC1zaXRlLiBXZSBhbHdheXMgYWNjZXNzIHRoZSBjYXJyaWVyIHRocm91Z2ggdGhpcyBmdW5jdGlvbiwgc28gd2UgY2FuIGd1YXJhbnRlZSB0aGF0IGBfX1NFTlRSWV9fYCBpcyB0aGVyZS4KICoqLwpmdW5jdGlvbiBnZXRNYWluQ2FycmllcigpIHsKICBHTE9CQUxfT0JKLl9fU0VOVFJZX18gPSBHTE9CQUxfT0JKLl9fU0VOVFJZX18gfHwgewogICAgZXh0ZW5zaW9uczoge30sCiAgICBodWI6IHVuZGVmaW5lZCwKICB9OwogIHJldHVybiBHTE9CQUxfT0JKOwp9CgovKioKICogUmVwbGFjZXMgdGhlIGN1cnJlbnQgbWFpbiBodWIgd2l0aCB0aGUgcGFzc2VkIG9uZSBvbiB0aGUgZ2xvYmFsIG9iamVjdAogKgogKiBAcmV0dXJucyBUaGUgb2xkIHJlcGxhY2VkIGh1YgogKgogKiBAZGVwcmVjYXRlZCBVc2UgYHNldEN1cnJlbnRDbGllbnQoKWAgaW5zdGVhZC4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBtYWtlTWFpbihodWIpIHsKICBjb25zdCByZWdpc3RyeSA9IGdldE1haW5DYXJyaWVyKCk7CiAgY29uc3Qgb2xkSHViID0gZ2V0SHViRnJvbUNhcnJpZXIocmVnaXN0cnkpOwogIHNldEh1Yk9uQ2FycmllcihyZWdpc3RyeSwgaHViKTsKICByZXR1cm4gb2xkSHViOwp9CgovKioKICogUmV0dXJucyB0aGUgZGVmYXVsdCBodWIgaW5zdGFuY2UuCiAqCiAqIElmIGEgaHViIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBpbiB0aGUgZ2xvYmFsIGNhcnJpZXIgYnV0IHRoaXMgbW9kdWxlCiAqIGNvbnRhaW5zIGEgbW9yZSByZWNlbnQgdmVyc2lvbiwgaXQgcmVwbGFjZXMgdGhlIHJlZ2lzdGVyZWQgdmVyc2lvbi4KICogT3RoZXJ3aXNlLCB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgaHViIHdpbGwgYmUgcmV0dXJuZWQuCiAqCiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgcmVzcGVjdGl2ZSByZXBsYWNlbWVudCBtZXRob2QgZGlyZWN0bHkgaW5zdGVhZC4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBnZXRDdXJyZW50SHViKCkgewogIC8vIEdldCBtYWluIGNhcnJpZXIgKGdsb2JhbCBmb3IgZXZlcnkgZW52aXJvbm1lbnQpCiAgY29uc3QgcmVnaXN0cnkgPSBnZXRNYWluQ2FycmllcigpOwoKICBpZiAocmVnaXN0cnkuX19TRU5UUllfXyAmJiByZWdpc3RyeS5fX1NFTlRSWV9fLmFjcykgewogICAgY29uc3QgaHViID0gcmVnaXN0cnkuX19TRU5UUllfXy5hY3MuZ2V0Q3VycmVudEh1YigpOwoKICAgIGlmIChodWIpIHsKICAgICAgcmV0dXJuIGh1YjsKICAgIH0KICB9CgogIC8vIFJldHVybiBodWIgdGhhdCBsaXZlcyBvbiBhIGdsb2JhbCBvYmplY3QKICByZXR1cm4gZ2V0R2xvYmFsSHViKHJlZ2lzdHJ5KTsKfQoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCmZ1bmN0aW9uIGdldEdsb2JhbEh1YihyZWdpc3RyeSA9IGdldE1haW5DYXJyaWVyKCkpIHsKICAvLyBJZiB0aGVyZSdzIG5vIGh1Yiwgb3IgaXRzIGFuIG9sZCBBUEksIGFzc2lnbiBhIG5ldyBvbmUKCiAgaWYgKAogICAgIWhhc0h1Yk9uQ2FycmllcihyZWdpc3RyeSkgfHwKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgZ2V0SHViRnJvbUNhcnJpZXIocmVnaXN0cnkpLmlzT2xkZXJUaGFuKEFQSV9WRVJTSU9OKQogICkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBzZXRIdWJPbkNhcnJpZXIocmVnaXN0cnksIG5ldyBIdWIoKSk7CiAgfQoKICAvLyBSZXR1cm4gaHViIHRoYXQgbGl2ZXMgb24gYSBnbG9iYWwgb2JqZWN0CiAgcmV0dXJuIGdldEh1YkZyb21DYXJyaWVyKHJlZ2lzdHJ5KTsKfQoKLyoqCiAqIFRoaXMgd2lsbCB0ZWxsIHdoZXRoZXIgYSBjYXJyaWVyIGhhcyBhIGh1YiBvbiBpdCBvciBub3QKICogQHBhcmFtIGNhcnJpZXIgb2JqZWN0CiAqLwpmdW5jdGlvbiBoYXNIdWJPbkNhcnJpZXIoY2FycmllcikgewogIHJldHVybiAhIShjYXJyaWVyICYmIGNhcnJpZXIuX19TRU5UUllfXyAmJiBjYXJyaWVyLl9fU0VOVFJZX18uaHViKTsKfQoKLyoqCiAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcge0BsaW5rIEh1Yn0gYW5kIGFkZCB0byB0aGUgcGFzc2VkIG9iamVjdCBvbgogKiBfX1NFTlRSWV9fLmh1Yi4KICogQHBhcmFtIGNhcnJpZXIgb2JqZWN0CiAqIEBoaWRkZW4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBnZXRIdWJGcm9tQ2FycmllcihjYXJyaWVyKSB7CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgcmV0dXJuIGdldEdsb2JhbFNpbmdsZXRvbignaHViJywgKCkgPT4gbmV3IEh1YigpLCBjYXJyaWVyKTsKfQoKLyoqCiAqIFRoaXMgd2lsbCBzZXQgcGFzc2VkIHtAbGluayBIdWJ9IG9uIHRoZSBwYXNzZWQgb2JqZWN0J3MgX19TRU5UUllfXy5odWIgYXR0cmlidXRlCiAqIEBwYXJhbSBjYXJyaWVyIG9iamVjdAogKiBAcGFyYW0gaHViIEh1YgogKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUKICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBzZXRIdWJPbkNhcnJpZXIoY2FycmllciwgaHViKSB7CiAgaWYgKCFjYXJyaWVyKSByZXR1cm4gZmFsc2U7CiAgY29uc3QgX19TRU5UUllfXyA9IChjYXJyaWVyLl9fU0VOVFJZX18gPSBjYXJyaWVyLl9fU0VOVFJZX18gfHwge30pOwogIF9fU0VOVFJZX18uaHViID0gaHViOwogIHJldHVybiB0cnVlOwp9CgovKioKICogQXBwbHkgU2RrSW5mbyAobmFtZSwgdmVyc2lvbiwgcGFja2FnZXMsIGludGVncmF0aW9ucykgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQga2V5LgogKiBNZXJnZSB3aXRoIGV4aXN0aW5nIGRhdGEgaWYgYW55LgogKiovCmZ1bmN0aW9uIGVuaGFuY2VFdmVudFdpdGhTZGtJbmZvKGV2ZW50LCBzZGtJbmZvKSB7CiAgaWYgKCFzZGtJbmZvKSB7CiAgICByZXR1cm4gZXZlbnQ7CiAgfQogIGV2ZW50LnNkayA9IGV2ZW50LnNkayB8fCB7fTsKICBldmVudC5zZGsubmFtZSA9IGV2ZW50LnNkay5uYW1lIHx8IHNka0luZm8ubmFtZTsKICBldmVudC5zZGsudmVyc2lvbiA9IGV2ZW50LnNkay52ZXJzaW9uIHx8IHNka0luZm8udmVyc2lvbjsKICBldmVudC5zZGsuaW50ZWdyYXRpb25zID0gWy4uLihldmVudC5zZGsuaW50ZWdyYXRpb25zIHx8IFtdKSwgLi4uKHNka0luZm8uaW50ZWdyYXRpb25zIHx8IFtdKV07CiAgZXZlbnQuc2RrLnBhY2thZ2VzID0gWy4uLihldmVudC5zZGsucGFja2FnZXMgfHwgW10pLCAuLi4oc2RrSW5mby5wYWNrYWdlcyB8fCBbXSldOwogIHJldHVybiBldmVudDsKfQoKLyoqIENyZWF0ZXMgYW4gZW52ZWxvcGUgZnJvbSBhIFNlc3Npb24gKi8KZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbkVudmVsb3BlKAogIHNlc3Npb24sCiAgZHNuLAogIG1ldGFkYXRhLAogIHR1bm5lbCwKKSB7CiAgY29uc3Qgc2RrSW5mbyA9IGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGEpOwogIGNvbnN0IGVudmVsb3BlSGVhZGVycyA9IHsKICAgIHNlbnRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgIC4uLihzZGtJbmZvICYmIHsgc2RrOiBzZGtJbmZvIH0pLAogICAgLi4uKCEhdHVubmVsICYmIGRzbiAmJiB7IGRzbjogZHNuVG9TdHJpbmcoZHNuKSB9KSwKICB9OwoKICBjb25zdCBlbnZlbG9wZUl0ZW0gPQogICAgJ2FnZ3JlZ2F0ZXMnIGluIHNlc3Npb24gPyBbeyB0eXBlOiAnc2Vzc2lvbnMnIH0sIHNlc3Npb25dIDogW3sgdHlwZTogJ3Nlc3Npb24nIH0sIHNlc3Npb24udG9KU09OKCldOwoKICByZXR1cm4gY3JlYXRlRW52ZWxvcGUoZW52ZWxvcGVIZWFkZXJzLCBbZW52ZWxvcGVJdGVtXSk7Cn0KCi8qKgogKiBDcmVhdGUgYW4gRW52ZWxvcGUgZnJvbSBhbiBldmVudC4KICovCmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RW52ZWxvcGUoCiAgZXZlbnQsCiAgZHNuLAogIG1ldGFkYXRhLAogIHR1bm5lbCwKKSB7CiAgY29uc3Qgc2RrSW5mbyA9IGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGEpOwoKICAvKgogICAgTm90ZTogRHVlIHRvIFRTLCBldmVudC50eXBlIG1heSBiZSBgcmVwbGF5X2V2ZW50YCwgdGhlb3JldGljYWxseS4KICAgIEluIHByYWN0aWNlLCB3ZSBuZXZlciBjYWxsIGBjcmVhdGVFdmVudEVudmVsb3BlYCB3aXRoIGByZXBsYXlfZXZlbnRgIHR5cGUsCiAgICBhbmQgd2UnZCBoYXZlIHRvIGFkanV0IGEgbG9vb3Qgb2YgdHlwZXMgdG8gbWFrZSB0aGlzIHdvcmsgcHJvcGVybHkuCiAgICBXZSB3YW50IHRvIGF2b2lkIGNhc3RpbmcgdGhpcyBhcm91bmQsIGFzIHRoYXQgY291bGQgbGVhZCB0byBidWdzIChlLmcuIHdoZW4gd2UgYWRkIGFub3RoZXIgdHlwZSkKICAgIFNvIHRoZSBzYWZlIGNob2ljZSBpcyB0byByZWFsbHkgZ3VhcmQgYWdhaW5zdCB0aGUgcmVwbGF5X2V2ZW50IHR5cGUgaGVyZS4KICAqLwogIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUgJiYgZXZlbnQudHlwZSAhPT0gJ3JlcGxheV9ldmVudCcgPyBldmVudC50eXBlIDogJ2V2ZW50JzsKCiAgZW5oYW5jZUV2ZW50V2l0aFNka0luZm8oZXZlbnQsIG1ldGFkYXRhICYmIG1ldGFkYXRhLnNkayk7CgogIGNvbnN0IGVudmVsb3BlSGVhZGVycyA9IGNyZWF0ZUV2ZW50RW52ZWxvcGVIZWFkZXJzKGV2ZW50LCBzZGtJbmZvLCB0dW5uZWwsIGRzbik7CgogIC8vIFByZXZlbnQgdGhpcyBkYXRhICh3aGljaCwgaWYgaXQgZXhpc3RzLCB3YXMgdXNlZCBpbiBlYXJsaWVyIHN0ZXBzIGluIHRoZSBwcm9jZXNzaW5nIHBpcGVsaW5lKSBmcm9tIGJlaW5nIHNlbnQgdG8KICAvLyBzZW50cnkuIChOb3RlOiBPdXIgdXNlIG9mIHRoaXMgcHJvcGVydHkgY29tZXMgYW5kIGdvZXMgd2l0aCB3aGF0ZXZlciB3ZSBtaWdodCBiZSBkZWJ1Z2dpbmcsIHdoYXRldmVyIGhhY2tzIHdlIG1heQogIC8vIGhhdmUgdGVtcG9yYXJpbHkgYWRkZWQsIGV0Yy4gRXZlbiBpZiB3ZSBkb24ndCBoYXBwZW4gdG8gYmUgdXNpbmcgaXQgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCBsZXQncyBub3QgZ2V0IHJpZAogIC8vIG9mIHRoaXMgYGRlbGV0ZWAsIGxlc3Qgd2UgbWlzcyBwdXR0aW5nIGl0IGJhY2sgaW4gdGhlIG5leHQgdGltZSB0aGUgcHJvcGVydHkgaXMgaW4gdXNlLikKICBkZWxldGUgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhOwoKICBjb25zdCBldmVudEl0ZW0gPSBbeyB0eXBlOiBldmVudFR5cGUgfSwgZXZlbnRdOwogIHJldHVybiBjcmVhdGVFbnZlbG9wZShlbnZlbG9wZUhlYWRlcnMsIFtldmVudEl0ZW1dKTsKfQoKY29uc3QgU0VOVFJZX0FQSV9WRVJTSU9OID0gJzcnOwoKLyoqIFJldHVybnMgdGhlIHByZWZpeCB0byBjb25zdHJ1Y3QgU2VudHJ5IGluZ2VzdGlvbiBBUEkgZW5kcG9pbnRzLiAqLwpmdW5jdGlvbiBnZXRCYXNlQXBpRW5kcG9pbnQoZHNuKSB7CiAgY29uc3QgcHJvdG9jb2wgPSBkc24ucHJvdG9jb2wgPyBgJHtkc24ucHJvdG9jb2x9OmAgOiAnJzsKICBjb25zdCBwb3J0ID0gZHNuLnBvcnQgPyBgOiR7ZHNuLnBvcnR9YCA6ICcnOwogIHJldHVybiBgJHtwcm90b2NvbH0vLyR7ZHNuLmhvc3R9JHtwb3J0fSR7ZHNuLnBhdGggPyBgLyR7ZHNuLnBhdGh9YCA6ICcnfS9hcGkvYDsKfQoKLyoqIFJldHVybnMgdGhlIGluZ2VzdCBBUEkgZW5kcG9pbnQgZm9yIHRhcmdldC4gKi8KZnVuY3Rpb24gX2dldEluZ2VzdEVuZHBvaW50KGRzbikgewogIHJldHVybiBgJHtnZXRCYXNlQXBpRW5kcG9pbnQoZHNuKX0ke2Rzbi5wcm9qZWN0SWR9L2VudmVsb3BlL2A7Cn0KCi8qKiBSZXR1cm5zIGEgVVJMLWVuY29kZWQgc3RyaW5nIHdpdGggYXV0aCBjb25maWcgc3VpdGFibGUgZm9yIGEgcXVlcnkgc3RyaW5nLiAqLwpmdW5jdGlvbiBfZW5jb2RlZEF1dGgoZHNuLCBzZGtJbmZvKSB7CiAgcmV0dXJuIHVybEVuY29kZSh7CiAgICAvLyBXZSBzZW5kIG9ubHkgdGhlIG1pbmltdW0gc2V0IG9mIHJlcXVpcmVkIGluZm9ybWF0aW9uLiBTZWUKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvaXNzdWVzLzI1NzIuCiAgICBzZW50cnlfa2V5OiBkc24ucHVibGljS2V5LAogICAgc2VudHJ5X3ZlcnNpb246IFNFTlRSWV9BUElfVkVSU0lPTiwKICAgIC4uLihzZGtJbmZvICYmIHsgc2VudHJ5X2NsaWVudDogYCR7c2RrSW5mby5uYW1lfS8ke3Nka0luZm8udmVyc2lvbn1gIH0pLAogIH0pOwp9CgovKioKICogUmV0dXJucyB0aGUgZW52ZWxvcGUgZW5kcG9pbnQgVVJMIHdpdGggYXV0aCBpbiB0aGUgcXVlcnkgc3RyaW5nLgogKgogKiBTZW5kaW5nIGF1dGggYXMgcGFydCBvZiB0aGUgcXVlcnkgc3RyaW5nIGFuZCBub3QgYXMgY3VzdG9tIEhUVFAgaGVhZGVycyBhdm9pZHMgQ09SUyBwcmVmbGlnaHQgcmVxdWVzdHMuCiAqLwpmdW5jdGlvbiBnZXRFbnZlbG9wZUVuZHBvaW50V2l0aFVybEVuY29kZWRBdXRoKAogIGRzbiwKICAvLyBUT0RPICh2OCk6IFJlbW92ZSBgdHVubmVsT3JPcHRpb25zYCBpbiBmYXZvciBvZiBgb3B0aW9uc2AsIGFuZCB1c2UgdGhlIHN1YnN0aXR1dGUgY29kZSBiZWxvdwogIC8vIG9wdGlvbnM6IENsaWVudE9wdGlvbnMgPSB7fSBhcyBDbGllbnRPcHRpb25zLAogIHR1bm5lbE9yT3B0aW9ucyA9IHt9ICwKKSB7CiAgLy8gVE9ETyAodjgpOiBVc2UgdGhpcyBjb2RlIGluc3RlYWQKICAvLyBjb25zdCB7IHR1bm5lbCwgX21ldGFkYXRhID0ge30gfSA9IG9wdGlvbnM7CiAgLy8gcmV0dXJuIHR1bm5lbCA/IHR1bm5lbCA6IGAke19nZXRJbmdlc3RFbmRwb2ludChkc24pfT8ke19lbmNvZGVkQXV0aChkc24sIF9tZXRhZGF0YS5zZGspfWA7CgogIGNvbnN0IHR1bm5lbCA9IHR5cGVvZiB0dW5uZWxPck9wdGlvbnMgPT09ICdzdHJpbmcnID8gdHVubmVsT3JPcHRpb25zIDogdHVubmVsT3JPcHRpb25zLnR1bm5lbDsKICBjb25zdCBzZGtJbmZvID0KICAgIHR5cGVvZiB0dW5uZWxPck9wdGlvbnMgPT09ICdzdHJpbmcnIHx8ICF0dW5uZWxPck9wdGlvbnMuX21ldGFkYXRhID8gdW5kZWZpbmVkIDogdHVubmVsT3JPcHRpb25zLl9tZXRhZGF0YS5zZGs7CgogIHJldHVybiB0dW5uZWwgPyB0dW5uZWwgOiBgJHtfZ2V0SW5nZXN0RW5kcG9pbnQoZHNuKX0/JHtfZW5jb2RlZEF1dGgoZHNuLCBzZGtJbmZvKX1gOwp9Cgpjb25zdCBERUZBVUxUX1RSQU5TUE9SVF9CVUZGRVJfU0laRSA9IDMwOwoKLyoqCiAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYSBTZW50cnkgYFRyYW5zcG9ydGAKICoKICogQHBhcmFtIG9wdGlvbnMKICogQHBhcmFtIG1ha2VSZXF1ZXN0CiAqLwpmdW5jdGlvbiBjcmVhdGVUcmFuc3BvcnQoCiAgb3B0aW9ucywKICBtYWtlUmVxdWVzdCwKICBidWZmZXIgPSBtYWtlUHJvbWlzZUJ1ZmZlcigKICAgIG9wdGlvbnMuYnVmZmVyU2l6ZSB8fCBERUZBVUxUX1RSQU5TUE9SVF9CVUZGRVJfU0laRSwKICApLAopIHsKICBsZXQgcmF0ZUxpbWl0cyA9IHt9OwogIGNvbnN0IGZsdXNoID0gKHRpbWVvdXQpID0+IGJ1ZmZlci5kcmFpbih0aW1lb3V0KTsKCiAgZnVuY3Rpb24gc2VuZChlbnZlbG9wZSkgewogICAgY29uc3QgZmlsdGVyZWRFbnZlbG9wZUl0ZW1zID0gW107CgogICAgLy8gRHJvcCByYXRlIGxpbWl0ZWQgaXRlbXMgZnJvbSBlbnZlbG9wZQogICAgZm9yRWFjaEVudmVsb3BlSXRlbShlbnZlbG9wZSwgKGl0ZW0sIHR5cGUpID0+IHsKICAgICAgY29uc3QgZGF0YUNhdGVnb3J5ID0gZW52ZWxvcGVJdGVtVHlwZVRvRGF0YUNhdGVnb3J5KHR5cGUpOwogICAgICBpZiAoaXNSYXRlTGltaXRlZChyYXRlTGltaXRzLCBkYXRhQ2F0ZWdvcnkpKSB7CiAgICAgICAgY29uc3QgZXZlbnQgPSBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKTsKICAgICAgICBvcHRpb25zLnJlY29yZERyb3BwZWRFdmVudCgncmF0ZWxpbWl0X2JhY2tvZmYnLCBkYXRhQ2F0ZWdvcnksIGV2ZW50KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmaWx0ZXJlZEVudmVsb3BlSXRlbXMucHVzaChpdGVtKTsKICAgICAgfQogICAgfSk7CgogICAgLy8gU2tpcCBzZW5kaW5nIGlmIGVudmVsb3BlIGlzIGVtcHR5IGFmdGVyIGZpbHRlcmluZyBvdXQgcmF0ZSBsaW1pdGVkIGV2ZW50cwogICAgaWYgKGZpbHRlcmVkRW52ZWxvcGVJdGVtcy5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHJlc29sdmVkU3luY1Byb21pc2UoKTsKICAgIH0KCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQogICAgY29uc3QgZmlsdGVyZWRFbnZlbG9wZSA9IGNyZWF0ZUVudmVsb3BlKGVudmVsb3BlWzBdLCBmaWx0ZXJlZEVudmVsb3BlSXRlbXMgKTsKCiAgICAvLyBDcmVhdGVzIGNsaWVudCByZXBvcnQgZm9yIGVhY2ggaXRlbSBpbiBhbiBlbnZlbG9wZQogICAgY29uc3QgcmVjb3JkRW52ZWxvcGVMb3NzID0gKHJlYXNvbikgPT4gewogICAgICBmb3JFYWNoRW52ZWxvcGVJdGVtKGZpbHRlcmVkRW52ZWxvcGUsIChpdGVtLCB0eXBlKSA9PiB7CiAgICAgICAgY29uc3QgZXZlbnQgPSBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKTsKICAgICAgICBvcHRpb25zLnJlY29yZERyb3BwZWRFdmVudChyZWFzb24sIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSwgZXZlbnQpOwogICAgICB9KTsKICAgIH07CgogICAgY29uc3QgcmVxdWVzdFRhc2sgPSAoKSA9PgogICAgICBtYWtlUmVxdWVzdCh7IGJvZHk6IHNlcmlhbGl6ZUVudmVsb3BlKGZpbHRlcmVkRW52ZWxvcGUsIG9wdGlvbnMudGV4dEVuY29kZXIpIH0pLnRoZW4oCiAgICAgICAgcmVzcG9uc2UgPT4gewogICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB0aHJvdyBvbiBOT0sgcmVzcG9uc2VzLCBidXQgd2Ugd2FudCB0byBhdCBsZWFzdCBsb2cgdGhlbQogICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IHVuZGVmaW5lZCAmJiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXNDb2RlID49IDMwMCkpIHsKICAgICAgICAgICAgREVCVUdfQlVJTEQgJiYgbG9nZ2VyLndhcm4oYFNlbnRyeSByZXNwb25kZWQgd2l0aCBzdGF0dXMgY29kZSAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9IHRvIHNlbnQgZXZlbnQuYCk7CiAgICAgICAgICB9CgogICAgICAgICAgcmF0ZUxpbWl0cyA9IHVwZGF0ZVJhdGVMaW1pdHMocmF0ZUxpbWl0cywgcmVzcG9uc2UpOwogICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgICAgIH0sCiAgICAgICAgZXJyb3IgPT4gewogICAgICAgICAgcmVjb3JkRW52ZWxvcGVMb3NzKCduZXR3b3JrX2Vycm9yJyk7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9LAogICAgICApOwoKICAgIHJldHVybiBidWZmZXIuYWRkKHJlcXVlc3RUYXNrKS50aGVuKAogICAgICByZXN1bHQgPT4gcmVzdWx0LAogICAgICBlcnJvciA9PiB7CiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU2VudHJ5RXJyb3IpIHsKICAgICAgICAgIERFQlVHX0JVSUxEICYmIGxvZ2dlci5lcnJvcignU2tpcHBlZCBzZW5kaW5nIGV2ZW50IGJlY2F1c2UgYnVmZmVyIGlzIGZ1bGwuJyk7CiAgICAgICAgICByZWNvcmRFbnZlbG9wZUxvc3MoJ3F1ZXVlX292ZXJmbG93Jyk7CiAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRTeW5jUHJvbWlzZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CiAgICAgIH0sCiAgICApOwogIH0KCiAgLy8gV2UgdXNlIHRoaXMgdG8gaWRlbnRpZmlmeSBpZiB0aGUgdHJhbnNwb3J0IGlzIHRoZSBiYXNlIHRyYW5zcG9ydAogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHRoaXMgYWdhaW4gYXMgd2UnbGwgbm8gbG9uZ2VyIG5lZWQgaXQKICBzZW5kLl9fc2VudHJ5X19iYXNlVHJhbnNwb3J0X18gPSB0cnVlOwoKICByZXR1cm4gewogICAgc2VuZCwKICAgIGZsdXNoLAogIH07Cn0KCmZ1bmN0aW9uIGdldEV2ZW50Rm9yRW52ZWxvcGVJdGVtKGl0ZW0sIHR5cGUpIHsKICBpZiAodHlwZSAhPT0gJ2V2ZW50JyAmJiB0eXBlICE9PSAndHJhbnNhY3Rpb24nKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbSkgPyAoaXRlbSApWzFdIDogdW5kZWZpbmVkOwp9CgovKiogbm9ybWFsaXplcyBXaW5kb3dzIHBhdGhzICovCmZ1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHBhdGgpIHsKICByZXR1cm4gcGF0aAogICAgLnJlcGxhY2UoL15bQS1aXTovLCAnJykgLy8gcmVtb3ZlIFdpbmRvd3Mtc3R5bGUgcHJlZml4CiAgICAucmVwbGFjZSgvXFwvZywgJy8nKTsgLy8gcmVwbGFjZSBhbGwgYFxgIGluc3RhbmNlcyB3aXRoIGAvYAp9CgovKiogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgbW9kdWxlIG5hbWUgZnJvbSBhIGZpbGVuYW1lICovCmZ1bmN0aW9uIGNyZWF0ZUdldE1vZHVsZUZyb21GaWxlbmFtZSgKICBiYXNlUGF0aCA9IHByb2Nlc3MuYXJndlsxXSA/IGRpcm5hbWUocHJvY2Vzcy5hcmd2WzFdKSA6IHByb2Nlc3MuY3dkKCksCiAgaXNXaW5kb3dzID0gc2VwID09PSAnXFwnLAopIHsKICBjb25zdCBub3JtYWxpemVkQmFzZSA9IGlzV2luZG93cyA/IG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGJhc2VQYXRoKSA6IGJhc2VQYXRoOwoKICByZXR1cm4gKGZpbGVuYW1lKSA9PiB7CiAgICBpZiAoIWZpbGVuYW1lKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBjb25zdCBub3JtYWxpemVkRmlsZW5hbWUgPSBpc1dpbmRvd3MgPyBub3JtYWxpemVXaW5kb3dzUGF0aChmaWxlbmFtZSkgOiBmaWxlbmFtZTsKCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0CiAgICBsZXQgeyBkaXIsIGJhc2U6IGZpbGUsIGV4dCB9ID0gcG9zaXgucGFyc2Uobm9ybWFsaXplZEZpbGVuYW1lKTsKCiAgICBpZiAoZXh0ID09PSAnLmpzJyB8fCBleHQgPT09ICcubWpzJyB8fCBleHQgPT09ICcuY2pzJykgewogICAgICBmaWxlID0gZmlsZS5zbGljZSgwLCBleHQubGVuZ3RoICogLTEpOwogICAgfQoKICAgIGlmICghZGlyKSB7CiAgICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlcgogICAgICBkaXIgPSAnLic7CiAgICB9CgogICAgY29uc3QgbiA9IGRpci5sYXN0SW5kZXhPZignL25vZGVfbW9kdWxlcycpOwogICAgaWYgKG4gPiAtMSkgewogICAgICByZXR1cm4gYCR7ZGlyLnNsaWNlKG4gKyAxNCkucmVwbGFjZSgvXC8vZywgJy4nKX06JHtmaWxlfWA7CiAgICB9CgogICAgLy8gTGV0J3Mgc2VlIGlmIGl0J3MgYSBwYXJ0IG9mIHRoZSBtYWluIG1vZHVsZQogICAgLy8gVG8gYmUgYSBwYXJ0IG9mIG1haW4gbW9kdWxlLCBpdCBoYXMgdG8gc2hhcmUgdGhlIHNhbWUgYmFzZQogICAgaWYgKGRpci5zdGFydHNXaXRoKG5vcm1hbGl6ZWRCYXNlKSkgewogICAgICBsZXQgbW9kdWxlTmFtZSA9IGRpci5zbGljZShub3JtYWxpemVkQmFzZS5sZW5ndGggKyAxKS5yZXBsYWNlKC9cLy9nLCAnLicpOwoKICAgICAgaWYgKG1vZHVsZU5hbWUpIHsKICAgICAgICBtb2R1bGVOYW1lICs9ICc6JzsKICAgICAgfQogICAgICBtb2R1bGVOYW1lICs9IGZpbGU7CgogICAgICByZXR1cm4gbW9kdWxlTmFtZTsKICAgIH0KCiAgICByZXR1cm4gZmlsZTsKICB9Owp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlJDIobGhzLCByaHNGbikgeyBpZiAobGhzICE9IG51bGwpIHsgcmV0dXJuIGxoczsgfSBlbHNlIHsgcmV0dXJuIHJoc0ZuKCk7IH0gfS8qKgogKiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgZm9ya2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1Rvb1RhbGxOYXRlL3Byb3h5LWFnZW50cy90cmVlL2IxMzMyOTVmZDE2ZjY0NzU1NzhiNmIxNWJkOWI0ZTMzZWNiMGQwYjcKICogV2l0aCB0aGUgZm9sbG93aW5nIGxpY2VuY2U6CiAqCiAqIChUaGUgTUlUIExpY2Vuc2UpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMyBOYXRoYW4gUmFqbGljaCA8bmF0aGFuQHRvb3RhbGxuYXRlLm5ldD4qCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICogJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOioKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuKgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwoKY29uc3QgSU5URVJOQUwgPSBTeW1ib2woJ0FnZW50QmFzZUludGVybmFsU3RhdGUnKTsKCmNsYXNzIEFnZW50IGV4dGVuZHMgaHR0cC5BZ2VudCB7CgogIC8vIFNldCBieSBgaHR0cC5BZ2VudGAgLSBtaXNzaW5nIGZyb20gYEB0eXBlcy9ub2RlYAoKICBjb25zdHJ1Y3RvcihvcHRzKSB7CiAgICBzdXBlcihvcHRzKTsKICAgIHRoaXNbSU5URVJOQUxdID0ge307CiAgfQoKICAvKioKICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGFuIGBodHRwYCBvciBgaHR0cHNgIHJlcXVlc3QuCiAgICovCiAgaXNTZWN1cmVFbmRwb2ludChvcHRpb25zKSB7CiAgICBpZiAob3B0aW9ucykgewogICAgICAvLyBGaXJzdCBjaGVjayB0aGUgYHNlY3VyZUVuZHBvaW50YCBwcm9wZXJ0eSBleHBsaWNpdGx5LCBzaW5jZSB0aGlzCiAgICAgIC8vIG1lYW5zIHRoYXQgYSBwYXJlbnQgYEFnZW50YCBpcyAicGFzc2luZyB0aHJvdWdoIiB0byB0aGlzIGluc3RhbmNlLgogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgICAgIGlmICh0eXBlb2YgKG9wdGlvbnMgKS5zZWN1cmVFbmRwb2ludCA9PT0gJ2Jvb2xlYW4nKSB7CiAgICAgICAgcmV0dXJuIG9wdGlvbnMuc2VjdXJlRW5kcG9pbnQ7CiAgICAgIH0KCiAgICAgIC8vIElmIG5vIGV4cGxpY2l0IGBzZWN1cmVgIGVuZHBvaW50LCBjaGVjayBpZiBgcHJvdG9jb2xgIHByb3BlcnR5IGlzCiAgICAgIC8vIHNldC4gVGhpcyB3aWxsIHVzdWFsbHkgYmUgdGhlIGNhc2Ugc2luY2UgdXNpbmcgYSBmdWxsIHN0cmluZyBVUkwKICAgICAgLy8gb3IgYFVSTGAgaW5zdGFuY2Ugc2hvdWxkIGJlIHRoZSBtb3N0IGNvbW1vbiB1c2FnZS4KICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnByb3RvY29sID09PSAnc3RyaW5nJykgewogICAgICAgIHJldHVybiBvcHRpb25zLnByb3RvY29sID09PSAnaHR0cHM6JzsKICAgICAgfQogICAgfQoKICAgIC8vIEZpbmFsbHksIGlmIG5vIGBwcm90b2NvbGAgcHJvcGVydHkgd2FzIHNldCwgdGhlbiBmYWxsIGJhY2sgdG8KICAgIC8vIGNoZWNraW5nIHRoZSBzdGFjayB0cmFjZSBvZiB0aGUgY3VycmVudCBjYWxsIHN0YWNrLCBhbmQgdHJ5IHRvCiAgICAvLyBkZXRlY3QgdGhlICJodHRwcyIgbW9kdWxlLgogICAgY29uc3QgeyBzdGFjayB9ID0gbmV3IEVycm9yKCk7CiAgICBpZiAodHlwZW9mIHN0YWNrICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHN0YWNrLnNwbGl0KCdcbicpLnNvbWUobCA9PiBsLmluZGV4T2YoJyhodHRwcy5qczonKSAhPT0gLTEgfHwgbC5pbmRleE9mKCdub2RlOmh0dHBzOicpICE9PSAtMSk7CiAgfQoKICBjcmVhdGVTb2NrZXQocmVxLCBvcHRpb25zLCBjYikgewogICAgY29uc3QgY29ubmVjdE9wdHMgPSB7CiAgICAgIC4uLm9wdGlvbnMsCiAgICAgIHNlY3VyZUVuZHBvaW50OiB0aGlzLmlzU2VjdXJlRW5kcG9pbnQob3B0aW9ucyksCiAgICB9OwogICAgUHJvbWlzZS5yZXNvbHZlKCkKICAgICAgLnRoZW4oKCkgPT4gdGhpcy5jb25uZWN0KHJlcSwgY29ubmVjdE9wdHMpKQogICAgICAudGhlbihzb2NrZXQgPT4gewogICAgICAgIGlmIChzb2NrZXQgaW5zdGFuY2VvZiBodHRwLkFnZW50KSB7CiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBhZGRSZXF1ZXN0KClgIGlzbid0IGRlZmluZWQgaW4gYEB0eXBlcy9ub2RlYAogICAgICAgICAgcmV0dXJuIHNvY2tldC5hZGRSZXF1ZXN0KHJlcSwgY29ubmVjdE9wdHMpOwogICAgICAgIH0KICAgICAgICB0aGlzW0lOVEVSTkFMXS5jdXJyZW50U29ja2V0ID0gc29ja2V0OwogICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYGNyZWF0ZVNvY2tldCgpYCBpc24ndCBkZWZpbmVkIGluIGBAdHlwZXMvbm9kZWAKICAgICAgICBzdXBlci5jcmVhdGVTb2NrZXQocmVxLCBvcHRpb25zLCBjYik7CiAgICAgIH0sIGNiKTsKICB9CgogIGNyZWF0ZUNvbm5lY3Rpb24oKSB7CiAgICBjb25zdCBzb2NrZXQgPSB0aGlzW0lOVEVSTkFMXS5jdXJyZW50U29ja2V0OwogICAgdGhpc1tJTlRFUk5BTF0uY3VycmVudFNvY2tldCA9IHVuZGVmaW5lZDsKICAgIGlmICghc29ja2V0KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24nKTsKICAgIH0KICAgIHJldHVybiBzb2NrZXQ7CiAgfQoKICBnZXQgZGVmYXVsdFBvcnQoKSB7CiAgICByZXR1cm4gX251bGxpc2hDb2FsZXNjZSQyKHRoaXNbSU5URVJOQUxdLmRlZmF1bHRQb3J0LCAoKSA9PiAoICh0aGlzLnByb3RvY29sID09PSAnaHR0cHM6JyA/IDQ0MyA6IDgwKSkpOwogIH0KCiAgc2V0IGRlZmF1bHRQb3J0KHYpIHsKICAgIGlmICh0aGlzW0lOVEVSTkFMXSkgewogICAgICB0aGlzW0lOVEVSTkFMXS5kZWZhdWx0UG9ydCA9IHY7CiAgICB9CiAgfQoKICBnZXQgcHJvdG9jb2woKSB7CiAgICByZXR1cm4gX251bGxpc2hDb2FsZXNjZSQyKHRoaXNbSU5URVJOQUxdLnByb3RvY29sLCAoKSA9PiAoICh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKSA/ICdodHRwczonIDogJ2h0dHA6JykpKTsKICB9CgogIHNldCBwcm90b2NvbCh2KSB7CiAgICBpZiAodGhpc1tJTlRFUk5BTF0pIHsKICAgICAgdGhpc1tJTlRFUk5BTF0ucHJvdG9jb2wgPSB2OwogICAgfQogIH0KfQoKZnVuY3Rpb24gZGVidWckMSguLi5hcmdzKSB7CiAgbG9nZ2VyLmxvZygnW2h0dHBzLXByb3h5LWFnZW50OnBhcnNlLXByb3h5LXJlc3BvbnNlXScsIC4uLmFyZ3MpOwp9CgpmdW5jdGlvbiBwYXJzZVByb3h5UmVzcG9uc2Uoc29ja2V0KSB7CiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIC8vIHdlIG5lZWQgdG8gYnVmZmVyIGFueSBIVFRQIHRyYWZmaWMgdGhhdCBoYXBwZW5zIHdpdGggdGhlIHByb3h5IGJlZm9yZSB3ZSBnZXQKICAgIC8vIHRoZSBDT05ORUNUIHJlc3BvbnNlLCBzbyB0aGF0IGlmIHRoZSByZXNwb25zZSBpcyBhbnl0aGluZyBvdGhlciB0aGFuIGFuICIyMDAiCiAgICAvLyByZXNwb25zZSBjb2RlLCB0aGVuIHdlIGNhbiByZS1wbGF5IHRoZSAiZGF0YSIgZXZlbnRzIG9uIHRoZSBzb2NrZXQgb25jZSB0aGUKICAgIC8vIEhUVFAgcGFyc2VyIGlzIGhvb2tlZCB1cC4uLgogICAgbGV0IGJ1ZmZlcnNMZW5ndGggPSAwOwogICAgY29uc3QgYnVmZmVycyA9IFtdOwoKICAgIGZ1bmN0aW9uIHJlYWQoKSB7CiAgICAgIGNvbnN0IGIgPSBzb2NrZXQucmVhZCgpOwogICAgICBpZiAoYikgb25kYXRhKGIpOwogICAgICBlbHNlIHNvY2tldC5vbmNlKCdyZWFkYWJsZScsIHJlYWQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsZWFudXAoKSB7CiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpOwogICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7CiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCByZWFkKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVuZCgpIHsKICAgICAgY2xlYW51cCgpOwogICAgICBkZWJ1ZyQxKCdvbmVuZCcpOwogICAgICByZWplY3QobmV3IEVycm9yKCdQcm94eSBjb25uZWN0aW9uIGVuZGVkIGJlZm9yZSByZWNlaXZpbmcgQ09OTkVDVCByZXNwb25zZScpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVycm9yKGVycikgewogICAgICBjbGVhbnVwKCk7CiAgICAgIGRlYnVnJDEoJ29uZXJyb3IgJW8nLCBlcnIpOwogICAgICByZWplY3QoZXJyKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmRhdGEoYikgewogICAgICBidWZmZXJzLnB1c2goYik7CiAgICAgIGJ1ZmZlcnNMZW5ndGggKz0gYi5sZW5ndGg7CgogICAgICBjb25zdCBidWZmZXJlZCA9IEJ1ZmZlci5jb25jYXQoYnVmZmVycywgYnVmZmVyc0xlbmd0aCk7CiAgICAgIGNvbnN0IGVuZE9mSGVhZGVycyA9IGJ1ZmZlcmVkLmluZGV4T2YoJ1xyXG5cclxuJyk7CgogICAgICBpZiAoZW5kT2ZIZWFkZXJzID09PSAtMSkgewogICAgICAgIC8vIGtlZXAgYnVmZmVyaW5nCiAgICAgICAgZGVidWckMSgnaGF2ZSBub3QgcmVjZWl2ZWQgZW5kIG9mIEhUVFAgaGVhZGVycyB5ZXQuLi4nKTsKICAgICAgICByZWFkKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBjb25zdCBoZWFkZXJQYXJ0cyA9IGJ1ZmZlcmVkLnNsaWNlKDAsIGVuZE9mSGVhZGVycykudG9TdHJpbmcoJ2FzY2lpJykuc3BsaXQoJ1xyXG4nKTsKICAgICAgY29uc3QgZmlyc3RMaW5lID0gaGVhZGVyUGFydHMuc2hpZnQoKTsKICAgICAgaWYgKCFmaXJzdExpbmUpIHsKICAgICAgICBzb2NrZXQuZGVzdHJveSgpOwogICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlJykpOwogICAgICB9CiAgICAgIGNvbnN0IGZpcnN0TGluZVBhcnRzID0gZmlyc3RMaW5lLnNwbGl0KCcgJyk7CiAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSArZmlyc3RMaW5lUGFydHNbMV07CiAgICAgIGNvbnN0IHN0YXR1c1RleHQgPSBmaXJzdExpbmVQYXJ0cy5zbGljZSgyKS5qb2luKCcgJyk7CiAgICAgIGNvbnN0IGhlYWRlcnMgPSB7fTsKICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgaGVhZGVyUGFydHMpIHsKICAgICAgICBpZiAoIWhlYWRlcikgY29udGludWU7CiAgICAgICAgY29uc3QgZmlyc3RDb2xvbiA9IGhlYWRlci5pbmRleE9mKCc6Jyk7CiAgICAgICAgaWYgKGZpcnN0Q29sb24gPT09IC0xKSB7CiAgICAgICAgICBzb2NrZXQuZGVzdHJveSgpOwogICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYEludmFsaWQgaGVhZGVyIGZyb20gcHJveHkgQ09OTkVDVCByZXNwb25zZTogIiR7aGVhZGVyfSJgKSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IGtleSA9IGhlYWRlci5zbGljZSgwLCBmaXJzdENvbG9uKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGNvbnN0IHZhbHVlID0gaGVhZGVyLnNsaWNlKGZpcnN0Q29sb24gKyAxKS50cmltU3RhcnQoKTsKICAgICAgICBjb25zdCBjdXJyZW50ID0gaGVhZGVyc1trZXldOwogICAgICAgIGlmICh0eXBlb2YgY3VycmVudCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIGhlYWRlcnNba2V5XSA9IFtjdXJyZW50LCB2YWx1ZV07CiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7CiAgICAgICAgICBjdXJyZW50LnB1c2godmFsdWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZGVidWckMSgnZ290IHByb3h5IHNlcnZlciByZXNwb25zZTogJW8gJW8nLCBmaXJzdExpbmUsIGhlYWRlcnMpOwogICAgICBjbGVhbnVwKCk7CiAgICAgIHJlc29sdmUoewogICAgICAgIGNvbm5lY3Q6IHsKICAgICAgICAgIHN0YXR1c0NvZGUsCiAgICAgICAgICBzdGF0dXNUZXh0LAogICAgICAgICAgaGVhZGVycywKICAgICAgICB9LAogICAgICAgIGJ1ZmZlcmVkLAogICAgICB9KTsKICAgIH0KCiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25lcnJvcik7CiAgICBzb2NrZXQub24oJ2VuZCcsIG9uZW5kKTsKCiAgICByZWFkKCk7CiAgfSk7Cn0KCmZ1bmN0aW9uIF9udWxsaXNoQ29hbGVzY2UkMShsaHMsIHJoc0ZuKSB7IGlmIChsaHMgIT0gbnVsbCkgeyByZXR1cm4gbGhzOyB9IGVsc2UgeyByZXR1cm4gcmhzRm4oKTsgfSB9IGZ1bmN0aW9uIF9vcHRpb25hbENoYWluJDEob3BzKSB7IGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyBsZXQgdmFsdWUgPSBvcHNbMF07IGxldCBpID0gMTsgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7IGNvbnN0IG9wID0gb3BzW2ldOyBjb25zdCBmbiA9IG9wc1tpICsgMV07IGkgKz0gMjsgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7IGxhc3RBY2Nlc3NMSFMgPSB2YWx1ZTsgdmFsdWUgPSBmbih2YWx1ZSk7IH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHsgdmFsdWUgPSBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IH0gfSByZXR1cm4gdmFsdWU7IH0KCmZ1bmN0aW9uIGRlYnVnKC4uLmFyZ3MpIHsKICBsb2dnZXIubG9nKCdbaHR0cHMtcHJveHktYWdlbnRdJywgLi4uYXJncyk7Cn0KCi8qKgogKiBUaGUgYEh0dHBzUHJveHlBZ2VudGAgaW1wbGVtZW50cyBhbiBIVFRQIEFnZW50IHN1YmNsYXNzIHRoYXQgY29ubmVjdHMgdG8KICogdGhlIHNwZWNpZmllZCAiSFRUUChzKSBwcm94eSBzZXJ2ZXIiIGluIG9yZGVyIHRvIHByb3h5IEhUVFBTIHJlcXVlc3RzLgogKgogKiBPdXRnb2luZyBIVFRQIHJlcXVlc3RzIGFyZSBmaXJzdCB0dW5uZWxlZCB0aHJvdWdoIHRoZSBwcm94eSBzZXJ2ZXIgdXNpbmcgdGhlCiAqIGBDT05ORUNUYCBIVFRQIHJlcXVlc3QgbWV0aG9kIHRvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlciwKICogYW5kIHRoZW4gdGhlIHByb3h5IHNlcnZlciBjb25uZWN0cyB0byB0aGUgZGVzdGluYXRpb24gdGFyZ2V0IGFuZCBpc3N1ZXMgdGhlCiAqIEhUVFAgcmVxdWVzdCBmcm9tIHRoZSBwcm94eSBzZXJ2ZXIuCiAqCiAqIGBodHRwczpgIHJlcXVlc3RzIGhhdmUgdGhlaXIgc29ja2V0IGNvbm5lY3Rpb24gdXBncmFkZWQgdG8gVExTIG9uY2UKICogdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlciBoYXMgYmVlbiBlc3RhYmxpc2hlZC4KICovCmNsYXNzIEh0dHBzUHJveHlBZ2VudCBleHRlbmRzIEFnZW50IHsKICBzdGF0aWMgX19pbml0U3RhdGljKCkge3RoaXMucHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBzJ107IH0KCiAgY29uc3RydWN0b3IocHJveHksIG9wdHMpIHsKICAgIHN1cGVyKG9wdHMpOwogICAgdGhpcy5vcHRpb25zID0ge307CiAgICB0aGlzLnByb3h5ID0gdHlwZW9mIHByb3h5ID09PSAnc3RyaW5nJyA/IG5ldyBVUkwocHJveHkpIDogcHJveHk7CiAgICB0aGlzLnByb3h5SGVhZGVycyA9IF9udWxsaXNoQ29hbGVzY2UkMShfb3B0aW9uYWxDaGFpbiQxKFtvcHRzLCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5oZWFkZXJzXSksICgpID0+ICgge30pKTsKICAgIGRlYnVnKCdDcmVhdGluZyBuZXcgSHR0cHNQcm94eUFnZW50IGluc3RhbmNlOiAlbycsIHRoaXMucHJveHkuaHJlZik7CgogICAgLy8gVHJpbSBvZmYgdGhlIGJyYWNrZXRzIGZyb20gSVB2NiBhZGRyZXNzZXMKICAgIGNvbnN0IGhvc3QgPSAodGhpcy5wcm94eS5ob3N0bmFtZSB8fCB0aGlzLnByb3h5Lmhvc3QpLnJlcGxhY2UoL15cW3xcXSQvZywgJycpOwogICAgY29uc3QgcG9ydCA9IHRoaXMucHJveHkucG9ydCA/IHBhcnNlSW50KHRoaXMucHJveHkucG9ydCwgMTApIDogdGhpcy5wcm94eS5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyA0NDMgOiA4MDsKICAgIHRoaXMuY29ubmVjdE9wdHMgPSB7CiAgICAgIC8vIEF0dGVtcHQgdG8gbmVnb3RpYXRlIGh0dHAvMS4xIGZvciBwcm94eSBzZXJ2ZXJzIHRoYXQgc3VwcG9ydCBodHRwLzIKICAgICAgQUxQTlByb3RvY29sczogWydodHRwLzEuMSddLAogICAgICAuLi4ob3B0cyA/IG9taXQob3B0cywgJ2hlYWRlcnMnKSA6IG51bGwpLAogICAgICBob3N0LAogICAgICBwb3J0LAogICAgfTsKICB9CgogIC8qKgogICAqIENhbGxlZCB3aGVuIHRoZSBub2RlLWNvcmUgSFRUUCBjbGllbnQgbGlicmFyeSBpcyBjcmVhdGluZyBhCiAgICogbmV3IEhUVFAgcmVxdWVzdC4KICAgKi8KICBhc3luYyBjb25uZWN0KHJlcSwgb3B0cykgewogICAgY29uc3QgeyBwcm94eSB9ID0gdGhpczsKCiAgICBpZiAoIW9wdHMuaG9zdCkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyAiaG9zdCIgcHJvdmlkZWQnKTsKICAgIH0KCiAgICAvLyBDcmVhdGUgYSBzb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgcHJveHkgc2VydmVyLgogICAgbGV0IHNvY2tldDsKICAgIGlmIChwcm94eS5wcm90b2NvbCA9PT0gJ2h0dHBzOicpIHsKICAgICAgZGVidWcoJ0NyZWF0aW5nIGB0bHMuU29ja2V0YDogJW8nLCB0aGlzLmNvbm5lY3RPcHRzKTsKICAgICAgY29uc3Qgc2VydmVybmFtZSA9IHRoaXMuY29ubmVjdE9wdHMuc2VydmVybmFtZSB8fCB0aGlzLmNvbm5lY3RPcHRzLmhvc3Q7CiAgICAgIHNvY2tldCA9IHRscy5jb25uZWN0KHsKICAgICAgICAuLi50aGlzLmNvbm5lY3RPcHRzLAogICAgICAgIHNlcnZlcm5hbWU6IHNlcnZlcm5hbWUgJiYgbmV0LmlzSVAoc2VydmVybmFtZSkgPyB1bmRlZmluZWQgOiBzZXJ2ZXJuYW1lLAogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIGRlYnVnKCdDcmVhdGluZyBgbmV0LlNvY2tldGA6ICVvJywgdGhpcy5jb25uZWN0T3B0cyk7CiAgICAgIHNvY2tldCA9IG5ldC5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpOwogICAgfQoKICAgIGNvbnN0IGhlYWRlcnMgPQogICAgICB0eXBlb2YgdGhpcy5wcm94eUhlYWRlcnMgPT09ICdmdW5jdGlvbicgPyB0aGlzLnByb3h5SGVhZGVycygpIDogeyAuLi50aGlzLnByb3h5SGVhZGVycyB9OwogICAgY29uc3QgaG9zdCA9IG5ldC5pc0lQdjYob3B0cy5ob3N0KSA/IGBbJHtvcHRzLmhvc3R9XWAgOiBvcHRzLmhvc3Q7CiAgICBsZXQgcGF5bG9hZCA9IGBDT05ORUNUICR7aG9zdH06JHtvcHRzLnBvcnR9IEhUVFAvMS4xXHJcbmA7CgogICAgLy8gSW5qZWN0IHRoZSBgUHJveHktQXV0aG9yaXphdGlvbmAgaGVhZGVyIGlmIG5lY2Vzc2FyeS4KICAgIGlmIChwcm94eS51c2VybmFtZSB8fCBwcm94eS5wYXNzd29yZCkgewogICAgICBjb25zdCBhdXRoID0gYCR7ZGVjb2RlVVJJQ29tcG9uZW50KHByb3h5LnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQocHJveHkucGFzc3dvcmQpfWA7CiAgICAgIGhlYWRlcnNbJ1Byb3h5LUF1dGhvcml6YXRpb24nXSA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKGF1dGgpLnRvU3RyaW5nKCdiYXNlNjQnKX1gOwogICAgfQoKICAgIGhlYWRlcnMuSG9zdCA9IGAke2hvc3R9OiR7b3B0cy5wb3J0fWA7CgogICAgaWYgKCFoZWFkZXJzWydQcm94eS1Db25uZWN0aW9uJ10pIHsKICAgICAgaGVhZGVyc1snUHJveHktQ29ubmVjdGlvbiddID0gdGhpcy5rZWVwQWxpdmUgPyAnS2VlcC1BbGl2ZScgOiAnY2xvc2UnOwogICAgfQogICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGhlYWRlcnMpKSB7CiAgICAgIHBheWxvYWQgKz0gYCR7bmFtZX06ICR7aGVhZGVyc1tuYW1lXX1cclxuYDsKICAgIH0KCiAgICBjb25zdCBwcm94eVJlc3BvbnNlUHJvbWlzZSA9IHBhcnNlUHJveHlSZXNwb25zZShzb2NrZXQpOwoKICAgIHNvY2tldC53cml0ZShgJHtwYXlsb2FkfVxyXG5gKTsKCiAgICBjb25zdCB7IGNvbm5lY3QsIGJ1ZmZlcmVkIH0gPSBhd2FpdCBwcm94eVJlc3BvbnNlUHJvbWlzZTsKICAgIHJlcS5lbWl0KCdwcm94eUNvbm5lY3QnLCBjb25uZWN0KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQKICAgIC8vIEB0cy1pZ25vcmUgTm90IEV2ZW50RW1pdHRlciBpbiBOb2RlIHR5cGVzCiAgICB0aGlzLmVtaXQoJ3Byb3h5Q29ubmVjdCcsIGNvbm5lY3QsIHJlcSk7CgogICAgaWYgKGNvbm5lY3Quc3RhdHVzQ29kZSA9PT0gMjAwKSB7CiAgICAgIHJlcS5vbmNlKCdzb2NrZXQnLCByZXN1bWUpOwoKICAgICAgaWYgKG9wdHMuc2VjdXJlRW5kcG9pbnQpIHsKICAgICAgICAvLyBUaGUgcHJveHkgaXMgY29ubmVjdGluZyB0byBhIFRMUyBzZXJ2ZXIsIHNvIHVwZ3JhZGUKICAgICAgICAvLyB0aGlzIHNvY2tldCBjb25uZWN0aW9uIHRvIGEgVExTIGNvbm5lY3Rpb24uCiAgICAgICAgZGVidWcoJ1VwZ3JhZGluZyBzb2NrZXQgY29ubmVjdGlvbiB0byBUTFMnKTsKICAgICAgICBjb25zdCBzZXJ2ZXJuYW1lID0gb3B0cy5zZXJ2ZXJuYW1lIHx8IG9wdHMuaG9zdDsKICAgICAgICByZXR1cm4gdGxzLmNvbm5lY3QoewogICAgICAgICAgLi4ub21pdChvcHRzLCAnaG9zdCcsICdwYXRoJywgJ3BvcnQnKSwKICAgICAgICAgIHNvY2tldCwKICAgICAgICAgIHNlcnZlcm5hbWU6IG5ldC5pc0lQKHNlcnZlcm5hbWUpID8gdW5kZWZpbmVkIDogc2VydmVybmFtZSwKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgcmV0dXJuIHNvY2tldDsKICAgIH0KCiAgICAvLyBTb21lIG90aGVyIHN0YXR1cyBjb2RlIHRoYXQncyBub3QgMjAwLi4uIG5lZWQgdG8gcmUtcGxheSB0aGUgSFRUUAogICAgLy8gaGVhZGVyICJkYXRhIiBldmVudHMgb250byB0aGUgc29ja2V0IG9uY2UgdGhlIEhUVFAgbWFjaGluZXJ5IGlzCiAgICAvLyBhdHRhY2hlZCBzbyB0aGF0IHRoZSBub2RlIGNvcmUgYGh0dHBgIGNhbiBwYXJzZSBhbmQgaGFuZGxlIHRoZQogICAgLy8gZXJyb3Igc3RhdHVzIGNvZGUuCgogICAgLy8gQ2xvc2UgdGhlIG9yaWdpbmFsIHNvY2tldCwgYW5kIGEgbmV3ICJmYWtlIiBzb2NrZXQgaXMgcmV0dXJuZWQKICAgIC8vIGluc3RlYWQsIHNvIHRoYXQgdGhlIHByb3h5IGRvZXNuJ3QgZ2V0IHRoZSBIVFRQIHJlcXVlc3QKICAgIC8vIHdyaXR0ZW4gdG8gaXQgKHdoaWNoIG1heSBjb250YWluIGBBdXRob3JpemF0aW9uYCBoZWFkZXJzIG9yIG90aGVyCiAgICAvLyBzZW5zaXRpdmUgZGF0YSkuCiAgICAvLwogICAgLy8gU2VlOiBodHRwczovL2hhY2tlcm9uZS5jb20vcmVwb3J0cy81NDE1MDIKICAgIHNvY2tldC5kZXN0cm95KCk7CgogICAgY29uc3QgZmFrZVNvY2tldCA9IG5ldyBuZXQuU29ja2V0KHsgd3JpdGFibGU6IGZhbHNlIH0pOwogICAgZmFrZVNvY2tldC5yZWFkYWJsZSA9IHRydWU7CgogICAgLy8gTmVlZCB0byB3YWl0IGZvciB0aGUgInNvY2tldCIgZXZlbnQgdG8gcmUtcGxheSB0aGUgImRhdGEiIGV2ZW50cy4KICAgIHJlcS5vbmNlKCdzb2NrZXQnLCAocykgPT4gewogICAgICBkZWJ1ZygnUmVwbGF5aW5nIHByb3h5IGJ1ZmZlciBmb3IgZmFpbGVkIHJlcXVlc3QnKTsKICAgICAgLy8gUmVwbGF5IHRoZSAiYnVmZmVyZWQiIEJ1ZmZlciBvbnRvIHRoZSBmYWtlIGBzb2NrZXRgLCBzaW5jZSBhdAogICAgICAvLyB0aGlzIHBvaW50IHRoZSBIVFRQIG1vZHVsZSBtYWNoaW5lcnkgaGFzIGJlZW4gaG9va2VkIHVwIGZvcgogICAgICAvLyB0aGUgdXNlci4KICAgICAgcy5wdXNoKGJ1ZmZlcmVkKTsKICAgICAgcy5wdXNoKG51bGwpOwogICAgfSk7CgogICAgcmV0dXJuIGZha2VTb2NrZXQ7CiAgfQp9IEh0dHBzUHJveHlBZ2VudC5fX2luaXRTdGF0aWMoKTsKCmZ1bmN0aW9uIHJlc3VtZShzb2NrZXQpIHsKICBzb2NrZXQucmVzdW1lKCk7Cn0KCmZ1bmN0aW9uIG9taXQoCiAgb2JqLAogIC4uLmtleXMKKQoKIHsKICBjb25zdCByZXQgPSB7fQoKOwogIGxldCBrZXk7CiAgZm9yIChrZXkgaW4gb2JqKSB7CiAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkgewogICAgICByZXRba2V5XSA9IG9ialtrZXldOwogICAgfQogIH0KICByZXR1cm4gcmV0Owp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlKGxocywgcmhzRm4pIHsgaWYgKGxocyAhPSBudWxsKSB7IHJldHVybiBsaHM7IH0gZWxzZSB7IHJldHVybiByaHNGbigpOyB9IH0KLy8gRXN0aW1hdGVkIG1heGltdW0gc2l6ZSBmb3IgcmVhc29uYWJsZSBzdGFuZGFsb25lIGV2ZW50CmNvbnN0IEdaSVBfVEhSRVNIT0xEID0gMTAyNCAqIDMyOwoKLyoqCiAqIEdldHMgYSBzdHJlYW0gZnJvbSBhIFVpbnQ4QXJyYXkgb3Igc3RyaW5nCiAqIFJlYWRhYmxlLmZyb20gaXMgaWRlYWwgYnV0IHdhcyBhZGRlZCBpbiBub2RlLmpzIHYxMi4zLjAgYW5kIHYxMC4xNy4wCiAqLwpmdW5jdGlvbiBzdHJlYW1Gcm9tQm9keShib2R5KSB7CiAgcmV0dXJuIG5ldyBSZWFkYWJsZSh7CiAgICByZWFkKCkgewogICAgICB0aGlzLnB1c2goYm9keSk7CiAgICAgIHRoaXMucHVzaChudWxsKTsKICAgIH0sCiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgVHJhbnNwb3J0IHRoYXQgdXNlcyBuYXRpdmUgdGhlIG5hdGl2ZSAnaHR0cCcgYW5kICdodHRwcycgbW9kdWxlcyB0byBzZW5kIGV2ZW50cyB0byBTZW50cnkuCiAqLwpmdW5jdGlvbiBtYWtlTm9kZVRyYW5zcG9ydChvcHRpb25zKSB7CiAgbGV0IHVybFNlZ21lbnRzOwoKICB0cnkgewogICAgdXJsU2VnbWVudHMgPSBuZXcgVVJMKG9wdGlvbnMudXJsKTsKICB9IGNhdGNoIChlKSB7CiAgICBjb25zb2xlU2FuZGJveCgoKSA9PiB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICAgIGNvbnNvbGUud2FybigKICAgICAgICAnW0BzZW50cnkvbm9kZV06IEludmFsaWQgZHNuIG9yIHR1bm5lbCBvcHRpb24sIHdpbGwgbm90IHNlbmQgYW55IGV2ZW50cy4gVGhlIHR1bm5lbCBvcHRpb24gbXVzdCBiZSBhIGZ1bGwgVVJMIHdoZW4gdXNlZC4nLAogICAgICApOwogICAgfSk7CiAgICByZXR1cm4gY3JlYXRlVHJhbnNwb3J0KG9wdGlvbnMsICgpID0+IFByb21pc2UucmVzb2x2ZSh7fSkpOwogIH0KCiAgY29uc3QgaXNIdHRwcyA9IHVybFNlZ21lbnRzLnByb3RvY29sID09PSAnaHR0cHM6JzsKCiAgLy8gUHJveHkgcHJpb3JpdGl6YXRpb246IGh0dHAgPT4gYG9wdGlvbnMucHJveHlgIHwgYHByb2Nlc3MuZW52Lmh0dHBfcHJveHlgCiAgLy8gUHJveHkgcHJpb3JpdGl6YXRpb246IGh0dHBzID0+IGBvcHRpb25zLnByb3h5YCB8IGBwcm9jZXNzLmVudi5odHRwc19wcm94eWAgfCBgcHJvY2Vzcy5lbnYuaHR0cF9wcm94eWAKICBjb25zdCBwcm94eSA9IGFwcGx5Tm9Qcm94eU9wdGlvbigKICAgIHVybFNlZ21lbnRzLAogICAgb3B0aW9ucy5wcm94eSB8fCAoaXNIdHRwcyA/IHByb2Nlc3MuZW52Lmh0dHBzX3Byb3h5IDogdW5kZWZpbmVkKSB8fCBwcm9jZXNzLmVudi5odHRwX3Byb3h5LAogICk7CgogIGNvbnN0IG5hdGl2ZUh0dHBNb2R1bGUgPSBpc0h0dHBzID8gaHR0cHMgOiBodHRwOwogIGNvbnN0IGtlZXBBbGl2ZSA9IG9wdGlvbnMua2VlcEFsaXZlID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG9wdGlvbnMua2VlcEFsaXZlOwoKICAvLyBUT0RPKHY3KTogRXZhbHVhdGUgaWYgd2UgY2FuIHNldCBrZWVwQWxpdmUgdG8gdHJ1ZS4gVGhpcyB3b3VsZCBpbnZvbHZlIHRlc3RpbmcgZm9yIG1lbW9yeSBsZWFrcyBpbiBvbGRlciBub2RlCiAgLy8gdmVyc2lvbnMoPj0gOCkgYXMgdGhleSBoYWQgbWVtb3J5IGxlYWtzIHdoZW4gdXNpbmcgaXQ6ICMyNTU1CiAgY29uc3QgYWdlbnQgPSBwcm94eQogICAgPyAobmV3IEh0dHBzUHJveHlBZ2VudChwcm94eSkgKQogICAgOiBuZXcgbmF0aXZlSHR0cE1vZHVsZS5BZ2VudCh7IGtlZXBBbGl2ZSwgbWF4U29ja2V0czogMzAsIHRpbWVvdXQ6IDIwMDAgfSk7CgogIGNvbnN0IHJlcXVlc3RFeGVjdXRvciA9IGNyZWF0ZVJlcXVlc3RFeGVjdXRvcihvcHRpb25zLCBfbnVsbGlzaENvYWxlc2NlKG9wdGlvbnMuaHR0cE1vZHVsZSwgKCkgPT4gKCBuYXRpdmVIdHRwTW9kdWxlKSksIGFnZW50KTsKICByZXR1cm4gY3JlYXRlVHJhbnNwb3J0KG9wdGlvbnMsIHJlcXVlc3RFeGVjdXRvcik7Cn0KCi8qKgogKiBIb25vcnMgdGhlIGBub19wcm94eWAgZW52IHZhcmlhYmxlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgdG8gYWxsb3cgZm9yIGhvc3RzIGV4Y2x1c2lvbi4KICoKICogQHBhcmFtIHRyYW5zcG9ydFVybCBUaGUgVVJMIHRoZSB0cmFuc3BvcnQgaW50ZW5kcyB0byBzZW5kIGV2ZW50cyB0by4KICogQHBhcmFtIHByb3h5IFRoZSBjbGllbnQgY29uZmlndXJlZCBwcm94eS4KICogQHJldHVybnMgQSBwcm94eSB0aGUgdHJhbnNwb3J0IHNob3VsZCB1c2UuCiAqLwpmdW5jdGlvbiBhcHBseU5vUHJveHlPcHRpb24odHJhbnNwb3J0VXJsU2VnbWVudHMsIHByb3h5KSB7CiAgY29uc3QgeyBub19wcm94eSB9ID0gcHJvY2Vzcy5lbnY7CgogIGNvbnN0IHVybElzRXhlbXB0RnJvbVByb3h5ID0KICAgIG5vX3Byb3h5ICYmCiAgICBub19wcm94eQogICAgICAuc3BsaXQoJywnKQogICAgICAuc29tZSgKICAgICAgICBleGVtcHRpb24gPT4gdHJhbnNwb3J0VXJsU2VnbWVudHMuaG9zdC5lbmRzV2l0aChleGVtcHRpb24pIHx8IHRyYW5zcG9ydFVybFNlZ21lbnRzLmhvc3RuYW1lLmVuZHNXaXRoKGV4ZW1wdGlvbiksCiAgICAgICk7CgogIGlmICh1cmxJc0V4ZW1wdEZyb21Qcm94eSkgewogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9IGVsc2UgewogICAgcmV0dXJuIHByb3h5OwogIH0KfQoKLyoqCiAqIENyZWF0ZXMgYSBSZXF1ZXN0RXhlY3V0b3IgdG8gYmUgdXNlZCB3aXRoIGBjcmVhdGVUcmFuc3BvcnRgLgogKi8KZnVuY3Rpb24gY3JlYXRlUmVxdWVzdEV4ZWN1dG9yKAogIG9wdGlvbnMsCiAgaHR0cE1vZHVsZSwKICBhZ2VudCwKKSB7CiAgY29uc3QgeyBob3N0bmFtZSwgcGF0aG5hbWUsIHBvcnQsIHByb3RvY29sLCBzZWFyY2ggfSA9IG5ldyBVUkwob3B0aW9ucy51cmwpOwogIHJldHVybiBmdW5jdGlvbiBtYWtlUmVxdWVzdChyZXF1ZXN0KSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBsZXQgYm9keSA9IHN0cmVhbUZyb21Cb2R5KHJlcXVlc3QuYm9keSk7CgogICAgICBjb25zdCBoZWFkZXJzID0geyAuLi5vcHRpb25zLmhlYWRlcnMgfTsKCiAgICAgIGlmIChyZXF1ZXN0LmJvZHkubGVuZ3RoID4gR1pJUF9USFJFU0hPTEQpIHsKICAgICAgICBoZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPSAnZ3ppcCc7CiAgICAgICAgYm9keSA9IGJvZHkucGlwZShjcmVhdGVHemlwKCkpOwogICAgICB9CgogICAgICBjb25zdCByZXEgPSBodHRwTW9kdWxlLnJlcXVlc3QoCiAgICAgICAgewogICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICBhZ2VudCwKICAgICAgICAgIGhlYWRlcnMsCiAgICAgICAgICBob3N0bmFtZSwKICAgICAgICAgIHBhdGg6IGAke3BhdGhuYW1lfSR7c2VhcmNofWAsCiAgICAgICAgICBwb3J0LAogICAgICAgICAgcHJvdG9jb2wsCiAgICAgICAgICBjYTogb3B0aW9ucy5jYUNlcnRzLAogICAgICAgIH0sCiAgICAgICAgcmVzID0+IHsKICAgICAgICAgIHJlcy5vbignZGF0YScsICgpID0+IHsKICAgICAgICAgICAgLy8gRHJhaW4gc29ja2V0CiAgICAgICAgICB9KTsKCiAgICAgICAgICByZXMub24oJ2VuZCcsICgpID0+IHsKICAgICAgICAgICAgLy8gRHJhaW4gc29ja2V0CiAgICAgICAgICB9KTsKCiAgICAgICAgICByZXMuc2V0RW5jb2RpbmcoJ3V0ZjgnKTsKCiAgICAgICAgICAvLyAiS2V5LXZhbHVlIHBhaXJzIG9mIGhlYWRlciBuYW1lcyBhbmQgdmFsdWVzLiBIZWFkZXIgbmFtZXMgYXJlIGxvd2VyLWNhc2VkLiIKICAgICAgICAgIC8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzCiAgICAgICAgICBjb25zdCByZXRyeUFmdGVySGVhZGVyID0gX251bGxpc2hDb2FsZXNjZShyZXMuaGVhZGVyc1sncmV0cnktYWZ0ZXInXSwgKCkgPT4gKCBudWxsKSk7CiAgICAgICAgICBjb25zdCByYXRlTGltaXRzSGVhZGVyID0gX251bGxpc2hDb2FsZXNjZShyZXMuaGVhZGVyc1sneC1zZW50cnktcmF0ZS1saW1pdHMnXSwgKCkgPT4gKCBudWxsKSk7CgogICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlcy5zdGF0dXNDb2RlLAogICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgJ3JldHJ5LWFmdGVyJzogcmV0cnlBZnRlckhlYWRlciwKICAgICAgICAgICAgICAneC1zZW50cnktcmF0ZS1saW1pdHMnOiBBcnJheS5pc0FycmF5KHJhdGVMaW1pdHNIZWFkZXIpID8gcmF0ZUxpbWl0c0hlYWRlclswXSA6IHJhdGVMaW1pdHNIZWFkZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgcmVxLm9uKCdlcnJvcicsIHJlamVjdCk7CiAgICAgIGJvZHkucGlwZShyZXEpOwogICAgfSk7CiAgfTsKfQoKZnVuY3Rpb24gX29wdGlvbmFsQ2hhaW4ob3BzKSB7IGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyBsZXQgdmFsdWUgPSBvcHNbMF07IGxldCBpID0gMTsgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7IGNvbnN0IG9wID0gb3BzW2ldOyBjb25zdCBmbiA9IG9wc1tpICsgMV07IGkgKz0gMjsgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7IGxhc3RBY2Nlc3NMSFMgPSB2YWx1ZTsgdmFsdWUgPSBmbih2YWx1ZSk7IH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHsgdmFsdWUgPSBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IH0gfSByZXR1cm4gdmFsdWU7IH0KY29uc3Qgb3B0aW9ucyA9IHdvcmtlckRhdGE7CmxldCBzZXNzaW9uOwpsZXQgaGFzU2VudEFuckV2ZW50ID0gZmFsc2U7CgpmdW5jdGlvbiBsb2cobXNnKSB7CiAgaWYgKG9wdGlvbnMuZGVidWcpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICBjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7bXNnfWApOwogIH0KfQoKY29uc3QgdXJsID0gZ2V0RW52ZWxvcGVFbmRwb2ludFdpdGhVcmxFbmNvZGVkQXV0aChvcHRpb25zLmRzbik7CmNvbnN0IHRyYW5zcG9ydCA9IG1ha2VOb2RlVHJhbnNwb3J0KHsKICB1cmwsCiAgcmVjb3JkRHJvcHBlZEV2ZW50OiAoKSA9PiB7CiAgICAvLwogIH0sCn0pOwoKYXN5bmMgZnVuY3Rpb24gc2VuZEFibm9ybWFsU2Vzc2lvbigpIHsKICAvLyBvZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIHNlc3Npb24gcGFzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLCBzZW5kIGl0IGFzIGFibm9ybWFsCiAgaWYgKHNlc3Npb24pIHsKICAgIGxvZygnU2VuZGluZyBhYm5vcm1hbCBzZXNzaW9uJyk7CiAgICB1cGRhdGVTZXNzaW9uKHNlc3Npb24sIHsgc3RhdHVzOiAnYWJub3JtYWwnLCBhYm5vcm1hbF9tZWNoYW5pc206ICdhbnJfZm9yZWdyb3VuZCcgfSk7CgogICAgY29uc3QgZW52ZWxvcGUgPSBjcmVhdGVTZXNzaW9uRW52ZWxvcGUoc2Vzc2lvbiwgb3B0aW9ucy5kc24sIG9wdGlvbnMuc2RrTWV0YWRhdGEpOwogICAgLy8gTG9nIHRoZSBlbnZlbG9wZSBzbyB0byBhaWQgaW4gdGVzdGluZwogICAgbG9nKEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSk7CgogICAgYXdhaXQgdHJhbnNwb3J0LnNlbmQoZW52ZWxvcGUpOwoKICAgIHRyeSB7CiAgICAgIC8vIE5vdGlmeSB0aGUgbWFpbiBwcm9jZXNzIHRoYXQgdGhlIHNlc3Npb24gaGFzIGVuZGVkIHNvIHRoZSBzZXNzaW9uIGNhbiBiZSBjbGVhcmVkIGZyb20gdGhlIHNjb3BlCiAgICAgIF9vcHRpb25hbENoYWluKFtwYXJlbnRQb3J0LCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5wb3N0TWVzc2FnZSwgJ2NhbGwnLCBfMyA9PiBfMygnc2Vzc2lvbi1lbmRlZCcpXSk7CiAgICB9IGNhdGNoIChfKSB7CiAgICAgIC8vIGlnbm9yZQogICAgfQogIH0KfQoKbG9nKCdTdGFydGVkJyk7CgpmdW5jdGlvbiBwcmVwYXJlU3RhY2tGcmFtZXMoc3RhY2tGcmFtZXMpIHsKICBpZiAoIXN0YWNrRnJhbWVzKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgLy8gU3RyaXAgU2VudHJ5IGZyYW1lcyBhbmQgcmV2ZXJzZSB0aGUgc3RhY2sgZnJhbWVzIHNvIHRoZXkgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyCiAgY29uc3Qgc3RyaXBwZWRGcmFtZXMgPSBzdHJpcFNlbnRyeUZyYW1lc0FuZFJldmVyc2Uoc3RhY2tGcmFtZXMpOwoKICAvLyBJZiB3ZSBoYXZlIGFuIGFwcCByb290IHBhdGgsIHJld3JpdGUgdGhlIGZpbGVuYW1lcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgYXBwIHJvb3QKICBpZiAob3B0aW9ucy5hcHBSb290UGF0aCkgewogICAgZm9yIChjb25zdCBmcmFtZSBvZiBzdHJpcHBlZEZyYW1lcykgewogICAgICBpZiAoIWZyYW1lLmZpbGVuYW1lKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIGZyYW1lLmZpbGVuYW1lID0gbm9ybWFsaXplVXJsVG9CYXNlKGZyYW1lLmZpbGVuYW1lLCBvcHRpb25zLmFwcFJvb3RQYXRoKTsKICAgIH0KICB9CgogIHJldHVybiBzdHJpcHBlZEZyYW1lczsKfQoKZnVuY3Rpb24gYXBwbHlTY29wZVRvRXZlbnQoZXZlbnQsIHNjb3BlKSB7CiAgYXBwbHlTY29wZURhdGFUb0V2ZW50KGV2ZW50LCBzY29wZSk7CgogIGlmICghX29wdGlvbmFsQ2hhaW4oW2V2ZW50LCAnYWNjZXNzJywgXzQgPT4gXzQuY29udGV4dHMsICdvcHRpb25hbEFjY2VzcycsIF81ID0+IF81LnRyYWNlXSkpIHsKICAgIGNvbnN0IHsgdHJhY2VJZCwgc3BhbklkLCBwYXJlbnRTcGFuSWQgfSA9IHNjb3BlLnByb3BhZ2F0aW9uQ29udGV4dDsKICAgIGV2ZW50LmNvbnRleHRzID0gewogICAgICB0cmFjZTogewogICAgICAgIHRyYWNlX2lkOiB0cmFjZUlkLAogICAgICAgIHNwYW5faWQ6IHNwYW5JZCwKICAgICAgICBwYXJlbnRfc3Bhbl9pZDogcGFyZW50U3BhbklkLAogICAgICB9LAogICAgICAuLi5ldmVudC5jb250ZXh0cywKICAgIH07CiAgfQp9Cgphc3luYyBmdW5jdGlvbiBzZW5kQW5yRXZlbnQoZnJhbWVzLCBzY29wZSkgewogIGlmIChoYXNTZW50QW5yRXZlbnQpIHsKICAgIHJldHVybjsKICB9CgogIGhhc1NlbnRBbnJFdmVudCA9IHRydWU7CgogIGF3YWl0IHNlbmRBYm5vcm1hbFNlc3Npb24oKTsKCiAgbG9nKCdTZW5kaW5nIGV2ZW50Jyk7CgogIGNvbnN0IGV2ZW50ID0gewogICAgZXZlbnRfaWQ6IHV1aWQ0KCksCiAgICBjb250ZXh0czogb3B0aW9ucy5jb250ZXh0cywKICAgIHJlbGVhc2U6IG9wdGlvbnMucmVsZWFzZSwKICAgIGVudmlyb25tZW50OiBvcHRpb25zLmVudmlyb25tZW50LAogICAgZGlzdDogb3B0aW9ucy5kaXN0LAogICAgcGxhdGZvcm06ICdub2RlJywKICAgIGxldmVsOiAnZXJyb3InLAogICAgZXhjZXB0aW9uOiB7CiAgICAgIHZhbHVlczogWwogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdBcHBsaWNhdGlvbk5vdFJlc3BvbmRpbmcnLAogICAgICAgICAgdmFsdWU6IGBBcHBsaWNhdGlvbiBOb3QgUmVzcG9uZGluZyBmb3IgYXQgbGVhc3QgJHtvcHRpb25zLmFuclRocmVzaG9sZH0gbXNgLAogICAgICAgICAgc3RhY2t0cmFjZTogeyBmcmFtZXM6IHByZXBhcmVTdGFja0ZyYW1lcyhmcmFtZXMpIH0sCiAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIFVJIGRvZXNuJ3Qgc2F5ICdDcmFzaGVkIGluJyBmb3IgdGhlIHN0YWNrIHRyYWNlCiAgICAgICAgICBtZWNoYW5pc206IHsgdHlwZTogJ0FOUicgfSwKICAgICAgICB9LAogICAgICBdLAogICAgfSwKICAgIHRhZ3M6IG9wdGlvbnMuc3RhdGljVGFncywKICB9OwoKICBpZiAoc2NvcGUpIHsKICAgIGFwcGx5U2NvcGVUb0V2ZW50KGV2ZW50LCBzY29wZSk7CiAgfQoKICBjb25zdCBlbnZlbG9wZSA9IGNyZWF0ZUV2ZW50RW52ZWxvcGUoZXZlbnQsIG9wdGlvbnMuZHNuLCBvcHRpb25zLnNka01ldGFkYXRhKTsKICAvLyBMb2cgdGhlIGVudmVsb3BlIHRvIGFpZCBpbiB0ZXN0aW5nCiAgbG9nKEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSk7CgogIGF3YWl0IHRyYW5zcG9ydC5zZW5kKGVudmVsb3BlKTsKICBhd2FpdCB0cmFuc3BvcnQuZmx1c2goMjAwMCk7CgogIC8vIERlbGF5IGZvciA1IHNlY29uZHMgc28gdGhhdCBzdGRpbyBjYW4gZmx1c2ggaW4gdGhlIG1haW4gZXZlbnQgbG9vcCBldmVyIHJlc3RhcnRzLgogIC8vIFRoaXMgaXMgbWFpbmx5IGZvciB0aGUgYmVuZWZpdCBvZiBsb2dnaW5nL2RlYnVnZ2luZyBpc3N1ZXMuCiAgc2V0VGltZW91dCgoKSA9PiB7CiAgICBwcm9jZXNzLmV4aXQoMCk7CiAgfSwgNTAwMCk7Cn0KCmxldCBkZWJ1Z2dlclBhdXNlOwoKaWYgKG9wdGlvbnMuY2FwdHVyZVN0YWNrVHJhY2UpIHsKICBsb2coJ0Nvbm5lY3RpbmcgdG8gZGVidWdnZXInKTsKCiAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKCkgOwogIHNlc3Npb24uY29ubmVjdFRvTWFpblRocmVhZCgpOwoKICBsb2coJ0Nvbm5lY3RlZCB0byBkZWJ1Z2dlcicpOwoKICAvLyBDb2xsZWN0IHNjcmlwdElkIC0+IHVybCBtYXAgc28gd2UgY2FuIGxvb2sgdXAgdGhlIGZpbGVuYW1lcyBsYXRlcgogIGNvbnN0IHNjcmlwdHMgPSBuZXcgTWFwKCk7CgogIHNlc3Npb24ub24oJ0RlYnVnZ2VyLnNjcmlwdFBhcnNlZCcsIGV2ZW50ID0+IHsKICAgIHNjcmlwdHMuc2V0KGV2ZW50LnBhcmFtcy5zY3JpcHRJZCwgZXZlbnQucGFyYW1zLnVybCk7CiAgfSk7CgogIHNlc3Npb24ub24oJ0RlYnVnZ2VyLnBhdXNlZCcsIGV2ZW50ID0+IHsKICAgIGlmIChldmVudC5wYXJhbXMucmVhc29uICE9PSAnb3RoZXInKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0cnkgewogICAgICBsb2coJ0RlYnVnZ2VyIHBhdXNlZCcpOwoKICAgICAgLy8gY29weSB0aGUgZnJhbWVzCiAgICAgIGNvbnN0IGNhbGxGcmFtZXMgPSBbLi4uZXZlbnQucGFyYW1zLmNhbGxGcmFtZXNdOwoKICAgICAgY29uc3QgZ2V0TW9kdWxlTmFtZSA9IG9wdGlvbnMuYXBwUm9vdFBhdGggPyBjcmVhdGVHZXRNb2R1bGVGcm9tRmlsZW5hbWUob3B0aW9ucy5hcHBSb290UGF0aCkgOiAoKSA9PiB1bmRlZmluZWQ7CiAgICAgIGNvbnN0IHN0YWNrRnJhbWVzID0gY2FsbEZyYW1lcy5tYXAoZnJhbWUgPT4KICAgICAgICBjYWxsRnJhbWVUb1N0YWNrRnJhbWUoZnJhbWUsIHNjcmlwdHMuZ2V0KGZyYW1lLmxvY2F0aW9uLnNjcmlwdElkKSwgZ2V0TW9kdWxlTmFtZSksCiAgICAgICk7CgogICAgICAvLyBFdmFsdWF0ZSBhIHNjcmlwdCBpbiB0aGUgY3VycmVudGx5IHBhdXNlZCBjb250ZXh0CiAgICAgIHNlc3Npb24ucG9zdCgKICAgICAgICAnUnVudGltZS5ldmFsdWF0ZScsCiAgICAgICAgewogICAgICAgICAgLy8gR3JhYiB0aGUgdHJhY2UgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50IHNjb3BlCiAgICAgICAgICBleHByZXNzaW9uOiAnZ2xvYmFsLl9fU0VOVFJZX0dFVF9TQ09QRVNfXygpOycsCiAgICAgICAgICAvLyBEb24ndCByZS10cmlnZ2VyIHRoZSBkZWJ1Z2dlciBpZiB0aGlzIGNhdXNlcyBhbiBlcnJvcgogICAgICAgICAgc2lsZW50OiB0cnVlLAogICAgICAgICAgLy8gU2VyaWFsaXplIHRoZSByZXN1bHQgdG8ganNvbiBvdGhlcndpc2Ugb25seSBwcmltaXRpdmVzIGFyZSBzdXBwb3J0ZWQKICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCiAgICAgICAgfSwKICAgICAgICAoZXJyLCBwYXJhbSkgPT4gewogICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBsb2coYEVycm9yIGV4ZWN1dGluZyBzY3JpcHQ6ICcke2Vyci5tZXNzYWdlfSdgKTsKICAgICAgICAgIH0KCiAgICAgICAgICBjb25zdCBzY29wZXMgPSBwYXJhbSAmJiBwYXJhbS5yZXN1bHQgPyAocGFyYW0ucmVzdWx0LnZhbHVlICkgOiB1bmRlZmluZWQ7CgogICAgICAgICAgc2Vzc2lvbi5wb3N0KCdEZWJ1Z2dlci5yZXN1bWUnKTsKICAgICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZGlzYWJsZScpOwoKICAgICAgICAgIHNlbmRBbnJFdmVudChzdGFja0ZyYW1lcywgc2NvcGVzKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgICAgICAgbG9nKCdTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuJyk7CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICApOwogICAgfSBjYXRjaCAoZSkgewogICAgICBzZXNzaW9uLnBvc3QoJ0RlYnVnZ2VyLnJlc3VtZScpOwogICAgICBzZXNzaW9uLnBvc3QoJ0RlYnVnZ2VyLmRpc2FibGUnKTsKICAgICAgdGhyb3cgZTsKICAgIH0KICB9KTsKCiAgZGVidWdnZXJQYXVzZSA9ICgpID0+IHsKICAgIHRyeSB7CiAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZW5hYmxlJywgKCkgPT4gewogICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIucGF1c2UnKTsKICAgICAgfSk7CiAgICB9IGNhdGNoIChfKSB7CiAgICAgIC8vCiAgICB9CiAgfTsKfQoKZnVuY3Rpb24gY3JlYXRlSHJUaW1lcigpIHsKICAvLyBUT0RPICh2OCk6IFdlIGNhbiB1c2UgcHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgYWZ0ZXIgd2UgZHJvcCBub2RlIHY4CiAgbGV0IGxhc3RQb2xsID0gcHJvY2Vzcy5ocnRpbWUoKTsKCiAgcmV0dXJuIHsKICAgIGdldFRpbWVNczogKCkgPT4gewogICAgICBjb25zdCBbc2Vjb25kcywgbmFub1NlY29uZHNdID0gcHJvY2Vzcy5ocnRpbWUobGFzdFBvbGwpOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihzZWNvbmRzICogMWUzICsgbmFub1NlY29uZHMgLyAxZTYpOwogICAgfSwKICAgIHJlc2V0OiAoKSA9PiB7CiAgICAgIGxhc3RQb2xsID0gcHJvY2Vzcy5ocnRpbWUoKTsKICAgIH0sCiAgfTsKfQoKZnVuY3Rpb24gd2F0Y2hkb2dUaW1lb3V0KCkgewogIGxvZygnV2F0Y2hkb2cgdGltZW91dCcpOwoKICBpZiAoZGVidWdnZXJQYXVzZSkgewogICAgbG9nKCdQYXVzaW5nIGRlYnVnZ2VyIHRvIGNhcHR1cmUgc3RhY2sgdHJhY2UnKTsKICAgIGRlYnVnZ2VyUGF1c2UoKTsKICB9IGVsc2UgewogICAgbG9nKCdDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlJyk7CiAgICBzZW5kQW5yRXZlbnQoKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgbG9nKCdTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQgb24gd2F0Y2hkb2cgdGltZW91dC4nKTsKICAgIH0pOwogIH0KfQoKY29uc3QgeyBwb2xsIH0gPSB3YXRjaGRvZ1RpbWVyKGNyZWF0ZUhyVGltZXIsIG9wdGlvbnMucG9sbEludGVydmFsLCBvcHRpb25zLmFuclRocmVzaG9sZCwgd2F0Y2hkb2dUaW1lb3V0KTsKCl9vcHRpb25hbENoYWluKFtwYXJlbnRQb3J0LCAnb3B0aW9uYWxBY2Nlc3MnLCBfNiA9PiBfNi5vbiwgJ2NhbGwnLCBfNyA9PiBfNygnbWVzc2FnZScsIChtc2cpID0+IHsKICBpZiAobXNnLnNlc3Npb24pIHsKICAgIHNlc3Npb24gPSBtYWtlU2Vzc2lvbihtc2cuc2Vzc2lvbik7CiAgfQoKICBwb2xsKCk7Cn0pXSk7"; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/index.js var require_anr2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/index.js"(exports2, module2) { var { _optionalChain, _optionalChainDelete } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var url3 = __require("url"); var core = require_cjs2(); var utils = require_cjs(); var nodeVersion = require_nodeVersion(); var workerScript = require_worker_script(); var DEFAULT_INTERVAL = 50; var DEFAULT_HANG_THRESHOLD = 5e3; function log2(message2, ...args2) { utils.logger.log(`[ANR] ${message2}`, ...args2); } function globalWithScopeFetchFn() { return utils.GLOBAL_OBJ; } function getScopeData() { const scope = core.getGlobalScope().getScopeData(); core.mergeScopeData(scope, core.getIsolationScope().getScopeData()); core.mergeScopeData(scope, core.getCurrentScope().getScopeData()); scope.attachments = []; scope.eventProcessors = []; return scope; } function getWorkerThreads() { return utils.dynamicRequire(module2, "worker_threads"); } async function getContexts(client2) { let event = { message: "ANR" }; const eventHint = {}; for (const processor of client2.getEventProcessors()) { if (event === null) break; event = await processor(event, eventHint); } return _optionalChain([event, "optionalAccess", (_2) => _2.contexts]) || {}; } var INTEGRATION_NAME = "Anr"; var _anrIntegration = (options = {}) => { if (nodeVersion.NODE_VERSION.major < 16 || nodeVersion.NODE_VERSION.major === 16 && nodeVersion.NODE_VERSION.minor < 17) { throw new Error("ANR detection requires Node 16.17.0 or later"); } let worker; let client2; const gbl = globalWithScopeFetchFn(); gbl.__SENTRY_GET_SCOPES__ = getScopeData; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function startWorker: () => { if (worker) { return; } if (client2) { worker = _startWorker(client2, options); } }, stopWorker: () => { if (worker) { worker.then((stop) => { stop(); worker = void 0; }); } }, setup(initClient) { client2 = initClient; setImmediate(() => this.startWorker()); } }; }; var anrIntegration = core.defineIntegration(_anrIntegration); var Anr = core.convertIntegrationFnToClass(INTEGRATION_NAME, anrIntegration); async function _startWorker(client2, integrationOptions) { const dsn = client2.getDsn(); if (!dsn) { return () => { }; } const contexts = await getContexts(client2); _optionalChainDelete([contexts, "access", (_3) => _3.app, "optionalAccess", (_4) => delete _4.app_memory]); _optionalChainDelete([contexts, "access", (_5) => _5.device, "optionalAccess", (_6) => delete _6.free_memory]); const initOptions = client2.getOptions(); const sdkMetadata = client2.getSdkMetadata() || {}; if (sdkMetadata.sdk) { sdkMetadata.sdk.integrations = initOptions.integrations.map((i) => i.name); } const options = { debug: utils.logger.isEnabled(), dsn, environment: initOptions.environment || "production", release: initOptions.release, dist: initOptions.dist, sdkMetadata, appRootPath: integrationOptions.appRootPath, pollInterval: integrationOptions.pollInterval || DEFAULT_INTERVAL, anrThreshold: integrationOptions.anrThreshold || DEFAULT_HANG_THRESHOLD, captureStackTrace: !!integrationOptions.captureStackTrace, staticTags: integrationOptions.staticTags || {}, contexts }; if (options.captureStackTrace) { const inspector = __require("inspector"); if (!inspector.url()) { inspector.open(0); } } const { Worker } = getWorkerThreads(); const worker = new Worker(new url3.URL(`data:application/javascript;base64,${workerScript.base64WorkerScript}`), { workerData: options }); process.on("exit", () => { worker.terminate(); }); const timer = setInterval(() => { try { const currentSession = core.getCurrentScope().getSession(); const session = currentSession ? { ...currentSession, toJSON: void 0 } : void 0; worker.postMessage({ session }); } catch (_) { } }, options.pollInterval); timer.unref(); worker.on("message", (msg) => { if (msg === "session-ended") { log2("ANR event sent from ANR worker. Clearing session in this thread."); core.getCurrentScope().setSession(void 0); } }); worker.once("error", (err) => { clearInterval(timer); log2("ANR worker error", err); }); worker.once("exit", (code2) => { clearInterval(timer); log2("ANR worker exit", code2); }); worker.unref(); return () => { worker.terminate(); clearInterval(timer); }; } exports2.Anr = Anr; exports2.anrIntegration = anrIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/legacy.js var require_legacy = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/legacy.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var index = require_anr2(); function enableAnrDetection(options) { const client2 = core.getClient(); const integration = new index.Anr(options); integration.setup(client2); return Promise.resolve(); } exports2.enableAnrDetection = enableAnrDetection; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/trpc.js var require_trpc = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/trpc.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); function trpcMiddleware(options = {}) { return function({ path: path11, type, next, rawInput }) { const clientOptions = _optionalChain([core.getClient, "call", (_) => _(), "optionalAccess", (_2) => _2.getOptions, "call", (_3) => _3()]); const sentryTransaction = core.getCurrentScope().getTransaction(); if (sentryTransaction) { sentryTransaction.updateName(`trpc/${path11}`); sentryTransaction.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, "route"); sentryTransaction.op = "rpc.server"; const trpcContext = { procedure_type: type }; if (options.attachRpcInput !== void 0 ? options.attachRpcInput : _optionalChain([clientOptions, "optionalAccess", (_4) => _4.sendDefaultPii])) { trpcContext.input = utils.normalize(rawInput); } sentryTransaction.setContext("trpc", trpcContext); } function captureIfError(nextResult) { if (!nextResult.ok) { core.captureException(nextResult.error, { mechanism: { handled: false, data: { function: "trpcMiddleware" } } }); } } let maybePromiseResult; try { maybePromiseResult = next(); } catch (e2) { core.captureException(e2, { mechanism: { handled: false, data: { function: "trpcMiddleware" } } }); throw e2; } if (utils.isThenable(maybePromiseResult)) { Promise.resolve(maybePromiseResult).then( (nextResult) => { captureIfError(nextResult); }, (e2) => { core.captureException(e2, { mechanism: { handled: false, data: { function: "trpcMiddleware" } } }); } ); } else { captureIfError(maybePromiseResult); } return maybePromiseResult; }; } exports2.trpcMiddleware = trpcMiddleware; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/requestDataDeprecated.js var require_requestDataDeprecated = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/requestDataDeprecated.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); function extractRequestData(req, keys) { return utils.extractRequestData(req, { include: keys }); } function parseRequest(event, req, options = {}) { return utils.addRequestDataToEvent(event, req, { include: options }); } exports2.extractRequestData = extractRequestData; exports2.parseRequest = parseRequest; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/handlers.js var require_handlers2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/handlers.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build4(); var sdk = require_sdk2(); var trpc = require_trpc(); var requestDataDeprecated = require_requestDataDeprecated(); function tracingHandler() { return function sentryTracingMiddleware(req, res, next) { const options = _optionalChain([core.getClient, "call", (_) => _(), "optionalAccess", (_2) => _2.getOptions, "call", (_3) => _3()]); if (!options || options.instrumenter !== "sentry" || _optionalChain([req, "access", (_4) => _4.method, "optionalAccess", (_5) => _5.toUpperCase, "call", (_6) => _6()]) === "OPTIONS" || _optionalChain([req, "access", (_7) => _7.method, "optionalAccess", (_8) => _8.toUpperCase, "call", (_9) => _9()]) === "HEAD") { return next(); } const sentryTrace = req.headers && utils.isString(req.headers["sentry-trace"]) ? req.headers["sentry-trace"] : void 0; const baggage = _optionalChain([req, "access", (_10) => _10.headers, "optionalAccess", (_11) => _11.baggage]); if (!core.hasTracingEnabled(options)) { return next(); } const [name, source] = utils.extractPathForTransaction(req, { path: true, method: true }); const transaction = core.continueTrace( { sentryTrace, baggage }, (ctx) => ( // TODO: Refactor this to use `startSpan()` // eslint-disable-next-line deprecation/deprecation core.startTransaction( { name, op: "http.server", origin: "auto.http.node.tracingHandler", ...ctx, data: { [core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source }, metadata: { // eslint-disable-next-line deprecation/deprecation ...ctx.metadata, // The request should already have been stored in `scope.sdkProcessingMetadata` (which will become // `event.sdkProcessingMetadata` the same way the metadata here will) by `sentryRequestMiddleware`, but on the // off chance someone is using `sentryTracingMiddleware` without `sentryRequestMiddleware`, it doesn't hurt to // be sure request: req } }, // extra context passed to the tracesSampler { request: utils.extractRequestData(req) } ) ) ); core.getCurrentScope().setSpan(transaction); res.__sentry_transaction = transaction; res.once("finish", () => { setImmediate(() => { utils.addRequestDataToTransaction(transaction, req); core.setHttpStatus(transaction, res.statusCode); transaction.end(); }); }); next(); }; } function convertReqHandlerOptsToAddReqDataOpts(reqHandlerOptions = {}) { let addRequestDataOptions; if ("include" in reqHandlerOptions) { addRequestDataOptions = { include: reqHandlerOptions.include }; } else { const { ip, request, transaction, user } = reqHandlerOptions; if (ip || request || transaction || user) { addRequestDataOptions = { include: utils.dropUndefinedKeys({ ip, request, transaction, user }) }; } } return addRequestDataOptions; } function requestHandler(options) { const requestDataOptions = convertReqHandlerOptsToAddReqDataOpts(options); const client2 = core.getClient(); if (client2 && sdk.isAutoSessionTrackingEnabled(client2)) { client2.initSessionFlusher(); const scope = core.getCurrentScope(); if (scope.getSession()) { scope.setSession(); } } return function sentryRequestMiddleware(req, res, next) { if (options && options.flushTimeout && options.flushTimeout > 0) { const _end = res.end; res.end = function(chunk, encoding, cb) { void core.flush(options.flushTimeout).then(() => { _end.call(this, chunk, encoding, cb); }).then(null, (e2) => { debugBuild.DEBUG_BUILD && utils.logger.error(e2); _end.call(this, chunk, encoding, cb); }); }; } core.runWithAsyncContext(() => { const scope = core.getCurrentScope(); scope.setSDKProcessingMetadata({ request: req, // TODO (v8): Stop passing this requestDataOptionsFromExpressHandler: requestDataOptions }); const client3 = core.getClient(); if (sdk.isAutoSessionTrackingEnabled(client3)) { scope.setRequestSession({ status: "ok" }); } res.once("finish", () => { const client4 = core.getClient(); if (sdk.isAutoSessionTrackingEnabled(client4)) { setImmediate(() => { if (client4 && client4._captureRequestSession) { client4._captureRequestSession(); } }); } }); next(); }); }; } function getStatusCodeFromResponse(error3) { const statusCode = error3.status || error3.statusCode || error3.status_code || error3.output && error3.output.statusCode; return statusCode ? parseInt(statusCode, 10) : 500; } function defaultShouldHandleError(error3) { const status3 = getStatusCodeFromResponse(error3); return status3 >= 500; } function errorHandler(options) { return function sentryErrorMiddleware(error3, _req, res, next) { const shouldHandleError = options && options.shouldHandleError || defaultShouldHandleError; if (shouldHandleError(error3)) { core.withScope((_scope) => { _scope.setSDKProcessingMetadata({ request: _req }); const transaction = res.__sentry_transaction; if (transaction && !core.getActiveSpan()) { _scope.setSpan(transaction); } const client2 = core.getClient(); if (client2 && sdk.isAutoSessionTrackingEnabled(client2)) { const isSessionAggregatesMode = client2._sessionFlusher !== void 0; if (isSessionAggregatesMode) { const requestSession = _scope.getRequestSession(); if (requestSession && requestSession.status !== void 0) { requestSession.status = "crashed"; } } } const eventId = core.captureException(error3, { mechanism: { type: "middleware", handled: false } }); res.sentry = eventId; next(error3); }); return; } next(error3); }; } var trpcMiddleware = trpc.trpcMiddleware; exports2.extractRequestData = requestDataDeprecated.extractRequestData; exports2.parseRequest = requestDataDeprecated.parseRequest; exports2.errorHandler = errorHandler; exports2.requestHandler = requestHandler; exports2.tracingHandler = tracingHandler; exports2.trpcMiddleware = trpcMiddleware; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/hapi/index.js var require_hapi = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/hapi/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); function isResponseObject(response) { return response && response.statusCode !== void 0; } function isErrorEvent(event) { return event && event.error !== void 0; } function sendErrorToSentry(errorData) { core.captureException(errorData, { mechanism: { type: "hapi", handled: false, data: { function: "hapiErrorPlugin" } } }); } var hapiErrorPlugin = { name: "SentryHapiErrorPlugin", version: core.SDK_VERSION, // eslint-disable-next-line @typescript-eslint/no-explicit-any register: async function(serverArg) { const server = serverArg; server.events.on("request", (request, event) => { const transaction = core.getActiveTransaction(); if (isErrorEvent(event)) { sendErrorToSentry(event.error); } if (transaction) { transaction.setStatus("internal_error"); transaction.end(); } }); } }; var hapiTracingPlugin = { name: "SentryHapiTracingPlugin", version: core.SDK_VERSION, // eslint-disable-next-line @typescript-eslint/no-explicit-any register: async function(serverArg) { const server = serverArg; server.ext("onPreHandler", (request, h) => { const transaction = core.continueTrace( { sentryTrace: request.headers["sentry-trace"] || void 0, baggage: request.headers["baggage"] || void 0 }, (transactionContext) => { return core.startTransaction({ ...transactionContext, op: "hapi.request", name: request.route.path, description: `${request.route.method} ${request.path}` }); } ); core.getCurrentScope().setSpan(transaction); return h.continue; }); server.ext("onPreResponse", (request, h) => { const transaction = core.getActiveTransaction(); if (request.response && isResponseObject(request.response) && transaction) { const response = request.response; response.header("sentry-trace", core.spanToTraceHeader(transaction)); const dynamicSamplingContext = utils.dynamicSamplingContextToSentryBaggageHeader( core.getDynamicSamplingContextFromSpan(transaction) ); if (dynamicSamplingContext) { response.header("baggage", dynamicSamplingContext); } } return h.continue; }); server.ext("onPostHandler", (request, h) => { const transaction = core.getActiveTransaction(); if (transaction) { if (request.response && isResponseObject(request.response)) { core.setHttpStatus(transaction, request.response.statusCode); } transaction.end(); } return h.continue; }); } }; var INTEGRATION_NAME = "Hapi"; var _hapiIntegration = (options = {}) => { const server = options.server; return { name: INTEGRATION_NAME, setupOnce() { if (!server) { return; } utils.fill(server, "start", (originalStart) => { return async function() { await this.register(hapiTracingPlugin); await this.register(hapiErrorPlugin); const result = originalStart.apply(this); return result; }; }); } }; }; var hapiIntegration = core.defineIntegration(_hapiIntegration); var Hapi = core.convertIntegrationFnToClass(INTEGRATION_NAME, hapiIntegration); exports2.Hapi = Hapi; exports2.hapiErrorPlugin = hapiErrorPlugin; exports2.hapiIntegration = hapiIntegration; exports2.hapiTracingPlugin = hapiTracingPlugin; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/index.js var require_integrations2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var console2 = require_console2(); var http3 = require_http3(); var onuncaughtexception = require_onuncaughtexception(); var onunhandledrejection = require_onunhandledrejection(); var modules = require_modules(); var contextlines = require_contextlines(); var context = require_context(); var core = require_cjs2(); var index = require_local_variables(); var index$1 = require_undici(); var spotlight = require_spotlight(); var index$2 = require_anr2(); var index$3 = require_hapi(); exports2.Console = console2.Console; exports2.Http = http3.Http; exports2.OnUncaughtException = onuncaughtexception.OnUncaughtException; exports2.OnUnhandledRejection = onunhandledrejection.OnUnhandledRejection; exports2.Modules = modules.Modules; exports2.ContextLines = contextlines.ContextLines; exports2.Context = context.Context; exports2.RequestData = core.RequestData; exports2.LocalVariables = index.LocalVariables; exports2.Undici = index$1.Undici; exports2.Spotlight = spotlight.Spotlight; exports2.Anr = index$2.Anr; exports2.Hapi = index$3.Hapi; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/tracing/integrations.js var require_integrations3 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/tracing/integrations.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var tracing = require_cjs3(); exports2.Apollo = tracing.Apollo; exports2.Express = tracing.Express; exports2.GraphQL = tracing.GraphQL; exports2.Mongo = tracing.Mongo; exports2.Mysql = tracing.Mysql; exports2.Postgres = tracing.Postgres; exports2.Prisma = tracing.Prisma; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/captureconsole.js var require_captureconsole = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/captureconsole.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var INTEGRATION_NAME = "CaptureConsole"; var _captureConsoleIntegration = (options = {}) => { const levels = options.levels || utils.CONSOLE_LEVELS; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { if (!("console" in utils.GLOBAL_OBJ)) { return; } utils.addConsoleInstrumentationHandler(({ args: args2, level }) => { if (core.getClient() !== client2 || !levels.includes(level)) { return; } consoleHandler(args2, level); }); } }; }; var captureConsoleIntegration = core.defineIntegration(_captureConsoleIntegration); var CaptureConsole = core.convertIntegrationFnToClass( INTEGRATION_NAME, captureConsoleIntegration ); function consoleHandler(args2, level) { const captureContext = { level: utils.severityLevelFromString(level), extra: { arguments: args2 } }; core.withScope((scope) => { scope.addEventProcessor((event) => { event.logger = "console"; utils.addExceptionMechanism(event, { handled: false, type: "console" }); return event; }); if (level === "assert" && args2[0] === false) { const message3 = `Assertion failed: ${utils.safeJoin(args2.slice(1), " ") || "console.assert"}`; scope.setExtra("arguments", args2.slice(1)); core.captureMessage(message3, captureContext); return; } const error3 = args2.find((arg2) => arg2 instanceof Error); if (level === "error" && error3) { core.captureException(error3, captureContext); return; } const message2 = utils.safeJoin(args2, " "); core.captureMessage(message2, captureContext); }); } exports2.CaptureConsole = CaptureConsole; exports2.captureConsoleIntegration = captureConsoleIntegration; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/debug.js var require_debug = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/debug.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var INTEGRATION_NAME = "Debug"; var _debugIntegration = (options = {}) => { const _options = { debugger: false, stringify: false, ...options }; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { if (!client2.on) { return; } client2.on("beforeSendEvent", (event, hint) => { if (_options.debugger) { debugger; } utils.consoleSandbox(() => { if (_options.stringify) { console.log(JSON.stringify(event, null, 2)); if (hint && Object.keys(hint).length) { console.log(JSON.stringify(hint, null, 2)); } } else { console.log(event); if (hint && Object.keys(hint).length) { console.log(hint); } } }); }); } }; }; var debugIntegration = core.defineIntegration(_debugIntegration); var Debug = core.convertIntegrationFnToClass(INTEGRATION_NAME, debugIntegration); exports2.Debug = Debug; exports2.debugIntegration = debugIntegration; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/debug-build.js var require_debug_build5 = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/debug-build.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var DEBUG_BUILD = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__; exports2.DEBUG_BUILD = DEBUG_BUILD; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/dedupe.js var require_dedupe = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/dedupe.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build5(); var INTEGRATION_NAME = "Dedupe"; var _dedupeIntegration = () => { let previousEvent; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(currentEvent) { if (currentEvent.type) { return currentEvent; } try { if (_shouldDropEvent(currentEvent, previousEvent)) { debugBuild.DEBUG_BUILD && utils.logger.warn("Event dropped due to being a duplicate of previously captured event."); return null; } } catch (_oO) { } return previousEvent = currentEvent; } }; }; var dedupeIntegration = core.defineIntegration(_dedupeIntegration); var Dedupe = core.convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration); function _shouldDropEvent(currentEvent, previousEvent) { if (!previousEvent) { return false; } if (_isSameMessageEvent(currentEvent, previousEvent)) { return true; } if (_isSameExceptionEvent(currentEvent, previousEvent)) { return true; } return false; } function _isSameMessageEvent(currentEvent, previousEvent) { const currentMessage = currentEvent.message; const previousMessage = previousEvent.message; if (!currentMessage && !previousMessage) { return false; } if (currentMessage && !previousMessage || !currentMessage && previousMessage) { return false; } if (currentMessage !== previousMessage) { return false; } if (!_isSameFingerprint(currentEvent, previousEvent)) { return false; } if (!_isSameStacktrace(currentEvent, previousEvent)) { return false; } return true; } function _isSameExceptionEvent(currentEvent, previousEvent) { const previousException = _getExceptionFromEvent(previousEvent); const currentException = _getExceptionFromEvent(currentEvent); if (!previousException || !currentException) { return false; } if (previousException.type !== currentException.type || previousException.value !== currentException.value) { return false; } if (!_isSameFingerprint(currentEvent, previousEvent)) { return false; } if (!_isSameStacktrace(currentEvent, previousEvent)) { return false; } return true; } function _isSameStacktrace(currentEvent, previousEvent) { let currentFrames = _getFramesFromEvent(currentEvent); let previousFrames = _getFramesFromEvent(previousEvent); if (!currentFrames && !previousFrames) { return true; } if (currentFrames && !previousFrames || !currentFrames && previousFrames) { return false; } currentFrames = currentFrames; previousFrames = previousFrames; if (previousFrames.length !== currentFrames.length) { return false; } for (let i = 0; i < previousFrames.length; i++) { const frameA = previousFrames[i]; const frameB = currentFrames[i]; if (frameA.filename !== frameB.filename || frameA.lineno !== frameB.lineno || frameA.colno !== frameB.colno || frameA.function !== frameB.function) { return false; } } return true; } function _isSameFingerprint(currentEvent, previousEvent) { let currentFingerprint = currentEvent.fingerprint; let previousFingerprint = previousEvent.fingerprint; if (!currentFingerprint && !previousFingerprint) { return true; } if (currentFingerprint && !previousFingerprint || !currentFingerprint && previousFingerprint) { return false; } currentFingerprint = currentFingerprint; previousFingerprint = previousFingerprint; try { return !!(currentFingerprint.join("") === previousFingerprint.join("")); } catch (_oO) { return false; } } function _getExceptionFromEvent(event) { return event.exception && event.exception.values && event.exception.values[0]; } function _getFramesFromEvent(event) { const exception = event.exception; if (exception) { try { return exception.values[0].stacktrace.frames; } catch (_oO) { return void 0; } } return void 0; } exports2.Dedupe = Dedupe; exports2._shouldDropEvent = _shouldDropEvent; exports2.dedupeIntegration = dedupeIntegration; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/extraerrordata.js var require_extraerrordata = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/extraerrordata.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build5(); var INTEGRATION_NAME = "ExtraErrorData"; var _extraErrorDataIntegration = (options = {}) => { const depth = options.depth || 3; const captureErrorCause = options.captureErrorCause || false; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event, hint) { return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause); } }; }; var extraErrorDataIntegration = core.defineIntegration(_extraErrorDataIntegration); var ExtraErrorData = core.convertIntegrationFnToClass( INTEGRATION_NAME, extraErrorDataIntegration ); function _enhanceEventWithErrorData(event, hint = {}, depth, captureErrorCause) { if (!hint.originalException || !utils.isError(hint.originalException)) { return event; } const exceptionName = hint.originalException.name || hint.originalException.constructor.name; const errorData = _extractErrorData(hint.originalException, captureErrorCause); if (errorData) { const contexts = { ...event.contexts }; const normalizedErrorData = utils.normalize(errorData, depth); if (utils.isPlainObject(normalizedErrorData)) { utils.addNonEnumerableProperty(normalizedErrorData, "__sentry_skip_normalization__", true); contexts[exceptionName] = normalizedErrorData; } return { ...event, contexts }; } return event; } function _extractErrorData(error3, captureErrorCause) { try { const nativeKeys = [ "name", "message", "stack", "line", "column", "fileName", "lineNumber", "columnNumber", "toJSON" ]; const extraErrorInfo = {}; for (const key of Object.keys(error3)) { if (nativeKeys.indexOf(key) !== -1) { continue; } const value = error3[key]; extraErrorInfo[key] = utils.isError(value) ? value.toString() : value; } if (captureErrorCause && error3.cause !== void 0) { extraErrorInfo.cause = utils.isError(error3.cause) ? error3.cause.toString() : error3.cause; } if (typeof error3.toJSON === "function") { const serializedError = error3.toJSON(); for (const key of Object.keys(serializedError)) { const value = serializedError[key]; extraErrorInfo[key] = utils.isError(value) ? value.toString() : value; } } return extraErrorInfo; } catch (oO) { debugBuild.DEBUG_BUILD && utils.logger.error("Unable to extract extra data from the Error object:", oO); } return null; } exports2.ExtraErrorData = ExtraErrorData; exports2.extraErrorDataIntegration = extraErrorDataIntegration; } }); // ../../node_modules/.pnpm/localforage@1.10.0/node_modules/localforage/dist/localforage.js var require_localforage = __commonJS2({ "../../node_modules/.pnpm/localforage@1.10.0/node_modules/localforage/dist/localforage.js"(exports2, module2) { (function(f) { if (typeof exports2 === "object" && typeof module2 !== "undefined") { module2.exports = f(); } else if (typeof define === "function" && define.amd) { define([], f); } else { var g; if (typeof window !== "undefined") { g = window; } else if (typeof global !== "undefined") { g = global; } else if (typeof self !== "undefined") { g = self; } else { g = this; } g.localforage = f(); } })(function() { var define2, module3, exports3; return function e2(t, n, r) { function s(o2, u) { if (!n[o2]) { if (!t[o2]) { var a = typeof __require == "function" && __require; if (!u && a) return a(o2, true); if (i) return i(o2, true); var f = new Error("Cannot find module '" + o2 + "'"); throw f.code = "MODULE_NOT_FOUND", f; } var l = n[o2] = { exports: {} }; t[o2][0].call(l.exports, function(e3) { var n2 = t[o2][1][e3]; return s(n2 ? n2 : e3); }, l, l.exports, e2, t, n, r); } return n[o2].exports; } var i = typeof __require == "function" && __require; for (var o = 0; o < r.length; o++) s(r[o]); return s; }({ 1: [function(_dereq_, module4, exports4) { (function(global3) { "use strict"; var Mutation = global3.MutationObserver || global3.WebKitMutationObserver; var scheduleDrain; { if (Mutation) { var called = 0; var observer = new Mutation(nextTick); var element = global3.document.createTextNode(""); observer.observe(element, { characterData: true }); scheduleDrain = function() { element.data = called = ++called % 2; }; } else if (!global3.setImmediate && typeof global3.MessageChannel !== "undefined") { var channel = new global3.MessageChannel(); channel.port1.onmessage = nextTick; scheduleDrain = function() { channel.port2.postMessage(0); }; } else if ("document" in global3 && "onreadystatechange" in global3.document.createElement("script")) { scheduleDrain = function() { var scriptEl = global3.document.createElement("script"); scriptEl.onreadystatechange = function() { nextTick(); scriptEl.onreadystatechange = null; scriptEl.parentNode.removeChild(scriptEl); scriptEl = null; }; global3.document.documentElement.appendChild(scriptEl); }; } else { scheduleDrain = function() { setTimeout(nextTick, 0); }; } } var draining; var queue = []; function nextTick() { draining = true; var i, oldQueue; var len = queue.length; while (len) { oldQueue = queue; queue = []; i = -1; while (++i < len) { oldQueue[i](); } len = queue.length; } draining = false; } module4.exports = immediate; function immediate(task) { if (queue.push(task) === 1 && !draining) { scheduleDrain(); } } }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); }, {}], 2: [function(_dereq_, module4, exports4) { "use strict"; var immediate = _dereq_(1); function INTERNAL() { } var handlers = {}; var REJECTED = ["REJECTED"]; var FULFILLED = ["FULFILLED"]; var PENDING = ["PENDING"]; module4.exports = Promise2; function Promise2(resolver) { if (typeof resolver !== "function") { throw new TypeError("resolver must be a function"); } this.state = PENDING; this.queue = []; this.outcome = void 0; if (resolver !== INTERNAL) { safelyResolveThenable(this, resolver); } } Promise2.prototype["catch"] = function(onRejected) { return this.then(null, onRejected); }; Promise2.prototype.then = function(onFulfilled, onRejected) { if (typeof onFulfilled !== "function" && this.state === FULFILLED || typeof onRejected !== "function" && this.state === REJECTED) { return this; } var promise = new this.constructor(INTERNAL); if (this.state !== PENDING) { var resolver = this.state === FULFILLED ? onFulfilled : onRejected; unwrap(promise, resolver, this.outcome); } else { this.queue.push(new QueueItem(promise, onFulfilled, onRejected)); } return promise; }; function QueueItem(promise, onFulfilled, onRejected) { this.promise = promise; if (typeof onFulfilled === "function") { this.onFulfilled = onFulfilled; this.callFulfilled = this.otherCallFulfilled; } if (typeof onRejected === "function") { this.onRejected = onRejected; this.callRejected = this.otherCallRejected; } } QueueItem.prototype.callFulfilled = function(value) { handlers.resolve(this.promise, value); }; QueueItem.prototype.otherCallFulfilled = function(value) { unwrap(this.promise, this.onFulfilled, value); }; QueueItem.prototype.callRejected = function(value) { handlers.reject(this.promise, value); }; QueueItem.prototype.otherCallRejected = function(value) { unwrap(this.promise, this.onRejected, value); }; function unwrap(promise, func, value) { immediate(function() { var returnValue; try { returnValue = func(value); } catch (e2) { return handlers.reject(promise, e2); } if (returnValue === promise) { handlers.reject(promise, new TypeError("Cannot resolve promise with itself")); } else { handlers.resolve(promise, returnValue); } }); } handlers.resolve = function(self2, value) { var result = tryCatch(getThen, value); if (result.status === "error") { return handlers.reject(self2, result.value); } var thenable = result.value; if (thenable) { safelyResolveThenable(self2, thenable); } else { self2.state = FULFILLED; self2.outcome = value; var i = -1; var len = self2.queue.length; while (++i < len) { self2.queue[i].callFulfilled(value); } } return self2; }; handlers.reject = function(self2, error3) { self2.state = REJECTED; self2.outcome = error3; var i = -1; var len = self2.queue.length; while (++i < len) { self2.queue[i].callRejected(error3); } return self2; }; function getThen(obj) { var then = obj && obj.then; if (obj && (typeof obj === "object" || typeof obj === "function") && typeof then === "function") { return function appyThen() { then.apply(obj, arguments); }; } } function safelyResolveThenable(self2, thenable) { var called = false; function onError(value) { if (called) { return; } called = true; handlers.reject(self2, value); } function onSuccess(value) { if (called) { return; } called = true; handlers.resolve(self2, value); } function tryToUnwrap() { thenable(onSuccess, onError); } var result = tryCatch(tryToUnwrap); if (result.status === "error") { onError(result.value); } } function tryCatch(func, value) { var out = {}; try { out.value = func(value); out.status = "success"; } catch (e2) { out.status = "error"; out.value = e2; } return out; } Promise2.resolve = resolve14; function resolve14(value) { if (value instanceof this) { return value; } return handlers.resolve(new this(INTERNAL), value); } Promise2.reject = reject; function reject(reason) { var promise = new this(INTERNAL); return handlers.reject(promise, reason); } Promise2.all = all; function all(iterable) { var self2 = this; if (Object.prototype.toString.call(iterable) !== "[object Array]") { return this.reject(new TypeError("must be an array")); } var len = iterable.length; var called = false; if (!len) { return this.resolve([]); } var values = new Array(len); var resolved = 0; var i = -1; var promise = new this(INTERNAL); while (++i < len) { allResolver(iterable[i], i); } return promise; function allResolver(value, i2) { self2.resolve(value).then(resolveFromAll, function(error3) { if (!called) { called = true; handlers.reject(promise, error3); } }); function resolveFromAll(outValue) { values[i2] = outValue; if (++resolved === len && !called) { called = true; handlers.resolve(promise, values); } } } } Promise2.race = race; function race(iterable) { var self2 = this; if (Object.prototype.toString.call(iterable) !== "[object Array]") { return this.reject(new TypeError("must be an array")); } var len = iterable.length; var called = false; if (!len) { return this.resolve([]); } var i = -1; var promise = new this(INTERNAL); while (++i < len) { resolver(iterable[i]); } return promise; function resolver(value) { self2.resolve(value).then(function(response) { if (!called) { called = true; handlers.resolve(promise, response); } }, function(error3) { if (!called) { called = true; handlers.reject(promise, error3); } }); } } }, { "1": 1 }], 3: [function(_dereq_, module4, exports4) { (function(global3) { "use strict"; if (typeof global3.Promise !== "function") { global3.Promise = _dereq_(2); } }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); }, { "2": 2 }], 4: [function(_dereq_, module4, exports4) { "use strict"; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { return typeof obj; } : function(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function getIDB() { try { if (typeof indexedDB !== "undefined") { return indexedDB; } if (typeof webkitIndexedDB !== "undefined") { return webkitIndexedDB; } if (typeof mozIndexedDB !== "undefined") { return mozIndexedDB; } if (typeof OIndexedDB !== "undefined") { return OIndexedDB; } if (typeof msIndexedDB !== "undefined") { return msIndexedDB; } } catch (e2) { return; } } var idb = getIDB(); function isIndexedDBValid() { try { if (!idb || !idb.open) { return false; } var isSafari = typeof openDatabase !== "undefined" && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform); var hasFetch = typeof fetch === "function" && fetch.toString().indexOf("[native code") !== -1; return (!isSafari || hasFetch) && typeof indexedDB !== "undefined" && // some outdated implementations of IDB that appear on Samsung // and HTC Android devices <4.4 are missing IDBKeyRange // See: https://github.com/mozilla/localForage/issues/128 // See: https://github.com/mozilla/localForage/issues/272 typeof IDBKeyRange !== "undefined"; } catch (e2) { return false; } } function createBlob(parts, properties) { parts = parts || []; properties = properties || {}; try { return new Blob(parts, properties); } catch (e2) { if (e2.name !== "TypeError") { throw e2; } var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder; var builder = new Builder(); for (var i = 0; i < parts.length; i += 1) { builder.append(parts[i]); } return builder.getBlob(properties.type); } } if (typeof Promise === "undefined") { _dereq_(3); } var Promise$1 = Promise; function executeCallback(promise, callback) { if (callback) { promise.then(function(result) { callback(null, result); }, function(error3) { callback(error3); }); } } function executeTwoCallbacks(promise, callback, errorCallback) { if (typeof callback === "function") { promise.then(callback); } if (typeof errorCallback === "function") { promise["catch"](errorCallback); } } function normalizeKey(key2) { if (typeof key2 !== "string") { console.warn(key2 + " used as a key, but it is not a string."); key2 = String(key2); } return key2; } function getCallback() { if (arguments.length && typeof arguments[arguments.length - 1] === "function") { return arguments[arguments.length - 1]; } } var DETECT_BLOB_SUPPORT_STORE = "local-forage-detect-blob-support"; var supportsBlobs = void 0; var dbContexts = {}; var toString2 = Object.prototype.toString; var READ_ONLY = "readonly"; var READ_WRITE = "readwrite"; function _binStringToArrayBuffer(bin) { var length2 = bin.length; var buf = new ArrayBuffer(length2); var arr = new Uint8Array(buf); for (var i = 0; i < length2; i++) { arr[i] = bin.charCodeAt(i); } return buf; } function _checkBlobSupportWithoutCaching(idb2) { return new Promise$1(function(resolve14) { var txn = idb2.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE); var blob5 = createBlob([""]); txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob5, "key"); txn.onabort = function(e2) { e2.preventDefault(); e2.stopPropagation(); resolve14(false); }; txn.oncomplete = function() { var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/); var matchedEdge = navigator.userAgent.match(/Edge\//); resolve14(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43); }; })["catch"](function() { return false; }); } function _checkBlobSupport(idb2) { if (typeof supportsBlobs === "boolean") { return Promise$1.resolve(supportsBlobs); } return _checkBlobSupportWithoutCaching(idb2).then(function(value) { supportsBlobs = value; return supportsBlobs; }); } function _deferReadiness(dbInfo) { var dbContext = dbContexts[dbInfo.name]; var deferredOperation = {}; deferredOperation.promise = new Promise$1(function(resolve14, reject) { deferredOperation.resolve = resolve14; deferredOperation.reject = reject; }); dbContext.deferredOperations.push(deferredOperation); if (!dbContext.dbReady) { dbContext.dbReady = deferredOperation.promise; } else { dbContext.dbReady = dbContext.dbReady.then(function() { return deferredOperation.promise; }); } } function _advanceReadiness(dbInfo) { var dbContext = dbContexts[dbInfo.name]; var deferredOperation = dbContext.deferredOperations.pop(); if (deferredOperation) { deferredOperation.resolve(); return deferredOperation.promise; } } function _rejectReadiness(dbInfo, err) { var dbContext = dbContexts[dbInfo.name]; var deferredOperation = dbContext.deferredOperations.pop(); if (deferredOperation) { deferredOperation.reject(err); return deferredOperation.promise; } } function _getConnection(dbInfo, upgradeNeeded) { return new Promise$1(function(resolve14, reject) { dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext(); if (dbInfo.db) { if (upgradeNeeded) { _deferReadiness(dbInfo); dbInfo.db.close(); } else { return resolve14(dbInfo.db); } } var dbArgs = [dbInfo.name]; if (upgradeNeeded) { dbArgs.push(dbInfo.version); } var openreq = idb.open.apply(idb, dbArgs); if (upgradeNeeded) { openreq.onupgradeneeded = function(e2) { var db = openreq.result; try { db.createObjectStore(dbInfo.storeName); if (e2.oldVersion <= 1) { db.createObjectStore(DETECT_BLOB_SUPPORT_STORE); } } catch (ex) { if (ex.name === "ConstraintError") { console.warn('The database "' + dbInfo.name + '" has been upgraded from version ' + e2.oldVersion + " to version " + e2.newVersion + ', but the storage "' + dbInfo.storeName + '" already exists.'); } else { throw ex; } } }; } openreq.onerror = function(e2) { e2.preventDefault(); reject(openreq.error); }; openreq.onsuccess = function() { var db = openreq.result; db.onversionchange = function(e2) { e2.target.close(); }; resolve14(db); _advanceReadiness(dbInfo); }; }); } function _getOriginalConnection(dbInfo) { return _getConnection(dbInfo, false); } function _getUpgradedConnection(dbInfo) { return _getConnection(dbInfo, true); } function _isUpgradeNeeded(dbInfo, defaultVersion) { if (!dbInfo.db) { return true; } var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName); var isDowngrade = dbInfo.version < dbInfo.db.version; var isUpgrade = dbInfo.version > dbInfo.db.version; if (isDowngrade) { if (dbInfo.version !== defaultVersion) { console.warn('The database "' + dbInfo.name + `" can't be downgraded from version ` + dbInfo.db.version + " to version " + dbInfo.version + "."); } dbInfo.version = dbInfo.db.version; } if (isUpgrade || isNewStore) { if (isNewStore) { var incVersion = dbInfo.db.version + 1; if (incVersion > dbInfo.version) { dbInfo.version = incVersion; } } return true; } return false; } function _encodeBlob(blob5) { return new Promise$1(function(resolve14, reject) { var reader = new FileReader(); reader.onerror = reject; reader.onloadend = function(e2) { var base64 = btoa(e2.target.result || ""); resolve14({ __local_forage_encoded_blob: true, data: base64, type: blob5.type }); }; reader.readAsBinaryString(blob5); }); } function _decodeBlob(encodedBlob) { var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data)); return createBlob([arrayBuff], { type: encodedBlob.type }); } function _isEncodedBlob(value) { return value && value.__local_forage_encoded_blob; } function _fullyReady(callback) { var self2 = this; var promise = self2._initReady().then(function() { var dbContext = dbContexts[self2._dbInfo.name]; if (dbContext && dbContext.dbReady) { return dbContext.dbReady; } }); executeTwoCallbacks(promise, callback, callback); return promise; } function _tryReconnect(dbInfo) { _deferReadiness(dbInfo); var dbContext = dbContexts[dbInfo.name]; var forages = dbContext.forages; for (var i = 0; i < forages.length; i++) { var forage = forages[i]; if (forage._dbInfo.db) { forage._dbInfo.db.close(); forage._dbInfo.db = null; } } dbInfo.db = null; return _getOriginalConnection(dbInfo).then(function(db) { dbInfo.db = db; if (_isUpgradeNeeded(dbInfo)) { return _getUpgradedConnection(dbInfo); } return db; }).then(function(db) { dbInfo.db = dbContext.db = db; for (var i2 = 0; i2 < forages.length; i2++) { forages[i2]._dbInfo.db = db; } })["catch"](function(err) { _rejectReadiness(dbInfo, err); throw err; }); } function createTransaction(dbInfo, mode, callback, retries) { if (retries === void 0) { retries = 1; } try { var tx = dbInfo.db.transaction(dbInfo.storeName, mode); callback(null, tx); } catch (err) { if (retries > 0 && (!dbInfo.db || err.name === "InvalidStateError" || err.name === "NotFoundError")) { return Promise$1.resolve().then(function() { if (!dbInfo.db || err.name === "NotFoundError" && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) { if (dbInfo.db) { dbInfo.version = dbInfo.db.version + 1; } return _getUpgradedConnection(dbInfo); } }).then(function() { return _tryReconnect(dbInfo).then(function() { createTransaction(dbInfo, mode, callback, retries - 1); }); })["catch"](callback); } callback(err); } } function createDbContext() { return { // Running localForages sharing a database. forages: [], // Shared database. db: null, // Database readiness (promise). dbReady: null, // Deferred operations on the database. deferredOperations: [] }; } function _initStorage(options) { var self2 = this; var dbInfo = { db: null }; if (options) { for (var i in options) { dbInfo[i] = options[i]; } } var dbContext = dbContexts[dbInfo.name]; if (!dbContext) { dbContext = createDbContext(); dbContexts[dbInfo.name] = dbContext; } dbContext.forages.push(self2); if (!self2._initReady) { self2._initReady = self2.ready; self2.ready = _fullyReady; } var initPromises = []; function ignoreErrors() { return Promise$1.resolve(); } for (var j = 0; j < dbContext.forages.length; j++) { var forage = dbContext.forages[j]; if (forage !== self2) { initPromises.push(forage._initReady()["catch"](ignoreErrors)); } } var forages = dbContext.forages.slice(0); return Promise$1.all(initPromises).then(function() { dbInfo.db = dbContext.db; return _getOriginalConnection(dbInfo); }).then(function(db) { dbInfo.db = db; if (_isUpgradeNeeded(dbInfo, self2._defaultConfig.version)) { return _getUpgradedConnection(dbInfo); } return db; }).then(function(db) { dbInfo.db = dbContext.db = db; self2._dbInfo = dbInfo; for (var k = 0; k < forages.length; k++) { var forage2 = forages[k]; if (forage2 !== self2) { forage2._dbInfo.db = dbInfo.db; forage2._dbInfo.version = dbInfo.version; } } }); } function getItem(key2, callback) { var self2 = this; key2 = normalizeKey(key2); var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store2 = transaction.objectStore(self2._dbInfo.storeName); var req = store2.get(key2); req.onsuccess = function() { var value = req.result; if (value === void 0) { value = null; } if (_isEncodedBlob(value)) { value = _decodeBlob(value); } resolve14(value); }; req.onerror = function() { reject(req.error); }; } catch (e2) { reject(e2); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function iterate(iterator, callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store2 = transaction.objectStore(self2._dbInfo.storeName); var req = store2.openCursor(); var iterationNumber = 1; req.onsuccess = function() { var cursor = req.result; if (cursor) { var value = cursor.value; if (_isEncodedBlob(value)) { value = _decodeBlob(value); } var result = iterator(value, cursor.key, iterationNumber++); if (result !== void 0) { resolve14(result); } else { cursor["continue"](); } } else { resolve14(); } }; req.onerror = function() { reject(req.error); }; } catch (e2) { reject(e2); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function setItem(key2, value, callback) { var self2 = this; key2 = normalizeKey(key2); var promise = new Promise$1(function(resolve14, reject) { var dbInfo; self2.ready().then(function() { dbInfo = self2._dbInfo; if (toString2.call(value) === "[object Blob]") { return _checkBlobSupport(dbInfo.db).then(function(blobSupport) { if (blobSupport) { return value; } return _encodeBlob(value); }); } return value; }).then(function(value2) { createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) { if (err) { return reject(err); } try { var store2 = transaction.objectStore(self2._dbInfo.storeName); if (value2 === null) { value2 = void 0; } var req = store2.put(value2, key2); transaction.oncomplete = function() { if (value2 === void 0) { value2 = null; } resolve14(value2); }; transaction.onabort = transaction.onerror = function() { var err2 = req.error ? req.error : req.transaction.error; reject(err2); }; } catch (e2) { reject(e2); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function removeItem(key2, callback) { var self2 = this; key2 = normalizeKey(key2); var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) { if (err) { return reject(err); } try { var store2 = transaction.objectStore(self2._dbInfo.storeName); var req = store2["delete"](key2); transaction.oncomplete = function() { resolve14(); }; transaction.onerror = function() { reject(req.error); }; transaction.onabort = function() { var err2 = req.error ? req.error : req.transaction.error; reject(err2); }; } catch (e2) { reject(e2); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function clear(callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) { if (err) { return reject(err); } try { var store2 = transaction.objectStore(self2._dbInfo.storeName); var req = store2.clear(); transaction.oncomplete = function() { resolve14(); }; transaction.onabort = transaction.onerror = function() { var err2 = req.error ? req.error : req.transaction.error; reject(err2); }; } catch (e2) { reject(e2); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function length(callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store2 = transaction.objectStore(self2._dbInfo.storeName); var req = store2.count(); req.onsuccess = function() { resolve14(req.result); }; req.onerror = function() { reject(req.error); }; } catch (e2) { reject(e2); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function key(n, callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { if (n < 0) { resolve14(null); return; } self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store2 = transaction.objectStore(self2._dbInfo.storeName); var advanced = false; var req = store2.openKeyCursor(); req.onsuccess = function() { var cursor = req.result; if (!cursor) { resolve14(null); return; } if (n === 0) { resolve14(cursor.key); } else { if (!advanced) { advanced = true; cursor.advance(n); } else { resolve14(cursor.key); } } }; req.onerror = function() { reject(req.error); }; } catch (e2) { reject(e2); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function keys(callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store2 = transaction.objectStore(self2._dbInfo.storeName); var req = store2.openKeyCursor(); var keys2 = []; req.onsuccess = function() { var cursor = req.result; if (!cursor) { resolve14(keys2); return; } keys2.push(cursor.key); cursor["continue"](); }; req.onerror = function() { reject(req.error); }; } catch (e2) { reject(e2); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function dropInstance(options, callback) { callback = getCallback.apply(this, arguments); var currentConfig = this.config(); options = typeof options !== "function" && options || {}; if (!options.name) { options.name = options.name || currentConfig.name; options.storeName = options.storeName || currentConfig.storeName; } var self2 = this; var promise; if (!options.name) { promise = Promise$1.reject("Invalid arguments"); } else { var isCurrentDb = options.name === currentConfig.name && self2._dbInfo.db; var dbPromise = isCurrentDb ? Promise$1.resolve(self2._dbInfo.db) : _getOriginalConnection(options).then(function(db) { var dbContext = dbContexts[options.name]; var forages = dbContext.forages; dbContext.db = db; for (var i = 0; i < forages.length; i++) { forages[i]._dbInfo.db = db; } return db; }); if (!options.storeName) { promise = dbPromise.then(function(db) { _deferReadiness(options); var dbContext = dbContexts[options.name]; var forages = dbContext.forages; db.close(); for (var i = 0; i < forages.length; i++) { var forage = forages[i]; forage._dbInfo.db = null; } var dropDBPromise = new Promise$1(function(resolve14, reject) { var req = idb.deleteDatabase(options.name); req.onerror = function() { var db2 = req.result; if (db2) { db2.close(); } reject(req.error); }; req.onblocked = function() { console.warn('dropInstance blocked for database "' + options.name + '" until all open connections are closed'); }; req.onsuccess = function() { var db2 = req.result; if (db2) { db2.close(); } resolve14(db2); }; }); return dropDBPromise.then(function(db2) { dbContext.db = db2; for (var i2 = 0; i2 < forages.length; i2++) { var _forage = forages[i2]; _advanceReadiness(_forage._dbInfo); } })["catch"](function(err) { (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() { }); throw err; }); }); } else { promise = dbPromise.then(function(db) { if (!db.objectStoreNames.contains(options.storeName)) { return; } var newVersion = db.version + 1; _deferReadiness(options); var dbContext = dbContexts[options.name]; var forages = dbContext.forages; db.close(); for (var i = 0; i < forages.length; i++) { var forage = forages[i]; forage._dbInfo.db = null; forage._dbInfo.version = newVersion; } var dropObjectPromise = new Promise$1(function(resolve14, reject) { var req = idb.open(options.name, newVersion); req.onerror = function(err) { var db2 = req.result; db2.close(); reject(err); }; req.onupgradeneeded = function() { var db2 = req.result; db2.deleteObjectStore(options.storeName); }; req.onsuccess = function() { var db2 = req.result; db2.close(); resolve14(db2); }; }); return dropObjectPromise.then(function(db2) { dbContext.db = db2; for (var j = 0; j < forages.length; j++) { var _forage2 = forages[j]; _forage2._dbInfo.db = db2; _advanceReadiness(_forage2._dbInfo); } })["catch"](function(err) { (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() { }); throw err; }); }); } } executeCallback(promise, callback); return promise; } var asyncStorage = { _driver: "asyncStorage", _initStorage, _support: isIndexedDBValid(), iterate, getItem, setItem, removeItem, clear, length, key, keys, dropInstance }; function isWebSQLValid() { return typeof openDatabase === "function"; } var BASE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var BLOB_TYPE_PREFIX = "~~local_forage_type~"; var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/; var SERIALIZED_MARKER = "__lfsc__:"; var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length; var TYPE_ARRAYBUFFER = "arbf"; var TYPE_BLOB = "blob"; var TYPE_INT8ARRAY = "si08"; var TYPE_UINT8ARRAY = "ui08"; var TYPE_UINT8CLAMPEDARRAY = "uic8"; var TYPE_INT16ARRAY = "si16"; var TYPE_INT32ARRAY = "si32"; var TYPE_UINT16ARRAY = "ur16"; var TYPE_UINT32ARRAY = "ui32"; var TYPE_FLOAT32ARRAY = "fl32"; var TYPE_FLOAT64ARRAY = "fl64"; var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length; var toString$1 = Object.prototype.toString; function stringToBuffer(serializedString) { var bufferLength = serializedString.length * 0.75; var len = serializedString.length; var i; var p = 0; var encoded1, encoded2, encoded3, encoded4; if (serializedString[serializedString.length - 1] === "=") { bufferLength--; if (serializedString[serializedString.length - 2] === "=") { bufferLength--; } } var buffer = new ArrayBuffer(bufferLength); var bytes9 = new Uint8Array(buffer); for (i = 0; i < len; i += 4) { encoded1 = BASE_CHARS.indexOf(serializedString[i]); encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]); encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]); encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]); bytes9[p++] = encoded1 << 2 | encoded2 >> 4; bytes9[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes9[p++] = (encoded3 & 3) << 6 | encoded4 & 63; } return buffer; } function bufferToString(buffer) { var bytes9 = new Uint8Array(buffer); var base64String = ""; var i; for (i = 0; i < bytes9.length; i += 3) { base64String += BASE_CHARS[bytes9[i] >> 2]; base64String += BASE_CHARS[(bytes9[i] & 3) << 4 | bytes9[i + 1] >> 4]; base64String += BASE_CHARS[(bytes9[i + 1] & 15) << 2 | bytes9[i + 2] >> 6]; base64String += BASE_CHARS[bytes9[i + 2] & 63]; } if (bytes9.length % 3 === 2) { base64String = base64String.substring(0, base64String.length - 1) + "="; } else if (bytes9.length % 3 === 1) { base64String = base64String.substring(0, base64String.length - 2) + "=="; } return base64String; } function serialize(value, callback) { var valueType = ""; if (value) { valueType = toString$1.call(value); } if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString$1.call(value.buffer) === "[object ArrayBuffer]")) { var buffer; var marker = SERIALIZED_MARKER; if (value instanceof ArrayBuffer) { buffer = value; marker += TYPE_ARRAYBUFFER; } else { buffer = value.buffer; if (valueType === "[object Int8Array]") { marker += TYPE_INT8ARRAY; } else if (valueType === "[object Uint8Array]") { marker += TYPE_UINT8ARRAY; } else if (valueType === "[object Uint8ClampedArray]") { marker += TYPE_UINT8CLAMPEDARRAY; } else if (valueType === "[object Int16Array]") { marker += TYPE_INT16ARRAY; } else if (valueType === "[object Uint16Array]") { marker += TYPE_UINT16ARRAY; } else if (valueType === "[object Int32Array]") { marker += TYPE_INT32ARRAY; } else if (valueType === "[object Uint32Array]") { marker += TYPE_UINT32ARRAY; } else if (valueType === "[object Float32Array]") { marker += TYPE_FLOAT32ARRAY; } else if (valueType === "[object Float64Array]") { marker += TYPE_FLOAT64ARRAY; } else { callback(new Error("Failed to get type for BinaryArray")); } } callback(marker + bufferToString(buffer)); } else if (valueType === "[object Blob]") { var fileReader = new FileReader(); fileReader.onload = function() { var str = BLOB_TYPE_PREFIX + value.type + "~" + bufferToString(this.result); callback(SERIALIZED_MARKER + TYPE_BLOB + str); }; fileReader.readAsArrayBuffer(value); } else { try { callback(JSON.stringify(value)); } catch (e2) { console.error("Couldn't convert value into a JSON string: ", value); callback(null, e2); } } } function deserialize(value) { if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) { return JSON.parse(value); } var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH); var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH); var blobType; if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) { var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX); blobType = matcher[1]; serializedString = serializedString.substring(matcher[0].length); } var buffer = stringToBuffer(serializedString); switch (type) { case TYPE_ARRAYBUFFER: return buffer; case TYPE_BLOB: return createBlob([buffer], { type: blobType }); case TYPE_INT8ARRAY: return new Int8Array(buffer); case TYPE_UINT8ARRAY: return new Uint8Array(buffer); case TYPE_UINT8CLAMPEDARRAY: return new Uint8ClampedArray(buffer); case TYPE_INT16ARRAY: return new Int16Array(buffer); case TYPE_UINT16ARRAY: return new Uint16Array(buffer); case TYPE_INT32ARRAY: return new Int32Array(buffer); case TYPE_UINT32ARRAY: return new Uint32Array(buffer); case TYPE_FLOAT32ARRAY: return new Float32Array(buffer); case TYPE_FLOAT64ARRAY: return new Float64Array(buffer); default: throw new Error("Unkown type: " + type); } } var localforageSerializer = { serialize, deserialize, stringToBuffer, bufferToString }; function createDbTable(t, dbInfo, callback, errorCallback) { t.executeSql("CREATE TABLE IF NOT EXISTS " + dbInfo.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], callback, errorCallback); } function _initStorage$1(options) { var self2 = this; var dbInfo = { db: null }; if (options) { for (var i in options) { dbInfo[i] = typeof options[i] !== "string" ? options[i].toString() : options[i]; } } var dbInfoPromise = new Promise$1(function(resolve14, reject) { try { dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size); } catch (e2) { return reject(e2); } dbInfo.db.transaction(function(t) { createDbTable(t, dbInfo, function() { self2._dbInfo = dbInfo; resolve14(); }, function(t2, error3) { reject(error3); }); }, reject); }); dbInfo.serializer = localforageSerializer; return dbInfoPromise; } function tryExecuteSql(t, dbInfo, sqlStatement, args2, callback, errorCallback) { t.executeSql(sqlStatement, args2, callback, function(t2, error3) { if (error3.code === error3.SYNTAX_ERR) { t2.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [dbInfo.storeName], function(t3, results) { if (!results.rows.length) { createDbTable(t3, dbInfo, function() { t3.executeSql(sqlStatement, args2, callback, errorCallback); }, errorCallback); } else { errorCallback(t3, error3); } }, errorCallback); } else { errorCallback(t2, error3); } }, errorCallback); } function getItem$1(key2, callback) { var self2 = this; key2 = normalizeKey(key2); var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t) { tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName + " WHERE key = ? LIMIT 1", [key2], function(t2, results) { var result = results.rows.length ? results.rows.item(0).value : null; if (result) { result = dbInfo.serializer.deserialize(result); } resolve14(result); }, function(t2, error3) { reject(error3); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function iterate$1(iterator, callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t) { tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName, [], function(t2, results) { var rows = results.rows; var length2 = rows.length; for (var i = 0; i < length2; i++) { var item = rows.item(i); var result = item.value; if (result) { result = dbInfo.serializer.deserialize(result); } result = iterator(result, item.key, i + 1); if (result !== void 0) { resolve14(result); return; } } resolve14(); }, function(t2, error3) { reject(error3); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function _setItem(key2, value, callback, retriesLeft) { var self2 = this; key2 = normalizeKey(key2); var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { if (value === void 0) { value = null; } var originalValue = value; var dbInfo = self2._dbInfo; dbInfo.serializer.serialize(value, function(value2, error3) { if (error3) { reject(error3); } else { dbInfo.db.transaction(function(t) { tryExecuteSql(t, dbInfo, "INSERT OR REPLACE INTO " + dbInfo.storeName + " (key, value) VALUES (?, ?)", [key2, value2], function() { resolve14(originalValue); }, function(t2, error4) { reject(error4); }); }, function(sqlError) { if (sqlError.code === sqlError.QUOTA_ERR) { if (retriesLeft > 0) { resolve14(_setItem.apply(self2, [key2, originalValue, callback, retriesLeft - 1])); return; } reject(sqlError); } }); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function setItem$1(key2, value, callback) { return _setItem.apply(this, [key2, value, callback, 1]); } function removeItem$1(key2, callback) { var self2 = this; key2 = normalizeKey(key2); var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t) { tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName + " WHERE key = ?", [key2], function() { resolve14(); }, function(t2, error3) { reject(error3); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function clear$1(callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t) { tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName, [], function() { resolve14(); }, function(t2, error3) { reject(error3); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function length$1(callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t) { tryExecuteSql(t, dbInfo, "SELECT COUNT(key) as c FROM " + dbInfo.storeName, [], function(t2, results) { var result = results.rows.item(0).c; resolve14(result); }, function(t2, error3) { reject(error3); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function key$1(n, callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t) { tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName + " WHERE id = ? LIMIT 1", [n + 1], function(t2, results) { var result = results.rows.length ? results.rows.item(0).key : null; resolve14(result); }, function(t2, error3) { reject(error3); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function keys$1(callback) { var self2 = this; var promise = new Promise$1(function(resolve14, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t) { tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName, [], function(t2, results) { var keys2 = []; for (var i = 0; i < results.rows.length; i++) { keys2.push(results.rows.item(i).key); } resolve14(keys2); }, function(t2, error3) { reject(error3); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function getAllStoreNames(db) { return new Promise$1(function(resolve14, reject) { db.transaction(function(t) { t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(t2, results) { var storeNames = []; for (var i = 0; i < results.rows.length; i++) { storeNames.push(results.rows.item(i).name); } resolve14({ db, storeNames }); }, function(t2, error3) { reject(error3); }); }, function(sqlError) { reject(sqlError); }); }); } function dropInstance$1(options, callback) { callback = getCallback.apply(this, arguments); var currentConfig = this.config(); options = typeof options !== "function" && options || {}; if (!options.name) { options.name = options.name || currentConfig.name; options.storeName = options.storeName || currentConfig.storeName; } var self2 = this; var promise; if (!options.name) { promise = Promise$1.reject("Invalid arguments"); } else { promise = new Promise$1(function(resolve14) { var db; if (options.name === currentConfig.name) { db = self2._dbInfo.db; } else { db = openDatabase(options.name, "", "", 0); } if (!options.storeName) { resolve14(getAllStoreNames(db)); } else { resolve14({ db, storeNames: [options.storeName] }); } }).then(function(operationInfo) { return new Promise$1(function(resolve14, reject) { operationInfo.db.transaction(function(t) { function dropTable(storeName) { return new Promise$1(function(resolve15, reject2) { t.executeSql("DROP TABLE IF EXISTS " + storeName, [], function() { resolve15(); }, function(t2, error3) { reject2(error3); }); }); } var operations = []; for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) { operations.push(dropTable(operationInfo.storeNames[i])); } Promise$1.all(operations).then(function() { resolve14(); })["catch"](function(e2) { reject(e2); }); }, function(sqlError) { reject(sqlError); }); }); }); } executeCallback(promise, callback); return promise; } var webSQLStorage = { _driver: "webSQLStorage", _initStorage: _initStorage$1, _support: isWebSQLValid(), iterate: iterate$1, getItem: getItem$1, setItem: setItem$1, removeItem: removeItem$1, clear: clear$1, length: length$1, key: key$1, keys: keys$1, dropInstance: dropInstance$1 }; function isLocalStorageValid() { try { return typeof localStorage !== "undefined" && "setItem" in localStorage && // in IE8 typeof localStorage.setItem === 'object' !!localStorage.setItem; } catch (e2) { return false; } } function _getKeyPrefix(options, defaultConfig) { var keyPrefix = options.name + "/"; if (options.storeName !== defaultConfig.storeName) { keyPrefix += options.storeName + "/"; } return keyPrefix; } function checkIfLocalStorageThrows() { var localStorageTestKey = "_localforage_support_test"; try { localStorage.setItem(localStorageTestKey, true); localStorage.removeItem(localStorageTestKey); return false; } catch (e2) { return true; } } function _isLocalStorageUsable() { return !checkIfLocalStorageThrows() || localStorage.length > 0; } function _initStorage$2(options) { var self2 = this; var dbInfo = {}; if (options) { for (var i in options) { dbInfo[i] = options[i]; } } dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig); if (!_isLocalStorageUsable()) { return Promise$1.reject(); } self2._dbInfo = dbInfo; dbInfo.serializer = localforageSerializer; return Promise$1.resolve(); } function clear$2(callback) { var self2 = this; var promise = self2.ready().then(function() { var keyPrefix = self2._dbInfo.keyPrefix; for (var i = localStorage.length - 1; i >= 0; i--) { var key2 = localStorage.key(i); if (key2.indexOf(keyPrefix) === 0) { localStorage.removeItem(key2); } } }); executeCallback(promise, callback); return promise; } function getItem$2(key2, callback) { var self2 = this; key2 = normalizeKey(key2); var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; var result = localStorage.getItem(dbInfo.keyPrefix + key2); if (result) { result = dbInfo.serializer.deserialize(result); } return result; }); executeCallback(promise, callback); return promise; } function iterate$2(iterator, callback) { var self2 = this; var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; var keyPrefix = dbInfo.keyPrefix; var keyPrefixLength = keyPrefix.length; var length2 = localStorage.length; var iterationNumber = 1; for (var i = 0; i < length2; i++) { var key2 = localStorage.key(i); if (key2.indexOf(keyPrefix) !== 0) { continue; } var value = localStorage.getItem(key2); if (value) { value = dbInfo.serializer.deserialize(value); } value = iterator(value, key2.substring(keyPrefixLength), iterationNumber++); if (value !== void 0) { return value; } } }); executeCallback(promise, callback); return promise; } function key$2(n, callback) { var self2 = this; var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; var result; try { result = localStorage.key(n); } catch (error3) { result = null; } if (result) { result = result.substring(dbInfo.keyPrefix.length); } return result; }); executeCallback(promise, callback); return promise; } function keys$2(callback) { var self2 = this; var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; var length2 = localStorage.length; var keys2 = []; for (var i = 0; i < length2; i++) { var itemKey = localStorage.key(i); if (itemKey.indexOf(dbInfo.keyPrefix) === 0) { keys2.push(itemKey.substring(dbInfo.keyPrefix.length)); } } return keys2; }); executeCallback(promise, callback); return promise; } function length$2(callback) { var self2 = this; var promise = self2.keys().then(function(keys2) { return keys2.length; }); executeCallback(promise, callback); return promise; } function removeItem$2(key2, callback) { var self2 = this; key2 = normalizeKey(key2); var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; localStorage.removeItem(dbInfo.keyPrefix + key2); }); executeCallback(promise, callback); return promise; } function setItem$2(key2, value, callback) { var self2 = this; key2 = normalizeKey(key2); var promise = self2.ready().then(function() { if (value === void 0) { value = null; } var originalValue = value; return new Promise$1(function(resolve14, reject) { var dbInfo = self2._dbInfo; dbInfo.serializer.serialize(value, function(value2, error3) { if (error3) { reject(error3); } else { try { localStorage.setItem(dbInfo.keyPrefix + key2, value2); resolve14(originalValue); } catch (e2) { if (e2.name === "QuotaExceededError" || e2.name === "NS_ERROR_DOM_QUOTA_REACHED") { reject(e2); } reject(e2); } } }); }); }); executeCallback(promise, callback); return promise; } function dropInstance$2(options, callback) { callback = getCallback.apply(this, arguments); options = typeof options !== "function" && options || {}; if (!options.name) { var currentConfig = this.config(); options.name = options.name || currentConfig.name; options.storeName = options.storeName || currentConfig.storeName; } var self2 = this; var promise; if (!options.name) { promise = Promise$1.reject("Invalid arguments"); } else { promise = new Promise$1(function(resolve14) { if (!options.storeName) { resolve14(options.name + "/"); } else { resolve14(_getKeyPrefix(options, self2._defaultConfig)); } }).then(function(keyPrefix) { for (var i = localStorage.length - 1; i >= 0; i--) { var key2 = localStorage.key(i); if (key2.indexOf(keyPrefix) === 0) { localStorage.removeItem(key2); } } }); } executeCallback(promise, callback); return promise; } var localStorageWrapper = { _driver: "localStorageWrapper", _initStorage: _initStorage$2, _support: isLocalStorageValid(), iterate: iterate$2, getItem: getItem$2, setItem: setItem$2, removeItem: removeItem$2, clear: clear$2, length: length$2, key: key$2, keys: keys$2, dropInstance: dropInstance$2 }; var sameValue = function sameValue2(x, y) { return x === y || typeof x === "number" && typeof y === "number" && isNaN(x) && isNaN(y); }; var includes = function includes2(array, searchElement) { var len = array.length; var i = 0; while (i < len) { if (sameValue(array[i], searchElement)) { return true; } i++; } return false; }; var isArray = Array.isArray || function(arg2) { return Object.prototype.toString.call(arg2) === "[object Array]"; }; var DefinedDrivers = {}; var DriverSupport = {}; var DefaultDrivers = { INDEXEDDB: asyncStorage, WEBSQL: webSQLStorage, LOCALSTORAGE: localStorageWrapper }; var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver]; var OptionalDriverMethods = ["dropInstance"]; var LibraryMethods = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(OptionalDriverMethods); var DefaultConfig = { description: "", driver: DefaultDriverOrder.slice(), name: "localforage", // Default DB size is _JUST UNDER_ 5MB, as it's the highest size // we can use without a prompt. size: 4980736, storeName: "keyvaluepairs", version: 1 }; function callWhenReady(localForageInstance, libraryMethod) { localForageInstance[libraryMethod] = function() { var _args = arguments; return localForageInstance.ready().then(function() { return localForageInstance[libraryMethod].apply(localForageInstance, _args); }); }; } function extend() { for (var i = 1; i < arguments.length; i++) { var arg2 = arguments[i]; if (arg2) { for (var _key in arg2) { if (arg2.hasOwnProperty(_key)) { if (isArray(arg2[_key])) { arguments[0][_key] = arg2[_key].slice(); } else { arguments[0][_key] = arg2[_key]; } } } } } return arguments[0]; } var LocalForage = function() { function LocalForage2(options) { _classCallCheck(this, LocalForage2); for (var driverTypeKey in DefaultDrivers) { if (DefaultDrivers.hasOwnProperty(driverTypeKey)) { var driver = DefaultDrivers[driverTypeKey]; var driverName = driver._driver; this[driverTypeKey] = driverName; if (!DefinedDrivers[driverName]) { this.defineDriver(driver); } } } this._defaultConfig = extend({}, DefaultConfig); this._config = extend({}, this._defaultConfig, options); this._driverSet = null; this._initDriver = null; this._ready = false; this._dbInfo = null; this._wrapLibraryMethodsWithReady(); this.setDriver(this._config.driver)["catch"](function() { }); } LocalForage2.prototype.config = function config2(options) { if ((typeof options === "undefined" ? "undefined" : _typeof(options)) === "object") { if (this._ready) { return new Error("Can't call config() after localforage has been used."); } for (var i in options) { if (i === "storeName") { options[i] = options[i].replace(/\W/g, "_"); } if (i === "version" && typeof options[i] !== "number") { return new Error("Database version must be a number."); } this._config[i] = options[i]; } if ("driver" in options && options.driver) { return this.setDriver(this._config.driver); } return true; } else if (typeof options === "string") { return this._config[options]; } else { return this._config; } }; LocalForage2.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) { var promise = new Promise$1(function(resolve14, reject) { try { var driverName = driverObject._driver; var complianceError = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver"); if (!driverObject._driver) { reject(complianceError); return; } var driverMethods = LibraryMethods.concat("_initStorage"); for (var i = 0, len = driverMethods.length; i < len; i++) { var driverMethodName = driverMethods[i]; var isRequired = !includes(OptionalDriverMethods, driverMethodName); if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== "function") { reject(complianceError); return; } } var configureMissingMethods = function configureMissingMethods2() { var methodNotImplementedFactory = function methodNotImplementedFactory2(methodName) { return function() { var error3 = new Error("Method " + methodName + " is not implemented by the current driver"); var promise2 = Promise$1.reject(error3); executeCallback(promise2, arguments[arguments.length - 1]); return promise2; }; }; for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) { var optionalDriverMethod = OptionalDriverMethods[_i]; if (!driverObject[optionalDriverMethod]) { driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod); } } }; configureMissingMethods(); var setDriverSupport = function setDriverSupport2(support) { if (DefinedDrivers[driverName]) { console.info("Redefining LocalForage driver: " + driverName); } DefinedDrivers[driverName] = driverObject; DriverSupport[driverName] = support; resolve14(); }; if ("_support" in driverObject) { if (driverObject._support && typeof driverObject._support === "function") { driverObject._support().then(setDriverSupport, reject); } else { setDriverSupport(!!driverObject._support); } } else { setDriverSupport(true); } } catch (e2) { reject(e2); } }); executeTwoCallbacks(promise, callback, errorCallback); return promise; }; LocalForage2.prototype.driver = function driver() { return this._driver || null; }; LocalForage2.prototype.getDriver = function getDriver(driverName, callback, errorCallback) { var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error("Driver not found.")); executeTwoCallbacks(getDriverPromise, callback, errorCallback); return getDriverPromise; }; LocalForage2.prototype.getSerializer = function getSerializer(callback) { var serializerPromise = Promise$1.resolve(localforageSerializer); executeTwoCallbacks(serializerPromise, callback); return serializerPromise; }; LocalForage2.prototype.ready = function ready(callback) { var self2 = this; var promise = self2._driverSet.then(function() { if (self2._ready === null) { self2._ready = self2._initDriver(); } return self2._ready; }); executeTwoCallbacks(promise, callback, callback); return promise; }; LocalForage2.prototype.setDriver = function setDriver(drivers, callback, errorCallback) { var self2 = this; if (!isArray(drivers)) { drivers = [drivers]; } var supportedDrivers = this._getSupportedDrivers(drivers); function setDriverToConfig() { self2._config.driver = self2.driver(); } function extendSelfWithDriver(driver) { self2._extend(driver); setDriverToConfig(); self2._ready = self2._initStorage(self2._config); return self2._ready; } function initDriver(supportedDrivers2) { return function() { var currentDriverIndex = 0; function driverPromiseLoop() { while (currentDriverIndex < supportedDrivers2.length) { var driverName = supportedDrivers2[currentDriverIndex]; currentDriverIndex++; self2._dbInfo = null; self2._ready = null; return self2.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop); } setDriverToConfig(); var error3 = new Error("No available storage method found."); self2._driverSet = Promise$1.reject(error3); return self2._driverSet; } return driverPromiseLoop(); }; } var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function() { return Promise$1.resolve(); }) : Promise$1.resolve(); this._driverSet = oldDriverSetDone.then(function() { var driverName = supportedDrivers[0]; self2._dbInfo = null; self2._ready = null; return self2.getDriver(driverName).then(function(driver) { self2._driver = driver._driver; setDriverToConfig(); self2._wrapLibraryMethodsWithReady(); self2._initDriver = initDriver(supportedDrivers); }); })["catch"](function() { setDriverToConfig(); var error3 = new Error("No available storage method found."); self2._driverSet = Promise$1.reject(error3); return self2._driverSet; }); executeTwoCallbacks(this._driverSet, callback, errorCallback); return this._driverSet; }; LocalForage2.prototype.supports = function supports(driverName) { return !!DriverSupport[driverName]; }; LocalForage2.prototype._extend = function _extend(libraryMethodsAndProperties) { extend(this, libraryMethodsAndProperties); }; LocalForage2.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) { var supportedDrivers = []; for (var i = 0, len = drivers.length; i < len; i++) { var driverName = drivers[i]; if (this.supports(driverName)) { supportedDrivers.push(driverName); } } return supportedDrivers; }; LocalForage2.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() { for (var i = 0, len = LibraryMethods.length; i < len; i++) { callWhenReady(this, LibraryMethods[i]); } }; LocalForage2.prototype.createInstance = function createInstance(options) { return new LocalForage2(options); }; return LocalForage2; }(); var localforage_js = new LocalForage(); module4.exports = localforage_js; }, { "3": 3 }] }, {}, [4])(4); }); } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/offline.js var require_offline2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/offline.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_cjs(); var localForage = require_localforage(); var debugBuild = require_debug_build5(); var WINDOW = utils.GLOBAL_OBJ; var Offline = class _Offline { /** * @inheritDoc */ static __initStatic() { this.id = "Offline"; } /** * @inheritDoc */ /** * the current hub instance */ /** * maximum number of events to store while offline */ /** * event cache */ /** * @inheritDoc */ constructor(options = {}) { this.name = _Offline.id; this.maxStoredEvents = options.maxStoredEvents || 30; this.offlineEventStore = localForage.createInstance({ name: "sentry/offlineEventStore" }); } /** * @inheritDoc */ setupOnce(addGlobalEventProcessor, getCurrentHub) { this.hub = getCurrentHub(); if ("addEventListener" in WINDOW) { WINDOW.addEventListener("online", () => { void this._sendEvents().catch(() => { debugBuild.DEBUG_BUILD && utils.logger.warn("could not send cached events"); }); }); } const eventProcessor = (event) => { if (this.hub && this.hub.getIntegration(_Offline)) { if ("navigator" in WINDOW && "onLine" in WINDOW.navigator && !WINDOW.navigator.onLine) { debugBuild.DEBUG_BUILD && utils.logger.log("Event dropped due to being a offline - caching instead"); void this._cacheEvent(event).then((_event) => this._enforceMaxEvents()).catch((_error) => { debugBuild.DEBUG_BUILD && utils.logger.warn("could not cache event while offline"); }); return null; } } return event; }; eventProcessor.id = this.name; addGlobalEventProcessor(eventProcessor); if ("navigator" in WINDOW && "onLine" in WINDOW.navigator && WINDOW.navigator.onLine) { void this._sendEvents().catch(() => { debugBuild.DEBUG_BUILD && utils.logger.warn("could not send cached events"); }); } } /** * cache an event to send later * @param event an event */ async _cacheEvent(event) { return this.offlineEventStore.setItem(utils.uuid4(), utils.normalize(event)); } /** * purge excess events if necessary */ async _enforceMaxEvents() { const events = []; return this.offlineEventStore.iterate((event, cacheKey, _index) => { events.push({ cacheKey, event }); }).then( () => ( // this promise resolves when the iteration is finished this._purgeEvents( // purge all events past maxStoredEvents in reverse chronological order events.sort((a, b) => (b.event.timestamp || 0) - (a.event.timestamp || 0)).slice(this.maxStoredEvents < events.length ? this.maxStoredEvents : events.length).map((event) => event.cacheKey) ) ) ).catch((_error) => { debugBuild.DEBUG_BUILD && utils.logger.warn("could not enforce max events"); }); } /** * purge event from cache */ async _purgeEvent(cacheKey) { return this.offlineEventStore.removeItem(cacheKey); } /** * purge events from cache */ async _purgeEvents(cacheKeys) { return Promise.all(cacheKeys.map((cacheKey) => this._purgeEvent(cacheKey))).then(); } /** * send all events */ async _sendEvents() { return this.offlineEventStore.iterate((event, cacheKey, _index) => { if (this.hub) { this.hub.captureEvent(event); void this._purgeEvent(cacheKey).catch((_error) => { debugBuild.DEBUG_BUILD && utils.logger.warn("could not purge event from cache"); }); } else { debugBuild.DEBUG_BUILD && utils.logger.warn("no hub found - could not send cached event"); } }); } }; Offline.__initStatic(); exports2.Offline = Offline; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/reportingobserver.js var require_reportingobserver = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/reportingobserver.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var WINDOW = utils.GLOBAL_OBJ; var INTEGRATION_NAME = "ReportingObserver"; var SETUP_CLIENTS = /* @__PURE__ */ new WeakMap(); var _reportingObserverIntegration = (options = {}) => { const types = options.types || ["crash", "deprecation", "intervention"]; function handler(reports) { if (!SETUP_CLIENTS.has(core.getClient())) { return; } for (const report of reports) { core.withScope((scope) => { scope.setExtra("url", report.url); const label = `ReportingObserver [${report.type}]`; let details = "No details available"; if (report.body) { const plainBody = {}; for (const prop in report.body) { plainBody[prop] = report.body[prop]; } scope.setExtra("body", plainBody); if (report.type === "crash") { const body = report.body; details = [body.crashId || "", body.reason || ""].join(" ").trim() || details; } else { const body = report.body; details = body.message || details; } } core.captureMessage(`${label}: ${details}`); }); } } return { name: INTEGRATION_NAME, setupOnce() { if (!utils.supportsReportingObserver()) { return; } const observer = new WINDOW.ReportingObserver(handler, { buffered: true, types }); observer.observe(); }, setup(client2) { SETUP_CLIENTS.set(client2, true); } }; }; var reportingObserverIntegration = core.defineIntegration(_reportingObserverIntegration); var ReportingObserver = core.convertIntegrationFnToClass( INTEGRATION_NAME, reportingObserverIntegration ); exports2.ReportingObserver = ReportingObserver; exports2.reportingObserverIntegration = reportingObserverIntegration; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/rewriteframes.js var require_rewriteframes = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/rewriteframes.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var INTEGRATION_NAME = "RewriteFrames"; var _rewriteFramesIntegration = (options = {}) => { const root = options.root; const prefix = options.prefix || "app:///"; const iteratee = options.iteratee || ((frame) => { if (!frame.filename) { return frame; } const isWindowsFrame = /^[a-zA-Z]:\\/.test(frame.filename) || // or the presence of a backslash without a forward slash (which are not allowed on Windows) frame.filename.includes("\\") && !frame.filename.includes("/"); const startsWithSlash = /^\//.test(frame.filename); if (isWindowsFrame || startsWithSlash) { const filename = isWindowsFrame ? frame.filename.replace(/^[a-zA-Z]:/, "").replace(/\\/g, "/") : frame.filename; const base = root ? utils.relative(root, filename) : utils.basename(filename); frame.filename = `${prefix}${base}`; } return frame; }); function _processExceptionsEvent(event) { try { return { ...event, exception: { ...event.exception, // The check for this is performed inside `process` call itself, safe to skip here // eslint-disable-next-line @typescript-eslint/no-non-null-assertion values: event.exception.values.map((value) => ({ ...value, ...value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) } })) } }; } catch (_oO) { return event; } } function _processStacktrace(stacktrace) { return { ...stacktrace, frames: stacktrace && stacktrace.frames && stacktrace.frames.map((f) => iteratee(f)) }; } return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(originalEvent) { let processedEvent = originalEvent; if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) { processedEvent = _processExceptionsEvent(processedEvent); } return processedEvent; } }; }; var rewriteFramesIntegration = core.defineIntegration(_rewriteFramesIntegration); var RewriteFrames = core.convertIntegrationFnToClass( INTEGRATION_NAME, rewriteFramesIntegration ); exports2.RewriteFrames = RewriteFrames; exports2.rewriteFramesIntegration = rewriteFramesIntegration; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/sessiontiming.js var require_sessiontiming = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/sessiontiming.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var INTEGRATION_NAME = "SessionTiming"; var _sessionTimingIntegration = () => { const startTime = Date.now(); return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event) { const now = Date.now(); return { ...event, extra: { ...event.extra, ["session:start"]: startTime, ["session:duration"]: now - startTime, ["session:end"]: now } }; } }; }; var sessionTimingIntegration = core.defineIntegration(_sessionTimingIntegration); var SessionTiming = core.convertIntegrationFnToClass( INTEGRATION_NAME, sessionTimingIntegration ); exports2.SessionTiming = SessionTiming; exports2.sessionTimingIntegration = sessionTimingIntegration; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/transaction.js var require_transaction2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/transaction.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var INTEGRATION_NAME = "Transaction"; var transactionIntegration = () => { return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event) { const frames = _getFramesFromEvent(event); for (let i = frames.length - 1; i >= 0; i--) { const frame = frames[i]; if (frame.in_app === true) { event.transaction = _getTransaction(frame); break; } } return event; } }; }; var Transaction = core.convertIntegrationFnToClass(INTEGRATION_NAME, transactionIntegration); function _getFramesFromEvent(event) { const exception = event.exception && event.exception.values && event.exception.values[0]; return exception && exception.stacktrace && exception.stacktrace.frames || []; } function _getTransaction(frame) { return frame.module || frame.function ? `${frame.module || "?"}/${frame.function || "?"}` : ""; } exports2.Transaction = Transaction; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/httpclient.js var require_httpclient = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/httpclient.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var debugBuild = require_debug_build5(); var INTEGRATION_NAME = "HttpClient"; var _httpClientIntegration = (options = {}) => { const _options = { failedRequestStatusCodes: [[500, 599]], failedRequestTargets: [/.*/], ...options }; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client2) { _wrapFetch(client2, _options); _wrapXHR(client2, _options); } }; }; var httpClientIntegration = core.defineIntegration(_httpClientIntegration); var HttpClient = core.convertIntegrationFnToClass(INTEGRATION_NAME, httpClientIntegration); function _fetchResponseHandler(options, requestInfo, response, requestInit) { if (_shouldCaptureResponse(options, response.status, response.url)) { const request = _getRequest(requestInfo, requestInit); let requestHeaders, responseHeaders, requestCookies, responseCookies; if (_shouldSendDefaultPii()) { [{ headers: requestHeaders, cookies: requestCookies }, { headers: responseHeaders, cookies: responseCookies }] = [ { cookieHeader: "Cookie", obj: request }, { cookieHeader: "Set-Cookie", obj: response } ].map(({ cookieHeader, obj }) => { const headers = _extractFetchHeaders(obj.headers); let cookies; try { const cookieString = headers[cookieHeader] || headers[cookieHeader.toLowerCase()] || void 0; if (cookieString) { cookies = _parseCookieString(cookieString); } } catch (e2) { debugBuild.DEBUG_BUILD && utils.logger.log(`Could not extract cookies from header ${cookieHeader}`); } return { headers, cookies }; }); } const event = _createEvent({ url: request.url, method: request.method, status: response.status, requestHeaders, responseHeaders, requestCookies, responseCookies }); core.captureEvent(event); } } function _xhrResponseHandler(options, xhr, method, headers) { if (_shouldCaptureResponse(options, xhr.status, xhr.responseURL)) { let requestHeaders, responseCookies, responseHeaders; if (_shouldSendDefaultPii()) { try { const cookieString = xhr.getResponseHeader("Set-Cookie") || xhr.getResponseHeader("set-cookie") || void 0; if (cookieString) { responseCookies = _parseCookieString(cookieString); } } catch (e2) { debugBuild.DEBUG_BUILD && utils.logger.log("Could not extract cookies from response headers"); } try { responseHeaders = _getXHRResponseHeaders(xhr); } catch (e2) { debugBuild.DEBUG_BUILD && utils.logger.log("Could not extract headers from response"); } requestHeaders = headers; } const event = _createEvent({ url: xhr.responseURL, method, status: xhr.status, requestHeaders, // Can't access request cookies from XHR responseHeaders, responseCookies }); core.captureEvent(event); } } function _getResponseSizeFromHeaders(headers) { if (headers) { const contentLength = headers["Content-Length"] || headers["content-length"]; if (contentLength) { return parseInt(contentLength, 10); } } return void 0; } function _parseCookieString(cookieString) { return cookieString.split("; ").reduce((acc, cookie) => { const [key, value] = cookie.split("="); acc[key] = value; return acc; }, {}); } function _extractFetchHeaders(headers) { const result = {}; headers.forEach((value, key) => { result[key] = value; }); return result; } function _getXHRResponseHeaders(xhr) { const headers = xhr.getAllResponseHeaders(); if (!headers) { return {}; } return headers.split("\r\n").reduce((acc, line) => { const [key, value] = line.split(": "); acc[key] = value; return acc; }, {}); } function _isInGivenRequestTargets(failedRequestTargets, target) { return failedRequestTargets.some((givenRequestTarget) => { if (typeof givenRequestTarget === "string") { return target.includes(givenRequestTarget); } return givenRequestTarget.test(target); }); } function _isInGivenStatusRanges(failedRequestStatusCodes, status3) { return failedRequestStatusCodes.some((range) => { if (typeof range === "number") { return range === status3; } return status3 >= range[0] && status3 <= range[1]; }); } function _wrapFetch(client2, options) { if (!utils.supportsNativeFetch()) { return; } utils.addFetchInstrumentationHandler((handlerData) => { if (core.getClient() !== client2) { return; } const { response, args: args2 } = handlerData; const [requestInfo, requestInit] = args2; if (!response) { return; } _fetchResponseHandler(options, requestInfo, response, requestInit); }); } function _wrapXHR(client2, options) { if (!("XMLHttpRequest" in utils.GLOBAL_OBJ)) { return; } utils.addXhrInstrumentationHandler((handlerData) => { if (core.getClient() !== client2) { return; } const xhr = handlerData.xhr; const sentryXhrData = xhr[utils.SENTRY_XHR_DATA_KEY]; if (!sentryXhrData) { return; } const { method, request_headers: headers } = sentryXhrData; try { _xhrResponseHandler(options, xhr, method, headers); } catch (e2) { debugBuild.DEBUG_BUILD && utils.logger.warn("Error while extracting response event form XHR response", e2); } }); } function _shouldCaptureResponse(options, status3, url3) { return _isInGivenStatusRanges(options.failedRequestStatusCodes, status3) && _isInGivenRequestTargets(options.failedRequestTargets, url3) && !core.isSentryRequestUrl(url3, core.getClient()); } function _createEvent(data) { const message2 = `HTTP Client Error with status code: ${data.status}`; const event = { message: message2, exception: { values: [ { type: "Error", value: message2 } ] }, request: { url: data.url, method: data.method, headers: data.requestHeaders, cookies: data.requestCookies }, contexts: { response: { status_code: data.status, headers: data.responseHeaders, cookies: data.responseCookies, body_size: _getResponseSizeFromHeaders(data.responseHeaders) } } }; utils.addExceptionMechanism(event, { type: "http.client", handled: false }); return event; } function _getRequest(requestInfo, requestInit) { if (!requestInit && requestInfo instanceof Request) { return requestInfo; } if (requestInfo instanceof Request && requestInfo.bodyUsed) { return requestInfo; } return new Request(requestInfo, requestInit); } function _shouldSendDefaultPii() { const client2 = core.getClient(); return client2 ? Boolean(client2.getOptions().sendDefaultPii) : false; } exports2.HttpClient = HttpClient; exports2.httpClientIntegration = httpClientIntegration; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/contextlines.js var require_contextlines2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/contextlines.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var utils = require_cjs(); var WINDOW = utils.GLOBAL_OBJ; var DEFAULT_LINES_OF_CONTEXT = 7; var INTEGRATION_NAME = "ContextLines"; var _contextLinesIntegration = (options = {}) => { const contextLines = options.frameContextLines != null ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event) { return addSourceContext(event, contextLines); } }; }; var contextLinesIntegration = core.defineIntegration(_contextLinesIntegration); var ContextLines = core.convertIntegrationFnToClass(INTEGRATION_NAME, contextLinesIntegration); function addSourceContext(event, contextLines) { const doc = WINDOW.document; const htmlFilename = WINDOW.location && utils.stripUrlQueryAndFragment(WINDOW.location.href); if (!doc || !htmlFilename) { return event; } const exceptions = event.exception && event.exception.values; if (!exceptions || !exceptions.length) { return event; } const html = doc.documentElement.innerHTML; if (!html) { return event; } const htmlLines = ["", "", ...html.split("\n"), ""]; exceptions.forEach((exception) => { const stacktrace = exception.stacktrace; if (stacktrace && stacktrace.frames) { stacktrace.frames = stacktrace.frames.map( (frame) => applySourceContextToFrame(frame, htmlLines, htmlFilename, contextLines) ); } }); return event; } function applySourceContextToFrame(frame, htmlLines, htmlFilename, linesOfContext) { if (frame.filename !== htmlFilename || !frame.lineno || !htmlLines.length) { return frame; } utils.addContextToFrame(htmlLines, frame, linesOfContext); return frame; } exports2.ContextLines = ContextLines; exports2.applySourceContextToFrame = applySourceContextToFrame; exports2.contextLinesIntegration = contextLinesIntegration; } }); // ../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/index.js var require_cjs4 = __commonJS2({ "../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var captureconsole = require_captureconsole(); var debug2 = require_debug(); var dedupe = require_dedupe(); var extraerrordata = require_extraerrordata(); var offline = require_offline2(); var reportingobserver = require_reportingobserver(); var rewriteframes = require_rewriteframes(); var sessiontiming = require_sessiontiming(); var transaction = require_transaction2(); var httpclient = require_httpclient(); var contextlines = require_contextlines2(); exports2.CaptureConsole = captureconsole.CaptureConsole; exports2.captureConsoleIntegration = captureconsole.captureConsoleIntegration; exports2.Debug = debug2.Debug; exports2.debugIntegration = debug2.debugIntegration; exports2.Dedupe = dedupe.Dedupe; exports2.dedupeIntegration = dedupe.dedupeIntegration; exports2.ExtraErrorData = extraerrordata.ExtraErrorData; exports2.extraErrorDataIntegration = extraerrordata.extraErrorDataIntegration; exports2.Offline = offline.Offline; exports2.ReportingObserver = reportingobserver.ReportingObserver; exports2.reportingObserverIntegration = reportingobserver.reportingObserverIntegration; exports2.RewriteFrames = rewriteframes.RewriteFrames; exports2.rewriteFramesIntegration = rewriteframes.rewriteFramesIntegration; exports2.SessionTiming = sessiontiming.SessionTiming; exports2.sessionTimingIntegration = sessiontiming.sessionTimingIntegration; exports2.Transaction = transaction.Transaction; exports2.HttpClient = httpclient.HttpClient; exports2.httpClientIntegration = httpclient.httpClientIntegration; exports2.ContextLines = contextlines.ContextLines; exports2.contextLinesIntegration = contextlines.contextLinesIntegration; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/common.js var require_common2 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/common.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var replacements2 = [ ["january", "1"], ["february", "2"], ["march", "3"], ["april", "4"], ["may", "5"], ["june", "6"], ["july", "7"], ["august", "8"], ["september", "9"], ["october", "10"], ["november", "11"], ["december", "12"], ["jan", "1"], ["feb", "2"], ["mar", "3"], ["apr", "4"], ["may", "5"], ["jun", "6"], ["jul", "7"], ["aug", "8"], ["sep", "9"], ["oct", "10"], ["nov", "11"], ["dec", "12"], ["sunday", "0"], ["monday", "1"], ["tuesday", "2"], ["wednesday", "3"], ["thursday", "4"], ["friday", "5"], ["saturday", "6"], ["sun", "0"], ["mon", "1"], ["tue", "2"], ["wed", "3"], ["thu", "4"], ["fri", "5"], ["sat", "6"] ]; function replaceCronNames(cronExpression) { return replacements2.reduce( // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor (acc, [name, replacement]) => acc.replace(new RegExp(name, "gi"), replacement), cronExpression ); } exports2.replaceCronNames = replaceCronNames; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/cron.js var require_cron = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/cron.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var common2 = require_common2(); var ERROR_TEXT = "Automatic instrumentation of CronJob only supports crontab string"; function instrumentCron(lib, monitorSlug) { let jobScheduled = false; return new Proxy(lib, { construct(target, args2) { const [cronTime, onTick, onComplete, start, timeZone, ...rest] = args2; if (typeof cronTime !== "string") { throw new Error(ERROR_TEXT); } if (jobScheduled) { throw new Error(`A job named '${monitorSlug}' has already been scheduled`); } jobScheduled = true; const cronString = common2.replaceCronNames(cronTime); function monitoredTick(context, onComplete2) { return core.withMonitor( monitorSlug, () => { return onTick(context, onComplete2); }, { schedule: { type: "crontab", value: cronString }, timezone: timeZone || void 0 } ); } return new target(cronTime, monitoredTick, onComplete, start, timeZone, ...rest); }, get(target, prop) { if (prop === "from") { return (param2) => { const { cronTime, onTick, timeZone } = param2; if (typeof cronTime !== "string") { throw new Error(ERROR_TEXT); } if (jobScheduled) { throw new Error(`A job named '${monitorSlug}' has already been scheduled`); } jobScheduled = true; const cronString = common2.replaceCronNames(cronTime); param2.onTick = (context, onComplete) => { return core.withMonitor( monitorSlug, () => { return onTick(context, onComplete); }, { schedule: { type: "crontab", value: cronString }, timezone: timeZone || void 0 } ); }; return target.from(param2); }; } else { return target[prop]; } } }); } exports2.instrumentCron = instrumentCron; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/node-cron.js var require_node_cron = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/node-cron.js"(exports2) { var { _optionalChain } = require_cjs(); Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var common2 = require_common2(); function instrumentNodeCron(lib) { return new Proxy(lib, { get(target, prop) { if (prop === "schedule" && target.schedule) { return new Proxy(target.schedule, { apply(target2, thisArg, argArray) { const [expression, , options] = argArray; if (!_optionalChain([options, "optionalAccess", (_) => _.name])) { throw new Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.'); } return core.withMonitor( options.name, () => { return target2.apply(thisArg, argArray); }, { schedule: { type: "crontab", value: common2.replaceCronNames(expression) }, timezone: _optionalChain([options, "optionalAccess", (_2) => _2.timezone]) } ); } }); } else { return target[prop]; } } }); } exports2.instrumentNodeCron = instrumentNodeCron; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/node-schedule.js var require_node_schedule = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/node-schedule.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var common2 = require_common2(); function instrumentNodeSchedule(lib) { return new Proxy(lib, { get(target, prop) { if (prop === "scheduleJob") { return new Proxy(target.scheduleJob, { apply(target2, thisArg, argArray) { const [nameOrExpression, expressionOrCallback] = argArray; if (typeof nameOrExpression !== "string" || typeof expressionOrCallback !== "string") { throw new Error( "Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string" ); } const monitorSlug = nameOrExpression; const expression = expressionOrCallback; return core.withMonitor( monitorSlug, () => { return target2.apply(thisArg, argArray); }, { schedule: { type: "crontab", value: common2.replaceCronNames(expression) } } ); } }); } return target[prop]; } }); } exports2.instrumentNodeSchedule = instrumentNodeSchedule; } }); // ../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/index.js var require_cjs5 = __commonJS2({ "../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/index.js"(exports2) { Object.defineProperty(exports2, "__esModule", { value: true }); var core = require_cjs2(); var index = require_tracing2(); var client2 = require_client(); var http3 = require_http(); var sdk = require_sdk2(); var utils = require_cjs(); var utils$1 = require_utils6(); var module$1 = require_module(); var legacy = require_legacy(); var handlers = require_handlers2(); var index$5 = require_integrations2(); var integrations$1 = require_integrations3(); var integrations = require_cjs4(); var console2 = require_console2(); var onuncaughtexception = require_onuncaughtexception(); var onunhandledrejection = require_onunhandledrejection(); var modules = require_modules(); var contextlines = require_contextlines(); var context = require_context(); var index$1 = require_local_variables(); var spotlight = require_spotlight(); var index$2 = require_anr2(); var index$3 = require_hapi(); var index$4 = require_undici(); var http$1 = require_http3(); var trpc = require_trpc(); var cron$1 = require_cron(); var nodeCron = require_node_cron(); var nodeSchedule = require_node_schedule(); var getModuleFromFilename = module$1.createGetModuleFromFilename(); var Integrations = { // eslint-disable-next-line deprecation/deprecation ...core.Integrations, ...index$5, ...integrations$1 }; var cron = { instrumentCron: cron$1.instrumentCron, instrumentNodeCron: nodeCron.instrumentNodeCron, instrumentNodeSchedule: nodeSchedule.instrumentNodeSchedule }; exports2.Hub = core.Hub; exports2.SDK_VERSION = core.SDK_VERSION; exports2.SEMANTIC_ATTRIBUTE_SENTRY_OP = core.SEMANTIC_ATTRIBUTE_SENTRY_OP; exports2.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN; exports2.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = core.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE; exports2.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE; exports2.Scope = core.Scope; exports2.addBreadcrumb = core.addBreadcrumb; exports2.addEventProcessor = core.addEventProcessor; exports2.addGlobalEventProcessor = core.addGlobalEventProcessor; exports2.addIntegration = core.addIntegration; exports2.captureCheckIn = core.captureCheckIn; exports2.captureEvent = core.captureEvent; exports2.captureException = core.captureException; exports2.captureMessage = core.captureMessage; exports2.captureSession = core.captureSession; exports2.close = core.close; exports2.configureScope = core.configureScope; exports2.continueTrace = core.continueTrace; exports2.createTransport = core.createTransport; exports2.endSession = core.endSession; exports2.extractTraceparentData = core.extractTraceparentData; exports2.flush = core.flush; exports2.functionToStringIntegration = core.functionToStringIntegration; exports2.getActiveSpan = core.getActiveSpan; exports2.getActiveTransaction = core.getActiveTransaction; exports2.getClient = core.getClient; exports2.getCurrentHub = core.getCurrentHub; exports2.getCurrentScope = core.getCurrentScope; exports2.getGlobalScope = core.getGlobalScope; exports2.getHubFromCarrier = core.getHubFromCarrier; exports2.getIsolationScope = core.getIsolationScope; exports2.getSpanStatusFromHttpCode = core.getSpanStatusFromHttpCode; exports2.inboundFiltersIntegration = core.inboundFiltersIntegration; exports2.isInitialized = core.isInitialized; exports2.lastEventId = core.lastEventId; exports2.linkedErrorsIntegration = core.linkedErrorsIntegration; exports2.makeMain = core.makeMain; exports2.metrics = core.metrics; exports2.parameterize = core.parameterize; exports2.requestDataIntegration = core.requestDataIntegration; exports2.runWithAsyncContext = core.runWithAsyncContext; exports2.setContext = core.setContext; exports2.setCurrentClient = core.setCurrentClient; exports2.setExtra = core.setExtra; exports2.setExtras = core.setExtras; exports2.setHttpStatus = core.setHttpStatus; exports2.setMeasurement = core.setMeasurement; exports2.setTag = core.setTag; exports2.setTags = core.setTags; exports2.setUser = core.setUser; exports2.spanStatusfromHttpCode = core.spanStatusfromHttpCode; exports2.startActiveSpan = core.startActiveSpan; exports2.startInactiveSpan = core.startInactiveSpan; exports2.startSession = core.startSession; exports2.startSpan = core.startSpan; exports2.startSpanManual = core.startSpanManual; exports2.startTransaction = core.startTransaction; exports2.trace = core.trace; exports2.withActiveSpan = core.withActiveSpan; exports2.withIsolationScope = core.withIsolationScope; exports2.withMonitor = core.withMonitor; exports2.withScope = core.withScope; exports2.autoDiscoverNodePerformanceMonitoringIntegrations = index.autoDiscoverNodePerformanceMonitoringIntegrations; exports2.NodeClient = client2.NodeClient; exports2.makeNodeTransport = http3.makeNodeTransport; exports2.defaultIntegrations = sdk.defaultIntegrations; exports2.defaultStackParser = sdk.defaultStackParser; exports2.getDefaultIntegrations = sdk.getDefaultIntegrations; exports2.getSentryRelease = sdk.getSentryRelease; exports2.init = sdk.init; exports2.DEFAULT_USER_INCLUDES = utils.DEFAULT_USER_INCLUDES; exports2.addRequestDataToEvent = utils.addRequestDataToEvent; exports2.extractRequestData = utils.extractRequestData; exports2.deepReadDirSync = utils$1.deepReadDirSync; exports2.createGetModuleFromFilename = module$1.createGetModuleFromFilename; exports2.enableAnrDetection = legacy.enableAnrDetection; exports2.Handlers = handlers; exports2.captureConsoleIntegration = integrations.captureConsoleIntegration; exports2.debugIntegration = integrations.debugIntegration; exports2.dedupeIntegration = integrations.dedupeIntegration; exports2.extraErrorDataIntegration = integrations.extraErrorDataIntegration; exports2.httpClientIntegration = integrations.httpClientIntegration; exports2.reportingObserverIntegration = integrations.reportingObserverIntegration; exports2.rewriteFramesIntegration = integrations.rewriteFramesIntegration; exports2.sessionTimingIntegration = integrations.sessionTimingIntegration; exports2.consoleIntegration = console2.consoleIntegration; exports2.onUncaughtExceptionIntegration = onuncaughtexception.onUncaughtExceptionIntegration; exports2.onUnhandledRejectionIntegration = onunhandledrejection.onUnhandledRejectionIntegration; exports2.modulesIntegration = modules.modulesIntegration; exports2.contextLinesIntegration = contextlines.contextLinesIntegration; exports2.nodeContextIntegration = context.nodeContextIntegration; exports2.localVariablesIntegration = index$1.localVariablesIntegration; exports2.spotlightIntegration = spotlight.spotlightIntegration; exports2.anrIntegration = index$2.anrIntegration; exports2.hapiErrorPlugin = index$3.hapiErrorPlugin; exports2.hapiIntegration = index$3.hapiIntegration; exports2.Undici = index$4.Undici; exports2.nativeNodeFetchintegration = index$4.nativeNodeFetchintegration; exports2.Http = http$1.Http; exports2.httpIntegration = http$1.httpIntegration; exports2.trpcMiddleware = trpc.trpcMiddleware; exports2.Integrations = Integrations; exports2.cron = cron; exports2.getModuleFromFilename = getModuleFromFilename; } }); // src/util/constants.ts var constants_exports = {}; __export3(constants_exports, { SENTRY_DSN: () => SENTRY_DSN }); var SENTRY_DSN; var init_constants = __esm({ "src/util/constants.ts"() { "use strict"; SENTRY_DSN = void 0; } }); // ../../internals/get-package-json/dist/index.js var require_dist3 = __commonJS2({ "../../internals/get-package-json/dist/index.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var src_exports2 = {}; __export4(src_exports2, { getPackageJSON: () => getPackageJSON2 }); module2.exports = __toCommonJS4(src_exports2); var import_fs11 = __toESM4(__require("fs")); var import_path45 = __toESM4(__require("path")); var import_url20 = __require("url"); var cache = /* @__PURE__ */ new Map(); function getPackageJSONPath(dir) { return import_path45.default.join(dir, "package.json"); } function captureCallerCallSite() { const _prepareStackTrace = Error.prepareStackTrace; let callSite; try { Error.prepareStackTrace = (_, stack2) => stack2; const callSites = new Error().stack; callSite = callSites[2]; } finally { Error.prepareStackTrace = _prepareStackTrace; } return callSite; } function getPackageJSON2() { const callSite = captureCallerCallSite(); let filePath = callSite.getFileName() || callSite.getEvalOrigin(); if (filePath.startsWith("file://")) { filePath = (0, import_url20.fileURLToPath)(filePath); } let rootDir = import_path45.default.dirname(filePath); let packageJSONPath = getPackageJSONPath(rootDir); while (!import_fs11.default.existsSync(packageJSONPath)) { rootDir = import_path45.default.join(rootDir, ".."); packageJSONPath = getPackageJSONPath(rootDir); } let packageJSON = cache.get(packageJSONPath); if (!packageJSON) { packageJSON = JSON.parse(import_fs11.default.readFileSync(packageJSONPath, "utf-8")); cache.set(packageJSONPath, packageJSON); } return packageJSON; } } }); // src/util/pkg.ts var pkg_exports = {}; __export3(pkg_exports, { default: () => pkg_default }); var import_get_package_json, pkg_default; var init_pkg = __esm({ "src/util/pkg.ts"() { "use strict"; import_get_package_json = __toESM3(require_dist3(), 1); pkg_default = (0, import_get_package_json.getPackageJSON)(); } }); // src/util/humanize-path.ts import { homedir } from "os"; import { resolve } from "path"; function humanizePath(path11) { const resolved = resolve(path11); const _homedir = homedir(); return resolved.indexOf(_homedir) === 0 ? `~${resolved.slice(_homedir.length)}` : resolved; } var init_humanize_path = __esm({ "src/util/humanize-path.ts"() { "use strict"; } }); // ../../node_modules/.pnpm/title@3.4.1/node_modules/title/lib/lower-case.js var require_lower_case = __commonJS2({ "../../node_modules/.pnpm/title@3.4.1/node_modules/title/lib/lower-case.js"(exports2, module2) { var conjunctions = [ "for", "and", "nor", "but", "or", "yet", "so" ]; var articles = [ "a", "an", "the" ]; var prepositions = [ "aboard", "about", "above", "across", "after", "against", "along", "amid", "among", "anti", "around", "as", "at", "before", "behind", "below", "beneath", "beside", "besides", "between", "beyond", "but", "by", "concerning", "considering", "despite", "down", "during", "except", "excepting", "excluding", "following", "for", "from", "in", "inside", "into", "like", "minus", "near", "of", "off", "on", "onto", "opposite", "over", "past", "per", "plus", "regarding", "round", "save", "since", "than", "through", "to", "toward", "towards", "under", "underneath", "unlike", "until", "up", "upon", "versus", "via", "with", "within", "without" ]; module2.exports = /* @__PURE__ */ new Set([ ...conjunctions, ...articles, ...prepositions ]); } }); // ../../node_modules/.pnpm/title@3.4.1/node_modules/title/lib/specials.js var require_specials = __commonJS2({ "../../node_modules/.pnpm/title@3.4.1/node_modules/title/lib/specials.js"(exports2, module2) { var intended = [ "ZEIT", "ZEIT Inc.", "CLI", "API", "HTTP", "HTTPS", "JSX", "DNS", "URL", "now.sh", "now.json", "CI", "CDN", "package.json", "GitHub", "CSS", "JS", "HTML", "WordPress", "JavaScript", "Next.js", "Node.js" ]; module2.exports = intended; } }); // ../../node_modules/.pnpm/title@3.4.1/node_modules/title/lib/index.js var require_lib4 = __commonJS2({ "../../node_modules/.pnpm/title@3.4.1/node_modules/title/lib/index.js"(exports2, module2) { var lowerCase = require_lower_case(); var specials = require_specials(); var regex = /(?:(?:(\s?(?:^|[.\(\)!?;:"-])\s*)(\w))|(\w))(\w*[’']*\w*)/g; var convertToRegExp = (specials2) => specials2.map((s) => [new RegExp(`\\b${s}\\b`, "gi"), s]); function parseMatch(match) { const firstCharacter = match[0]; if (/\s/.test(firstCharacter)) { return match.substr(1); } if (/[\(\)]/.test(firstCharacter)) { return null; } return match; } module2.exports = (str, options = {}) => { str = str.toLowerCase().replace(regex, (m, lead = "", forced, lower, rest) => { const parsedMatch = parseMatch(m); if (!parsedMatch) { return m; } if (!forced) { const fullLower = lower + rest; if (lowerCase.has(fullLower)) { return parsedMatch; } } return lead + (lower || forced).toUpperCase() + rest; }); const customSpecials = options.special || []; const replace = [...specials, ...customSpecials]; const replaceRegExp = convertToRegExp(replace); replaceRegExp.forEach(([pattern, s]) => { str = str.replace(pattern, s); }); return str; }; } }); // src/util/output/cmd.ts function cmd(text) { return `${import_chalk4.default.gray("`")}${import_chalk4.default.cyan(text)}${import_chalk4.default.gray("`")}`; } var import_chalk4; var init_cmd = __esm({ "src/util/output/cmd.ts"() { "use strict"; import_chalk4 = __toESM3(require_source(), 1); } }); // src/util/pkg-name.ts function getTitleName() { const str = packageName; return (0, import_title.default)(str); } function getCommandName(subcommands) { let vercel = packageName; if (subcommands) { vercel = `${vercel} ${subcommands}`; } return cmd(vercel); } var import_title, packageName, logo; var init_pkg_name = __esm({ "src/util/pkg-name.ts"() { "use strict"; import_title = __toESM3(require_lib4(), 1); init_pkg(); init_cmd(); packageName = pkg_default.name; logo = "\u25B2"; } }); // src/util/get-flags-specification.ts function getFlagsSpecification(options) { const flagsSpecification = {}; for (const option of options) { flagsSpecification[`--${option.name}`] = option.type; if (option.shorthand) { flagsSpecification[`-${option.shorthand}`] = `--${option.name}`; } } return flagsSpecification; } var init_get_flags_specification = __esm({ "src/util/get-flags-specification.ts"() { "use strict"; } }); // src/util/arg-common.ts var globalCommandOptions, GLOBAL_OPTIONS, arg_common_default, yesOption, nextOption, confirmOption, limitOption, forceOption, formatOption, jsonOption; var init_arg_common = __esm({ "src/util/arg-common.ts"() { "use strict"; init_get_flags_specification(); globalCommandOptions = [ { name: "help", shorthand: "h", type: Boolean, description: "Output usage information", deprecated: false }, { name: "version", shorthand: "v", type: Boolean, description: "Output the version number", deprecated: false }, { name: "cwd", shorthand: null, type: String, argument: "DIR", description: "Sets the current working directory for a single run of a command", deprecated: false }, { name: "local-config", shorthand: "A", type: String, argument: "FILE", description: "Path to the local `vercel.json` file", deprecated: false }, { name: "global-config", shorthand: "Q", type: String, argument: "DIR", description: "Path to the global `.vercel` directory", deprecated: false }, { name: "debug", shorthand: "d", type: Boolean, description: "Debug mode (default off)", deprecated: false }, { name: "no-color", shorthand: null, type: Boolean, description: "No color mode (default off)", deprecated: false }, { name: "scope", shorthand: "S", type: String, description: "Set a custom scope", deprecated: false }, { name: "token", shorthand: "t", type: String, argument: "TOKEN", description: "Login token", deprecated: false }, { name: "team", shorthand: "T", type: String, deprecated: false }, { name: "api", shorthand: null, type: String, deprecated: false } ]; GLOBAL_OPTIONS = getFlagsSpecification(globalCommandOptions); arg_common_default = () => GLOBAL_OPTIONS; yesOption = { name: "yes", shorthand: "y", type: Boolean, deprecated: false, description: "Accept default value for all prompts" }; nextOption = { name: "next", shorthand: "N", type: Number, deprecated: false, description: "Show next page of results", argument: "MS" }; confirmOption = { name: "confirm", shorthand: "c", type: Boolean, deprecated: true }; limitOption = { name: "limit", shorthand: null, type: Number, deprecated: false, description: "Number of results to return per page (default: 20, max: 100)", argument: "NUMBER" }; forceOption = { name: "force", shorthand: "f", type: Boolean, deprecated: false }; formatOption = { name: "format", shorthand: "F", type: String, argument: "FORMAT", description: "Specify the output format (json)", deprecated: false }; jsonOption = { name: "json", shorthand: null, type: Boolean, deprecated: true, description: "DEPRECATED: Use --format=json instead" }; } }); // src/commands/alias/command.ts var setSubcommand, listSubcommand, removeSubcommand, aliasCommand; var init_command = __esm({ "src/commands/alias/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); setSubcommand = { name: "set", aliases: [], description: "Create a new alias", default: true, arguments: [ { name: "deployment", required: true }, { name: "alias", required: true } ], options: [], examples: [] }; listSubcommand = { name: "list", aliases: ["ls"], description: "Show all aliases", arguments: [], options: [limitOption, nextOption, formatOption], examples: [] }; removeSubcommand = { name: "remove", aliases: ["rm"], description: "Remove an alias using its hostname", arguments: [ { name: "alias", required: true } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when removing an alias" } ], examples: [] }; aliasCommand = { name: "alias", aliases: ["aliases", "ln"], description: "Interact with deployment aliases", arguments: [], subcommands: [listSubcommand, removeSubcommand, setSubcommand], options: [], examples: [ { name: "Add a new alias to `my-api.vercel.app`", value: `${packageName} alias set api-ownv3nc9f8.vercel.app my-api.vercel.app` }, { name: "Custom domains work as alias targets", value: `${packageName} alias set api-ownv3nc9f8.vercel.app my-api.com` }, { name: "The subcommand `set` is the default and can be skipped. Protocols in the URLs are unneeded and ignored", value: `${packageName} alias api-ownv3nc9f8.vercel.app my-api.com` } ] }; } }); // src/commands/api/command.ts var listSubcommand2, apiCommand; var init_command2 = __esm({ "src/commands/api/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); listSubcommand2 = { name: "list", aliases: ["ls"], description: "List all available API endpoints", arguments: [], options: [ formatOption, { name: "refresh", shorthand: null, type: Boolean, deprecated: false, description: "Force refresh the cached OpenAPI spec" } ], examples: [ { name: "List all endpoints in table format", value: `${packageName} api ls` }, { name: "List all endpoints as JSON", value: `${packageName} api ls --format json` } ] }; apiCommand = { name: "api", aliases: [], description: "Make authenticated HTTP requests to the Vercel API", arguments: [ { name: "endpoint", required: false } ], subcommands: [listSubcommand2], options: [ { name: "method", shorthand: "X", type: String, argument: "METHOD", deprecated: false, description: "HTTP method (GET, POST, PUT, PATCH, DELETE). Defaults to GET, or POST if body is provided" }, { name: "field", shorthand: "F", type: [String], argument: "KEY=VALUE", deprecated: false, description: "Add a typed parameter (numbers, booleans parsed). Use @file for file contents" }, { name: "raw-field", shorthand: "f", type: [String], argument: "KEY=VALUE", deprecated: false, description: "Add a string parameter (no type parsing)" }, { name: "header", shorthand: "H", type: [String], argument: "KEY:VALUE", deprecated: false, description: "Add a custom HTTP header" }, { name: "input", shorthand: null, type: String, argument: "FILE", deprecated: false, description: "Read request body from file (use - for stdin)" }, { name: "paginate", shorthand: null, type: Boolean, deprecated: false, description: "Fetch all pages of results" }, { name: "include", shorthand: "i", type: Boolean, deprecated: false, description: "Include response headers in output" }, { name: "silent", shorthand: null, type: Boolean, deprecated: false, description: "Suppress response output" }, { name: "verbose", shorthand: null, type: Boolean, deprecated: false, description: "Show debug information including full request/response" }, { name: "raw", shorthand: null, type: Boolean, deprecated: false, description: "Output raw JSON without pretty-printing" }, { name: "refresh", shorthand: null, type: Boolean, deprecated: false, description: "Force refresh the cached OpenAPI spec" }, { name: "generate", shorthand: null, type: String, argument: "FORMAT", deprecated: false, description: "Generate output instead of executing (e.g., --generate=curl)" }, { name: "dangerously-skip-permissions", shorthand: null, type: Boolean, deprecated: false, description: "Skip confirmation prompts for DELETE operations (use with caution)" } ], examples: [ { name: "Get current user information", value: `${packageName} api /v2/user` }, { name: "List projects with team scope", value: `${packageName} api /v9/projects --scope my-team` }, { name: "Create a new project", value: `${packageName} api /v10/projects -X POST -F name=my-project` }, { name: "Delete a deployment", value: `${packageName} api /v13/deployments/dpl_abc123 -X DELETE` }, { name: "Paginate through all deployments", value: `${packageName} api /v6/deployments --paginate` }, { name: "Post JSON from file", value: `${packageName} api /v10/projects -X POST --input config.json` }, { name: "Add custom header", value: `${packageName} api /v2/user -H "X-Custom-Header: value"` }, { name: "Interactive mode (select endpoint)", value: `${packageName} api` } ] }; } }); // src/commands/bisect/command.ts var bisectCommand; var init_command3 = __esm({ "src/commands/bisect/command.ts"() { "use strict"; init_pkg_name(); bisectCommand = { name: "bisect", aliases: [], description: "Bisect the current project interactively or via an automated test script.", arguments: [], options: [ { name: "bad", description: "Known bad URL", argument: "URL", shorthand: "b", type: String, deprecated: false }, { name: "good", description: "Known good URL", argument: "URL", shorthand: "g", type: String, deprecated: false }, { name: "open", description: "Automatically open each URL in the browser", argument: "URL", shorthand: "o", type: Boolean, deprecated: false }, { name: "path", description: "Subpath of the deployment URL to test", argument: "PATH", shorthand: "p", type: String, deprecated: false }, { name: "run", description: "Test script to run for each deployment", argument: "SCRIPT", shorthand: "r", type: String, deprecated: false } ], examples: [ { name: "Bisect the current project interactively", value: `${packageName} bisect` }, { name: "Bisect with a known bad deployment", value: `${packageName} bisect --bad example-310pce9i0.vercel.app` }, { name: "Automated bisect with a run script", value: `${packageName} bisect --run ./test.sh` } ] }; } }); // src/commands/build/command.ts var buildCommand; var init_command4 = __esm({ "src/commands/build/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); buildCommand = { name: "build", aliases: [], description: "Build the project.", arguments: [], options: [ { name: "prod", description: "Build a production deployment", shorthand: null, type: Boolean, deprecated: false }, { name: "target", shorthand: null, type: String, argument: "TARGET", deprecated: false, description: "Specify the target environment" }, { name: "output", description: "Directory where built assets will be written to", shorthand: null, argument: "DIR", type: String, deprecated: false }, { ...yesOption, description: "Skip the confirmation prompt about pulling environment variables and project settings when not found locally" }, { name: "standalone", description: "Create a standalone build with all dependencies inlined into function output folders", shorthand: null, type: Boolean, deprecated: false } ], examples: [ { name: "Build the project", value: `${packageName} build` }, { name: "Build the project in a specific directory", value: `${packageName} build --cwd ./path-to-project` } ] }; } }); // src/commands/cache/command.ts var purgeSubcommand, invalidateSubcommand, dangerouslyDeleteSubcommand, cacheCommand; var init_command5 = __esm({ "src/commands/cache/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); purgeSubcommand = { name: "purge", aliases: [], description: "Purge cache for the current project", arguments: [], options: [ yesOption, { name: "type", description: "Type of cache to purge", shorthand: null, type: String, argument: "TYPE", deprecated: false } ], examples: [ { name: "Purge all caches for the current project", value: `${packageName} cache purge` }, { name: "Purge only the CDN cache", value: `${packageName} cache purge --type cdn` }, { name: "Purge only the data cache", value: `${packageName} cache purge --type data` } ] }; invalidateSubcommand = { name: "invalidate", aliases: [], description: "Invalidate all cached content by tag", arguments: [], options: [ yesOption, { name: "tag", description: "Tags to invalidate (comma-separated)", shorthand: null, type: String, argument: "TAGS", deprecated: false }, { name: "srcimg", description: "Source Image to invalidate", shorthand: null, type: String, argument: "SRCIMG", deprecated: false } ], examples: [ { name: "Invalidate all cached content associated with a tag", value: `${packageName} cache invalidate --tag foo` }, { name: "Invalidate all cached content associated with any one of multiple tags", value: `${packageName} cache invalidate --tag foo,bar,baz` }, { name: "Invalidate all cached content associated with a source image", value: `${packageName} cache invalidate --srcimg /api/avatar/1` } ] }; dangerouslyDeleteSubcommand = { name: "dangerously-delete", aliases: [], description: "Dangerously delete all cached content by tag", arguments: [], options: [ yesOption, { name: "tag", description: "Tags to delete (comma-separated)", shorthand: null, type: String, argument: "TAGS", deprecated: false }, { name: "srcimg", description: "Source Image to delete", shorthand: null, type: String, argument: "SRCIMG", deprecated: false }, { name: "revalidation-deadline-seconds", description: "Revalidation deadline in seconds", shorthand: null, type: Number, argument: "REVALIDATION-DEADLINE-SECONDS", deprecated: false } ], examples: [ { name: "Dangerously delete all cached content associated with a tag", value: `${packageName} cache dangerously-delete --tag foo` }, { name: "Dangerously delete all cached content associated with a tag if not accessed in the next hour", value: `${packageName} cache dangerously-delete --tag foo --revalidation-deadline-seconds 3600` }, { name: "Dangerously delete all cached content associated with a source image", value: `${packageName} cache dangerously-delete --srcimg /api/avatar/1` }, { name: "Dangerously delete all cached content associated with a source image if not accessed in the next hour", value: `${packageName} cache dangerously-delete --srcimg /api/avatar/1 --revalidation-deadline-seconds 3600` } ] }; cacheCommand = { name: "cache", aliases: [], description: "Manage cache for a Project", arguments: [], subcommands: [ purgeSubcommand, invalidateSubcommand, dangerouslyDeleteSubcommand ], options: [], examples: [] }; } }); // src/commands/certs/command.ts var removeSubcommand2, issueSubcommand, listSubcommand3, addSubcommand, certsCommand; var init_command6 = __esm({ "src/commands/certs/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); removeSubcommand2 = { name: "remove", aliases: ["rm"], description: "Remove a certificate by id", arguments: [ { name: "id", required: true } ], options: [], examples: [ { name: "Remove a certificate", value: `${packageName} certs rm id` } ] }; issueSubcommand = { name: "issue", aliases: [], description: "Issue a new certificate for a domain", arguments: [ { name: "cn", required: true } ], options: [ { name: "challenge-only", description: "Only show challenges needed to issue a certificate", shorthand: null, type: Boolean, deprecated: false }, { name: "crt", description: "Certificate file", argument: "FILE", shorthand: null, type: String, deprecated: false }, { name: "key", description: "Certificate key file", argument: "FILE", shorthand: null, type: String, deprecated: false }, { name: "ca", description: "CA certificate chain file", argument: "FILE", shorthand: null, type: String, deprecated: false }, { name: "overwrite", shorthand: null, type: Boolean, deprecated: false } ], examples: [ { name: 'Generate a certificate with the cnames "acme.com" and "www.acme.com"`', value: `${packageName} certs issue acme.com www.acme.com` } ] }; listSubcommand3 = { name: "list", aliases: ["ls"], description: "Show all available certificates", arguments: [], options: [limitOption, nextOption], examples: [ { name: "Paginate results, where `1584722256178` is the time in milliseconds since the UNIX epoch.", value: `${packageName} certs ls --next 1584722256178` } ] }; addSubcommand = { name: "add", aliases: [], description: "Add a new certificate", arguments: [], options: [ { name: "crt", description: "Certificate file", argument: "FILE", shorthand: null, type: String, deprecated: false }, { name: "key", description: "Certificate key file", argument: "FILE", shorthand: null, type: String, deprecated: false }, { name: "ca", description: "CA certificate chain file", argument: "FILE", shorthand: null, type: String, deprecated: false }, { name: "overwrite", description: "", shorthand: null, type: Boolean, deprecated: true } ], examples: [] }; certsCommand = { name: "certs", aliases: ["cert"], description: "Interact with SSL certificates. This command is intended for advanced use only. By default, Vercel manages your certificates automatically.", arguments: [], subcommands: [ addSubcommand, issueSubcommand, listSubcommand3, removeSubcommand2 ], options: [], examples: [ ...issueSubcommand.examples, ...removeSubcommand2.examples, ...listSubcommand3.examples ] }; } }); // src/commands/curl/command.ts var curlCommand; var init_command7 = __esm({ "src/commands/curl/command.ts"() { "use strict"; init_pkg_name(); curlCommand = { name: "curl", aliases: [], description: "Execute curl with automatic deployment URL and protection bypass.", arguments: [ { name: "path", required: true } ], options: [ { name: "deployment", shorthand: null, type: String, deprecated: false, description: "The deployment ID or URL to target", argument: "ID|URL" }, { name: "protection-bypass", shorthand: null, type: String, deprecated: false, description: "Protection bypass secret for accessing protected deployments", argument: "SECRET" } ], examples: [ { name: "Make a GET request to an API endpoint", value: `${packageName} curl /api/hello` }, { name: "Make a POST request with data", value: `${packageName} curl /api/users -- --request POST --data '{"name": "John"}'` }, { name: "Target a specific deployment by ID", value: `${packageName} curl /api/status --deployment ERiL45NJvP8ghWxgbvCM447bmxwV` }, { name: "Target a specific deployment by URL", value: `${packageName} curl /api/status --deployment https://your-project-abc123.vercel.app` }, { name: "Use curl flags after the separator", value: `${packageName} curl /api/test -- --header "Content-Type: application/json" --request PUT` }, { name: "Use with protection bypass secret", value: `${packageName} curl /api/protected --protection-bypass -- --request GET` } ] }; } }); // src/commands/deploy/command.ts var deprecatedArchiveSplitTgz, deployCommand; var init_command8 = __esm({ "src/commands/deploy/command.ts"() { "use strict"; init_arg_common(); deprecatedArchiveSplitTgz = "split-tgz"; deployCommand = { name: "deploy", aliases: [], description: "Deploy your project to Vercel. The `deploy` command is the default command for the Vercel CLI, and can be omitted (`vc deploy my-app` equals `vc my-app`).", arguments: [ { name: "project-path", required: false } ], options: [ { ...forceOption, description: "Force a new deployment even if nothing has changed" }, { name: "with-cache", shorthand: null, type: Boolean, deprecated: false, description: 'Retain build cache when using "--force"' }, { name: "public", shorthand: "p", type: Boolean, deprecated: false, description: "Deployment is public (`/_src`) is exposed)" }, { name: "env", shorthand: "e", type: [String], argument: "KEY=VALUE", deprecated: false, description: "Specify environment variables during run-time (e.g. `-e KEY1=value1 -e KEY2=value2`)" }, { name: "build-env", shorthand: "b", type: [String], argument: "KEY=VALUE", deprecated: false, description: "Specify environment variables during build-time (e.g. `-b KEY1=value1 -b KEY2=value2`)" }, { name: "meta", shorthand: "m", type: [String], argument: "KEY=VALUE", deprecated: false, description: "Specify metadata for the deployment (e.g. `-m KEY1=value1 -m KEY2=value2`)" }, { name: "regions", shorthand: null, type: String, argument: "REGION", deprecated: false, description: "Set default regions to enable the deployment on" }, { name: "prebuilt", shorthand: null, type: Boolean, deprecated: false, description: "Use in combination with `vc build`. Deploy an existing build" }, { name: "prod", shorthand: null, type: Boolean, deprecated: false, description: "Create a production deployment (shorthand for `--target=production`)" }, { name: "archive", shorthand: null, type: String, argument: "FORMAT", deprecated: false, description: "Compress the deployment code into an archive before uploading it" }, { name: "no-wait", shorthand: null, type: Boolean, deprecated: false, description: "Don't wait for the deployment to finish" }, { name: "skip-domain", shorthand: null, type: Boolean, deprecated: false, description: "Disable the automatic promotion (aliasing) of the relevant domains to a new production deployment. You can use `vc promote` to complete the domain-assignment process later" }, { ...yesOption, description: "Use default options to skip all prompts" }, { name: "logs", shorthand: "l", type: Boolean, deprecated: false, description: "Print the build logs" }, { name: "guidance", shorthand: null, type: Boolean, deprecated: false, description: "Receive command suggestions once deployment is complete" }, { name: "no-logs", shorthand: null, type: Boolean, deprecated: true, description: "Do not print the build logs" }, { name: "name", shorthand: "n", type: String, deprecated: true }, { name: "no-clipboard", shorthand: null, type: Boolean, deprecated: true }, { name: "target", shorthand: null, type: String, argument: "TARGET", deprecated: false, description: "Specify the target deployment environment" }, confirmOption ], examples: [ { name: "Deploy the current directory", value: "vercel" }, { name: "Deploy a custom path", value: "vercel /usr/src/project" }, { name: "Deploy with run-time Environment Variables", value: "vercel -e NODE_ENV=production" }, { name: "Deploy with prebuilt outputs", value: ["vercel build", "vercel deploy --prebuilt"] }, { name: "Write Deployment URL to a file", value: "vercel > deployment-url.txt" } ] }; } }); // src/commands/dev/command.ts var devCommand; var init_command9 = __esm({ "src/commands/dev/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); devCommand = { name: "dev", aliases: ["develop"], description: `Starts the \`${packageName} dev\` server.`, arguments: [ { name: "dir", required: false } ], options: [ { name: "listen", description: "Specify a URI endpoint on which to listen [0.0.0.0:3000]", argument: "URI", shorthand: "l", type: String, deprecated: false }, yesOption, { name: "port", shorthand: "p", type: String, deprecated: true }, confirmOption ], examples: [ { name: `Start the \`${packageName} dev\` server on port 8080`, value: `${packageName} dev --listen 8080` }, { name: "Make the `vercel dev` server bind to localhost on port 5000", value: `${packageName} dev --listen 127.0.0.1:5000 ` } ] }; } }); // src/commands/dns/command.ts var importSubcommand, listSubcommand4, addSubcommand2, removeSubcommand3, dnsCommand; var init_command10 = __esm({ "src/commands/dns/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); importSubcommand = { name: "import", aliases: [], description: "Import a DNS zone file (see below for examples)", arguments: [ { name: "domain", required: true }, { name: "zonefile", required: true } ], options: [], examples: [] }; listSubcommand4 = { name: "list", aliases: ["ls"], description: "List all DNS entries for a domain", default: true, arguments: [ { name: "domain", required: true } ], options: [limitOption, nextOption], examples: [] }; addSubcommand2 = { name: "add", aliases: [], description: "Add a new DNS entry (see below for examples)", arguments: [ { name: "domain", required: true }, { name: "details", required: true } ], options: [], examples: [] }; removeSubcommand3 = { name: "remove", aliases: ["rm"], description: "Remove a DNS entry using its ID", arguments: [ { name: "id", required: true } ], options: [], examples: [] }; dnsCommand = { name: "dns", aliases: [], description: "Interact with DNS entries for a project", arguments: [], subcommands: [ addSubcommand2, importSubcommand, listSubcommand4, removeSubcommand3 ], options: [], examples: [ { name: "Add an A record for a subdomain", value: [ `${packageName} dns add `, `${packageName} dns add zeit.rocks api A 198.51.100.100` ] }, { name: "Add an MX record (@ as a name refers to the domain)", value: [ `${packageName} dns add '@' MX `, `${packageName} dns add zeit.rocks '@' MX mail.zeit.rocks 10` ] }, { name: "Add an SRV record", value: [ `${packageName} dns add SRV `, `${packageName} dns add zeit.rocks '@' SRV 10 0 389 zeit.party` ] }, { name: "Add a CAA record", value: [ `${packageName} dns add CAA ' ""'`, `${packageName} dns add zeit.rocks '@' CAA '0 issue "example.com"'` ] }, { name: "Import a Zone file", value: [ `${packageName} dns import `, `${packageName} dns import zeit.rocks ./zonefile.txt` ] }, { name: "Paginate results, where `1584722256178` is the time in milliseconds since the UNIX epoch", value: [ `${packageName} dns ls --next 1584722256178`, `${packageName} dns ls zeit.rocks --next 1584722256178` ] } ] }; } }); // src/commands/domains/command.ts var listSubcommand5, inspectSubcommand, addSubcommand3, removeSubcommand4, buySubcommand, moveSubcommand, transferInSubcommand, domainsCommand; var init_command11 = __esm({ "src/commands/domains/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); listSubcommand5 = { name: "list", aliases: ["ls"], description: "Show all domains in a list", default: true, arguments: [], options: [limitOption, nextOption, formatOption], examples: [ { name: "Paginate results, where `1584722256178` is the time in milliseconds since the UNIX epoch", value: `${packageName} domains ls --next 1584722256178` } ] }; inspectSubcommand = { name: "inspect", aliases: [], description: "Displays information related to a domain", arguments: [ { name: "domain", required: true } ], options: [], examples: [] }; addSubcommand3 = { name: "add", aliases: [], description: "Add a domain name that you already own to a Vercel Team", arguments: [ { name: "domain", required: true }, { name: "project", required: true } ], options: [ { ...forceOption, shorthand: null, description: "Force a domain name for a project and remove it from an existing one" } ], examples: [ { name: "Add a domain that you already own", value: [ `${packageName} domains add domain-name.com`, "Make sure the domain's DNS nameservers are at least 2 of the ones listed on https://vercel.com/edge-network", `NOTE: Running ${packageName} alias will automatically register your domain if it's configured with these nameservers (no need to 'domains add')` ] } ] }; removeSubcommand4 = { name: "remove", aliases: ["rm"], description: "Remove ownership of a domain name from a Vercel Team", arguments: [ { name: "domain", required: true } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when removing a domain" } ], examples: [] }; buySubcommand = { name: "buy", aliases: [], description: "Purchase a new domain name", arguments: [ { name: "domain", required: true } ], options: [], examples: [] }; moveSubcommand = { name: "move", aliases: [], description: "Move ownership of a domain name to another Vercel Team", arguments: [ { name: "domain", required: true }, { name: "destination", required: true } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when moving a domain" } ], examples: [] }; transferInSubcommand = { name: "transfer-in", aliases: [], description: "Transfer in a domain name to Vercel", arguments: [ { name: "domain", required: true } ], options: [ { name: "code", argument: "CODE", shorthand: null, type: String, deprecated: false } ], examples: [] }; domainsCommand = { name: "domains", aliases: ["domain"], description: "Manage domains", arguments: [], subcommands: [ listSubcommand5, inspectSubcommand, addSubcommand3, buySubcommand, moveSubcommand, transferInSubcommand, removeSubcommand4 ], options: [], examples: [] }; } }); // ../../internals/constants/dist/index.js var require_dist4 = __commonJS2({ "../../internals/constants/dist/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.TITLE = exports2.NAME = exports2.LOGO = exports2.PROJECT_ENV_TARGET = void 0; exports2.PROJECT_ENV_TARGET = [ "production", "preview", "development" ]; exports2.LOGO = "\u25B2"; exports2.NAME = "vercel"; exports2.TITLE = "Vercel"; } }); // src/util/env/env-target.ts function isValidEnvTarget(target) { return typeof target === "undefined" || envTargetChoices.map((c) => c.value).includes(target); } function getEnvTargetPlaceholder() { return `<${envTargetChoices.map((c) => c.value).join(" | ")}>`; } var import_constants, import_title2, envTargetChoices; var init_env_target = __esm({ "src/util/env/env-target.ts"() { "use strict"; import_constants = __toESM3(require_dist4(), 1); import_title2 = __toESM3(require_lib4(), 1); envTargetChoices = import_constants.PROJECT_ENV_TARGET.map((t) => ({ name: (0, import_title2.default)(t), value: t })); } }); // src/commands/env/command.ts var targetPlaceholder, listSubcommand6, addSubcommand4, removeSubcommand5, pullSubcommand, runSubcommand, updateSubcommand, envCommand; var init_command12 = __esm({ "src/commands/env/command.ts"() { "use strict"; init_pkg_name(); init_env_target(); init_arg_common(); targetPlaceholder = getEnvTargetPlaceholder(); listSubcommand6 = { name: "list", aliases: ["ls"], description: "List all Environment Variables for a Project", arguments: [ { name: "environment", required: false }, { name: "git-branch", required: false } ], options: [ formatOption, { name: "guidance", description: "Receive command suggestions once command is complete", shorthand: null, type: Boolean, deprecated: false } ], examples: [] }; addSubcommand4 = { name: "add", aliases: [], description: "Add an Environment Variable (see examples below)", arguments: [ { name: "name", required: true }, { name: "environment", required: false } ], options: [ { name: "sensitive", description: "Add a sensitive Environment Variable", shorthand: null, type: Boolean, deprecated: false }, { ...forceOption, description: "Force overwrites when a command would normally fail", shorthand: null }, { ...yesOption, description: "Skip the confirmation prompt when adding an Environment Variable" }, { name: "guidance", description: "Receive command suggestions once command is complete", shorthand: null, type: Boolean, deprecated: false } ], examples: [ { name: "Add a new variable to all Environments", value: [ `${packageName} env add `, `${packageName} env add API_TOKEN` ] }, { name: "Add a new Environment Variable to a specific Environment", value: [ `${packageName} env add ${targetPlaceholder}`, `${packageName} env add DB_PASS production` ] }, { name: "Override an existing Environment Variable of same target (production, preview, deployment)", value: `${packageName} env add API_TOKEN --force` }, { name: "Add a sensitive Environment Variable", value: `${packageName} env add API_TOKEN --sensitive` }, { name: "Add a new Environment Variable for a specific Environment and Git Branch", value: [ `${packageName} env add ${targetPlaceholder} `, `${packageName} env add DB_PASS preview feat1` ] }, { name: "Add a new Environment Variable from stdin", value: [ `cat | ${packageName} env add ${targetPlaceholder}`, `cat ~/.npmrc | ${packageName} env add NPM_RC preview`, `${packageName} env add API_URL production < url.txt` ] } ] }; removeSubcommand5 = { name: "remove", aliases: ["rm"], description: "Remove an Environment Variable (see examples below)", arguments: [ { name: "name", required: true }, { name: "environment", required: false } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when removing an Environment Variable" } ], examples: [ { name: "Remove a variable from multiple Environments", value: [ `${packageName} env rm `, `${packageName} env rm API_TOKEN` ] }, { name: "Remove a variable from a specific Environment", value: [ `${packageName} env rm ${targetPlaceholder}`, `${packageName} env rm NPM_RC preview` ] }, { name: "Remove a variable from a specific Environment and Git Branch", value: [ `${packageName} env rm ${targetPlaceholder} `, `${packageName} env rm NPM_RC preview feat1` ] } ] }; pullSubcommand = { name: "pull", aliases: [], description: "Pull all Development Environment Variables from the cloud and write to a file [.env.local]", arguments: [ { name: "filename", required: false } ], options: [ { name: "environment", description: "Set the Environment when pulling Environment Variables", shorthand: null, type: String, argument: "TARGET", deprecated: false }, { name: "git-branch", description: "Specify the Git branch to pull specific Environment Variables for", shorthand: null, type: String, argument: "NAME", deprecated: false }, { ...yesOption, description: "Skip the confirmation prompt when removing an environment variable" } ], examples: [ { name: "Pull all Development Environment Variables down from the cloud", value: [ `${packageName} env pull `, `${packageName} env pull .env.development.local` ] } ] }; runSubcommand = { name: "run", aliases: [], description: "Run a command with environment variables from the linked Vercel project", arguments: [ { name: "command", required: true, multiple: true } ], options: [ { name: "environment", description: "Specify the environment to pull variables from (default: development)", shorthand: "e", type: String, argument: "TARGET", deprecated: false }, { name: "git-branch", description: "Specify the Git branch to pull specific Environment Variables for", shorthand: null, type: String, argument: "NAME", deprecated: false } ], examples: [ { name: "Run Next.js dev server with development environment variables", value: `${packageName} env run -- next dev` }, { name: "Run tests with preview environment variables for a specific branch", value: `${packageName} env run -e preview --git-branch feature-x -- npm test` } ] }; updateSubcommand = { name: "update", aliases: [], description: "Update the value of an existing Environment Variable (see examples below)", arguments: [ { name: "name", required: true }, { name: "environment", required: false } ], options: [ { name: "sensitive", description: "Update to a sensitive Environment Variable", shorthand: null, type: Boolean, deprecated: false }, { ...yesOption, description: "Skip the confirmation prompt when updating an Environment Variable" } ], examples: [ { name: "Update a variable in all Environments", value: [ `${packageName} env update `, `${packageName} env update API_TOKEN` ] }, { name: "Update a variable in a specific Environment", value: [ `${packageName} env update ${targetPlaceholder}`, `${packageName} env update DB_PASS production` ] }, { name: "Update a variable for a specific Environment and Git Branch", value: [ `${packageName} env update ${targetPlaceholder} `, `${packageName} env update NPM_RC preview feat1` ] }, { name: "Update a variable from stdin", value: [ `cat | ${packageName} env update ${targetPlaceholder}`, `cat ~/.npmrc | ${packageName} env update NPM_RC preview`, `${packageName} env update API_URL production < url.txt` ] } ] }; envCommand = { name: "env", aliases: [], description: "Interact with Environment Variables for a Project", arguments: [], subcommands: [ addSubcommand4, listSubcommand6, pullSubcommand, removeSubcommand5, runSubcommand, updateSubcommand ], options: [], examples: [] }; } }); // src/commands/git/command.ts var connectSubcommand, disconnectSubcommand, gitCommand; var init_command13 = __esm({ "src/commands/git/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); connectSubcommand = { name: "connect", aliases: [], description: "Connect your Vercel Project to your Git repository or provide the remote URL to your Git repository", arguments: [ { name: "git-url", required: false } ], options: [yesOption, confirmOption], examples: [ { name: "Connect your Vercel Project to your Git repository defined in your local `.git` config", value: `${packageName} git connect` }, { name: "Connect your Vercel Project to a Git repository using the remote URL", value: `${packageName} git connect https://github.com/user/repo.git` } ] }; disconnectSubcommand = { name: "disconnect", aliases: [], description: "Disconnect the Git repository from your Vercel Project", arguments: [], options: [yesOption, confirmOption], examples: [ { name: "Disconnect the Git repository", value: `${packageName} git disconnect` } ] }; gitCommand = { name: "git", aliases: [], description: "Manage your Git repository connection to the current Project", arguments: [], subcommands: [connectSubcommand, disconnectSubcommand], options: [], examples: [] }; } }); // src/commands/guidance/command.ts var statusSubcommand, enableSubcommand, disableSubcommand, guidanceCommand; var init_command14 = __esm({ "src/commands/guidance/command.ts"() { "use strict"; statusSubcommand = { name: "status", aliases: [], description: "Shows whether guidance messages are enabled or disabled", arguments: [], options: [], examples: [] }; enableSubcommand = { name: "enable", aliases: [], description: "Enables guidance messages", arguments: [], options: [], examples: [] }; disableSubcommand = { name: "disable", aliases: [], description: "Disables guidance messages", arguments: [], options: [], examples: [] }; guidanceCommand = { name: "guidance", aliases: [], description: "Allows you to enable or disable guidance messages", arguments: [], subcommands: [enableSubcommand, disableSubcommand, statusSubcommand], options: [], examples: [] }; } }); // src/commands/httpstat/command.ts var httpstatCommand; var init_command15 = __esm({ "src/commands/httpstat/command.ts"() { "use strict"; init_pkg_name(); httpstatCommand = { name: "httpstat", aliases: [], description: "Execute httpstat with automatic deployment URL and protection bypass to visualize HTTP timing statistics.", arguments: [ { name: "path", required: true } ], options: [ { name: "deployment", shorthand: null, type: String, deprecated: false, description: "The deployment ID or URL to target", argument: "ID|URL" }, { name: "protection-bypass", shorthand: null, type: String, deprecated: false, description: "Protection bypass secret for accessing protected deployments", argument: "SECRET" } ], examples: [ { name: "Visualize timing for a GET request to an API endpoint", value: `${packageName} httpstat /api/hello` }, { name: "Make a POST request with data and see timing details", value: `${packageName} httpstat /api/users -- -X POST -d '{"name": "John"}'` }, { name: "Target a specific deployment by ID", value: `${packageName} httpstat /api/status --deployment ERiL45NJvP8ghWxgbvCM447bmxwV` }, { name: "Use curl flags after the separator", value: `${packageName} httpstat /api/test -- -H "Content-Type: application/json" -X PUT` }, { name: "Use with protection bypass secret", value: `${packageName} httpstat /api/protected --protection-bypass ` } ] }; } }); // src/commands/init/command.ts var initCommand; var init_command16 = __esm({ "src/commands/init/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); initCommand = { name: "init", aliases: [], description: "Initialize example Vercel Projects", arguments: [ { name: "example", required: false }, { name: "dir", required: false } ], options: [ { ...forceOption, description: "Overwrite destination directory if exists [off]", argument: void 0 } ], examples: [ { name: "Choose from all available examples", value: `${packageName} init` }, { name: "Initialize example project into a new directory", value: `${packageName} init ` }, { name: "Initialize example project into specified directory", value: `${packageName} ` }, { name: "Initialize example project without checking", value: `${packageName} init --force` } ] }; } }); // src/commands/inspect/command.ts var inspectCommand; var init_command17 = __esm({ "src/commands/inspect/command.ts"() { "use strict"; init_arg_common(); init_pkg_name(); inspectCommand = { name: "inspect", aliases: [], description: "Show information about a deployment.", arguments: [ { name: "url|deploymentId", required: true } ], options: [ { name: "timeout", description: "Time to wait for deployment completion [3m]", argument: "TIME", shorthand: null, type: String, deprecated: false }, { name: "wait", description: "Blocks until deployment completes", shorthand: null, type: Boolean, deprecated: false }, { name: "logs", shorthand: "l", type: Boolean, deprecated: false, description: "Prints the build logs instead of the deployment summary" }, formatOption, jsonOption ], examples: [ { name: "Get information about a deployment by its unique URL", value: `${packageName} inspect my-deployment-ji2fjij2.vercel.app` }, { name: "Get information about the deployment an alias points to", value: `${packageName} inspect my-deployment.vercel.app` }, { name: "Get information about a deployment by piping in the URL", value: `echo my-deployment.vercel.app | ${packageName} inspect` }, { name: "Wait up to 90 seconds for deployment to complete", value: `${packageName} inspect my-deployment.vercel.app --wait --timeout 90s` }, { name: "Get deployment build logs", value: `${packageName} inspect my-deployment.vercel.app --logs` }, { name: "Get deployment information as JSON", value: `${packageName} inspect my-deployment.vercel.app --format=json` } ] }; } }); // src/commands/install/command.ts var installCommand; var init_command18 = __esm({ "src/commands/install/command.ts"() { "use strict"; init_pkg_name(); installCommand = { name: "install", aliases: ["i"], description: "Install an integration from the marketplace (alias for `integration add`)", arguments: [ { name: "integration", required: true } ], options: [], examples: [ { name: "Install an integration from the marketplace", value: `${packageName} install acme` } ] }; } }); // src/commands/integration-resource/command.ts var removeSubcommand6, disconnectSubcommand2, createThresholdSubcommand, integrationResourceCommand; var init_command19 = __esm({ "src/commands/integration-resource/command.ts"() { "use strict"; init_arg_common(); init_pkg_name(); removeSubcommand6 = { name: "remove", aliases: ["rm"], description: "Delete an integration resource", arguments: [ { name: "resource", required: true } ], options: [ { name: "disconnect-all", description: "Disconnects all projects from the specified resource before deletion", shorthand: "a", type: Boolean, deprecated: false }, { ...yesOption, description: "Skip the confirmation prompt when deleting a resource" } ], examples: [ { name: "Delete a resource", value: [ `${packageName} integration-resource remove `, `${packageName} integration-resource remove my-acme-resource` ] }, { name: "Disconnect all projects from a resource, then delete it", value: [ `${packageName} integration-resource remove --disconnect-all`, `${packageName} integration-resource remove my-acme-resource --disconnect-all`, `${packageName} integration-resource remove my-acme-resource -a` ] } ] }; disconnectSubcommand2 = { name: "disconnect", aliases: [], description: "Disconnect a resource from a project, or the current project", arguments: [ { name: "resource", required: true }, { name: "project", required: false } ], options: [ { name: "all", description: "Disconnects all projects from the specified resource", shorthand: "a", type: Boolean, deprecated: false }, { ...yesOption, description: "Skip the confirmation prompt when disconnecting a resource" } ], examples: [ { name: "Disconnect a resource from the current projecct", value: [ `${packageName} integration-resource disconnect `, `${packageName} integration-resource disconnect my-acme-resource` ] }, { name: "Disconnect all projects from a resource", value: [ `${packageName} integration-resource disconnect --unlink-all`, `${packageName} integration-resource disconnect my-acme-resource --all`, `${packageName} integration-resource disconnect my-acme-resource -a` ] }, { name: "Disconnect a resource from a specified project", value: [ `${packageName} integration-resource disconnect `, `${packageName} integration-resource disconnect my-acme-resource my-project` ] } ] }; createThresholdSubcommand = { name: "create-threshold", aliases: [], description: "Creates a threshold for a resource (or installation, if the integration uses installation-level thresholds)", arguments: [ { name: "resource", required: true }, { name: "minimum", required: true }, { name: "spend", required: true }, { name: "limit", required: true } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when creating a threshold" } ], examples: [ { name: "create threshold", value: [ `${packageName} integration-resource create-threshold [options]`, `${packageName} integration-resource create-threshold my-acme-resource 100 50 2000`, `${packageName} integration-resource create-threshold my-acme-resource 100 50 2000 --yes` ] } ] }; integrationResourceCommand = { name: "integration-resource", aliases: ["ir"], description: "Manage marketplace integration resources", options: [], arguments: [], subcommands: [disconnectSubcommand2, removeSubcommand6], examples: [] }; } }); // src/commands/integration/command.ts var addSubcommand5, openSubcommand, listSubcommand7, balanceSubcommand, removeSubcommand7, integrationCommand; var init_command20 = __esm({ "src/commands/integration/command.ts"() { "use strict"; init_arg_common(); init_pkg_name(); addSubcommand5 = { name: "add", aliases: [], description: "Installs a marketplace integration", arguments: [ { name: "name", required: true } ], options: [], examples: [ { name: "Install a marketplace integration", value: [ `${packageName} integration add `, `${packageName} integration add acme` ] } ] }; openSubcommand = { name: "open", aliases: [], description: "Opens a marketplace integration's dashboard", arguments: [ { name: "name", required: true } ], options: [], examples: [ { name: "Open a marketplace integration's dashboard", value: [ `${packageName} integration open `, `${packageName} integration open acme` ] } ] }; listSubcommand7 = { name: "list", aliases: ["ls"], description: "Lists all resources from marketplace integrations", arguments: [ { name: "project", required: false } ], options: [ { name: "integration", description: "Limits the resources listed to a designated integration", shorthand: "i", type: String, deprecated: false, argument: "NAME" }, { name: "all", description: "Lists all resources regardless of project", shorthand: "a", type: Boolean, deprecated: false } ], examples: [ { name: "List all resources", value: [`${packageName} integrations list`] }, { name: "Filter the resources to a single integration", value: [ `${packageName} integration list --integration `, `${packageName} integration list --integration acme`, `${packageName} integration list -i acme` ] }, { name: "List all marketplace resources for the current team", value: [ `${packageName} integration list --all`, `${packageName} integration list -a` ] } ] }; balanceSubcommand = { name: "balance", aliases: [], description: "Shows the balances and thresholds of specified marketplace integration", arguments: [ { name: "integration", required: true } ], options: [], examples: [ { name: "Show the balance(s) & threshold(s) of a marketplace integration", value: [ `${packageName} integration balance `, `${packageName} integration balance acme` ] } ] }; removeSubcommand7 = { name: "remove", aliases: [], description: "Uninstalls a marketplace integration", arguments: [ { name: "integration", required: true } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when uninstalling an integration" } ], examples: [ { name: "Uninstall an integration", value: [ `${packageName} integration remove `, `${packageName} integration remove acme` ] } ] }; integrationCommand = { name: "integration", aliases: [], description: "Manage marketplace integrations", options: [], arguments: [], subcommands: [ addSubcommand5, listSubcommand7, openSubcommand, removeSubcommand7 ], examples: [] }; } }); // src/commands/link/command.ts var linkCommand; var init_command21 = __esm({ "src/commands/link/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); linkCommand = { name: "link", aliases: [], description: "Link a local directory to a Vercel Project.", arguments: [], options: [ { name: "repo", description: "Link multiple projects based on Git repository (alpha)", shorthand: "r", type: Boolean, deprecated: false }, { name: "project", description: "Specify a project name", shorthand: "p", argument: "NAME", type: String, deprecated: false }, { ...yesOption, description: "Skip questions when setting up new project using default scope and settings" }, confirmOption ], examples: [ { name: "Link current directory to a Vercel Project", value: `${packageName} link` }, { name: "Link current directory with default options and skip questions", value: `${packageName} link --yes` }, { name: "Link a specific directory to a Vercel Project", value: `${packageName} link --cwd /path/to/project` }, { name: "Link to the current Git repository, allowing for multiple Vercel Projects to be linked simultaneously (useful for monorepos)", value: `${packageName} link --repo` } ] }; } }); // src/commands/list/command.ts var listCommand; var init_command22 = __esm({ "src/commands/list/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); listCommand = { name: "list", aliases: ["ls"], description: "List app deployments for an app.", arguments: [ { name: "app", required: false } ], options: [ { name: "meta", description: "Filter deployments by metadata (e.g.: `-m KEY=value`). Can appear many times.", argument: "KEY=VALUE", shorthand: "m", type: [String], deprecated: false }, { name: "policy", description: "See deployments with provided Deployment Retention policies (e.g.: `-p KEY=value`). Can appear many times.", argument: "KEY=VALUE", shorthand: "p", type: [String], deprecated: false }, { name: "environment", description: "", argument: "TARGET", shorthand: null, type: String, deprecated: false }, { name: "status", description: "Filter deployments by their status. Can be comma-separated for multiple statuses (e.g.: `--status BUILDING,READY`)", argument: "STATUS", shorthand: "s", type: String, deprecated: false }, nextOption, // this can be deprecated someday { name: "prod", shorthand: null, type: Boolean, deprecated: false }, yesOption, confirmOption, formatOption ], examples: [ { name: "List all deployments for the currently linked project", value: `${packageName} list` }, { name: "List all deployments for the project `my-app` in the team of the currently linked project", value: `${packageName} list my-app` }, { name: "Filter deployments by metadata", value: `${packageName} list -m key1=value1 -m key2=value2` }, { name: "Paginate deployments for a project, where `1584722256178` is the time in milliseconds since the UNIX epoch", value: `${packageName} list my-app --next 1584722256178` }, { name: "Filter deployments by status", value: `${packageName} list --status READY` }, { name: "Filter deployments by multiple statuses", value: `${packageName} list --status BUILDING,ERROR` } ] }; } }); // src/commands/login/command.ts var loginCommand; var init_command23 = __esm({ "src/commands/login/command.ts"() { "use strict"; init_pkg_name(); loginCommand = { name: "login", aliases: [], description: "Sign in to your Vercel account.", arguments: [ { name: "email or team id", required: false } ], options: [ { name: "github", description: "Log in with GitHub", shorthand: null, type: Boolean, deprecated: true }, { name: "oob", description: 'Log in with "out of band" authentication', shorthand: null, type: Boolean, deprecated: true }, { name: "gitlab", shorthand: null, type: Boolean, deprecated: true }, { name: "bitbucket", shorthand: null, type: Boolean, deprecated: true }, { name: "future", description: "Sign in using OAuth Device Authorization", shorthand: null, type: Boolean, deprecated: true } ], examples: [ { name: "Sign in to your Vercel account.", value: `${packageName} login` } ] }; } }); // src/commands/logout/command.ts var logoutCommand; var init_command24 = __esm({ "src/commands/logout/command.ts"() { "use strict"; init_pkg_name(); logoutCommand = { name: "logout", aliases: [], description: "Sign out the currently authenticated user.", arguments: [], options: [], examples: [ { name: "Sign out the currently authenticated user.", value: `${packageName} logout` } ] }; } }); // src/commands/logs/command.ts var CommandTimeout, logsCommand; var init_command25 = __esm({ "src/commands/logs/command.ts"() { "use strict"; init_arg_common(); init_pkg_name(); CommandTimeout = "5 minutes"; logsCommand = { name: "logs", aliases: ["log"], description: `Display runtime logs for a deployment in ready state, from now and for ${CommandTimeout} at most.`, arguments: [ { name: "url|deploymentId", required: true } ], options: [ formatOption, jsonOption, { name: "follow", shorthand: "f", type: Boolean, deprecated: true }, { name: "limit", shorthand: "n", type: Number, deprecated: true }, { name: "since", shorthand: null, type: String, deprecated: true }, { name: "until", shorthand: null, type: String, deprecated: true }, { name: "output", shorthand: "o", type: String, deprecated: true } ], examples: [ { name: "Pretty print all the new runtime logs for the deployment DEPLOYMENT_URL from now on", value: `${packageName} logs DEPLOYMENT_URL` }, { name: "Print all runtime logs for the deployment DEPLOYMENT_ID as json objects", value: `${packageName} logs DEPLOYMENT_ID --format=json` }, { name: "Filter runtime logs for warning with JQ third party tool", value: `${packageName} logs DEPLOYMENT_ID --format=json | jq 'select(.level == "warning")'` } ] }; } }); // src/commands/logsv2/command.ts var logsv2Command; var init_command26 = __esm({ "src/commands/logsv2/command.ts"() { "use strict"; init_pkg_name(); logsv2Command = { name: "logsv2", aliases: [], description: "Display request logs for a project using the new logs API.", hidden: true, arguments: [ { name: "url|deploymentId", required: false } ], options: [ { name: "project", shorthand: "p", type: String, deprecated: false, description: "Project ID or name (defaults to linked project)" }, { name: "deployment", shorthand: "d", type: String, deprecated: false, description: "Filter logs to a specific deployment ID or URL (alternative to positional argument)" }, { name: "environment", shorthand: null, type: String, deprecated: false, description: "Filter by environment: production or preview" }, { name: "level", shorthand: null, type: [String], deprecated: false, description: "Filter by log level: error, warning, info, fatal" }, { name: "status-code", shorthand: null, type: String, deprecated: false, description: "Filter by HTTP status code (e.g., 500, 4xx)" }, { name: "source", shorthand: null, type: [String], deprecated: false, description: "Filter by source: serverless, edge-function, edge-middleware, static" }, { name: "since", shorthand: null, type: String, deprecated: false, description: "Start time (ISO format or relative: 1h, 30m)" }, { name: "until", shorthand: null, type: String, deprecated: false, description: "End time (ISO format or relative, default: now)" }, { name: "limit", shorthand: "n", type: Number, deprecated: false, description: "Maximum number of results (default: 100)" }, { name: "json", shorthand: "j", type: Boolean, deprecated: false, description: "Output logs as JSON Lines for piping to other tools" }, { name: "follow", shorthand: null, type: Boolean, deprecated: false, description: "Stream live runtime logs (requires deployment URL/ID, no other filters allowed)" }, { name: "query", shorthand: "q", type: String, deprecated: false, description: "Full-text search query" }, { name: "request-id", shorthand: null, type: String, deprecated: false, description: "Filter by request ID" } ], examples: [ { name: "Stream live logs for a deployment URL", value: `${packageName} logsv2 https://my-app-xxxxx.vercel.app --follow` }, { name: "Stream live logs for a deployment ID", value: `${packageName} logsv2 dpl_xxxxx --follow` }, { name: "Display recent logs for the linked project", value: `${packageName} logsv2` }, { name: "Display error logs from the last hour", value: `${packageName} logsv2 --level error --since 1h` }, { name: "Display logs for a specific deployment", value: `${packageName} logsv2 dpl_xxxxx` }, { name: "Filter logs by status code and output as JSON", value: `${packageName} logsv2 --status-code 500 --json` }, { name: "Search logs and pipe to jq", value: `${packageName} logsv2 --query "timeout" --json | jq '.message'` }, { name: "Display production logs only", value: `${packageName} logsv2 --environment production` }, { name: "Display logs for a specific request", value: `${packageName} logsv2 --request-id req_xxxxx` } ] }; } }); // src/commands/mcp/command.ts var mcpCommand; var init_command27 = __esm({ "src/commands/mcp/command.ts"() { "use strict"; init_pkg_name(); mcpCommand = { name: "mcp", aliases: [], description: "Set up MCP agents and configuration for Vercel integration", arguments: [], options: [ { name: "project", description: "Set up project-specific MCP access for the currently linked project", shorthand: null, type: Boolean, deprecated: false } ], examples: [ { name: "Interactively set up MCP agents", value: `${packageName} mcp` }, { name: "Set up project-specific MCP access", value: `${packageName} mcp --project` } ] }; } }); // src/commands/microfrontends/command.ts var pullSubcommand2, microfrontendsCommand; var init_command28 = __esm({ "src/commands/microfrontends/command.ts"() { "use strict"; init_pkg_name(); pullSubcommand2 = { name: "pull", aliases: [], description: "Pull a Vercel Microfrontends configuration into your project", arguments: [], options: [ { name: "dpl", shorthand: null, deprecated: false, type: String, description: "The deploymentId to use for pulling the microfrontends configuration" } ], examples: [ { name: "Pull a microfrontends configuration", value: `${packageName} microfrontends pull` }, { name: "Pull a microfrontends configuration for a specific deployment", value: `${packageName} microfrontends pull --dpl=` } ] }; microfrontendsCommand = { name: "microfrontends", aliases: ["mf"], description: "Manages your microfrontends", arguments: [], subcommands: [pullSubcommand2], options: [], examples: [] }; } }); // src/commands/open/command.ts var openCommand; var init_command29 = __esm({ "src/commands/open/command.ts"() { "use strict"; init_pkg_name(); openCommand = { name: "open", aliases: [], description: "Opens the current project in the Vercel Dashboard.", arguments: [], options: [], examples: [ { name: "Open the current project in the Vercel Dashboard", value: `${packageName} open` } ] }; } }); // src/commands/project/command.ts var addSubcommand6, inspectSubcommand2, listSubcommand8, removeSubcommand8, projectCommand; var init_command30 = __esm({ "src/commands/project/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); addSubcommand6 = { name: "add", aliases: [], description: "Add a new project", arguments: [ { name: "name", required: true } ], options: [], examples: [ { name: "Add a new project", value: `${packageName} project add my-project` } ] }; inspectSubcommand2 = { name: "inspect", aliases: [], description: "Displays information related to a project", arguments: [ { name: "name", required: false } ], options: [yesOption], examples: [ { name: "Inspect the linked project from the current directory", value: `${packageName} project inspect` }, { name: 'Inspect the project named "my-project"', value: `${packageName} project inspect my-project` } ] }; listSubcommand8 = { name: "list", aliases: ["ls"], description: "Show all projects in the selected scope", default: true, arguments: [], options: [ nextOption, formatOption, jsonOption, { name: "update-required", description: "A list of projects affected by an upcoming deprecation", shorthand: null, type: Boolean, deprecated: false } ], examples: [ { name: "Paginate projects, where `1584722256178` is the time in milliseconds since the UNIX epoch", value: `${packageName} project ls --next 1584722256178` }, { name: "List projects using a deprecated Node.js version in JSON format", value: `${packageName} project ls --update-required --format=json` } ] }; removeSubcommand8 = { name: "remove", aliases: ["rm"], description: "Delete a project", arguments: [ { name: "name", required: true } ], options: [], examples: [] }; projectCommand = { name: "project", aliases: ["projects"], description: "Manage your Vercel projects", arguments: [], subcommands: [ addSubcommand6, inspectSubcommand2, listSubcommand8, removeSubcommand8 ], options: [], examples: [] }; } }); // src/commands/promote/command.ts var statusSubcommand2, promoteCommand; var init_command31 = __esm({ "src/commands/promote/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); statusSubcommand2 = { name: "status", aliases: [], description: "Show the status of any current pending promotions", arguments: [ { name: "project", required: false } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when linking a Project" } ], examples: [ { name: "Show the status of any current pending promotions", value: [ `${packageName} promote status`, `${packageName} promote status `, `${packageName} promote status --timeout 30s` ] } ] }; promoteCommand = { name: "promote", aliases: [], description: "Promote an existing Deployment to current", arguments: [ { name: "url|deploymentId", required: true } ], subcommands: [statusSubcommand2], options: [ { name: "timeout", description: "Time to wait for promotion completion [3m]", argument: "TIME", shorthand: null, type: String, deprecated: false }, { ...yesOption, description: "Skip the confirmation prompt when linking a Project" } ], examples: [ { name: "Promote a Deployment using ID or URL", value: `${packageName} promote ` } ] }; } }); // src/commands/pull/command.ts var pullCommand; var init_command32 = __esm({ "src/commands/pull/command.ts"() { "use strict"; init_pkg_name(); init_env_target(); init_arg_common(); pullCommand = { name: "pull", aliases: [], description: "Pull latest environment variables and project settings from Vercel. ", arguments: [ { name: "project-path", required: false } ], options: [ { name: "environment", description: "Deployment environment [development]", argument: "TARGET", shorthand: null, type: String, deprecated: false }, { name: "git-branch", description: "Specify the Git branch to pull specific Environment Variables for", argument: "NAME", shorthand: null, type: String, deprecated: false }, { name: "prod", shorthand: null, type: Boolean, deprecated: false }, { ...yesOption, description: "Skip questions when setting up new project using default scope and settings" } ], examples: [ { name: "Pull the latest Environment Variables and Project Settings from the cloud", value: `${packageName} pull` }, { name: "Pull the latest Environment Variables and Project Settings from the cloud targeting a directory", value: `${packageName} pull ./path-to-project` }, { name: "Pull for a specific environment", value: `${packageName} pull --environment=${getEnvTargetPlaceholder()}` }, { name: "Pull for a preview feature branch", value: `${packageName} pull --environment=preview --git-branch=feature-branch` }, { name: "If you want to download environment variables to a specific file, use `vercel env pull` instead", value: `${packageName} env pull` } ] }; } }); // src/commands/redeploy/command.ts var redeployCommand; var init_command33 = __esm({ "src/commands/redeploy/command.ts"() { "use strict"; init_pkg_name(); redeployCommand = { name: "redeploy", aliases: [], description: "Rebuild and deploy a previous deployment.", arguments: [ { name: "url|deploymentId", required: false } ], options: [ { name: "no-wait", shorthand: null, description: "Don't wait for the redeploy to finish", type: Boolean, deprecated: false }, { name: "target", shorthand: null, argument: "TARGET", description: "Redeploy to a specific target environment", type: String, deprecated: false } ], examples: [ { name: "Rebuild and deploy an existing deployment using id or url", value: `${packageName} redeploy my-deployment.vercel.app` }, { name: "Write Deployment URL to a file", value: `${packageName} redeploy my-deployment.vercel.app > deployment-url.txt` }, { name: "Rebuild and deploy an existing deployment to a specific target environment", value: `${packageName} redeploy my-deployment.vercel.app --target preview` } ] }; } }); // src/commands/redirects/command.ts var listSubcommand9, listVersionsSubcommand, addSubcommand7, uploadSubcommand, removeSubcommand9, promoteSubcommand, restoreSubcommand, redirectsCommand; var init_command34 = __esm({ "src/commands/redirects/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); listSubcommand9 = { name: "list", aliases: ["ls"], description: "List all redirects for the current project. These redirects apply to all deployments and environments. There may also be redirects defined in a deployment that are not listed here.", arguments: [], options: [ { name: "search", description: "Search for redirects by source or destination", shorthand: "s", type: String, argument: "QUERY", deprecated: false }, { name: "page", description: "Page number to display", shorthand: null, type: Number, argument: "NUMBER", deprecated: false }, { name: "per-page", description: "Number of redirects per page (default: 50)", shorthand: null, type: Number, argument: "NUMBER", deprecated: false }, { name: "staging", description: "List redirects from the staging version", shorthand: null, type: Boolean, deprecated: false }, { name: "version", description: "List redirects from a specific version ID", shorthand: null, type: String, argument: "VERSION_ID", deprecated: false } ], examples: [ { name: "List all redirects", value: `${packageName} redirects list` }, { name: "Search for redirects", value: `${packageName} redirects list --search "/old-path"` }, { name: "List redirects on page 2", value: `${packageName} redirects list --page 2` }, { name: "List redirects with custom page size", value: `${packageName} redirects list --per-page 25` } ] }; listVersionsSubcommand = { name: "list-versions", aliases: ["ls-versions"], description: "List all versions of redirects", arguments: [], options: [], examples: [ { name: "List all redirect versions", value: `${packageName} redirects list-versions` } ] }; addSubcommand7 = { name: "add", aliases: [], description: "Add a new redirect", arguments: [ { name: "source", required: false }, { name: "destination", required: false } ], options: [ { name: "status", description: "HTTP status code (301, 302, 307, or 308)", shorthand: null, type: Number, argument: "CODE", deprecated: false }, { name: "case-sensitive", description: "Make the redirect case sensitive", shorthand: null, type: Boolean, deprecated: false }, { name: "preserve-query-params", description: "Preserve query parameters when redirecting", shorthand: null, type: Boolean, deprecated: false }, { name: "name", description: "Version name for this redirect (max 256 characters)", shorthand: null, type: String, argument: "NAME", deprecated: false }, { ...yesOption, description: "Skip prompts and use default values" } ], examples: [ { name: "Add a new redirect interactively", value: `${packageName} redirects add` }, { name: "Add a new redirect with arguments", value: `${packageName} redirects add /old-path /new-path` }, { name: "Add a redirect with all options", value: `${packageName} redirects add /old-path /new-path --status 301 --case-sensitive --preserve-query-params --name "My redirect"` }, { name: "Add a redirect non-interactively", value: `${packageName} redirects add /old-path /new-path --yes` } ] }; uploadSubcommand = { name: "upload", aliases: ["import"], description: "Upload redirects from a CSV or JSON file", arguments: [ { name: "file", required: true } ], options: [ { ...yesOption, description: "Skip confirmation prompt" }, { name: "overwrite", description: "Replace all existing redirects", shorthand: null, type: Boolean, deprecated: false } ], examples: [ { name: "Upload redirects from CSV file", value: `${packageName} redirects upload redirects.csv` }, { name: "Upload redirects from JSON file", value: `${packageName} redirects upload redirects.json` }, { name: "Upload and overwrite existing redirects", value: `${packageName} redirects upload redirects.csv --overwrite` }, { name: "Upload without confirmation", value: `${packageName} redirects upload redirects.csv --yes` } ] }; removeSubcommand9 = { name: "remove", aliases: ["rm"], description: "Remove a redirect", arguments: [ { name: "source", required: true } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when removing a redirect" } ], examples: [ { name: "Remove a redirect", value: `${packageName} redirects remove /old-path` } ] }; promoteSubcommand = { name: "promote", aliases: [], description: "Promote a staged redirects version to production", arguments: [ { name: "version-id", required: true } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when promoting" } ], examples: [ { name: "Promote a redirect version", value: `${packageName} redirects promote ` } ] }; restoreSubcommand = { name: "restore", aliases: [], description: "Restore a previous redirects version", arguments: [ { name: "version-id", required: true } ], options: [ { ...yesOption, description: "Skip the confirmation prompt when restoring" } ], examples: [ { name: "Restore a redirects version", value: `${packageName} redirects restore ` } ] }; redirectsCommand = { name: "redirects", aliases: ["redirect"], description: "Manage redirects for a project. Redirects managed at the project level apply to all deployments and environments and take effect immediately after being created and promoted to production.", arguments: [], subcommands: [ listSubcommand9, listVersionsSubcommand, addSubcommand7, uploadSubcommand, removeSubcommand9, promoteSubcommand, restoreSubcommand ], options: [], examples: [] }; } }); // src/commands/remove/command.ts var removeCommand; var init_command35 = __esm({ "src/commands/remove/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); removeCommand = { name: "remove", aliases: ["rm"], description: "Remove deployment(s) by project name or deployment ID.", arguments: [ { name: "name|deploymentId", required: true, multiple: true } ], options: [ { ...yesOption, description: "Skip confirmation" }, { name: "safe", shorthand: "s", type: Boolean, deprecated: false, description: "Skip deployments with an active alias" }, { name: "hard", shorthand: null, type: Boolean, deprecated: false } ], examples: [ { name: "Remove a deployment identified by Deployment ID", value: `${packageName} remove dpl_abcdef123456890` }, { name: "Remove all deployments with Project name `my-app`", value: `${packageName} remove my-app` }, { name: "Remove two deployments with Deployment IDs", value: `${packageName} remove dpl_eyWt6zuSdeus dpl_uWHoA9RQ1d1o` } ] }; } }); // src/commands/rollback/command.ts var statusSubcommand3, rollbackCommand; var init_command36 = __esm({ "src/commands/rollback/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); statusSubcommand3 = { name: "status", aliases: [], description: "Show the status of any current pending rollbacks", arguments: [ { name: "project", required: false } ], options: [], examples: [ { name: "Show the status of any current pending rollbacks", value: [ `${packageName} rollback status`, `${packageName} rollback status `, `${packageName} rollback status --timeout 30s` ] } ] }; rollbackCommand = { name: "rollback", aliases: [], description: "Quickly revert back to a previous deployment", arguments: [ { name: "url|deploymentId", required: true } ], subcommands: [statusSubcommand3], options: [ { name: "timeout", description: "Time to wait for rollback completion [3m]", argument: "TIME", shorthand: null, type: String, deprecated: false }, yesOption ], examples: [ { name: "Rollback a deployment using id or url", value: `${packageName} rollback ` } ] }; } }); // src/commands/rolling-release/command.ts var configureSubcommand, startSubcommand, approveSubcommand, abortSubcommand, completeSubcommand, fetchSubcommand, rollingReleaseCommand; var init_command37 = __esm({ "src/commands/rolling-release/command.ts"() { "use strict"; init_arg_common(); init_pkg_name(); configureSubcommand = { name: "configure", description: "Configure rolling release settings for a project", aliases: [], arguments: [], examples: [ { name: "Configure a new rolling release with an intial stage of 10% that lasts for 5 minutes before automatically advancing to 100%", value: `${packageName} rolling-release configure --cfg='{"enabled":true, "advancementType":"automatic", "stages":[{"targetPercentage":10,"duration":5},{"targetPercentage":100}]}'` } ], options: [ { name: "cfg", shorthand: null, deprecated: false, type: String, description: "The project's rolling release configuration" } ] }; startSubcommand = { name: "start", description: "Start a rolling release", aliases: [], arguments: [], examples: [ { name: "Start a rolling release", value: `${packageName} rr start --dpl=dpl_123` }, { name: "Start a rolling release using URL", value: `${packageName} rr start --dpl=https://example.vercel.app` } ], options: [ { name: "dpl", shorthand: null, deprecated: false, type: String, description: "The deploymentId or URL to target for the rolling release", required: true }, yesOption ] }; approveSubcommand = { name: "approve", description: "Approve the current stage of an active rolling release", aliases: [], arguments: [], examples: [ { name: "Approve the current stage of an active rolling release", value: `${packageName} rolling-release approve --currentStageIndex=0 --dpl=dpl_123` } ], options: [ { name: "dpl", shorthand: null, deprecated: false, type: String, description: "The deploymentId of the rolling release" }, { name: "currentStageIndex", shorthand: null, deprecated: false, type: String, description: "The current stage of a rolling release to approve" } ] }; abortSubcommand = { name: "abort", description: "Abort an active rolling release", aliases: [], arguments: [], examples: [ { name: "Abort an active rolling release", value: `${packageName} rolling-release abort --dpl=dpl_123` } ], options: [ { name: "dpl", shorthand: null, deprecated: false, type: String, description: "The deploymentId of the rolling release to abort" } ] }; completeSubcommand = { name: "complete", description: "Complete an active rolling release", aliases: [], arguments: [], examples: [ { name: "Complete an active rolling release", value: `${packageName} rolling-release complete --dpl=dpl_123` } ], options: [ { name: "dpl", shorthand: null, deprecated: false, type: String, description: "The deploymentId of the rolling release to complete" } ] }; fetchSubcommand = { name: "fetch", description: "Fetch details about a rolling release", aliases: [], arguments: [], examples: [ { name: "Fetch details about a rolling release", value: `${packageName} rolling-release fetch` } ], options: [] }; rollingReleaseCommand = { name: "rolling-release", aliases: ["rr"], description: "Manage your project's rolling release.", arguments: [], subcommands: [ configureSubcommand, startSubcommand, approveSubcommand, abortSubcommand, completeSubcommand, fetchSubcommand ], options: [], examples: [ { name: "Start a rolling release", value: `${packageName} rr start --dpl=dpl_123` }, { name: "Start a rolling release using URL", value: `${packageName} rr start --dpl=https://example.vercel.app` }, { name: "Configure a new rolling release with an intial stage of 10% that lasts for 5 minutes before automatically advancing to 100%", value: `${packageName} rolling-release configure --cfg='{"enabled":true, "advancementType":"automatic", "stages":[{"targetPercentage":10,"duration":5},{"targetPercentage":100}]}'` }, { name: "Configure a new rolling release with an intial stage of 10% that requires approval, prior to advancing to 100%", value: `${packageName} rolling-release configure --cfg='{"enabled":true, "advancementType":"manual-approval","stages":[{"targetPercentage":10},{"targetPercentage":100}]}'` }, { name: "Configure a new rolling release with an intial stage of 10% that requires approval, prior to advancing to 50%, and then again to 100%", value: `${packageName} rolling-release configure --cfg='{"enabled":true, "advancementType":"manual-approval", "stages":[{"targetPercentage":10},{"targetPercentage":50},{"targetPercentage":100}]}'` }, { name: "Disable rolling releases", value: `${packageName} rolling-release configure --cfg='disable'` }, { name: "Approve an active rolling release stage", value: `${packageName} rolling-release approve --currentStageIndex=0 --dpl=dpl_123` }, { name: "Abort an active rolling release.", value: `${packageName} rolling-release abort --dpl=dpl_123` }, { name: "Complete an active rolling release.", value: `${packageName} rolling-release complete --dpl=dpl_123` } ] }; } }); // src/commands/target/command.ts var listSubcommand10, targetCommand; var init_command38 = __esm({ "src/commands/target/command.ts"() { "use strict"; init_arg_common(); init_pkg_name(); listSubcommand10 = { name: "list", aliases: ["ls"], description: "List targets defined for the current Project", arguments: [], options: [formatOption], examples: [ { name: "List all targets for the current Project", value: `${packageName} target ls my-project` } ] }; targetCommand = { name: "target", aliases: ["targets"], description: `Manage your Vercel Project's "targets" (custom environments).`, arguments: [], subcommands: [listSubcommand10], options: [], examples: [] }; } }); // src/commands/teams/command.ts var addSubcommand8, listSubcommand11, switchSubcommand, inviteSubcommand, teamsCommand; var init_command39 = __esm({ "src/commands/teams/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); addSubcommand8 = { name: "add", aliases: ["create"], description: "Create a new team", arguments: [], options: [], examples: [] }; listSubcommand11 = { name: "list", aliases: ["ls"], description: "Show all teams that you're a member of", arguments: [], options: [ nextOption, formatOption, { name: "since", shorthand: null, type: String, deprecated: true }, { name: "until", shorthand: null, type: String, deprecated: true }, { name: "count", shorthand: "C", type: Number, deprecated: true } ], examples: [ { name: "Paginate results, where `1584722256178` is the time in milliseconds since the UNIX epoch", value: `${packageName} teams ls --next 1584722256178` } ] }; switchSubcommand = { name: "switch", aliases: ["change"], description: "Switch to a different team", arguments: [ { name: "name", required: false } ], options: [], examples: [ { name: "Switch to a team. If your team's url is 'vercel.com/name', then 'name' is the slug. If the slug is omitted, you can choose interactively", value: `${packageName} teams switch ` } ] }; inviteSubcommand = { name: "invite", aliases: [], description: "Invite a new member to a team", arguments: [ { name: "email", required: true, multiple: true } ], options: [], examples: [ { name: "Invite new members (interactively)", value: `${packageName} teams invite` }, { name: "Invite multiple members simultaneously", value: `${packageName} teams invite abc@vercel.com xyz@vercel.com` } ] }; teamsCommand = { name: "teams", aliases: ["switch", "team"], description: "Manage Teams under your Vercel account", arguments: [], subcommands: [ addSubcommand8, inviteSubcommand, listSubcommand11, switchSubcommand ], options: [], examples: [] }; } }); // src/commands/telemetry/command.ts var statusSubcommand4, enableSubcommand2, flushSubcommand, disableSubcommand2, telemetryCommand; var init_command40 = __esm({ "src/commands/telemetry/command.ts"() { "use strict"; statusSubcommand4 = { name: "status", aliases: [], description: "Shows whether telemetry collection is enabled or disabled", arguments: [], options: [], examples: [] }; enableSubcommand2 = { name: "enable", aliases: [], description: "Enables telemetry collection", arguments: [], options: [], examples: [] }; flushSubcommand = { name: "flush", aliases: [], description: "Internal command to flush telemetry events", hidden: true, arguments: [], options: [], examples: [] }; disableSubcommand2 = { name: "disable", aliases: [], description: "Disables telemetry collection", arguments: [], options: [], examples: [] }; telemetryCommand = { name: "telemetry", aliases: [], description: "Allows you to enable or disable telemetry collection", arguments: [], subcommands: [ enableSubcommand2, disableSubcommand2, statusSubcommand4, flushSubcommand ], options: [], examples: [] }; } }); // src/commands/upgrade/command.ts var upgradeCommand; var init_command41 = __esm({ "src/commands/upgrade/command.ts"() { "use strict"; init_arg_common(); init_pkg_name(); upgradeCommand = { name: "upgrade", aliases: [], description: "Upgrades the Vercel CLI to the latest version.", arguments: [], options: [ { name: "dry-run", shorthand: null, type: Boolean, deprecated: false, description: "Show the upgrade command without executing it" }, { ...formatOption, description: "Specify the output format (json) - implies --dry-run" }, jsonOption ], examples: [ { name: "Upgrade the Vercel CLI to the latest version", value: `${packageName} upgrade` }, { name: "Show the upgrade command without running it", value: `${packageName} upgrade --dry-run` }, { name: "Get upgrade information as JSON", value: `${packageName} upgrade --format=json` } ] }; } }); // src/commands/whoami/command.ts var whoamiCommand; var init_command42 = __esm({ "src/commands/whoami/command.ts"() { "use strict"; init_pkg_name(); init_arg_common(); whoamiCommand = { name: "whoami", aliases: [], description: "Shows the username of the currently logged in user.", arguments: [], options: [formatOption], examples: [ { name: "Shows the username of the currently logged in user", value: `${packageName} whoami` } ] }; } }); // src/commands/blob/command.ts var listSubcommand12, putSubcommand, delSubcommand, copySubcommand, addStoreSubcommand, removeStoreSubcommand, getStoreSubcommand, storeSubcommand, blobCommand; var init_command43 = __esm({ "src/commands/blob/command.ts"() { "use strict"; listSubcommand12 = { name: "list", aliases: ["ls"], description: "List all files in the Blob store", arguments: [], options: [ { name: "limit", shorthand: "l", type: Number, deprecated: false, description: "Number of results to return per page (default: 10, max: 1000)", argument: "NUMBER" }, { name: "cursor", shorthand: "c", type: String, deprecated: false, description: "Cursor from previous page to start listing from", argument: "STRING" }, { name: "prefix", shorthand: "p", type: String, deprecated: false, description: "Prefix to filter Blobs by", argument: "STRING" }, { name: "mode", shorthand: "m", type: String, deprecated: false, description: "Mode to filter Blobs by either folded or expanded (default: expanded)", argument: "String", choices: ["folded", "expanded"] } ], examples: [] }; putSubcommand = { name: "put", aliases: [], description: "Upload a file to the Blob store", arguments: [ { name: "pathToFile", required: true } ], options: [ { name: "add-random-suffix", shorthand: "r", type: Boolean, deprecated: false, description: "Add a random suffix to the file name (default: false)", argument: "Boolean" }, { name: "pathname", shorthand: "p", type: String, deprecated: false, description: "Pathname to upload the file to (default: filename)", argument: "String" }, { name: "multipart", shorthand: "u", type: Boolean, deprecated: false, description: "If true upload the file in multiple small chunks for performance and reliability (default: true)", argument: "Boolean" }, { name: "content-type", shorthand: "t", type: String, deprecated: false, description: "Overwrite the content-type. Will be inferred from the file extension if not provided", argument: "String" }, { name: "cache-control-max-age", shorthand: "c", type: Number, deprecated: false, description: "Max-age of the cache-control header directive (default: 2592000 = 30 days)", argument: "Number" }, { name: "force", shorthand: "f", type: Boolean, deprecated: false, description: "Overwrite the file if it already exists (default: false)", argument: "Boolean" } ], examples: [] }; delSubcommand = { name: "del", aliases: [], description: "Delete a file from the Blob store", arguments: [ { name: "urlsOrPathnames", required: true } ], options: [], examples: [] }; copySubcommand = { name: "copy", aliases: ["cp"], description: "Copy a file in the Blob store", arguments: [ { name: "fromUrlOrPathname", required: true }, { name: "toPathname", required: true } ], options: [ { name: "add-random-suffix", shorthand: "r", type: Boolean, deprecated: false, description: "Add a random suffix to the file name", argument: "Boolean" }, { name: "content-type", shorthand: "t", type: String, deprecated: false, description: "Overwrite the content-type. Will be inferred from the file extension if not provided", argument: "String" }, { name: "cache-control-max-age", shorthand: "c", type: Number, deprecated: false, description: "Max-age of the cache-control header directive (default: 2592000 = 30 days)", argument: "Number" } ], examples: [] }; addStoreSubcommand = { name: "add", aliases: [], description: "Add a new Blob store", arguments: [ { name: "name", required: false } ], options: [ { name: "region", shorthand: "r", type: String, deprecated: false, description: 'Region to create the Blob store in (default: "iad1"). See https://vercel.com/docs/edge-network/regions#region-list for all available regions', argument: "STRING" } ], examples: [ { name: 'Create a blob store (uses default region "iad1")', value: "vercel blob store add my-store" }, { name: "Create a blob store in a specific region", value: "vercel blob store add my-store --region cdg1" } ] }; removeStoreSubcommand = { name: "remove", aliases: ["rm"], description: "Remove a Blob store", arguments: [ { name: "storeId", required: false } ], options: [], examples: [] }; getStoreSubcommand = { name: "get", aliases: [], description: "Get a Blob store", arguments: [ { name: "storeId", required: false } ], options: [], examples: [] }; storeSubcommand = { name: "store", aliases: [], description: "Manage or create a Blob store", arguments: [], subcommands: [addStoreSubcommand, removeStoreSubcommand, getStoreSubcommand], options: [], examples: [] }; blobCommand = { name: "blob", aliases: [], description: "Interact with Vercel Blob", arguments: [], subcommands: [ listSubcommand12, putSubcommand, delSubcommand, copySubcommand, storeSubcommand ], options: [ { name: "rw-token", shorthand: null, type: String, deprecated: false, description: "Read_Write_Token for the Blob store", argument: "String" } ], examples: [] }; } }); // src/commands/index.ts function getCommandAliases(command) { return [command.name].concat(command.aliases); } var commandsStructs, commands, commandNames; var init_commands = __esm({ "src/commands/index.ts"() { "use strict"; init_command(); init_command2(); init_command3(); init_command4(); init_command5(); init_command6(); init_command7(); init_command8(); init_command9(); init_command10(); init_command11(); init_command12(); init_command13(); init_command14(); init_command15(); init_command16(); init_command17(); init_command18(); init_command19(); init_command20(); init_command21(); init_command22(); init_command23(); init_command24(); init_command25(); init_command26(); init_command27(); init_command28(); init_command29(); init_command30(); init_command31(); init_command32(); init_command33(); init_command34(); init_command35(); init_command36(); init_command37(); init_command38(); init_command39(); init_command40(); init_command41(); init_command42(); init_command43(); init_output_manager(); commandsStructs = [ aliasCommand, apiCommand, blobCommand, bisectCommand, buildCommand, cacheCommand, certsCommand, curlCommand, deployCommand, devCommand, dnsCommand, domainsCommand, envCommand, gitCommand, httpstatCommand, initCommand, inspectCommand, installCommand, integrationCommand, integrationResourceCommand, linkCommand, listCommand, loginCommand, logoutCommand, logsCommand, logsv2Command, mcpCommand, microfrontendsCommand, openCommand, projectCommand, promoteCommand, pullCommand, redeployCommand, redirectsCommand, removeCommand, rollbackCommand, rollingReleaseCommand, targetCommand, teamsCommand, telemetryCommand, upgradeCommand, whoamiCommand, // added because we don't have a full help command { name: "help", aliases: [] } ]; if (process.env.FF_GUIDANCE_MODE) { commandsStructs.push(guidanceCommand); } commands = /* @__PURE__ */ new Map(); for (const command of commandsStructs) { const aliases = getCommandAliases(command); output_manager_default.debug( `Registering command ${command.name} with aliases: ${JSON.stringify(aliases)}` ); for (const alias2 of aliases) { output_manager_default.debug(`Setting alias ${alias2} -> ${command.name}`); commands.set(alias2, command.name); } } output_manager_default.debug( `All registered commands: ${JSON.stringify(Array.from(commands.entries()))}` ); commandNames = Array.from(commands.keys()); } }); // ../../node_modules/.pnpm/jaro-winkler@0.2.8/node_modules/jaro-winkler/index.js var require_jaro_winkler = __commonJS2({ "../../node_modules/.pnpm/jaro-winkler@0.2.8/node_modules/jaro-winkler/index.js"(exports2, module2) { (function(root) { "use strict"; function extend(a, b) { for (var property in b) { if (b.hasOwnProperty(property)) { a[property] = b[property]; } } return a; } function distance2(s1, s2, options) { var m = 0; var defaults = { caseSensitive: true }; var settings = extend(defaults, options); var i; var j; if (s1.length === 0 || s2.length === 0) { return 0; } if (!settings.caseSensitive) { s1 = s1.toUpperCase(); s2 = s2.toUpperCase(); } if (s1 === s2) { return 1; } var range = Math.floor(Math.max(s1.length, s2.length) / 2) - 1; var s1Matches = new Array(s1.length); var s2Matches = new Array(s2.length); for (i = 0; i < s1.length; i++) { var low = i >= range ? i - range : 0; var high = i + range <= s2.length - 1 ? i + range : s2.length - 1; for (j = low; j <= high; j++) { if (s1Matches[i] !== true && s2Matches[j] !== true && s1[i] === s2[j]) { ++m; s1Matches[i] = s2Matches[j] = true; break; } } } if (m === 0) { return 0; } var k = 0; var numTrans = 0; for (i = 0; i < s1.length; i++) { if (s1Matches[i] === true) { for (j = k; j < s2.length; j++) { if (s2Matches[j] === true) { k = j + 1; break; } } if (s1[i] !== s2[j]) { ++numTrans; } } } var weight = (m / s1.length + m / s2.length + (m - numTrans / 2) / m) / 3; var l = 0; var p = 0.1; if (weight > 0.7) { while (s1[l] === s2[l] && l < 4) { ++l; } weight = weight + l * p * (1 - weight); } return weight; } if (typeof define === "function" && define.amd) { define([], function() { return distance2; }); } else if (typeof exports2 === "object") { module2.exports = distance2; } else { root.distance = distance2; } })(exports2); } }); // src/util/did-you-mean.ts function didYouMean(input, list10, threshold = 0.5) { const rated = list10.map((item) => [dashAwareDistance(input, item), item]); const found = rated.filter((item) => item[0] > threshold); if (found.length) { const highestRated = found.reduce((accu, curr) => { return accu[0] > curr[0] ? accu : curr; }); return highestRated[1]; } } function dashAwareDistance(word, dashWord) { const fullDistance = (0, import_jaro_winkler.default)(word, dashWord); const distances = dashWord.split("-").map((w) => (0, import_jaro_winkler.default)(w, word)); const meanDistance = distances.reduce((accu, curr) => accu + curr) / distances.length; return fullDistance > meanDistance ? fullDistance : meanDistance; } var import_jaro_winkler, did_you_mean_default; var init_did_you_mean = __esm({ "src/util/did-you-mean.ts"() { "use strict"; import_jaro_winkler = __toESM3(require_jaro_winkler(), 1); did_you_mean_default = didYouMean; } }); // src/util/output/param.ts function param(text) { return `${import_chalk5.default.gray('"')}${import_chalk5.default.bold(text)}${import_chalk5.default.gray('"')}`; } var import_chalk5; var init_param = __esm({ "src/util/output/param.ts"() { "use strict"; import_chalk5 = __toESM3(require_source(), 1); } }); // src/util/output/highlight.ts function highlight(text) { return import_chalk6.default.bold.underline(text); } var import_chalk6; var init_highlight = __esm({ "src/util/output/highlight.ts"() { "use strict"; import_chalk6 = __toESM3(require_source(), 1); } }); // ../../node_modules/.pnpm/arg@5.0.0/node_modules/arg/index.js var require_arg = __commonJS2({ "../../node_modules/.pnpm/arg@5.0.0/node_modules/arg/index.js"(exports2, module2) { var flagSymbol = Symbol("arg flag"); var ArgError = class _ArgError extends Error { constructor(msg, code2) { super(msg); this.name = "ArgError"; this.code = code2; Object.setPrototypeOf(this, _ArgError.prototype); } }; function arg2(opts, { argv = process.argv.slice(2), permissive = false, stopAtPositional = false } = {}) { if (!opts) { throw new ArgError("argument specification object is required", "ARG_CONFIG_NO_SPEC"); } const result = { _: [] }; const aliases = {}; const handlers = {}; for (const key of Object.keys(opts)) { if (!key) { throw new ArgError("argument key cannot be an empty string", "ARG_CONFIG_EMPTY_KEY"); } if (key[0] !== "-") { throw new ArgError(`argument key must start with '-' but found: '${key}'`, "ARG_CONFIG_NONOPT_KEY"); } if (key.length === 1) { throw new ArgError(`argument key must have a name; singular '-' keys are not allowed: ${key}`, "ARG_CONFIG_NONAME_KEY"); } if (typeof opts[key] === "string") { aliases[key] = opts[key]; continue; } let type = opts[key]; let isFlag = false; if (Array.isArray(type) && type.length === 1 && typeof type[0] === "function") { const [fn2] = type; type = (value, name, prev = []) => { prev.push(fn2(value, name, prev[prev.length - 1])); return prev; }; isFlag = fn2 === Boolean || fn2[flagSymbol] === true; } else if (typeof type === "function") { isFlag = type === Boolean || type[flagSymbol] === true; } else { throw new ArgError(`type missing or not a function or valid array type: ${key}`, "ARG_CONFIG_VAD_TYPE"); } if (key[1] !== "-" && key.length > 2) { throw new ArgError(`short argument keys (with a single hyphen) must have only one character: ${key}`, "ARG_CONFIG_SHORTOPT_TOOLONG"); } handlers[key] = [type, isFlag]; } for (let i = 0, len = argv.length; i < len; i++) { const wholeArg = argv[i]; if (stopAtPositional && result._.length > 0) { result._ = result._.concat(argv.slice(i)); break; } if (wholeArg === "--") { result._ = result._.concat(argv.slice(i + 1)); break; } if (wholeArg.length > 1 && wholeArg[0] === "-") { const separatedArguments = wholeArg[1] === "-" || wholeArg.length === 2 ? [wholeArg] : wholeArg.slice(1).split("").map((a) => `-${a}`); for (let j = 0; j < separatedArguments.length; j++) { const arg3 = separatedArguments[j]; const [originalArgName, argStr] = arg3[1] === "-" ? arg3.split(/=(.*)/, 2) : [arg3, void 0]; let argName = originalArgName; while (argName in aliases) { argName = aliases[argName]; } if (!(argName in handlers)) { if (permissive) { result._.push(arg3); continue; } else { throw new ArgError(`unknown or unexpected option: ${originalArgName}`, "ARG_UNKNOWN_OPTION"); } } const [type, isFlag] = handlers[argName]; if (!isFlag && j + 1 < separatedArguments.length) { throw new ArgError(`option requires argument (but was followed by another short argument): ${originalArgName}`, "ARG_MISSING_REQUIRED_SHORTARG"); } if (isFlag) { result[argName] = type(true, argName, result[argName]); } else if (argStr === void 0) { if (argv.length < i + 2 || argv[i + 1].length > 1 && argv[i + 1][0] === "-" && !(argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) && (type === Number || // eslint-disable-next-line no-undef typeof BigInt !== "undefined" && type === BigInt))) { const extended = originalArgName === argName ? "" : ` (alias for ${argName})`; throw new ArgError(`option requires argument: ${originalArgName}${extended}`, "ARG_MISSING_REQUIRED_LONGARG"); } result[argName] = type(argv[i + 1], argName, result[argName]); ++i; } else { result[argName] = type(argStr, argName, result[argName]); } } } else { result._.push(wholeArg); } } return result; } arg2.flag = (fn2) => { fn2[flagSymbol] = true; return fn2; }; arg2.COUNT = arg2.flag((v, name, existingCount) => (existingCount || 0) + 1); arg2.ArgError = ArgError; module2.exports = arg2; } }); // src/util/get-args.ts function getArgs(argv, argsOptions, argOptions = {}) { return (0, import_arg.default)(Object.assign({}, arg_common_default(), argsOptions), { ...argOptions, argv }); } function parseArguments(args2, flagsSpecification, parserOptions = {}) { const { _: positional, ...rest } = (0, import_arg.default)( Object.assign({}, arg_common_default(), flagsSpecification), { ...parserOptions, argv: args2 } ); return { args: positional, flags: rest }; } var import_arg; var init_get_args = __esm({ "src/util/get-args.ts"() { "use strict"; import_arg = __toESM3(require_arg(), 1); init_arg_common(); } }); // ../../node_modules/.pnpm/bytes@3.0.0/node_modules/bytes/index.js var require_bytes = __commonJS2({ "../../node_modules/.pnpm/bytes@3.0.0/node_modules/bytes/index.js"(exports2, module2) { "use strict"; module2.exports = bytes9; module2.exports.format = format8; module2.exports.parse = parse11; 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: (1 << 30) * 1024 }; var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i; function bytes9(value, options) { if (typeof value === "string") { return parse11(value); } if (typeof value === "number") { return format8(value, options); } return null; } function format8(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.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.replace(formatThousandsRegExp, thousandsSeparator); } return str + unitSeparator + unit; } function parse11(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(); } return Math.floor(map[unit] * floatValue); } } }); // src/util/now-error.ts var NowError; var init_now_error = __esm({ "src/util/now-error.ts"() { "use strict"; NowError = class extends Error { constructor({ code: code2, message: message2, meta }) { super(message2); this.code = code2; this.meta = meta; } }; } }); // src/util/output/code.ts function code(cmd2, { backticks = true } = {}) { const tick = backticks ? import_chalk7.default.gray("`") : ""; return `${tick}${import_chalk7.default.bold(cmd2)}${tick}`; } var import_chalk7; var init_code = __esm({ "src/util/output/code.ts"() { "use strict"; import_chalk7 = __toESM3(require_source(), 1); } }); // src/util/errors-ts.ts import { NowBuildError } from "@vercel/build-utils"; function parseRetryAfterHeaderAsMillis(header) { if (!header) return void 0; let retryAfterMs = Number(header) * 1e3; if (Number.isNaN(retryAfterMs)) { retryAfterMs = Date.parse(header); if (Number.isNaN(retryAfterMs)) { return void 0; } else { retryAfterMs = retryAfterMs - Date.now(); } } return Math.max(retryAfterMs, 0); } function isAPIError(v) { return (0, import_error_utils2.isError)(v) && "status" in v; } var import_bytes, import_chalk8, import_error_utils2, APIError, TeamDeleted, InvalidToken, MissingUser, DomainAlreadyExists, DomainPermissionDenied, DomainExternal, SourceNotFound, DomainNotFound, DomainNotVerified, DomainVerificationFailed, InvalidDomain, NotDomainOwner, InvalidDeploymentId, UnsupportedTLD, TLDNotSupportedViaCLI, DomainNotAvailable, UnexpectedDomainPurchaseError, UnexpectedDomainTransferError, DomainPaymentError, DomainPurchasePending, UserAborted, CertNotFound, CertsPermissionDenied, CertOrderNotFound, TooManyRequests, CertError, CertConfigurationError, DeploymentNotFound, DeploymentNotReady, DeploymentFailedAliasImpossible, DeploymentPermissionDenied, InvalidAlias, AliasInUse, CertMissing, CantParseJSONFile, ConflictingConfigFiles, CantFindConfig, WorkingDirectoryDoesNotExist, NoAliasInConfig, InvalidAliasInConfig, DNSPermissionDenied, DNSInvalidPort, DNSInvalidType, DNSConflictingRecord, DomainRemovalConflict, DomainMoveConflict, InvalidMoveDestination, LambdaSizeExceededError, MissingDotenvVarsError, DeploymentsRateLimited, BuildsRateLimited, ProjectNotFound, AliasDomainConfigured, MissingBuildScript, ConflictingFilePath, ConflictingPathSegment, BuildError, SchemaValidationFailed, InvalidLocalConfig; var init_errors_ts = __esm({ "src/util/errors-ts.ts"() { "use strict"; import_bytes = __toESM3(require_bytes(), 1); init_now_error(); init_code(); init_pkg_name(); import_chalk8 = __toESM3(require_source(), 1); import_error_utils2 = __toESM3(require_dist2(), 1); APIError = class extends Error { constructor(message2, response, body) { super(); this.message = `${message2} (${response.status})`; this.status = response.status; this.serverMessage = message2; if (body) { for (const field of Object.keys(body)) { if (field !== "message") { this[field] = body[field]; } } } if (response.status === 429 || response.status === 503) { const parsed = parseRetryAfterHeaderAsMillis( response.headers.get("Retry-After") ); this.retryAfterMs = parsed ?? (response.status === 429 ? 0 : void 0); } } }; TeamDeleted = class extends NowError { constructor() { super({ code: "TEAM_DELETED", message: `Your team was deleted or you were removed from the team. You can switch to a different one using ${getCommandName( `switch` )}.`, meta: {} }); } }; InvalidToken = class extends NowError { constructor() { super({ code: `NOT_AUTHORIZED`, message: `The specified token is not valid. Use ${getCommandName( `login` )} to generate a new token.`, meta: {} }); } }; MissingUser = class extends NowError { constructor() { super({ code: "MISSING_USER", message: `Not able to load user, missing from response`, meta: {} }); } }; DomainAlreadyExists = class extends NowError { constructor(domain) { super({ code: "DOMAIN_ALREADY_EXISTS", meta: { domain }, message: `The domain ${domain} already exists under a different context.` }); } }; DomainPermissionDenied = class extends NowError { constructor(domain, context) { super({ code: "DOMAIN_PERMISSION_DENIED", meta: { domain, context }, message: `You don't have access to the domain ${domain} under ${context}.` }); } }; DomainExternal = class extends NowError { constructor(domain) { super({ code: "DOMAIN_EXTERNAL", meta: { domain }, message: `The domain ${domain} must point to zeit.world.` }); } }; SourceNotFound = class extends NowError { constructor() { super({ code: "SOURCE_NOT_FOUND", meta: {}, message: `Not able to purchase. Please add a payment method using the dashboard.` }); } }; DomainNotFound = class extends NowError { constructor(domain, contextName) { super({ code: "DOMAIN_NOT_FOUND", meta: { domain }, message: `Domain not found by "${domain}"${contextName ? ` under ${import_chalk8.default.bold(contextName)}` : ""}.` }); } }; DomainNotVerified = class extends NowError { constructor(domain) { super({ code: "DOMAIN_NOT_VERIFIED", meta: { domain }, message: `The domain ${domain} is not verified.` }); } }; DomainVerificationFailed = class extends NowError { constructor({ domain, nsVerification, txtVerification, purchased = false }) { super({ code: "DOMAIN_VERIFICATION_FAILED", meta: { domain, nsVerification, txtVerification, purchased }, message: `We can't verify the domain ${domain}. Both Name Servers and DNS TXT verifications failed.` }); } }; InvalidDomain = class extends NowError { constructor(domain, message2) { super({ code: "INVALID_DOMAIN", meta: { domain }, message: message2 || `The domain ${domain} is not valid.` }); } }; NotDomainOwner = class extends NowError { constructor(message2) { super({ code: "NOT_DOMAIN_OWNER", meta: {}, message: message2 }); } }; InvalidDeploymentId = class extends NowError { constructor(id) { super({ code: "INVALID_DEPLOYMENT_ID", meta: { id }, message: `The deployment id "${id}" is not valid.` }); } }; UnsupportedTLD = class extends NowError { constructor(domain) { super({ code: "UNSUPPORTED_TLD", meta: { domain }, message: `The TLD for domain name ${domain} is not supported.` }); } }; TLDNotSupportedViaCLI = class extends NowError { constructor(domain) { super({ code: "UNSUPPORTED_TLD_VIA_CLI", meta: { domain }, message: `Purchased for the TLD for domain name ${domain} are not supported via the CLI. Use the REST API or the dashboard to purchase.` }); } }; DomainNotAvailable = class extends NowError { constructor(domain) { super({ code: "DOMAIN_NOT_AVAILABLE", meta: { domain }, message: `The domain ${domain} is not available to be purchased.` }); } }; UnexpectedDomainPurchaseError = class extends NowError { constructor(domain) { super({ code: "UNEXPECTED_DOMAIN_PURCHASE_ERROR", meta: { domain }, message: `An unexpected error happened while purchasing.` }); } }; UnexpectedDomainTransferError = class extends NowError { constructor(domain) { super({ code: "UNEXPECTED_DOMAIN_TRANSFER_ERROR", meta: { domain }, message: `An unexpected error happened while transferring.` }); } }; DomainPaymentError = class extends NowError { constructor() { super({ code: "DOMAIN_PAYMENT_ERROR", meta: {}, message: `Your card was declined.` }); } }; DomainPurchasePending = class extends NowError { constructor(domain) { super({ code: "DOMAIN_PURCHASE_PENDING", meta: { domain }, message: `The domain purchase for ${domain} is pending.` }); } }; UserAborted = class extends NowError { constructor() { super({ code: "USER_ABORTED", meta: {}, message: `The user canceled the operation.` }); } }; CertNotFound = class extends NowError { constructor(id) { super({ code: "CERT_NOT_FOUND", meta: { id }, message: `The cert ${id} can't be found.` }); } }; CertsPermissionDenied = class extends NowError { constructor(context, domain) { super({ code: "CERTS_PERMISSION_DENIED", meta: { domain }, message: `You don't have access to ${domain}'s certs under ${context}.` }); } }; CertOrderNotFound = class extends NowError { constructor(cns) { super({ code: "CERT_ORDER_NOT_FOUND", meta: { cns }, message: `No cert order could be found for cns ${cns.join(" ,")}` }); } }; TooManyRequests = class extends NowError { constructor(api2, retryAfterMs) { super({ code: "TOO_MANY_REQUESTS", meta: { api: api2, retryAfterMs }, message: `Rate limited. Too many requests to the same endpoint.` }); } }; CertError = class extends NowError { constructor({ cns, code: code2, message: message2, helpUrl }) { super({ code: `CERT_ERROR`, meta: { cns, code: code2, helpUrl }, message: message2 }); } }; CertConfigurationError = class extends NowError { constructor({ cns, message: message2, external, type, helpUrl }) { super({ code: `CERT_CONFIGURATION_ERROR`, meta: { cns, helpUrl, external, type }, message: message2 }); } }; DeploymentNotFound = class extends NowError { constructor({ context, id = "" }) { super({ code: "DEPLOYMENT_NOT_FOUND", meta: { id, context }, message: `Can't find the deployment "${id}" under the context "${context}"` }); } }; DeploymentNotReady = class extends NowError { constructor({ url: url3 = "" }) { super({ code: "DEPLOYMENT_NOT_READY", meta: { url: url3 }, message: `The deployment https://${url3} is not ready.` }); } }; DeploymentFailedAliasImpossible = class extends NowError { constructor() { super({ code: "DEPLOYMENT_FAILED_ALIAS_IMPOSSIBLE", meta: {}, message: `The deployment build has failed and cannot be aliased` }); } }; DeploymentPermissionDenied = class extends NowError { constructor(id, context) { super({ code: "DEPLOYMENT_PERMISSION_DENIED", meta: { id, context }, message: `You don't have access to the deployment ${id} under ${context}.` }); } }; InvalidAlias = class extends NowError { constructor(alias2) { super({ code: "INVALID_ALIAS", meta: { alias: alias2 }, message: `The given alias ${alias2} is not valid` }); } }; AliasInUse = class extends NowError { constructor(alias2) { super({ code: "ALIAS_IN_USE", meta: { alias: alias2 }, message: `The alias is already in use` }); } }; CertMissing = class extends NowError { constructor(domain) { super({ code: "ALIAS_IN_USE", meta: { domain }, message: `The alias is already in use` }); } }; CantParseJSONFile = class extends NowError { constructor(file, parseErrorLocation) { const message2 = `Can't parse json file ${file}: ${parseErrorLocation}`; super({ code: "CANT_PARSE_JSON_FILE", meta: { file, parseErrorLocation }, message: message2 }); } }; ConflictingConfigFiles = class extends NowBuildError { constructor(files, message2, link4) { super({ code: "CONFLICTING_CONFIG_FILES", message: message2 || "Cannot use both a `vercel.json` and `now.json` file. Please delete the `now.json` file.", link: link4 || "https://vercel.link/combining-old-and-new-config" }); this.files = files; } }; CantFindConfig = class extends NowError { constructor(paths) { super({ code: "CANT_FIND_CONFIG", meta: { paths }, message: `Can't find a configuration file in the given locations.` }); } }; WorkingDirectoryDoesNotExist = class extends NowError { constructor() { super({ code: "CWD_DOES_NOT_EXIST", meta: {}, message: "The current working directory does not exist." }); } }; NoAliasInConfig = class extends NowError { constructor() { super({ code: "NO_ALIAS_IN_CONFIG", meta: {}, message: `There is no alias set up in config file.` }); } }; InvalidAliasInConfig = class extends NowError { constructor(value) { super({ code: "INVALID_ALIAS_IN_CONFIG", meta: { value }, message: `Invalid alias option in configuration.` }); } }; DNSPermissionDenied = class extends NowError { constructor(domain) { super({ code: "DNS_PERMISSION_DENIED", meta: { domain }, message: `You don't have access to the DNS records of ${domain}.` }); } }; DNSInvalidPort = class extends NowError { constructor() { super({ code: "DNS_INVALID_PORT", meta: {}, message: `Invalid parameter. A number was expected` }); } }; DNSInvalidType = class extends NowError { constructor(type) { super({ code: "DNS_INVALID_TYPE", meta: { type }, message: `Invalid parameter "${type}". Expected one of A, AAAA, ALIAS, CAA, CNAME, MX, SRV, TXT` }); } }; DNSConflictingRecord = class extends NowError { constructor(record) { super({ code: "DNS_CONFLICTING_RECORD", meta: { record }, message: ` A conflicting record exists "${record}".` }); } }; DomainRemovalConflict = class extends NowError { constructor({ aliases, certs, message: message2, pendingAsyncPurchase, resolvable, suffix, transferring }) { super({ code: "domain_removal_conflict", meta: { aliases, certs, pendingAsyncPurchase, suffix, transferring, resolvable }, message: message2 }); } }; DomainMoveConflict = class extends NowError { constructor({ message: message2, pendingAsyncPurchase, resolvable, suffix }) { super({ code: "domain_move_conflict", meta: { pendingAsyncPurchase, resolvable, suffix }, message: message2 }); } }; InvalidMoveDestination = class extends NowError { constructor(destination) { super({ code: "INVALID_MOVE_DESTINATION", message: `Invalid move destination "${destination}"`, meta: { destination } }); } }; LambdaSizeExceededError = class extends NowError { constructor(size, maxLambdaSize) { super({ code: "MAX_LAMBDA_SIZE_EXCEEDED", message: `The lambda function size (${(0, import_bytes.default)( size ).toLowerCase()}) exceeds the maximum size limit (${(0, import_bytes.default)( maxLambdaSize ).toLowerCase()}).`, meta: { size, maxLambdaSize } }); } }; MissingDotenvVarsError = class extends NowError { constructor(type, missing) { let message2; if (missing.length === 1) { message2 = `Env var ${JSON.stringify(missing[0])} is not defined in ${code( type )} file`; } else { message2 = [ `The following env vars are not defined in ${code(type)} file:`, ...missing.map((name) => ` - ${JSON.stringify(name)}`) ].join("\n"); } message2 += "\nRead more: https://err.sh/vercel/missing-env-file"; super({ code: "MISSING_DOTENV_VARS", message: message2, meta: { type, missing } }); } }; DeploymentsRateLimited = class extends NowError { constructor(message2) { super({ code: "DEPLOYMENTS_RATE_LIMITED", meta: {}, message: message2 }); } }; BuildsRateLimited = class extends NowError { constructor(message2) { super({ code: "BUILDS_RATE_LIMITED", meta: {}, message: message2 }); } }; ProjectNotFound = class extends NowError { constructor(nameOrId) { super({ code: "PROJECT_NOT_FOUND", meta: {}, message: `There is no project for "${nameOrId}"` }); } }; AliasDomainConfigured = class extends NowError { constructor({ message: message2 }) { super({ code: "DOMAIN_CONFIGURED", meta: {}, message: message2 }); } }; MissingBuildScript = class extends NowError { constructor({ message: message2 }) { super({ code: "MISSING_BUILD_SCRIPT", meta: {}, message: message2 }); } }; ConflictingFilePath = class extends NowError { constructor({ message: message2 }) { super({ code: "CONFLICTING_FILE_PATH", meta: {}, message: message2 }); } }; ConflictingPathSegment = class extends NowError { constructor({ message: message2 }) { super({ code: "CONFLICTING_PATH_SEGMENT", meta: {}, message: message2 }); } }; BuildError = class extends NowError { constructor({ message: message2, meta }) { super({ code: "BUILD_ERROR", meta, message: message2 }); } }; SchemaValidationFailed = class extends NowError { constructor(message2, keyword, dataPath, params2) { super({ code: "SCHEMA_VALIDATION_FAILED", meta: { message: message2, keyword, dataPath, params: params2 }, message: `Schema verification failed` }); } }; InvalidLocalConfig = class extends NowError { constructor(value) { super({ code: "INVALID_LOCAL_CONFIG", meta: { value }, message: `Invalid local config parameter [${value.map((localConfig) => `"${localConfig}"`).join(", ")}]. A string was expected.` }); } }; } }); // src/util/get-user.ts async function getUser(client2) { try { const res = await client2.fetch("/v2/user", { useCurrentTeam: false }); if (!res.user) { throw new MissingUser(); } return res.user; } catch (error3) { if (error3 instanceof APIError && error3.status === 403) { throw new InvalidToken(); } throw error3; } } var init_get_user = __esm({ "src/util/get-user.ts"() { "use strict"; init_errors_ts(); } }); // src/util/teams/get-teams.ts import { URLSearchParams as URLSearchParams2 } from "url"; async function getTeams(client2, opts = {}) { const { apiVersion = 1 } = opts; let query = ""; if (opts.apiVersion === 2) { const params2 = new URLSearchParams2({ limit: String(typeof opts.limit === "number" ? opts.limit : 20) }); if (opts.next) { params2.set("next", String(opts.next)); } query = `?${params2}`; } try { const body = await client2.fetch( `/v${apiVersion}/teams${query}`, { useCurrentTeam: false } ); if (apiVersion === 1) { return body.teams || []; } return body; } catch (error3) { if (error3 instanceof APIError && error3.status === 403) { throw new InvalidToken(); } throw error3; } } var init_get_teams = __esm({ "src/util/teams/get-teams.ts"() { "use strict"; init_errors_ts(); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/key.mjs var isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isNumberKey, isEnterKey; var init_key = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/key.mjs"() { isUpKey = (key) => ( // The up key key.name === "up" || // Vim keybinding key.name === "k" || // Emacs keybinding key.ctrl && key.name === "p" ); isDownKey = (key) => ( // The down key key.name === "down" || // Vim keybinding key.name === "j" || // Emacs keybinding key.ctrl && key.name === "n" ); isSpaceKey = (key) => key.name === "space"; isBackspaceKey = (key) => key.name === "backspace"; isNumberKey = (key) => "123456789".includes(key.name); isEnterKey = (key) => key.name === "enter" || key.name === "return"; } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/errors.mjs var CancelPromptError, ExitPromptError, HookError, ValidationError; var init_errors = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/errors.mjs"() { CancelPromptError = class extends Error { constructor() { super(...arguments); __publicField(this, "message", "Prompt was canceled"); } }; ExitPromptError = class extends Error { }; HookError = class extends Error { }; ValidationError = class extends Error { }; } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/hook-engine.mjs import { AsyncLocalStorage, AsyncResource } from "async_hooks"; function createStore(rl) { const store2 = { rl, hooks: [], hooksCleanup: [], hooksEffect: [], index: 0, handleChange() { } }; return store2; } function withHooks(rl, cb) { const store2 = createStore(rl); return hookStorage.run(store2, () => { cb(store2); }); } function getStore() { const store2 = hookStorage.getStore(); if (!store2) { throw new HookError("[Inquirer] Hook functions can only be called from within a prompt"); } return store2; } function readline() { return getStore().rl; } function withUpdates(fn2) { const wrapped = (...args2) => { const store2 = getStore(); let shouldUpdate = false; const oldHandleChange = store2.handleChange; store2.handleChange = () => { shouldUpdate = true; }; const returnValue = fn2(...args2); if (shouldUpdate) { oldHandleChange(); } store2.handleChange = oldHandleChange; return returnValue; }; return AsyncResource.bind(wrapped); } function withPointer(cb) { const store2 = getStore(); const { index } = store2; const pointer = { get() { return store2.hooks[index]; }, set(value) { store2.hooks[index] = value; }, initialized: index in store2.hooks }; const returnValue = cb(pointer); store2.index++; return returnValue; } function handleChange() { getStore().handleChange(); } var hookStorage, effectScheduler; var init_hook_engine = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/hook-engine.mjs"() { init_errors(); hookStorage = new AsyncLocalStorage(); effectScheduler = { queue(cb) { const store2 = getStore(); const { index } = store2; store2.hooksEffect.push(() => { store2.hooksCleanup[index]?.(); const cleanFn = cb(readline()); if (cleanFn != null && typeof cleanFn !== "function") { throw new ValidationError("useEffect return value must be a cleanup function or nothing."); } store2.hooksCleanup[index] = cleanFn; }); }, run() { const store2 = getStore(); withUpdates(() => { store2.hooksEffect.forEach((effect) => { effect(); }); store2.hooksEffect.length = 0; })(); } }; } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-state.mjs function useState(defaultValue) { return withPointer((pointer) => { const setFn = (newValue) => { if (pointer.get() !== newValue) { pointer.set(newValue); handleChange(); } }; if (pointer.initialized) { return [pointer.get(), setFn]; } const value = typeof defaultValue === "function" ? defaultValue() : defaultValue; pointer.set(value); return [value, setFn]; }); } var init_use_state = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-state.mjs"() { init_hook_engine(); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-effect.mjs function useEffect(cb, depArray) { withPointer((pointer) => { const oldDeps = pointer.get(); const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i])); if (hasChanged) { effectScheduler.queue(cb); } pointer.set(depArray); }); } var init_use_effect = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-effect.mjs"() { init_hook_engine(); } }); // ../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/util.js var require_util2 = __commonJS2({ "../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/util.js"(exports2, module2) { "use strict"; var stringReplaceAll = (string, substring, replacer) => { let index = string.indexOf(substring); if (index === -1) { return string; } const substringLength = substring.length; let endIndex = 0; let returnValue = ""; do { returnValue += string.substr(endIndex, index - endIndex) + substring + replacer; endIndex = index + substringLength; index = string.indexOf(substring, endIndex); } while (index !== -1); returnValue += string.substr(endIndex); return returnValue; }; var stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => { let endIndex = 0; let returnValue = ""; do { const gotCR = string[index - 1] === "\r"; returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? "\r\n" : "\n") + postfix; endIndex = index + 1; index = string.indexOf("\n", endIndex); } while (index !== -1); returnValue += string.substr(endIndex); return returnValue; }; module2.exports = { stringReplaceAll, stringEncaseCRLFWithFirstIndex }; } }); // ../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/templates.js var require_templates3 = __commonJS2({ "../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/templates.js"(exports2, module2) { "use strict"; var TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; var ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi; var ESCAPES = /* @__PURE__ */ new Map([ ["n", "\n"], ["r", "\r"], ["t", " "], ["b", "\b"], ["f", "\f"], ["v", "\v"], ["0", "\0"], ["\\", "\\"], ["e", "\x1B"], ["a", "\x07"] ]); function unescape2(c) { const u = c[0] === "u"; const bracket = c[1] === "{"; if (u && !bracket && c.length === 5 || c[0] === "x" && c.length === 3) { return String.fromCharCode(parseInt(c.slice(1), 16)); } if (u && bracket) { return String.fromCodePoint(parseInt(c.slice(2, -1), 16)); } return ESCAPES.get(c) || c; } function parseArguments2(name, arguments_) { const results = []; const chunks = arguments_.trim().split(/\s*,\s*/g); let matches; for (const chunk of chunks) { const number = Number(chunk); if (!Number.isNaN(number)) { results.push(number); } else if (matches = chunk.match(STRING_REGEX)) { results.push(matches[2].replace(ESCAPE_REGEX, (m, escape2, character) => escape2 ? unescape2(escape2) : character)); } else { throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); } } return results; } function parseStyle(style) { STYLE_REGEX.lastIndex = 0; const results = []; let matches; while ((matches = STYLE_REGEX.exec(style)) !== null) { const name = matches[1]; if (matches[2]) { const args2 = parseArguments2(name, matches[2]); results.push([name].concat(args2)); } else { results.push([name]); } } return results; } function buildStyle(chalk142, styles) { const enabled = {}; for (const layer of styles) { for (const style of layer.styles) { enabled[style[0]] = layer.inverse ? null : style.slice(1); } } let current = chalk142; for (const [styleName, styles2] of Object.entries(enabled)) { if (!Array.isArray(styles2)) { continue; } if (!(styleName in current)) { throw new Error(`Unknown Chalk style: ${styleName}`); } current = styles2.length > 0 ? current[styleName](...styles2) : current[styleName]; } return current; } module2.exports = (chalk142, temporary) => { const styles = []; const chunks = []; let chunk = []; temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close2, character) => { if (escapeCharacter) { chunk.push(unescape2(escapeCharacter)); } else if (style) { const string = chunk.join(""); chunk = []; chunks.push(styles.length === 0 ? string : buildStyle(chalk142, styles)(string)); styles.push({ inverse, styles: parseStyle(style) }); } else if (close2) { if (styles.length === 0) { throw new Error("Found extraneous } in Chalk template literal"); } chunks.push(buildStyle(chalk142, styles)(chunk.join(""))); chunk = []; styles.pop(); } else { chunk.push(character); } }); chunks.push(chunk.join("")); if (styles.length > 0) { const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`; throw new Error(errMessage); } return chunks.join(""); }; } }); // ../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js var require_source2 = __commonJS2({ "../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js"(exports2, module2) { "use strict"; var ansiStyles = require_ansi_styles(); var { stdout: stdoutColor, stderr: stderrColor } = require_supports_color(); var { stringReplaceAll, stringEncaseCRLFWithFirstIndex } = require_util2(); var { isArray } = Array; var levelMapping = [ "ansi", "ansi", "ansi256", "ansi16m" ]; var styles = /* @__PURE__ */ Object.create(null); var applyOptions = (object, options = {}) => { if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) { throw new Error("The `level` option should be an integer from 0 to 3"); } const colorLevel = stdoutColor ? stdoutColor.level : 0; object.level = options.level === void 0 ? colorLevel : options.level; }; var ChalkClass = class { constructor(options) { return chalkFactory(options); } }; var chalkFactory = (options) => { const chalk143 = {}; applyOptions(chalk143, options); chalk143.template = (...arguments_) => chalkTag(chalk143.template, ...arguments_); Object.setPrototypeOf(chalk143, Chalk.prototype); Object.setPrototypeOf(chalk143.template, chalk143); chalk143.template.constructor = () => { throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead."); }; chalk143.template.Instance = ChalkClass; return chalk143.template; }; function Chalk(options) { return chalkFactory(options); } for (const [styleName, style] of Object.entries(ansiStyles)) { styles[styleName] = { get() { const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty); Object.defineProperty(this, styleName, { value: builder }); return builder; } }; } styles.visible = { get() { const builder = createBuilder(this, this._styler, true); Object.defineProperty(this, "visible", { value: builder }); return builder; } }; var usedModels = ["rgb", "hex", "keyword", "hsl", "hsv", "hwb", "ansi", "ansi256"]; for (const model of usedModels) { styles[model] = { get() { const { level } = this; return function(...arguments_) { const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler); return createBuilder(this, styler, this._isEmpty); }; } }; } for (const model of usedModels) { const bgModel = "bg" + model[0].toUpperCase() + model.slice(1); styles[bgModel] = { get() { const { level } = this; return function(...arguments_) { const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler); return createBuilder(this, styler, this._isEmpty); }; } }; } var proto = Object.defineProperties(() => { }, { ...styles, level: { enumerable: true, get() { return this._generator.level; }, set(level) { this._generator.level = level; } } }); var createStyler = (open10, close2, parent) => { let openAll; let closeAll; if (parent === void 0) { openAll = open10; closeAll = close2; } else { openAll = parent.openAll + open10; closeAll = close2 + parent.closeAll; } return { open: open10, close: close2, openAll, closeAll, parent }; }; var createBuilder = (self2, _styler, _isEmpty) => { const builder = (...arguments_) => { if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) { return applyStyle(builder, chalkTag(builder, ...arguments_)); } return applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" ")); }; Object.setPrototypeOf(builder, proto); builder._generator = self2; builder._styler = _styler; builder._isEmpty = _isEmpty; return builder; }; var applyStyle = (self2, string) => { if (self2.level <= 0 || !string) { return self2._isEmpty ? "" : string; } let styler = self2._styler; if (styler === void 0) { return string; } const { openAll, closeAll } = styler; if (string.indexOf("\x1B") !== -1) { while (styler !== void 0) { string = stringReplaceAll(string, styler.close, styler.open); styler = styler.parent; } } const lfIndex = string.indexOf("\n"); if (lfIndex !== -1) { string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex); } return openAll + string + closeAll; }; var template; var chalkTag = (chalk143, ...strings) => { const [firstString] = strings; if (!isArray(firstString) || !isArray(firstString.raw)) { return strings.join(" "); } const arguments_ = strings.slice(1); const parts = [firstString.raw[0]]; for (let i = 1; i < firstString.length; i++) { parts.push( String(arguments_[i - 1]).replace(/[{}\\]/g, "\\$&"), String(firstString.raw[i]) ); } if (template === void 0) { template = require_templates3(); } return template(chalk143, parts.join("")); }; Object.defineProperties(Chalk.prototype, styles); var chalk142 = Chalk(); chalk142.supportsColor = stdoutColor; chalk142.stderr = Chalk({ level: stderrColor ? stderrColor.level : 0 }); chalk142.stderr.supportsColor = stderrColor; module2.exports = chalk142; } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/theme.mjs var import_chalk9, import_cli_spinners, defaultTheme; var init_theme = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/theme.mjs"() { import_chalk9 = __toESM3(require_source2(), 1); import_cli_spinners = __toESM3(require_cli_spinners(), 1); defaultTheme = { prefix: import_chalk9.default.green("?"), spinner: { interval: import_cli_spinners.default.dots.interval, frames: import_cli_spinners.default.dots.frames.map((frame) => import_chalk9.default.yellow(frame)) }, style: { answer: import_chalk9.default.cyan, message: import_chalk9.default.bold, error: (text) => import_chalk9.default.red(`> ${text}`), defaultAnswer: (text) => import_chalk9.default.dim(`(${text})`), help: import_chalk9.default.dim, highlight: import_chalk9.default.cyan, key: (text) => import_chalk9.default.cyan.bold(`<${text}>`) } }; } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/make-theme.mjs function makeTheme(...themes) { return Object.assign({}, defaultTheme, ...themes, { style: Object.assign({}, defaultTheme.style, ...themes.map((theme) => theme?.style)) }); } var init_make_theme = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/make-theme.mjs"() { init_theme(); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-prefix.mjs import { AsyncResource as AsyncResource2 } from "async_hooks"; function usePrefix({ isLoading = false, theme }) { const [tick, setTick] = useState(0); const { prefix, spinner } = makeTheme(theme); useEffect(() => { if (isLoading) { const timeout = setTimeout(AsyncResource2.bind(() => { setTick(tick + 1); }), spinner.interval); return () => clearTimeout(timeout); } }, [isLoading, tick]); if (isLoading) { const frame = tick % spinner.frames.length; return spinner.frames[frame]; } return prefix; } var init_use_prefix = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-prefix.mjs"() { init_use_state(); init_use_effect(); init_make_theme(); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-memo.mjs function useMemo(fn2, dependencies) { return withPointer((pointer) => { const prev = pointer.get(); if (!prev || prev.dependencies.length !== dependencies.length || prev.dependencies.some((dep, i) => dep !== dependencies[i])) { const value = fn2(); pointer.set({ value, dependencies }); return value; } return prev.value; }); } var init_use_memo = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-memo.mjs"() { init_hook_engine(); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-ref.mjs function useRef(val) { return useState({ current: val })[0]; } var init_use_ref = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-ref.mjs"() { init_use_state(); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-keypress.mjs function useKeypress(userHandler) { const signal = useRef(userHandler); signal.current = userHandler; useEffect((rl) => { const handler = withUpdates((_input, event) => { signal.current(event, rl); }); rl.input.on("keypress", handler); return () => { rl.input.removeListener("keypress", handler); }; }, []); } var init_use_keypress = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/use-keypress.mjs"() { init_use_ref(); init_use_effect(); init_hook_engine(); } }); // ../../node_modules/.pnpm/cli-width@4.1.0/node_modules/cli-width/index.js var require_cli_width = __commonJS2({ "../../node_modules/.pnpm/cli-width@4.1.0/node_modules/cli-width/index.js"(exports2, module2) { "use strict"; module2.exports = cliWidth3; function normalizeOpts(options) { const defaultOpts = { defaultWidth: 0, output: process.stdout, tty: __require("tty") }; if (!options) { return defaultOpts; } Object.keys(defaultOpts).forEach(function(key) { if (!options[key]) { options[key] = defaultOpts[key]; } }); return options; } function cliWidth3(options) { const opts = normalizeOpts(options); if (opts.output.getWindowSize) { return opts.output.getWindowSize()[0] || opts.defaultWidth; } if (opts.tty.getWindowSize) { return opts.tty.getWindowSize()[1] || opts.defaultWidth; } if (opts.output.columns) { return opts.output.columns; } if (process.env.CLI_WIDTH) { const width = parseInt(process.env.CLI_WIDTH, 10); if (!isNaN(width) && width !== 0) { return width; } } return opts.defaultWidth; } } }); // ../../node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js var require_ansi_regex2 = __commonJS2({ "../../node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js"(exports2, module2) { "use strict"; module2.exports = ({ onlyFirst = false } = {}) => { const pattern = [ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))" ].join("|"); return new RegExp(pattern, onlyFirst ? void 0 : "g"); }; } }); // ../../node_modules/.pnpm/strip-ansi@6.0.1/node_modules/strip-ansi/index.js var require_strip_ansi2 = __commonJS2({ "../../node_modules/.pnpm/strip-ansi@6.0.1/node_modules/strip-ansi/index.js"(exports2, module2) { "use strict"; var ansiRegex = require_ansi_regex2(); module2.exports = (string) => typeof string === "string" ? string.replace(ansiRegex(), "") : string; } }); // ../../node_modules/.pnpm/is-fullwidth-code-point@3.0.0/node_modules/is-fullwidth-code-point/index.js var require_is_fullwidth_code_point = __commonJS2({ "../../node_modules/.pnpm/is-fullwidth-code-point@3.0.0/node_modules/is-fullwidth-code-point/index.js"(exports2, module2) { "use strict"; var isFullwidthCodePoint = (codePoint) => { if (Number.isNaN(codePoint)) { return false; } if (codePoint >= 4352 && (codePoint <= 4447 || // Hangul Jamo codePoint === 9001 || // LEFT-POINTING ANGLE BRACKET codePoint === 9002 || // RIGHT-POINTING ANGLE BRACKET // CJK Radicals Supplement .. Enclosed CJK Letters and Months 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A 12880 <= codePoint && codePoint <= 19903 || // CJK Unified Ideographs .. Yi Radicals 19968 <= codePoint && codePoint <= 42182 || // Hangul Jamo Extended-A 43360 <= codePoint && codePoint <= 43388 || // Hangul Syllables 44032 <= codePoint && codePoint <= 55203 || // CJK Compatibility Ideographs 63744 <= codePoint && codePoint <= 64255 || // Vertical Forms 65040 <= codePoint && codePoint <= 65049 || // CJK Compatibility Forms .. Small Form Variants 65072 <= codePoint && codePoint <= 65131 || // Halfwidth and Fullwidth Forms 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || // Kana Supplement 110592 <= codePoint && codePoint <= 110593 || // Enclosed Ideographic Supplement 127488 <= codePoint && codePoint <= 127569 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane 131072 <= codePoint && codePoint <= 262141)) { return true; } return false; }; module2.exports = isFullwidthCodePoint; module2.exports.default = isFullwidthCodePoint; } }); // ../../node_modules/.pnpm/emoji-regex@8.0.0/node_modules/emoji-regex/index.js var require_emoji_regex = __commonJS2({ "../../node_modules/.pnpm/emoji-regex@8.0.0/node_modules/emoji-regex/index.js"(exports2, module2) { "use strict"; module2.exports = function() { return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; }; } }); // ../../node_modules/.pnpm/string-width@4.2.3/node_modules/string-width/index.js var require_string_width = __commonJS2({ "../../node_modules/.pnpm/string-width@4.2.3/node_modules/string-width/index.js"(exports2, module2) { "use strict"; var stripAnsi7 = require_strip_ansi2(); var isFullwidthCodePoint = require_is_fullwidth_code_point(); var emojiRegex = require_emoji_regex(); var stringWidth = (string) => { if (typeof string !== "string" || string.length === 0) { return 0; } string = stripAnsi7(string); if (string.length === 0) { return 0; } string = string.replace(emojiRegex(), " "); let width = 0; for (let i = 0; i < string.length; i++) { const code2 = string.codePointAt(i); if (code2 <= 31 || code2 >= 127 && code2 <= 159) { continue; } if (code2 >= 768 && code2 <= 879) { continue; } if (code2 > 65535) { i++; } width += isFullwidthCodePoint(code2) ? 2 : 1; } return width; }; module2.exports = stringWidth; module2.exports.default = stringWidth; } }); // ../../node_modules/.pnpm/wrap-ansi@6.2.0/node_modules/wrap-ansi/index.js var require_wrap_ansi = __commonJS2({ "../../node_modules/.pnpm/wrap-ansi@6.2.0/node_modules/wrap-ansi/index.js"(exports2, module2) { "use strict"; var stringWidth = require_string_width(); var stripAnsi7 = require_strip_ansi2(); var ansiStyles = require_ansi_styles(); var ESCAPES = /* @__PURE__ */ new Set([ "\x1B", "\x9B" ]); var END_CODE = 39; var wrapAnsi3 = (code2) => `${ESCAPES.values().next().value}[${code2}m`; var wordLengths = (string) => string.split(" ").map((character) => stringWidth(character)); var wrapWord = (rows, word, columns) => { const characters = [...word]; let isInsideEscape = false; let visible = stringWidth(stripAnsi7(rows[rows.length - 1])); for (const [index, character] of characters.entries()) { const characterLength = stringWidth(character); if (visible + characterLength <= columns) { rows[rows.length - 1] += character; } else { rows.push(character); visible = 0; } if (ESCAPES.has(character)) { isInsideEscape = true; } else if (isInsideEscape && character === "m") { isInsideEscape = false; continue; } if (isInsideEscape) { continue; } visible += characterLength; if (visible === columns && index < characters.length - 1) { rows.push(""); visible = 0; } } if (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) { rows[rows.length - 2] += rows.pop(); } }; var stringVisibleTrimSpacesRight = (str) => { const words = str.split(" "); let last = words.length; while (last > 0) { if (stringWidth(words[last - 1]) > 0) { break; } last--; } if (last === words.length) { return str; } return words.slice(0, last).join(" ") + words.slice(last).join(""); }; var exec2 = (string, columns, options = {}) => { if (options.trim !== false && string.trim() === "") { return ""; } let pre = ""; let ret = ""; let escapeCode; const lengths = wordLengths(string); let rows = [""]; for (const [index, word] of string.split(" ").entries()) { if (options.trim !== false) { rows[rows.length - 1] = rows[rows.length - 1].trimLeft(); } let rowLength = stringWidth(rows[rows.length - 1]); if (index !== 0) { if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) { rows.push(""); rowLength = 0; } if (rowLength > 0 || options.trim === false) { rows[rows.length - 1] += " "; rowLength++; } } if (options.hard && lengths[index] > columns) { const remainingColumns = columns - rowLength; const breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns); const breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns); if (breaksStartingNextLine < breaksStartingThisLine) { rows.push(""); } wrapWord(rows, word, columns); continue; } if (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) { if (options.wordWrap === false && rowLength < columns) { wrapWord(rows, word, columns); continue; } rows.push(""); } if (rowLength + lengths[index] > columns && options.wordWrap === false) { wrapWord(rows, word, columns); continue; } rows[rows.length - 1] += word; } if (options.trim !== false) { rows = rows.map(stringVisibleTrimSpacesRight); } pre = rows.join("\n"); for (const [index, character] of [...pre].entries()) { ret += character; if (ESCAPES.has(character)) { const code3 = parseFloat(/\d[^m]*/.exec(pre.slice(index, index + 4))); escapeCode = code3 === END_CODE ? null : code3; } const code2 = ansiStyles.codes.get(Number(escapeCode)); if (escapeCode && code2) { if (pre[index + 1] === "\n") { ret += wrapAnsi3(code2); } else if (character === "\n") { ret += wrapAnsi3(escapeCode); } } } return ret; }; module2.exports = (string, columns, options) => { return String(string).normalize().replace(/\r\n/g, "\n").split("\n").map((line) => exec2(line, columns, options)).join("\n"); }; } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/utils.mjs function breakLines(content, width) { return content.split("\n").flatMap((line) => (0, import_wrap_ansi.default)(line, width, { trim: false, hard: true }).split("\n").map((str) => str.trimEnd())).join("\n"); } function readlineWidth() { return (0, import_cli_width.default)({ defaultWidth: 80, output: readline().output }); } var import_cli_width, import_wrap_ansi; var init_utils = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/utils.mjs"() { import_cli_width = __toESM3(require_cli_width(), 1); import_wrap_ansi = __toESM3(require_wrap_ansi(), 1); init_hook_engine(); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/pagination/lines.mjs function split(content, width) { return breakLines(content, width).split("\n"); } function rotate(count, items) { const max = items.length; const offset = (count % max + max) % max; return items.slice(offset).concat(items.slice(0, offset)); } function lines({ items, width, renderItem, active, position: requested, pageSize }) { const layouts = items.map((item, index) => ({ item, index, isActive: index === active })); const layoutsInPage = rotate(active - requested, layouts).slice(0, pageSize); const renderItemAt = (index) => split(renderItem(layoutsInPage[index]), width); const pageBuffer = new Array(pageSize); const activeItem = renderItemAt(requested).slice(0, pageSize); const position = requested + activeItem.length <= pageSize ? requested : pageSize - activeItem.length; pageBuffer.splice(position, activeItem.length, ...activeItem); let bufferPointer = position + activeItem.length; let layoutPointer = requested + 1; while (bufferPointer < pageSize && layoutPointer < layoutsInPage.length) { for (const line of renderItemAt(layoutPointer)) { pageBuffer[bufferPointer++] = line; if (bufferPointer >= pageSize) break; } layoutPointer++; } bufferPointer = position - 1; layoutPointer = requested - 1; while (bufferPointer >= 0 && layoutPointer >= 0) { for (const line of renderItemAt(layoutPointer).reverse()) { pageBuffer[bufferPointer--] = line; if (bufferPointer < 0) break; } layoutPointer--; } return pageBuffer.filter((line) => typeof line === "string"); } var init_lines = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/pagination/lines.mjs"() { init_utils(); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/pagination/position.mjs function finite({ active, pageSize, total }) { const middle = Math.floor(pageSize / 2); if (total <= pageSize || active < middle) return active; if (active >= total - middle) return active + pageSize - total; return middle; } function infinite({ active, lastActive, total, pageSize, pointer }) { if (total <= pageSize) return active; if (lastActive < active && active - lastActive < pageSize) { return Math.min(Math.floor(pageSize / 2), pointer + active - lastActive); } return pointer; } var init_position = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/pagination/position.mjs"() { } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.mjs function usePagination({ items, active, renderItem, pageSize, loop = true, theme: defaultTheme3 }) { const state = useRef({ position: 0, lastActive: 0 }); const theme = makeTheme(defaultTheme3); const position = loop ? infinite({ active, lastActive: state.current.lastActive, total: items.length, pageSize, pointer: state.current.position }) : finite({ active, total: items.length, pageSize }); state.current.position = position; state.current.lastActive = active; const visibleLines = lines({ items, width: readlineWidth(), renderItem, active, position, pageSize }).join("\n"); if (items.length > pageSize) { return `${visibleLines} ${theme.style.help("(Use arrow keys to reveal more choices)")}`; } return visibleLines; } var init_use_pagination = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.mjs"() { init_use_ref(); init_utils(); init_make_theme(); init_lines(); init_position(); } }); // ../../node_modules/.pnpm/@inquirer+type@1.5.5/node_modules/@inquirer/type/dist/esm/inquirer.mjs var CancelablePromise; var init_inquirer = __esm({ "../../node_modules/.pnpm/@inquirer+type@1.5.5/node_modules/@inquirer/type/dist/esm/inquirer.mjs"() { CancelablePromise = class _CancelablePromise extends Promise { constructor() { super(...arguments); __publicField(this, "cancel", () => { }); } static withResolver() { let resolve14; let reject; const promise = new _CancelablePromise((res, rej) => { resolve14 = res; reject = rej; }); return { promise, resolve: resolve14, reject }; } }; } }); // ../../node_modules/.pnpm/@inquirer+type@1.5.5/node_modules/@inquirer/type/dist/esm/utils.mjs var init_utils2 = __esm({ "../../node_modules/.pnpm/@inquirer+type@1.5.5/node_modules/@inquirer/type/dist/esm/utils.mjs"() { } }); // ../../node_modules/.pnpm/@inquirer+type@1.5.5/node_modules/@inquirer/type/dist/esm/index.mjs var init_esm = __esm({ "../../node_modules/.pnpm/@inquirer+type@1.5.5/node_modules/@inquirer/type/dist/esm/index.mjs"() { init_inquirer(); init_utils2(); } }); // ../../node_modules/.pnpm/mute-stream@1.0.0/node_modules/mute-stream/lib/index.js var require_lib5 = __commonJS2({ "../../node_modules/.pnpm/mute-stream@1.0.0/node_modules/mute-stream/lib/index.js"(exports2, module2) { var Stream = __require("stream"); var _isTTY, _destSrc, destSrc_fn, _proxy, proxy_fn; var MuteStream3 = class extends Stream { constructor(opts = {}) { super(opts); __privateAdd(this, _destSrc); __privateAdd(this, _proxy); __privateAdd(this, _isTTY, null); this.writable = this.readable = true; this.muted = false; this.on("pipe", this._onpipe); this.replace = opts.replace; this._prompt = opts.prompt || null; this._hadControl = false; } get isTTY() { if (__privateGet(this, _isTTY) !== null) { return __privateGet(this, _isTTY); } return __privateMethod(this, _destSrc, destSrc_fn).call(this, "isTTY", false); } // basically just get replace the getter/setter with a regular value set isTTY(val) { __privateSet(this, _isTTY, val); } get rows() { return __privateMethod(this, _destSrc, destSrc_fn).call(this, "rows"); } get columns() { return __privateMethod(this, _destSrc, destSrc_fn).call(this, "columns"); } mute() { this.muted = true; } unmute() { this.muted = false; } _onpipe(src) { this._src = src; } pipe(dest, options) { this._dest = dest; return super.pipe(dest, options); } pause() { if (this._src) { return this._src.pause(); } } resume() { if (this._src) { return this._src.resume(); } } write(c) { if (this.muted) { if (!this.replace) { return true; } if (c.match(/^\u001b/)) { if (c.indexOf(this._prompt) === 0) { c = c.slice(this._prompt.length); c = c.replace(/./g, this.replace); c = this._prompt + c; } this._hadControl = true; return this.emit("data", c); } else { if (this._prompt && this._hadControl && c.indexOf(this._prompt) === 0) { this._hadControl = false; this.emit("data", this._prompt); c = c.slice(this._prompt.length); } c = c.toString().replace(/./g, this.replace); } } this.emit("data", c); } end(c) { if (this.muted) { if (c && this.replace) { c = c.toString().replace(/./g, this.replace); } else { c = null; } } if (c) { this.emit("data", c); } this.emit("end"); } destroy(...args2) { return __privateMethod(this, _proxy, proxy_fn).call(this, "destroy", ...args2); } destroySoon(...args2) { return __privateMethod(this, _proxy, proxy_fn).call(this, "destroySoon", ...args2); } close(...args2) { return __privateMethod(this, _proxy, proxy_fn).call(this, "close", ...args2); } }; _isTTY = new WeakMap(); _destSrc = new WeakSet(); destSrc_fn = function(key, def) { if (this._dest) { return this._dest[key]; } if (this._src) { return this._src[key]; } return def; }; _proxy = new WeakSet(); proxy_fn = function(method, ...args2) { if (typeof this._dest?.[method] === "function") { this._dest[method](...args2); } if (typeof this._src?.[method] === "function") { this._src[method](...args2); } }; module2.exports = MuteStream3; } }); // ../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js var signals; var init_signals = __esm({ "../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js"() { signals = []; signals.push("SIGHUP", "SIGINT", "SIGTERM"); if (process.platform !== "win32") { signals.push( "SIGALRM", "SIGABRT", "SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT" // should detect profiler and enable/disable accordingly. // see #21 // 'SIGPROF' ); } if (process.platform === "linux") { signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT"); } } }); // ../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js var processOk, kExitEmitter, global2, ObjectDefineProperty, Emitter, SignalExitBase, signalExitWrap, SignalExitFallback, _hupSig, _emitter, _process, _originalProcessEmit, _originalProcessReallyExit, _sigListeners, _loaded, _processReallyExit, processReallyExit_fn, _processEmit, processEmit_fn, SignalExit, process2, onExit, load2, unload; var init_mjs = __esm({ "../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js"() { init_signals(); processOk = (process4) => !!process4 && typeof process4 === "object" && typeof process4.removeListener === "function" && typeof process4.emit === "function" && typeof process4.reallyExit === "function" && typeof process4.listeners === "function" && typeof process4.kill === "function" && typeof process4.pid === "number" && typeof process4.on === "function"; kExitEmitter = Symbol.for("signal-exit emitter"); global2 = globalThis; ObjectDefineProperty = Object.defineProperty.bind(Object); Emitter = class { constructor() { __publicField(this, "emitted", { afterExit: false, exit: false }); __publicField(this, "listeners", { afterExit: [], exit: [] }); __publicField(this, "count", 0); __publicField(this, "id", Math.random()); if (global2[kExitEmitter]) { return global2[kExitEmitter]; } ObjectDefineProperty(global2, kExitEmitter, { value: this, writable: false, enumerable: false, configurable: false }); } on(ev, fn2) { this.listeners[ev].push(fn2); } removeListener(ev, fn2) { const list10 = this.listeners[ev]; const i = list10.indexOf(fn2); if (i === -1) { return; } if (i === 0 && list10.length === 1) { list10.length = 0; } else { list10.splice(i, 1); } } emit(ev, code2, signal) { if (this.emitted[ev]) { return false; } this.emitted[ev] = true; let ret = false; for (const fn2 of this.listeners[ev]) { ret = fn2(code2, signal) === true || ret; } if (ev === "exit") { ret = this.emit("afterExit", code2, signal) || ret; } return ret; } }; SignalExitBase = class { }; signalExitWrap = (handler) => { return { onExit(cb, opts) { return handler.onExit(cb, opts); }, load() { return handler.load(); }, unload() { return handler.unload(); } }; }; SignalExitFallback = class extends SignalExitBase { onExit() { return () => { }; } load() { } unload() { } }; SignalExit = class extends SignalExitBase { constructor(process4) { super(); __privateAdd(this, _processReallyExit); __privateAdd(this, _processEmit); // "SIGHUP" throws an `ENOSYS` error on Windows, // so use a supported signal instead /* c8 ignore start */ __privateAdd(this, _hupSig, process2.platform === "win32" ? "SIGINT" : "SIGHUP"); /* c8 ignore stop */ __privateAdd(this, _emitter, new Emitter()); __privateAdd(this, _process, void 0); __privateAdd(this, _originalProcessEmit, void 0); __privateAdd(this, _originalProcessReallyExit, void 0); __privateAdd(this, _sigListeners, {}); __privateAdd(this, _loaded, false); __privateSet(this, _process, process4); __privateSet(this, _sigListeners, {}); for (const sig of signals) { __privateGet(this, _sigListeners)[sig] = () => { const listeners = __privateGet(this, _process).listeners(sig); let { count } = __privateGet(this, _emitter); const p = process4; if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") { count += p.__signal_exit_emitter__.count; } if (listeners.length === count) { this.unload(); const ret = __privateGet(this, _emitter).emit("exit", null, sig); const s = sig === "SIGHUP" ? __privateGet(this, _hupSig) : sig; if (!ret) process4.kill(process4.pid, s); } }; } __privateSet(this, _originalProcessReallyExit, process4.reallyExit); __privateSet(this, _originalProcessEmit, process4.emit); } onExit(cb, opts) { if (!processOk(__privateGet(this, _process))) { return () => { }; } if (__privateGet(this, _loaded) === false) { this.load(); } const ev = opts?.alwaysLast ? "afterExit" : "exit"; __privateGet(this, _emitter).on(ev, cb); return () => { __privateGet(this, _emitter).removeListener(ev, cb); if (__privateGet(this, _emitter).listeners["exit"].length === 0 && __privateGet(this, _emitter).listeners["afterExit"].length === 0) { this.unload(); } }; } load() { if (__privateGet(this, _loaded)) { return; } __privateSet(this, _loaded, true); __privateGet(this, _emitter).count += 1; for (const sig of signals) { try { const fn2 = __privateGet(this, _sigListeners)[sig]; if (fn2) __privateGet(this, _process).on(sig, fn2); } catch (_) { } } __privateGet(this, _process).emit = (ev, ...a) => { return __privateMethod(this, _processEmit, processEmit_fn).call(this, ev, ...a); }; __privateGet(this, _process).reallyExit = (code2) => { return __privateMethod(this, _processReallyExit, processReallyExit_fn).call(this, code2); }; } unload() { if (!__privateGet(this, _loaded)) { return; } __privateSet(this, _loaded, false); signals.forEach((sig) => { const listener = __privateGet(this, _sigListeners)[sig]; if (!listener) { throw new Error("Listener not defined for signal: " + sig); } try { __privateGet(this, _process).removeListener(sig, listener); } catch (_) { } }); __privateGet(this, _process).emit = __privateGet(this, _originalProcessEmit); __privateGet(this, _process).reallyExit = __privateGet(this, _originalProcessReallyExit); __privateGet(this, _emitter).count -= 1; } }; _hupSig = new WeakMap(); _emitter = new WeakMap(); _process = new WeakMap(); _originalProcessEmit = new WeakMap(); _originalProcessReallyExit = new WeakMap(); _sigListeners = new WeakMap(); _loaded = new WeakMap(); _processReallyExit = new WeakSet(); processReallyExit_fn = function(code2) { if (!processOk(__privateGet(this, _process))) { return 0; } __privateGet(this, _process).exitCode = code2 || 0; __privateGet(this, _emitter).emit("exit", __privateGet(this, _process).exitCode, null); return __privateGet(this, _originalProcessReallyExit).call(__privateGet(this, _process), __privateGet(this, _process).exitCode); }; _processEmit = new WeakSet(); processEmit_fn = function(ev, ...args2) { const og = __privateGet(this, _originalProcessEmit); if (ev === "exit" && processOk(__privateGet(this, _process))) { if (typeof args2[0] === "number") { __privateGet(this, _process).exitCode = args2[0]; } const ret = og.call(__privateGet(this, _process), ev, ...args2); __privateGet(this, _emitter).emit("exit", __privateGet(this, _process).exitCode, null); return ret; } else { return og.call(__privateGet(this, _process), ev, ...args2); } }; process2 = globalThis.process; ({ onExit: ( /** * Called when the process is exiting, whether via signal, explicit * exit, or running out of stuff to do. * * If the global process object is not suitable for instrumentation, * then this will be a no-op. * * Returns a function that may be used to unload signal-exit. */ onExit ), load: ( /** * Load the listeners. Likely you never need to call this, unless * doing a rather deep integration with signal-exit functionality. * Mostly exposed for the benefit of testing. * * @internal */ load2 ), unload: ( /** * Unload the listeners. Likely you never need to call this, unless * doing a rather deep integration with signal-exit functionality. * Mostly exposed for the benefit of testing. * * @internal */ unload ) } = signalExitWrap(processOk(process2) ? new SignalExit(process2) : new SignalExitFallback())); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/screen-manager.mjs var import_strip_ansi, import_ansi_escapes2, height, lastLine, ScreenManager; var init_screen_manager = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/screen-manager.mjs"() { import_strip_ansi = __toESM3(require_strip_ansi2(), 1); import_ansi_escapes2 = __toESM3(require_ansi_escapes(), 1); init_utils(); height = (content) => content.split("\n").length; lastLine = (content) => content.split("\n").pop() ?? ""; ScreenManager = class { constructor(rl) { __publicField(this, "rl"); // These variables are keeping information to allow correct prompt re-rendering __publicField(this, "height", 0); __publicField(this, "extraLinesUnderPrompt", 0); __publicField(this, "cursorPos"); this.rl = rl; this.rl = rl; this.cursorPos = rl.getCursorPos(); } render(content, bottomContent = "") { const promptLine = lastLine(content); const rawPromptLine = (0, import_strip_ansi.default)(promptLine); let prompt2 = rawPromptLine; if (this.rl.line.length) { prompt2 = prompt2.slice(0, -this.rl.line.length); } this.rl.setPrompt(prompt2); this.cursorPos = this.rl.getCursorPos(); const width = readlineWidth(); content = breakLines(content, width); bottomContent = breakLines(bottomContent, width); if (rawPromptLine.length % width === 0) { content += "\n"; } let output2 = content + (bottomContent ? "\n" + bottomContent : ""); const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows; const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0); if (bottomContentHeight > 0) output2 += import_ansi_escapes2.default.cursorUp(bottomContentHeight); output2 += import_ansi_escapes2.default.cursorTo(this.cursorPos.cols); this.clean(); this.rl.output.unmute(); this.extraLinesUnderPrompt = bottomContentHeight; this.height = height(output2); this.rl.output.write(output2); this.rl.output.mute(); } checkCursorPos() { const cursorPos = this.rl.getCursorPos(); if (cursorPos.cols !== this.cursorPos.cols) { this.rl.output.unmute(); this.rl.output.write(import_ansi_escapes2.default.cursorTo(cursorPos.cols)); this.rl.output.mute(); this.cursorPos = cursorPos; } } clean() { this.rl.output.unmute(); this.rl.output.write([ this.extraLinesUnderPrompt > 0 ? import_ansi_escapes2.default.cursorDown(this.extraLinesUnderPrompt) : "", import_ansi_escapes2.default.eraseLines(this.height) ].join("")); this.extraLinesUnderPrompt = 0; this.rl.output.mute(); } clearContent() { this.rl.output.unmute(); this.rl.output.write([ this.extraLinesUnderPrompt > 0 ? import_ansi_escapes2.default.cursorDown(this.extraLinesUnderPrompt) : "", "\n" ].join("")); this.rl.output.mute(); } done() { this.rl.setPrompt(""); this.rl.output.unmute(); this.rl.output.write(import_ansi_escapes2.default.cursorShow); this.rl.output.end(); this.rl.close(); } }; } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/create-prompt.mjs import * as readline2 from "readline"; function createPrompt(view) { const prompt2 = (config2, context) => { const input = context?.input ?? process.stdin; const output2 = new import_mute_stream.default(); output2.pipe(context?.output ?? process.stdout); const rl = readline2.createInterface({ terminal: true, input, output: output2 }); const screen = new ScreenManager(rl); let cancel = () => { }; const answer = new CancelablePromise((resolve14, reject) => { withHooks(rl, (store2) => { function checkCursorPos() { screen.checkCursorPos(); } const removeExitListener = onExit((code2, signal) => { onExit2(); reject(new ExitPromptError(`User force closed the prompt with ${code2} ${signal}`)); }); function onExit2() { try { store2.hooksCleanup.forEach((cleanFn) => { cleanFn?.(); }); } catch (err) { reject(err); } if (context?.clearPromptOnDone) { screen.clean(); } else { screen.clearContent(); } screen.done(); removeExitListener(); store2.rl.input.removeListener("keypress", checkCursorPos); } cancel = () => { onExit2(); reject(new CancelPromptError()); }; function done(value) { setImmediate(() => { onExit2(); resolve14(value); }); } function workLoop(resolvedConfig) { store2.index = 0; store2.handleChange = () => workLoop(resolvedConfig); try { const nextView = view(config2, done); const [content, bottomContent] = typeof nextView === "string" ? [nextView] : nextView; screen.render(content, bottomContent); effectScheduler.run(); } catch (err) { onExit2(); reject(err); } } workLoop(config2); store2.rl.input.on("keypress", checkCursorPos); }); }); answer.cancel = cancel; return answer; }; return prompt2; } var import_mute_stream; var init_create_prompt = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/create-prompt.mjs"() { init_esm(); import_mute_stream = __toESM3(require_lib5(), 1); init_mjs(); init_screen_manager(); init_hook_engine(); init_errors(); } }); // ../../node_modules/.pnpm/@inquirer+figures@1.0.11/node_modules/@inquirer/figures/dist/esm/index.js import process3 from "process"; function isUnicodeSupported() { if (process3.platform !== "win32") { return process3.env["TERM"] !== "linux"; } return Boolean(process3.env["WT_SESSION"]) || // Windows Terminal Boolean(process3.env["TERMINUS_SUBLIME"]) || // Terminus (<0.2.27) process3.env["ConEmuTask"] === "{cmd::Cmder}" || // ConEmu and cmder process3.env["TERM_PROGRAM"] === "Terminus-Sublime" || process3.env["TERM_PROGRAM"] === "vscode" || process3.env["TERM"] === "xterm-256color" || process3.env["TERM"] === "alacritty" || process3.env["TERMINAL_EMULATOR"] === "JetBrains-JediTerm"; } var common, specialMainSymbols, specialFallbackSymbols, mainSymbols, fallbackSymbols, shouldUseMain, figures, esm_default, replacements; var init_esm2 = __esm({ "../../node_modules/.pnpm/@inquirer+figures@1.0.11/node_modules/@inquirer/figures/dist/esm/index.js"() { common = { circleQuestionMark: "(?)", questionMarkPrefix: "(?)", square: "\u2588", squareDarkShade: "\u2593", squareMediumShade: "\u2592", squareLightShade: "\u2591", squareTop: "\u2580", squareBottom: "\u2584", squareLeft: "\u258C", squareRight: "\u2590", squareCenter: "\u25A0", bullet: "\u25CF", dot: "\u2024", ellipsis: "\u2026", pointerSmall: "\u203A", triangleUp: "\u25B2", triangleUpSmall: "\u25B4", triangleDown: "\u25BC", triangleDownSmall: "\u25BE", triangleLeftSmall: "\u25C2", triangleRightSmall: "\u25B8", home: "\u2302", heart: "\u2665", musicNote: "\u266A", musicNoteBeamed: "\u266B", arrowUp: "\u2191", arrowDown: "\u2193", arrowLeft: "\u2190", arrowRight: "\u2192", arrowLeftRight: "\u2194", arrowUpDown: "\u2195", almostEqual: "\u2248", notEqual: "\u2260", lessOrEqual: "\u2264", greaterOrEqual: "\u2265", identical: "\u2261", infinity: "\u221E", subscriptZero: "\u2080", subscriptOne: "\u2081", subscriptTwo: "\u2082", subscriptThree: "\u2083", subscriptFour: "\u2084", subscriptFive: "\u2085", subscriptSix: "\u2086", subscriptSeven: "\u2087", subscriptEight: "\u2088", subscriptNine: "\u2089", oneHalf: "\xBD", oneThird: "\u2153", oneQuarter: "\xBC", oneFifth: "\u2155", oneSixth: "\u2159", oneEighth: "\u215B", twoThirds: "\u2154", twoFifths: "\u2156", threeQuarters: "\xBE", threeFifths: "\u2157", threeEighths: "\u215C", fourFifths: "\u2158", fiveSixths: "\u215A", fiveEighths: "\u215D", sevenEighths: "\u215E", line: "\u2500", lineBold: "\u2501", lineDouble: "\u2550", lineDashed0: "\u2504", lineDashed1: "\u2505", lineDashed2: "\u2508", lineDashed3: "\u2509", lineDashed4: "\u254C", lineDashed5: "\u254D", lineDashed6: "\u2574", lineDashed7: "\u2576", lineDashed8: "\u2578", lineDashed9: "\u257A", lineDashed10: "\u257C", lineDashed11: "\u257E", lineDashed12: "\u2212", lineDashed13: "\u2013", lineDashed14: "\u2010", lineDashed15: "\u2043", lineVertical: "\u2502", lineVerticalBold: "\u2503", lineVerticalDouble: "\u2551", lineVerticalDashed0: "\u2506", lineVerticalDashed1: "\u2507", lineVerticalDashed2: "\u250A", lineVerticalDashed3: "\u250B", lineVerticalDashed4: "\u254E", lineVerticalDashed5: "\u254F", lineVerticalDashed6: "\u2575", lineVerticalDashed7: "\u2577", lineVerticalDashed8: "\u2579", lineVerticalDashed9: "\u257B", lineVerticalDashed10: "\u257D", lineVerticalDashed11: "\u257F", lineDownLeft: "\u2510", lineDownLeftArc: "\u256E", lineDownBoldLeftBold: "\u2513", lineDownBoldLeft: "\u2512", lineDownLeftBold: "\u2511", lineDownDoubleLeftDouble: "\u2557", lineDownDoubleLeft: "\u2556", lineDownLeftDouble: "\u2555", lineDownRight: "\u250C", lineDownRightArc: "\u256D", lineDownBoldRightBold: "\u250F", lineDownBoldRight: "\u250E", lineDownRightBold: "\u250D", lineDownDoubleRightDouble: "\u2554", lineDownDoubleRight: "\u2553", lineDownRightDouble: "\u2552", lineUpLeft: "\u2518", lineUpLeftArc: "\u256F", lineUpBoldLeftBold: "\u251B", lineUpBoldLeft: "\u251A", lineUpLeftBold: "\u2519", lineUpDoubleLeftDouble: "\u255D", lineUpDoubleLeft: "\u255C", lineUpLeftDouble: "\u255B", lineUpRight: "\u2514", lineUpRightArc: "\u2570", lineUpBoldRightBold: "\u2517", lineUpBoldRight: "\u2516", lineUpRightBold: "\u2515", lineUpDoubleRightDouble: "\u255A", lineUpDoubleRight: "\u2559", lineUpRightDouble: "\u2558", lineUpDownLeft: "\u2524", lineUpBoldDownBoldLeftBold: "\u252B", lineUpBoldDownBoldLeft: "\u2528", lineUpDownLeftBold: "\u2525", lineUpBoldDownLeftBold: "\u2529", lineUpDownBoldLeftBold: "\u252A", lineUpDownBoldLeft: "\u2527", lineUpBoldDownLeft: "\u2526", lineUpDoubleDownDoubleLeftDouble: "\u2563", lineUpDoubleDownDoubleLeft: "\u2562", lineUpDownLeftDouble: "\u2561", lineUpDownRight: "\u251C", lineUpBoldDownBoldRightBold: "\u2523", lineUpBoldDownBoldRight: "\u2520", lineUpDownRightBold: "\u251D", lineUpBoldDownRightBold: "\u2521", lineUpDownBoldRightBold: "\u2522", lineUpDownBoldRight: "\u251F", lineUpBoldDownRight: "\u251E", lineUpDoubleDownDoubleRightDouble: "\u2560", lineUpDoubleDownDoubleRight: "\u255F", lineUpDownRightDouble: "\u255E", lineDownLeftRight: "\u252C", lineDownBoldLeftBoldRightBold: "\u2533", lineDownLeftBoldRightBold: "\u252F", lineDownBoldLeftRight: "\u2530", lineDownBoldLeftBoldRight: "\u2531", lineDownBoldLeftRightBold: "\u2532", lineDownLeftRightBold: "\u252E", lineDownLeftBoldRight: "\u252D", lineDownDoubleLeftDoubleRightDouble: "\u2566", lineDownDoubleLeftRight: "\u2565", lineDownLeftDoubleRightDouble: "\u2564", lineUpLeftRight: "\u2534", lineUpBoldLeftBoldRightBold: "\u253B", lineUpLeftBoldRightBold: "\u2537", lineUpBoldLeftRight: "\u2538", lineUpBoldLeftBoldRight: "\u2539", lineUpBoldLeftRightBold: "\u253A", lineUpLeftRightBold: "\u2536", lineUpLeftBoldRight: "\u2535", lineUpDoubleLeftDoubleRightDouble: "\u2569", lineUpDoubleLeftRight: "\u2568", lineUpLeftDoubleRightDouble: "\u2567", lineUpDownLeftRight: "\u253C", lineUpBoldDownBoldLeftBoldRightBold: "\u254B", lineUpDownBoldLeftBoldRightBold: "\u2548", lineUpBoldDownLeftBoldRightBold: "\u2547", lineUpBoldDownBoldLeftRightBold: "\u254A", lineUpBoldDownBoldLeftBoldRight: "\u2549", lineUpBoldDownLeftRight: "\u2540", lineUpDownBoldLeftRight: "\u2541", lineUpDownLeftBoldRight: "\u253D", lineUpDownLeftRightBold: "\u253E", lineUpBoldDownBoldLeftRight: "\u2542", lineUpDownLeftBoldRightBold: "\u253F", lineUpBoldDownLeftBoldRight: "\u2543", lineUpBoldDownLeftRightBold: "\u2544", lineUpDownBoldLeftBoldRight: "\u2545", lineUpDownBoldLeftRightBold: "\u2546", lineUpDoubleDownDoubleLeftDoubleRightDouble: "\u256C", lineUpDoubleDownDoubleLeftRight: "\u256B", lineUpDownLeftDoubleRightDouble: "\u256A", lineCross: "\u2573", lineBackslash: "\u2572", lineSlash: "\u2571" }; specialMainSymbols = { tick: "\u2714", info: "\u2139", warning: "\u26A0", cross: "\u2718", squareSmall: "\u25FB", squareSmallFilled: "\u25FC", circle: "\u25EF", circleFilled: "\u25C9", circleDotted: "\u25CC", circleDouble: "\u25CE", circleCircle: "\u24DE", circleCross: "\u24E7", circlePipe: "\u24BE", radioOn: "\u25C9", radioOff: "\u25EF", checkboxOn: "\u2612", checkboxOff: "\u2610", checkboxCircleOn: "\u24E7", checkboxCircleOff: "\u24BE", pointer: "\u276F", triangleUpOutline: "\u25B3", triangleLeft: "\u25C0", triangleRight: "\u25B6", lozenge: "\u25C6", lozengeOutline: "\u25C7", hamburger: "\u2630", smiley: "\u32E1", mustache: "\u0DF4", star: "\u2605", play: "\u25B6", nodejs: "\u2B22", oneSeventh: "\u2150", oneNinth: "\u2151", oneTenth: "\u2152" }; specialFallbackSymbols = { tick: "\u221A", info: "i", warning: "\u203C", cross: "\xD7", squareSmall: "\u25A1", squareSmallFilled: "\u25A0", circle: "( )", circleFilled: "(*)", circleDotted: "( )", circleDouble: "( )", circleCircle: "(\u25CB)", circleCross: "(\xD7)", circlePipe: "(\u2502)", radioOn: "(*)", radioOff: "( )", checkboxOn: "[\xD7]", checkboxOff: "[ ]", checkboxCircleOn: "(\xD7)", checkboxCircleOff: "( )", pointer: ">", triangleUpOutline: "\u2206", triangleLeft: "\u25C4", triangleRight: "\u25BA", lozenge: "\u2666", lozengeOutline: "\u25CA", hamburger: "\u2261", smiley: "\u263A", mustache: "\u250C\u2500\u2510", star: "\u2736", play: "\u25BA", nodejs: "\u2666", oneSeventh: "1/7", oneNinth: "1/9", oneTenth: "1/10" }; mainSymbols = { ...common, ...specialMainSymbols }; fallbackSymbols = { ...common, ...specialFallbackSymbols }; shouldUseMain = isUnicodeSupported(); figures = shouldUseMain ? mainSymbols : fallbackSymbols; esm_default = figures; replacements = Object.entries(specialMainSymbols); } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/Separator.mjs var import_chalk10, Separator; var init_Separator = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/lib/Separator.mjs"() { import_chalk10 = __toESM3(require_source2(), 1); init_esm2(); Separator = class { constructor(separator) { __publicField(this, "separator", import_chalk10.default.dim(new Array(15).join(esm_default.line))); __publicField(this, "type", "separator"); if (separator) { this.separator = separator; } } static isSeparator(choice) { return Boolean(choice && choice.type === "separator"); } }; } }); // ../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/index.mjs var init_esm3 = __esm({ "../../node_modules/.pnpm/@inquirer+core@7.1.3/node_modules/@inquirer/core/dist/esm/index.mjs"() { init_key(); init_errors(); init_use_prefix(); init_use_state(); init_use_effect(); init_use_memo(); init_use_ref(); init_use_keypress(); init_make_theme(); init_use_pagination(); init_create_prompt(); init_Separator(); } }); // ../../node_modules/.pnpm/figures@3.2.0/node_modules/figures/index.js var require_figures = __commonJS2({ "../../node_modules/.pnpm/figures@3.2.0/node_modules/figures/index.js"(exports2, module2) { "use strict"; var escapeStringRegexp = require_escape_string_regexp(); var { platform } = process; var main19 = { tick: "\u2714", cross: "\u2716", star: "\u2605", square: "\u2587", squareSmall: "\u25FB", squareSmallFilled: "\u25FC", play: "\u25B6", circle: "\u25EF", circleFilled: "\u25C9", circleDotted: "\u25CC", circleDouble: "\u25CE", circleCircle: "\u24DE", circleCross: "\u24E7", circlePipe: "\u24BE", circleQuestionMark: "?\u20DD", bullet: "\u25CF", dot: "\u2024", line: "\u2500", ellipsis: "\u2026", pointer: "\u276F", pointerSmall: "\u203A", info: "\u2139", warning: "\u26A0", hamburger: "\u2630", smiley: "\u32E1", mustache: "\u0DF4", heart: "\u2665", nodejs: "\u2B22", arrowUp: "\u2191", arrowDown: "\u2193", arrowLeft: "\u2190", arrowRight: "\u2192", radioOn: "\u25C9", radioOff: "\u25EF", checkboxOn: "\u2612", checkboxOff: "\u2610", checkboxCircleOn: "\u24E7", checkboxCircleOff: "\u24BE", questionMarkPrefix: "?\u20DD", oneHalf: "\xBD", oneThird: "\u2153", oneQuarter: "\xBC", oneFifth: "\u2155", oneSixth: "\u2159", oneSeventh: "\u2150", oneEighth: "\u215B", oneNinth: "\u2151", oneTenth: "\u2152", twoThirds: "\u2154", twoFifths: "\u2156", threeQuarters: "\xBE", threeFifths: "\u2157", threeEighths: "\u215C", fourFifths: "\u2158", fiveSixths: "\u215A", fiveEighths: "\u215D", sevenEighths: "\u215E" }; var windows = { tick: "\u221A", cross: "\xD7", star: "*", square: "\u2588", squareSmall: "[ ]", squareSmallFilled: "[\u2588]", play: "\u25BA", circle: "( )", circleFilled: "(*)", circleDotted: "( )", circleDouble: "( )", circleCircle: "(\u25CB)", circleCross: "(\xD7)", circlePipe: "(\u2502)", circleQuestionMark: "(?)", bullet: "*", dot: ".", line: "\u2500", ellipsis: "...", pointer: ">", pointerSmall: "\xBB", info: "i", warning: "\u203C", hamburger: "\u2261", smiley: "\u263A", mustache: "\u250C\u2500\u2510", heart: main19.heart, nodejs: "\u2666", arrowUp: main19.arrowUp, arrowDown: main19.arrowDown, arrowLeft: main19.arrowLeft, arrowRight: main19.arrowRight, radioOn: "(*)", radioOff: "( )", checkboxOn: "[\xD7]", checkboxOff: "[ ]", checkboxCircleOn: "(\xD7)", checkboxCircleOff: "( )", questionMarkPrefix: "\uFF1F", oneHalf: "1/2", oneThird: "1/3", oneQuarter: "1/4", oneFifth: "1/5", oneSixth: "1/6", oneSeventh: "1/7", oneEighth: "1/8", oneNinth: "1/9", oneTenth: "1/10", twoThirds: "2/3", twoFifths: "2/5", threeQuarters: "3/4", threeFifths: "3/5", threeEighths: "3/8", fourFifths: "4/5", fiveSixths: "5/6", fiveEighths: "5/8", sevenEighths: "7/8" }; if (platform === "linux") { main19.questionMarkPrefix = "?"; } var figures4 = platform === "win32" ? windows : main19; var fn2 = (string) => { if (figures4 === main19) { return string; } for (const [key, value] of Object.entries(main19)) { if (value === figures4[key]) { continue; } string = string.replace(new RegExp(escapeStringRegexp(value), "g"), figures4[key]); } return string; }; module2.exports = Object.assign(fn2, figures4); module2.exports.main = main19; module2.exports.windows = windows; } }); // ../../node_modules/.pnpm/@inquirer+checkbox@2.2.2/node_modules/@inquirer/checkbox/dist/esm/index.mjs function isSelectable(item) { return !Separator.isSeparator(item) && !item.disabled; } function isChecked(item) { return isSelectable(item) && Boolean(item.checked); } function toggle(item) { return isSelectable(item) ? { ...item, checked: !item.checked } : item; } function check(checked) { return function(item) { return isSelectable(item) ? { ...item, checked } : item; }; } var import_chalk11, import_figures2, import_ansi_escapes3, checkboxTheme, esm_default2; var init_esm4 = __esm({ "../../node_modules/.pnpm/@inquirer+checkbox@2.2.2/node_modules/@inquirer/checkbox/dist/esm/index.mjs"() { init_esm3(); import_chalk11 = __toESM3(require_source2(), 1); import_figures2 = __toESM3(require_figures(), 1); import_ansi_escapes3 = __toESM3(require_ansi_escapes(), 1); checkboxTheme = { icon: { checked: import_chalk11.default.green(import_figures2.default.circleFilled), unchecked: import_figures2.default.circle, cursor: import_figures2.default.pointer }, style: { disabledChoice: (text) => import_chalk11.default.dim(`- ${text}`), renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.name || choice.value).join(", ") } }; esm_default2 = createPrompt((config2, done) => { const { instructions, pageSize = 7, loop = true, choices, required, validate: validate2 = () => true } = config2; const theme = makeTheme(checkboxTheme, config2.theme); const prefix = usePrefix({ theme }); const [status3, setStatus] = useState("pending"); const [items, setItems] = useState(choices.map((choice) => ({ ...choice }))); const bounds = useMemo(() => { const first = items.findIndex(isSelectable); const last = items.length - 1 - [...items].reverse().findIndex(isSelectable); if (first < 0) { throw new ValidationError("[checkbox prompt] No selectable choices. All choices are disabled."); } return { first, last }; }, [items]); const [active, setActive] = useState(bounds.first); const [showHelpTip, setShowHelpTip] = useState(true); const [errorMsg, setError] = useState(void 0); useKeypress(async (key) => { if (isEnterKey(key)) { const selection = items.filter(isChecked); const isValid = await validate2([...selection]); if (required && !items.some(isChecked)) { setError("At least one choice must be selected"); } else if (isValid === true) { setStatus("done"); done(selection.map((choice) => choice.value)); } else { setError(isValid || "You must select a valid value"); } } else if (isUpKey(key) || isDownKey(key)) { if (loop || isUpKey(key) && active !== bounds.first || isDownKey(key) && active !== bounds.last) { const offset = isUpKey(key) ? -1 : 1; let next = active; do { next = (next + offset + items.length) % items.length; } while (!isSelectable(items[next])); setActive(next); } } else if (isSpaceKey(key)) { setError(void 0); setShowHelpTip(false); setItems(items.map((choice, i) => i === active ? toggle(choice) : choice)); } else if (key.name === "a") { const selectAll = Boolean(items.find((choice) => isSelectable(choice) && !choice.checked)); setItems(items.map(check(selectAll))); } else if (key.name === "i") { setItems(items.map(toggle)); } else if (isNumberKey(key)) { const position = Number(key.name) - 1; const item = items[position]; if (item != null && isSelectable(item)) { setActive(position); setItems(items.map((choice, i) => i === position ? toggle(choice) : choice)); } } }); const message2 = theme.style.message(config2.message); const page = usePagination({ items, active, renderItem({ item, isActive }) { if (Separator.isSeparator(item)) { return ` ${item.separator}`; } const line = item.name || item.value; if (item.disabled) { const disabledLabel = typeof item.disabled === "string" ? item.disabled : "(disabled)"; return theme.style.disabledChoice(`${line} ${disabledLabel}`); } const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked; const color = isActive ? theme.style.highlight : (x) => x; const cursor = isActive ? theme.icon.cursor : " "; return color(`${cursor}${checkbox} ${line}`); }, pageSize, loop, theme }); if (status3 === "done") { const selection = items.filter(isChecked); const answer = theme.style.answer(theme.style.renderSelectedChoices(selection, items)); return `${prefix} ${message2} ${answer}`; } let helpTip = ""; if (showHelpTip && (instructions === void 0 || instructions)) { if (typeof instructions === "string") { helpTip = instructions; } else { const keys = [ `${theme.style.key("space")} to select`, `${theme.style.key("a")} to toggle all`, `${theme.style.key("i")} to invert selection`, `and ${theme.style.key("enter")} to proceed` ]; helpTip = ` (Press ${keys.join(", ")})`; } } let error3 = ""; if (errorMsg) { error3 = theme.style.error(errorMsg); } return `${prefix} ${message2}${helpTip} ${page} ${error3}${import_ansi_escapes3.default.cursorHide}`; }); } }); // ../../node_modules/.pnpm/@inquirer+confirm@3.1.2/node_modules/@inquirer/confirm/dist/esm/index.mjs var esm_default3; var init_esm5 = __esm({ "../../node_modules/.pnpm/@inquirer+confirm@3.1.2/node_modules/@inquirer/confirm/dist/esm/index.mjs"() { init_esm3(); esm_default3 = createPrompt((config2, done) => { const { transformer = (answer) => answer ? "yes" : "no" } = config2; const [status3, setStatus] = useState("pending"); const [value, setValue] = useState(""); const theme = makeTheme(config2.theme); const prefix = usePrefix({ theme }); useKeypress((key, rl) => { if (isEnterKey(key)) { let answer = config2.default !== false; if (/^(y|yes)/i.test(value)) answer = true; else if (/^(n|no)/i.test(value)) answer = false; setValue(transformer(answer)); setStatus("done"); done(answer); } else { setValue(rl.line); } }); let formattedValue = value; let defaultValue = ""; if (status3 === "done") { formattedValue = theme.style.answer(value); } else { defaultValue = ` ${theme.style.defaultAnswer(config2.default === false ? "y/N" : "Y/n")}`; } const message2 = theme.style.message(config2.message); return `${prefix} ${message2}${defaultValue} ${formattedValue}`; }); } }); // ../../node_modules/.pnpm/@inquirer+expand@2.1.2/node_modules/@inquirer/expand/dist/esm/index.mjs function getChoiceKey(choice, key) { if (key === "name") { if ("name" in choice) return choice.name; return choice.value; } if ("value" in choice) return choice.value; return choice.name; } var import_chalk12, helpChoice, esm_default4; var init_esm6 = __esm({ "../../node_modules/.pnpm/@inquirer+expand@2.1.2/node_modules/@inquirer/expand/dist/esm/index.mjs"() { init_esm3(); import_chalk12 = __toESM3(require_source2(), 1); helpChoice = { key: "h", name: "Help, list all options", value: void 0 }; esm_default4 = createPrompt((config2, done) => { const { choices, default: defaultKey = "h", expanded: defaultExpandState = false } = config2; const [status3, setStatus] = useState("pending"); const [value, setValue] = useState(""); const [expanded, setExpanded] = useState(defaultExpandState); const [errorMsg, setError] = useState(void 0); const theme = makeTheme(config2.theme); const prefix = usePrefix({ theme }); useKeypress((event, rl) => { if (isEnterKey(event)) { const answer = (value || defaultKey).toLowerCase(); if (answer === "h" && !expanded) { setExpanded(true); } else { const selectedChoice = choices.find(({ key }) => key === answer); if (selectedChoice) { const finalValue = getChoiceKey(selectedChoice, "value"); setValue(finalValue); setStatus("done"); done(finalValue); } else if (value === "") { setError("Please input a value"); } else { setError(`"${import_chalk12.default.red(value)}" isn't an available option`); } } } else { setValue(rl.line); setError(void 0); } }); const message2 = theme.style.message(config2.message); if (status3 === "done") { return `${prefix} ${message2} ${theme.style.answer(value)}`; } const allChoices = expanded ? choices : [...choices, helpChoice]; let longChoices = ""; let shortChoices = allChoices.map((choice) => { if (choice.key === defaultKey) { return choice.key.toUpperCase(); } return choice.key; }).join(""); shortChoices = ` ${theme.style.defaultAnswer(shortChoices)}`; if (expanded) { shortChoices = ""; longChoices = allChoices.map((choice) => { const line = ` ${choice.key}) ${getChoiceKey(choice, "name")}`; if (choice.key === value.toLowerCase()) { return theme.style.highlight(line); } return line; }).join("\n"); } let helpTip = ""; const currentOption = allChoices.find(({ key }) => key === value.toLowerCase()); if (currentOption) { helpTip = `${import_chalk12.default.cyan(">>")} ${getChoiceKey(currentOption, "name")}`; } let error3 = ""; if (errorMsg) { error3 = theme.style.error(errorMsg); } return [ `${prefix} ${message2}${shortChoices} ${value}`, [longChoices, helpTip, error3].filter(Boolean).join("\n") ]; }); } }); // ../../node_modules/.pnpm/@inquirer+input@2.1.2/node_modules/@inquirer/input/dist/esm/index.mjs var esm_default5; var init_esm7 = __esm({ "../../node_modules/.pnpm/@inquirer+input@2.1.2/node_modules/@inquirer/input/dist/esm/index.mjs"() { init_esm3(); esm_default5 = createPrompt((config2, done) => { const { validate: validate2 = () => true } = config2; const theme = makeTheme(config2.theme); const [status3, setStatus] = useState("pending"); const [defaultValue = "", setDefaultValue] = useState(config2.default); const [errorMsg, setError] = useState(void 0); const [value, setValue] = useState(""); const isLoading = status3 === "loading"; const prefix = usePrefix({ isLoading, theme }); useKeypress(async (key, rl) => { if (status3 !== "pending") { return; } if (isEnterKey(key)) { const answer = value || defaultValue; setStatus("loading"); const isValid = await validate2(answer); if (isValid === true) { setValue(answer); setStatus("done"); done(answer); } else { rl.write(value); setError(isValid || "You must provide a valid value"); setStatus("pending"); } } else if (isBackspaceKey(key) && !value) { setDefaultValue(void 0); } else if (key.name === "tab" && !value) { setDefaultValue(void 0); rl.clearLine(0); rl.write(defaultValue); setValue(defaultValue); } else { setValue(rl.line); setError(void 0); } }); const message2 = theme.style.message(config2.message); let formattedValue = value; if (typeof config2.transformer === "function") { formattedValue = config2.transformer(value, { isFinal: status3 === "done" }); } else if (status3 === "done") { formattedValue = theme.style.answer(value); } let defaultStr; if (defaultValue && status3 !== "done" && !value) { defaultStr = theme.style.defaultAnswer(defaultValue); } let error3 = ""; if (errorMsg) { error3 = theme.style.error(errorMsg); } return [ [prefix, message2, defaultStr, formattedValue].filter((v) => v !== void 0).join(" "), error3 ]; }); } }); // ../../node_modules/.pnpm/@inquirer+password@2.1.2/node_modules/@inquirer/password/dist/esm/index.mjs var import_ansi_escapes4, esm_default6; var init_esm8 = __esm({ "../../node_modules/.pnpm/@inquirer+password@2.1.2/node_modules/@inquirer/password/dist/esm/index.mjs"() { init_esm3(); import_ansi_escapes4 = __toESM3(require_ansi_escapes(), 1); esm_default6 = createPrompt((config2, done) => { const { validate: validate2 = () => true } = config2; const theme = makeTheme(config2.theme); const [status3, setStatus] = useState("pending"); const [errorMsg, setError] = useState(void 0); const [value, setValue] = useState(""); const isLoading = status3 === "loading"; const prefix = usePrefix({ isLoading, theme }); useKeypress(async (key, rl) => { if (status3 !== "pending") { return; } if (isEnterKey(key)) { const answer = value; setStatus("loading"); const isValid = await validate2(answer); if (isValid === true) { setValue(answer); setStatus("done"); done(answer); } else { rl.write(value); setError(isValid || "You must provide a valid value"); setStatus("pending"); } } else { setValue(rl.line); setError(void 0); } }); const message2 = theme.style.message(config2.message); let formattedValue = ""; let helpTip; if (config2.mask) { const maskChar = typeof config2.mask === "string" ? config2.mask : "*"; formattedValue = maskChar.repeat(value.length); } else if (status3 !== "done") { helpTip = `${theme.style.help("[input is masked]")}${import_ansi_escapes4.default.cursorHide}`; } if (status3 === "done") { formattedValue = theme.style.answer(formattedValue); } let error3 = ""; if (errorMsg) { error3 = theme.style.error(errorMsg); } return [[prefix, message2, formattedValue, helpTip].filter(Boolean).join(" "), error3]; }); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/key.mjs var isEnterKey2; var init_key2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/key.mjs"() { isEnterKey2 = (key) => key.name === "enter" || key.name === "return"; } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/errors.mjs var AbortPromptError, CancelPromptError2, ExitPromptError2, HookError2, ValidationError2; var init_errors2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/errors.mjs"() { AbortPromptError = class extends Error { constructor(options) { super(); __publicField(this, "name", "AbortPromptError"); __publicField(this, "message", "Prompt was aborted"); this.cause = options?.cause; } }; CancelPromptError2 = class extends Error { constructor() { super(...arguments); __publicField(this, "name", "CancelPromptError"); __publicField(this, "message", "Prompt was canceled"); } }; ExitPromptError2 = class extends Error { constructor() { super(...arguments); __publicField(this, "name", "ExitPromptError"); } }; HookError2 = class extends Error { constructor() { super(...arguments); __publicField(this, "name", "HookError"); } }; ValidationError2 = class extends Error { constructor() { super(...arguments); __publicField(this, "name", "ValidationError"); } }; } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/hook-engine.mjs import { AsyncLocalStorage as AsyncLocalStorage2, AsyncResource as AsyncResource3 } from "async_hooks"; function createStore2(rl) { const store2 = { rl, hooks: [], hooksCleanup: [], hooksEffect: [], index: 0, handleChange() { } }; return store2; } function withHooks2(rl, cb) { const store2 = createStore2(rl); return hookStorage2.run(store2, () => { function cycle(render) { store2.handleChange = () => { store2.index = 0; render(); }; store2.handleChange(); } return cb(cycle); }); } function getStore2() { const store2 = hookStorage2.getStore(); if (!store2) { throw new HookError2("[Inquirer] Hook functions can only be called from within a prompt"); } return store2; } function readline3() { return getStore2().rl; } function withUpdates2(fn2) { const wrapped = (...args2) => { const store2 = getStore2(); let shouldUpdate = false; const oldHandleChange = store2.handleChange; store2.handleChange = () => { shouldUpdate = true; }; const returnValue = fn2(...args2); if (shouldUpdate) { oldHandleChange(); } store2.handleChange = oldHandleChange; return returnValue; }; return AsyncResource3.bind(wrapped); } function withPointer2(cb) { const store2 = getStore2(); const { index } = store2; const pointer = { get() { return store2.hooks[index]; }, set(value) { store2.hooks[index] = value; }, initialized: index in store2.hooks }; const returnValue = cb(pointer); store2.index++; return returnValue; } function handleChange2() { getStore2().handleChange(); } var hookStorage2, effectScheduler2; var init_hook_engine2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/hook-engine.mjs"() { init_errors2(); hookStorage2 = new AsyncLocalStorage2(); effectScheduler2 = { queue(cb) { const store2 = getStore2(); const { index } = store2; store2.hooksEffect.push(() => { store2.hooksCleanup[index]?.(); const cleanFn = cb(readline3()); if (cleanFn != null && typeof cleanFn !== "function") { throw new ValidationError2("useEffect return value must be a cleanup function or nothing."); } store2.hooksCleanup[index] = cleanFn; }); }, run() { const store2 = getStore2(); withUpdates2(() => { store2.hooksEffect.forEach((effect) => { effect(); }); store2.hooksEffect.length = 0; })(); }, clearAll() { const store2 = getStore2(); store2.hooksCleanup.forEach((cleanFn) => { cleanFn?.(); }); store2.hooksEffect.length = 0; store2.hooksCleanup.length = 0; } }; } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-state.mjs function useState2(defaultValue) { return withPointer2((pointer) => { const setFn = (newValue) => { if (pointer.get() !== newValue) { pointer.set(newValue); handleChange2(); } }; if (pointer.initialized) { return [pointer.get(), setFn]; } const value = typeof defaultValue === "function" ? defaultValue() : defaultValue; pointer.set(value); return [value, setFn]; }); } var init_use_state2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-state.mjs"() { init_hook_engine2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-effect.mjs function useEffect2(cb, depArray) { withPointer2((pointer) => { const oldDeps = pointer.get(); const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i])); if (hasChanged) { effectScheduler2.queue(cb); } pointer.set(depArray); }); } var init_use_effect2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-effect.mjs"() { init_hook_engine2(); } }); // ../../node_modules/.pnpm/yoctocolors-cjs@2.1.3/node_modules/yoctocolors-cjs/index.js var require_yoctocolors_cjs = __commonJS2({ "../../node_modules/.pnpm/yoctocolors-cjs@2.1.3/node_modules/yoctocolors-cjs/index.js"(exports2, module2) { var tty = __require("tty"); var hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false; var format8 = (open10, close2) => { if (!hasColors) { return (input) => input; } const openCode = `\x1B[${open10}m`; const closeCode = `\x1B[${close2}m`; return (input) => { const string = input + ""; let index = string.indexOf(closeCode); if (index === -1) { return openCode + string + closeCode; } let result = openCode; let lastIndex = 0; const reopenOnNestedClose = close2 === 22; const replaceCode = (reopenOnNestedClose ? closeCode : "") + openCode; while (index !== -1) { result += string.slice(lastIndex, index) + replaceCode; lastIndex = index + closeCode.length; index = string.indexOf(closeCode, lastIndex); } result += string.slice(lastIndex) + closeCode; return result; }; }; var colors4 = {}; colors4.reset = format8(0, 0); colors4.bold = format8(1, 22); colors4.dim = format8(2, 22); colors4.italic = format8(3, 23); colors4.underline = format8(4, 24); colors4.overline = format8(53, 55); colors4.inverse = format8(7, 27); colors4.hidden = format8(8, 28); colors4.strikethrough = format8(9, 29); colors4.black = format8(30, 39); colors4.red = format8(31, 39); colors4.green = format8(32, 39); colors4.yellow = format8(33, 39); colors4.blue = format8(34, 39); colors4.magenta = format8(35, 39); colors4.cyan = format8(36, 39); colors4.white = format8(37, 39); colors4.gray = format8(90, 39); colors4.bgBlack = format8(40, 49); colors4.bgRed = format8(41, 49); colors4.bgGreen = format8(42, 49); colors4.bgYellow = format8(43, 49); colors4.bgBlue = format8(44, 49); colors4.bgMagenta = format8(45, 49); colors4.bgCyan = format8(46, 49); colors4.bgWhite = format8(47, 49); colors4.bgGray = format8(100, 49); colors4.redBright = format8(91, 39); colors4.greenBright = format8(92, 39); colors4.yellowBright = format8(93, 39); colors4.blueBright = format8(94, 39); colors4.magentaBright = format8(95, 39); colors4.cyanBright = format8(96, 39); colors4.whiteBright = format8(97, 39); colors4.bgRedBright = format8(101, 49); colors4.bgGreenBright = format8(102, 49); colors4.bgYellowBright = format8(103, 49); colors4.bgBlueBright = format8(104, 49); colors4.bgMagentaBright = format8(105, 49); colors4.bgCyanBright = format8(106, 49); colors4.bgWhiteBright = format8(107, 49); module2.exports = colors4; } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/theme.mjs var import_yoctocolors_cjs, defaultTheme2; var init_theme2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/theme.mjs"() { import_yoctocolors_cjs = __toESM3(require_yoctocolors_cjs(), 1); init_esm2(); defaultTheme2 = { prefix: { idle: import_yoctocolors_cjs.default.blue("?"), // TODO: use figure done: import_yoctocolors_cjs.default.green(esm_default.tick) }, spinner: { interval: 80, frames: ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"].map((frame) => import_yoctocolors_cjs.default.yellow(frame)) }, style: { answer: import_yoctocolors_cjs.default.cyan, message: import_yoctocolors_cjs.default.bold, error: (text) => import_yoctocolors_cjs.default.red(`> ${text}`), defaultAnswer: (text) => import_yoctocolors_cjs.default.dim(`(${text})`), help: import_yoctocolors_cjs.default.dim, highlight: import_yoctocolors_cjs.default.cyan, key: (text) => import_yoctocolors_cjs.default.cyan(import_yoctocolors_cjs.default.bold(`<${text}>`)) } }; } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/make-theme.mjs function isPlainObject(value) { if (typeof value !== "object" || value === null) return false; let proto = value; while (Object.getPrototypeOf(proto) !== null) { proto = Object.getPrototypeOf(proto); } return Object.getPrototypeOf(value) === proto; } function deepMerge(...objects) { const output2 = {}; for (const obj of objects) { for (const [key, value] of Object.entries(obj)) { const prevValue = output2[key]; output2[key] = isPlainObject(prevValue) && isPlainObject(value) ? deepMerge(prevValue, value) : value; } } return output2; } function makeTheme2(...themes) { const themesToMerge = [ defaultTheme2, ...themes.filter((theme) => theme != null) ]; return deepMerge(...themesToMerge); } var init_make_theme2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/make-theme.mjs"() { init_theme2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-prefix.mjs import { AsyncResource as AsyncResource4 } from "async_hooks"; function usePrefix2({ status: status3 = "idle", theme }) { const [showLoader, setShowLoader] = useState2(false); const [tick, setTick] = useState2(0); const { prefix, spinner } = makeTheme2(theme); useEffect2(() => { if (status3 === "loading") { let tickInterval; let inc = -1; const delayTimeout = setTimeout(AsyncResource4.bind(() => { setShowLoader(true); tickInterval = setInterval(AsyncResource4.bind(() => { inc = inc + 1; setTick(inc % spinner.frames.length); }), spinner.interval); }), 300); return () => { clearTimeout(delayTimeout); clearInterval(tickInterval); }; } else { setShowLoader(false); } }, [status3]); if (showLoader) { return spinner.frames[tick]; } const iconName = status3 === "loading" ? "idle" : status3; return typeof prefix === "string" ? prefix : prefix[iconName]; } var init_use_prefix2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-prefix.mjs"() { init_use_state2(); init_use_effect2(); init_make_theme2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-memo.mjs function useMemo2(fn2, dependencies) { return withPointer2((pointer) => { const prev = pointer.get(); if (!prev || prev.dependencies.length !== dependencies.length || prev.dependencies.some((dep, i) => dep !== dependencies[i])) { const value = fn2(); pointer.set({ value, dependencies }); return value; } return prev.value; }); } var init_use_memo2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-memo.mjs"() { init_hook_engine2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-ref.mjs function useRef2(val) { return useState2({ current: val })[0]; } var init_use_ref2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-ref.mjs"() { init_use_state2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-keypress.mjs function useKeypress2(userHandler) { const signal = useRef2(userHandler); signal.current = userHandler; useEffect2((rl) => { let ignore = false; const handler = withUpdates2((_input, event) => { if (ignore) return; void signal.current(event, rl); }); rl.input.on("keypress", handler); return () => { ignore = true; rl.input.removeListener("keypress", handler); }; }, []); } var init_use_keypress2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/use-keypress.mjs"() { init_use_ref2(); init_use_effect2(); init_hook_engine2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/utils.mjs function breakLines2(content, width) { return content.split("\n").flatMap((line) => (0, import_wrap_ansi2.default)(line, width, { trim: false, hard: true }).split("\n").map((str) => str.trimEnd())).join("\n"); } function readlineWidth2() { return (0, import_cli_width2.default)({ defaultWidth: 80, output: readline3().output }); } var import_cli_width2, import_wrap_ansi2; var init_utils3 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/utils.mjs"() { import_cli_width2 = __toESM3(require_cli_width(), 1); import_wrap_ansi2 = __toESM3(require_wrap_ansi(), 1); init_hook_engine2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/pagination/lines.mjs function split2(content, width) { return breakLines2(content, width).split("\n"); } function rotate2(count, items) { const max = items.length; const offset = (count % max + max) % max; return [...items.slice(offset), ...items.slice(0, offset)]; } function lines2({ items, width, renderItem, active, position: requested, pageSize }) { const layouts = items.map((item, index) => ({ item, index, isActive: index === active })); const layoutsInPage = rotate2(active - requested, layouts).slice(0, pageSize); const renderItemAt = (index) => layoutsInPage[index] == null ? [] : split2(renderItem(layoutsInPage[index]), width); const pageBuffer = Array.from({ length: pageSize }); const activeItem = renderItemAt(requested).slice(0, pageSize); const position = requested + activeItem.length <= pageSize ? requested : pageSize - activeItem.length; pageBuffer.splice(position, activeItem.length, ...activeItem); let bufferPointer = position + activeItem.length; let layoutPointer = requested + 1; while (bufferPointer < pageSize && layoutPointer < layoutsInPage.length) { for (const line of renderItemAt(layoutPointer)) { pageBuffer[bufferPointer++] = line; if (bufferPointer >= pageSize) break; } layoutPointer++; } bufferPointer = position - 1; layoutPointer = requested - 1; while (bufferPointer >= 0 && layoutPointer >= 0) { for (const line of renderItemAt(layoutPointer).reverse()) { pageBuffer[bufferPointer--] = line; if (bufferPointer < 0) break; } layoutPointer--; } return pageBuffer.filter((line) => typeof line === "string"); } var init_lines2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/pagination/lines.mjs"() { init_utils3(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/pagination/position.mjs function finite2({ active, pageSize, total }) { const middle = Math.floor(pageSize / 2); if (total <= pageSize || active < middle) return active; if (active >= total - middle) return active + pageSize - total; return middle; } function infinite2({ active, lastActive, total, pageSize, pointer }) { if (total <= pageSize) return active; if (lastActive < active && active - lastActive < pageSize) { return Math.min(Math.floor(pageSize / 2), pointer + active - lastActive); } return pointer; } var init_position2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/pagination/position.mjs"() { } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.mjs function usePagination2({ items, active, renderItem, pageSize, loop = true }) { const state = useRef2({ position: 0, lastActive: 0 }); const position = loop ? infinite2({ active, lastActive: state.current.lastActive, total: items.length, pageSize, pointer: state.current.position }) : finite2({ active, total: items.length, pageSize }); state.current.position = position; state.current.lastActive = active; return lines2({ items, width: readlineWidth2(), renderItem, active, position, pageSize }).join("\n"); } var init_use_pagination2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.mjs"() { init_use_ref2(); init_utils3(); init_lines2(); init_position2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/screen-manager.mjs function cursorDown(n) { return n > 0 ? import_ansi_escapes5.default.cursorDown(n) : ""; } var import_strip_ansi2, import_ansi_escapes5, height2, lastLine2, ScreenManager2; var init_screen_manager2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/screen-manager.mjs"() { import_strip_ansi2 = __toESM3(require_strip_ansi2(), 1); import_ansi_escapes5 = __toESM3(require_ansi_escapes(), 1); init_utils3(); height2 = (content) => content.split("\n").length; lastLine2 = (content) => content.split("\n").pop() ?? ""; ScreenManager2 = class { constructor(rl) { __publicField(this, "rl"); // These variables are keeping information to allow correct prompt re-rendering __publicField(this, "height", 0); __publicField(this, "extraLinesUnderPrompt", 0); __publicField(this, "cursorPos"); this.rl = rl; this.rl = rl; this.cursorPos = rl.getCursorPos(); } write(content) { this.rl.output.unmute(); this.rl.output.write(content); this.rl.output.mute(); } render(content, bottomContent = "") { const promptLine = lastLine2(content); const rawPromptLine = (0, import_strip_ansi2.default)(promptLine); let prompt2 = rawPromptLine; if (this.rl.line.length > 0) { prompt2 = prompt2.slice(0, -this.rl.line.length); } this.rl.setPrompt(prompt2); this.cursorPos = this.rl.getCursorPos(); const width = readlineWidth2(); content = breakLines2(content, width); bottomContent = breakLines2(bottomContent, width); if (rawPromptLine.length % width === 0) { content += "\n"; } let output2 = content + (bottomContent ? "\n" + bottomContent : ""); const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows; const bottomContentHeight = promptLineUpDiff + (bottomContent ? height2(bottomContent) : 0); if (bottomContentHeight > 0) output2 += import_ansi_escapes5.default.cursorUp(bottomContentHeight); output2 += import_ansi_escapes5.default.cursorTo(this.cursorPos.cols); this.write(cursorDown(this.extraLinesUnderPrompt) + import_ansi_escapes5.default.eraseLines(this.height) + output2); this.extraLinesUnderPrompt = bottomContentHeight; this.height = height2(output2); } checkCursorPos() { const cursorPos = this.rl.getCursorPos(); if (cursorPos.cols !== this.cursorPos.cols) { this.write(import_ansi_escapes5.default.cursorTo(cursorPos.cols)); this.cursorPos = cursorPos; } } done({ clearContent }) { this.rl.setPrompt(""); let output2 = cursorDown(this.extraLinesUnderPrompt); output2 += clearContent ? import_ansi_escapes5.default.eraseLines(this.height) : "\n"; output2 += import_ansi_escapes5.default.cursorShow; this.write(output2); this.rl.close(); } }; } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.mjs var PromisePolyfill; var init_promise_polyfill = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.mjs"() { PromisePolyfill = class extends Promise { // Available starting from Node 22 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers static withResolver() { let resolve14; let reject; const promise = new Promise((res, rej) => { resolve14 = res; reject = rej; }); return { promise, resolve: resolve14, reject }; } }; } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/create-prompt.mjs import * as readline4 from "readline"; import { AsyncResource as AsyncResource5 } from "async_hooks"; function createPrompt2(view) { const prompt2 = (config2, context = {}) => { const { input = process.stdin, signal } = context; const cleanups = /* @__PURE__ */ new Set(); const output2 = new import_mute_stream2.default(); output2.pipe(context.output ?? process.stdout); const rl = readline4.createInterface({ terminal: true, input, output: output2 }); const screen = new ScreenManager2(rl); const { promise, resolve: resolve14, reject } = PromisePolyfill.withResolver(); const cancel = () => reject(new CancelPromptError2()); if (signal) { const abort = () => reject(new AbortPromptError({ cause: signal.reason })); if (signal.aborted) { abort(); return Object.assign(promise, { cancel }); } signal.addEventListener("abort", abort); cleanups.add(() => signal.removeEventListener("abort", abort)); } cleanups.add(onExit((code2, signal2) => { reject(new ExitPromptError2(`User force closed the prompt with ${code2} ${signal2}`)); })); const checkCursorPos = () => screen.checkCursorPos(); rl.input.on("keypress", checkCursorPos); cleanups.add(() => rl.input.removeListener("keypress", checkCursorPos)); return withHooks2(rl, (cycle) => { const hooksCleanup = AsyncResource5.bind(() => effectScheduler2.clearAll()); rl.on("close", hooksCleanup); cleanups.add(() => rl.removeListener("close", hooksCleanup)); cycle(() => { try { const nextView = view(config2, (value) => { setImmediate(() => resolve14(value)); }); const [content, bottomContent] = typeof nextView === "string" ? [nextView] : nextView; screen.render(content, bottomContent); effectScheduler2.run(); } catch (error3) { reject(error3); } }); return Object.assign(promise.then((answer) => { effectScheduler2.clearAll(); return answer; }, (error3) => { effectScheduler2.clearAll(); throw error3; }).finally(() => { cleanups.forEach((cleanup) => cleanup()); screen.done({ clearContent: Boolean(context?.clearPromptOnDone) }); output2.end(); }).then(() => promise), { cancel }); }); }; return prompt2; } var import_mute_stream2; var init_create_prompt2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/create-prompt.mjs"() { import_mute_stream2 = __toESM3(require_lib5(), 1); init_mjs(); init_screen_manager2(); init_promise_polyfill(); init_hook_engine2(); init_errors2(); } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/Separator.mjs var import_yoctocolors_cjs2, Separator2; var init_Separator2 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/Separator.mjs"() { import_yoctocolors_cjs2 = __toESM3(require_yoctocolors_cjs(), 1); init_esm2(); Separator2 = class { constructor(separator) { __publicField(this, "separator", import_yoctocolors_cjs2.default.dim(Array.from({ length: 15 }).join(esm_default.line))); __publicField(this, "type", "separator"); if (separator) { this.separator = separator; } } static isSeparator(choice) { return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator"); } }; } }); // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/index.mjs var init_esm9 = __esm({ "../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/index.mjs"() { init_key2(); init_errors2(); init_use_prefix2(); init_use_state2(); init_use_effect2(); init_use_memo2(); init_use_ref2(); init_use_keypress2(); init_make_theme2(); init_use_pagination2(); init_create_prompt2(); init_Separator2(); } }); // ../../node_modules/.pnpm/@inquirer+search@2.0.1/node_modules/@inquirer/search/dist/esm/index.mjs function isSelectable2(item) { return !Separator2.isSeparator(item) && !item.disabled; } function normalizeChoices(choices) { return choices.map((choice) => { if (Separator2.isSeparator(choice)) return choice; if (typeof choice === "string") { return { value: choice, name: choice, short: choice, disabled: false }; } const name = choice.name ?? String(choice.value); return { value: choice.value, name, description: choice.description, short: choice.short ?? name, disabled: choice.disabled ?? false }; }); } var import_yoctocolors_cjs3, searchTheme, esm_default7; var init_esm10 = __esm({ "../../node_modules/.pnpm/@inquirer+search@2.0.1/node_modules/@inquirer/search/dist/esm/index.mjs"() { init_esm9(); import_yoctocolors_cjs3 = __toESM3(require_yoctocolors_cjs(), 1); init_esm2(); searchTheme = { icon: { cursor: esm_default.pointer }, style: { disabled: (text) => import_yoctocolors_cjs3.default.dim(`- ${text}`), searchTerm: (text) => import_yoctocolors_cjs3.default.cyan(text), description: (text) => import_yoctocolors_cjs3.default.cyan(text) }, helpMode: "auto" }; esm_default7 = createPrompt2((config2, done) => { const { pageSize = 7, validate: validate2 = () => true } = config2; const theme = makeTheme2(searchTheme, config2.theme); const firstRender = useRef2(true); const [status3, setStatus] = useState2("loading"); const [searchTerm, setSearchTerm] = useState2(""); const [searchResults, setSearchResults] = useState2([]); const [searchError, setSearchError] = useState2(); const prefix = usePrefix2({ status: status3, theme }); const bounds = useMemo2(() => { const first = searchResults.findIndex(isSelectable2); const last = searchResults.findLastIndex(isSelectable2); return { first, last }; }, [searchResults]); const [active = bounds.first, setActive] = useState2(); useEffect2(() => { const controller = new AbortController(); setStatus("loading"); setSearchError(void 0); const fetchResults = async () => { try { const results = await config2.source(searchTerm || void 0, { signal: controller.signal }); if (!controller.signal.aborted) { setActive(void 0); setSearchError(void 0); setSearchResults(normalizeChoices(results)); setStatus("idle"); } } catch (error4) { if (!controller.signal.aborted && error4 instanceof Error) { setSearchError(error4.message); } } }; void fetchResults(); return () => { controller.abort(); }; }, [searchTerm]); const selectedChoice = searchResults[active]; useKeypress2(async (key, rl) => { if (isEnterKey2(key)) { if (selectedChoice) { setStatus("loading"); const isValid = await validate2(selectedChoice.value); setStatus("idle"); if (isValid === true) { setStatus("done"); done(selectedChoice.value); } else if (selectedChoice.name === searchTerm) { setSearchError(isValid || "You must provide a valid value"); } else { rl.write(selectedChoice.name); setSearchTerm(selectedChoice.name); } } else { rl.write(searchTerm); } } else if (key.name === "tab" && selectedChoice) { rl.clearLine(0); rl.write(selectedChoice.name); setSearchTerm(selectedChoice.name); } else if (status3 !== "loading" && (key.name === "up" || key.name === "down")) { rl.clearLine(0); if (key.name === "up" && active !== bounds.first || key.name === "down" && active !== bounds.last) { const offset = key.name === "up" ? -1 : 1; let next = active; do { next = (next + offset + searchResults.length) % searchResults.length; } while (!isSelectable2(searchResults[next])); setActive(next); } } else { setSearchTerm(rl.line); } }); const message2 = theme.style.message(config2.message, status3); if (active > 0) { firstRender.current = false; } let helpTip = ""; if (searchResults.length > 1 && (theme.helpMode === "always" || theme.helpMode === "auto" && firstRender.current)) { helpTip = searchResults.length > pageSize ? ` ${theme.style.help("(Use arrow keys to reveal more choices)")}` : ` ${theme.style.help("(Use arrow keys)")}`; } const page = usePagination2({ items: searchResults, active, renderItem({ item, isActive }) { if (Separator2.isSeparator(item)) { return ` ${item.separator}`; } if (item.disabled) { const disabledLabel = typeof item.disabled === "string" ? item.disabled : "(disabled)"; return theme.style.disabled(`${item.name} ${disabledLabel}`); } const color = isActive ? theme.style.highlight : (x) => x; const cursor = isActive ? theme.icon.cursor : ` `; return color(`${cursor} ${item.name}`); }, pageSize, loop: false }); let error3; if (searchError) { error3 = theme.style.error(searchError); } else if (searchResults.length === 0 && searchTerm !== "" && status3 === "idle") { error3 = theme.style.error("No results found"); } let searchStr; if (status3 === "done" && selectedChoice) { const answer = selectedChoice.short ?? selectedChoice.name; return `${prefix} ${message2} ${theme.style.answer(answer)}`; } else { searchStr = theme.style.searchTerm(searchTerm); } const choiceDescription = selectedChoice?.description ? ` ${theme.style.description(selectedChoice.description)}` : ``; return [ [prefix, message2, searchStr].filter(Boolean).join(" "), `${error3 ?? page}${helpTip}${choiceDescription}` ]; }); } }); // ../../node_modules/.pnpm/@inquirer+select@2.2.2/node_modules/@inquirer/select/dist/esm/index.mjs function isSelectable3(item) { return !Separator.isSeparator(item) && !item.disabled; } var import_chalk13, import_figures6, import_ansi_escapes6, selectTheme, esm_default8; var init_esm11 = __esm({ "../../node_modules/.pnpm/@inquirer+select@2.2.2/node_modules/@inquirer/select/dist/esm/index.mjs"() { init_esm3(); import_chalk13 = __toESM3(require_source2(), 1); import_figures6 = __toESM3(require_figures(), 1); import_ansi_escapes6 = __toESM3(require_ansi_escapes(), 1); selectTheme = { icon: { cursor: import_figures6.default.pointer }, style: { disabled: (text) => import_chalk13.default.dim(`- ${text}`) } }; esm_default8 = createPrompt((config2, done) => { const { choices: items, loop = true, pageSize = 7 } = config2; const firstRender = useRef(true); const theme = makeTheme(selectTheme, config2.theme); const prefix = usePrefix({ theme }); const [status3, setStatus] = useState("pending"); const searchTimeoutRef = useRef(void 0); const bounds = useMemo(() => { const first = items.findIndex(isSelectable3); const last = items.length - 1 - [...items].reverse().findIndex(isSelectable3); if (first < 0) throw new ValidationError("[select prompt] No selectable choices. All choices are disabled."); return { first, last }; }, [items]); const defaultItemIndex = useMemo(() => { if (!("default" in config2)) return -1; return items.findIndex((item) => isSelectable3(item) && item.value === config2.default); }, [config2.default, items]); const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex); const selectedChoice = items[active]; useKeypress((key, rl) => { clearTimeout(searchTimeoutRef.current); if (isEnterKey(key)) { setStatus("done"); done(selectedChoice.value); } else if (isUpKey(key) || isDownKey(key)) { rl.clearLine(0); if (loop || isUpKey(key) && active !== bounds.first || isDownKey(key) && active !== bounds.last) { const offset = isUpKey(key) ? -1 : 1; let next = active; do { next = (next + offset + items.length) % items.length; } while (!isSelectable3(items[next])); setActive(next); } } else if (isNumberKey(key)) { rl.clearLine(0); const position = Number(key.name) - 1; const item = items[position]; if (item != null && isSelectable3(item)) { setActive(position); } } else if (isBackspaceKey(key)) { rl.clearLine(0); } else { const searchTerm = rl.line.toLowerCase(); const matchIndex = items.findIndex((item) => { if (Separator.isSeparator(item) || !isSelectable3(item)) return false; return String(item.name || item.value).toLowerCase().startsWith(searchTerm); }); if (matchIndex >= 0) { setActive(matchIndex); } searchTimeoutRef.current = setTimeout(() => { rl.clearLine(0); }, 700); } }); const message2 = theme.style.message(config2.message); let helpTip; if (firstRender.current && items.length <= pageSize) { firstRender.current = false; helpTip = theme.style.help("(Use arrow keys)"); } const page = usePagination({ items, active, renderItem({ item, isActive }) { if (Separator.isSeparator(item)) { return ` ${item.separator}`; } const line = item.name || item.value; if (item.disabled) { const disabledLabel = typeof item.disabled === "string" ? item.disabled : "(disabled)"; return theme.style.disabled(`${line} ${disabledLabel}`); } const color = isActive ? theme.style.highlight : (x) => x; const cursor = isActive ? theme.icon.cursor : ` `; return color(`${cursor} ${line}`); }, pageSize, loop, theme }); if (status3 === "done") { const answer = selectedChoice.name || // TODO: Could we enforce that at the type level? Name should be defined for non-string values. String(selectedChoice.value); return `${prefix} ${message2} ${theme.style.answer(answer)}`; } const choiceDescription = selectedChoice.description ? ` ${selectedChoice.description}` : ``; return `${[prefix, message2, helpTip].filter(Boolean).join(" ")} ${page}${choiceDescription}${import_ansi_escapes6.default.cursorHide}`; }); } }); // ../../node_modules/.pnpm/retry@0.10.1/node_modules/retry/lib/retry_operation.js var require_retry_operation = __commonJS2({ "../../node_modules/.pnpm/retry@0.10.1/node_modules/retry/lib/retry_operation.js"(exports2, module2) { function RetryOperation(timeouts, options) { if (typeof options === "boolean") { options = { forever: options }; } this._timeouts = timeouts; this._options = options || {}; this._fn = null; this._errors = []; this._attempts = 1; this._operationTimeout = null; this._operationTimeoutCb = null; this._timeout = null; if (this._options.forever) { this._cachedTimeouts = this._timeouts.slice(0); } } module2.exports = RetryOperation; RetryOperation.prototype.stop = function() { if (this._timeout) { clearTimeout(this._timeout); } this._timeouts = []; this._cachedTimeouts = null; }; RetryOperation.prototype.retry = function(err) { if (this._timeout) { clearTimeout(this._timeout); } if (!err) { return false; } this._errors.push(err); var timeout = this._timeouts.shift(); if (timeout === void 0) { if (this._cachedTimeouts) { this._errors.splice(this._errors.length - 1, this._errors.length); this._timeouts = this._cachedTimeouts.slice(0); timeout = this._timeouts.shift(); } else { return false; } } var self2 = this; var timer = setTimeout(function() { self2._attempts++; if (self2._operationTimeoutCb) { self2._timeout = setTimeout(function() { self2._operationTimeoutCb(self2._attempts); }, self2._operationTimeout); if (this._options.unref) { self2._timeout.unref(); } } self2._fn(self2._attempts); }, timeout); if (this._options.unref) { timer.unref(); } return true; }; RetryOperation.prototype.attempt = function(fn2, timeoutOps) { this._fn = fn2; if (timeoutOps) { if (timeoutOps.timeout) { this._operationTimeout = timeoutOps.timeout; } if (timeoutOps.cb) { this._operationTimeoutCb = timeoutOps.cb; } } var self2 = this; if (this._operationTimeoutCb) { this._timeout = setTimeout(function() { self2._operationTimeoutCb(); }, self2._operationTimeout); } this._fn(this._attempts); }; RetryOperation.prototype.try = function(fn2) { console.log("Using RetryOperation.try() is deprecated"); this.attempt(fn2); }; RetryOperation.prototype.start = function(fn2) { console.log("Using RetryOperation.start() is deprecated"); this.attempt(fn2); }; RetryOperation.prototype.start = RetryOperation.prototype.try; RetryOperation.prototype.errors = function() { return this._errors; }; RetryOperation.prototype.attempts = function() { return this._attempts; }; RetryOperation.prototype.mainError = function() { if (this._errors.length === 0) { return null; } var counts = {}; var mainError = null; var mainErrorCount = 0; for (var i = 0; i < this._errors.length; i++) { var error3 = this._errors[i]; var message2 = error3.message; var count = (counts[message2] || 0) + 1; counts[message2] = count; if (count >= mainErrorCount) { mainError = error3; mainErrorCount = count; } } return mainError; }; } }); // ../../node_modules/.pnpm/retry@0.10.1/node_modules/retry/lib/retry.js var require_retry = __commonJS2({ "../../node_modules/.pnpm/retry@0.10.1/node_modules/retry/lib/retry.js"(exports2) { var RetryOperation = require_retry_operation(); exports2.operation = function(options) { var timeouts = exports2.timeouts(options); return new RetryOperation(timeouts, { forever: options && options.forever, unref: options && options.unref }); }; exports2.timeouts = function(options) { if (options instanceof Array) { return [].concat(options); } var opts = { retries: 10, factor: 2, minTimeout: 1 * 1e3, maxTimeout: Infinity, randomize: false }; for (var key in options) { opts[key] = options[key]; } if (opts.minTimeout > opts.maxTimeout) { throw new Error("minTimeout is greater than maxTimeout"); } var timeouts = []; for (var i = 0; i < opts.retries; i++) { timeouts.push(this.createTimeout(i, opts)); } if (options && options.forever && !timeouts.length) { timeouts.push(this.createTimeout(i, opts)); } timeouts.sort(function(a, b) { return a - b; }); return timeouts; }; exports2.createTimeout = function(attempt, opts) { var random = opts.randomize ? Math.random() + 1 : 1; var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt)); timeout = Math.min(timeout, opts.maxTimeout); return timeout; }; exports2.wrap = function(obj, options, methods) { if (options instanceof Array) { methods = options; options = null; } if (!methods) { methods = []; for (var key in obj) { if (typeof obj[key] === "function") { methods.push(key); } } } for (var i = 0; i < methods.length; i++) { var method = methods[i]; var original = obj[method]; obj[method] = function retryWrapper() { var op = exports2.operation(options); var args2 = Array.prototype.slice.call(arguments); var callback = args2.pop(); args2.push(function(err) { if (op.retry(err)) { return; } if (err) { arguments[0] = op.mainError(); } callback.apply(this, arguments); }); op.attempt(function() { original.apply(obj, args2); }); }; obj[method].options = options; } }; } }); // ../../node_modules/.pnpm/retry@0.10.1/node_modules/retry/index.js var require_retry2 = __commonJS2({ "../../node_modules/.pnpm/retry@0.10.1/node_modules/retry/index.js"(exports2, module2) { module2.exports = require_retry(); } }); // ../../node_modules/.pnpm/async-retry@1.1.3/node_modules/async-retry/dist/index.js var require_dist5 = __commonJS2({ "../../node_modules/.pnpm/async-retry@1.1.3/node_modules/async-retry/dist/index.js"(exports2, module2) { "use strict"; var retrier = require_retry2(); module2.exports = function(fn2, opts) { opts = opts || {}; return new Promise(function(resolve14, reject) { var op = retrier.operation(opts); var bail = function bail2(err) { return reject(err || new Error("Aborted")); }; var onError = function onError2(err) { if (err.bail) { return bail(err); } if (!op.retry(err)) { reject(op.mainError()); } else if (opts.onRetry) { opts.onRetry(err); } }; op.attempt(function(num) { var val = void 0; try { val = fn2(bail, num); } catch (err) { return onError(err); } Promise.resolve(val).then(resolve14, onError); }); }); }; } }); // ../../node_modules/.pnpm/webidl-conversions@3.0.1/node_modules/webidl-conversions/lib/index.js var require_lib6 = __commonJS2({ "../../node_modules/.pnpm/webidl-conversions@3.0.1/node_modules/webidl-conversions/lib/index.js"(exports2, module2) { "use strict"; var conversions = {}; module2.exports = conversions; function sign(x) { return x < 0 ? -1 : 1; } function evenRound(x) { if (x % 1 === 0.5 && (x & 1) === 0) { return Math.floor(x); } else { return Math.round(x); } } function createNumberConversion(bitLength, typeOpts) { if (!typeOpts.unsigned) { --bitLength; } const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); const upperBound = Math.pow(2, bitLength) - 1; const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); return function(V, opts) { if (!opts) opts = {}; let x = +V; if (opts.enforceRange) { if (!Number.isFinite(x)) { throw new TypeError("Argument is not a finite number"); } x = sign(x) * Math.floor(Math.abs(x)); if (x < lowerBound || x > upperBound) { throw new TypeError("Argument is not in byte range"); } return x; } if (!isNaN(x) && opts.clamp) { x = evenRound(x); if (x < lowerBound) x = lowerBound; if (x > upperBound) x = upperBound; return x; } if (!Number.isFinite(x) || x === 0) { return 0; } x = sign(x) * Math.floor(Math.abs(x)); x = x % moduloVal; if (!typeOpts.unsigned && x >= moduloBound) { return x - moduloVal; } else if (typeOpts.unsigned) { if (x < 0) { x += moduloVal; } else if (x === -0) { return 0; } } return x; }; } conversions["void"] = function() { return void 0; }; conversions["boolean"] = function(val) { return !!val; }; conversions["byte"] = createNumberConversion(8, { unsigned: false }); conversions["octet"] = createNumberConversion(8, { unsigned: true }); conversions["short"] = createNumberConversion(16, { unsigned: false }); conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); conversions["long"] = createNumberConversion(32, { unsigned: false }); conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); conversions["double"] = function(V) { const x = +V; if (!Number.isFinite(x)) { throw new TypeError("Argument is not a finite floating-point value"); } return x; }; conversions["unrestricted double"] = function(V) { const x = +V; if (isNaN(x)) { throw new TypeError("Argument is NaN"); } return x; }; conversions["float"] = conversions["double"]; conversions["unrestricted float"] = conversions["unrestricted double"]; conversions["DOMString"] = function(V, opts) { if (!opts) opts = {}; if (opts.treatNullAsEmptyString && V === null) { return ""; } return String(V); }; conversions["ByteString"] = function(V, opts) { const x = String(V); let c = void 0; for (let i = 0; (c = x.codePointAt(i)) !== void 0; ++i) { if (c > 255) { throw new TypeError("Argument is not a valid bytestring"); } } return x; }; conversions["USVString"] = function(V) { const S = String(V); const n = S.length; const U = []; for (let i = 0; i < n; ++i) { const c = S.charCodeAt(i); if (c < 55296 || c > 57343) { U.push(String.fromCodePoint(c)); } else if (56320 <= c && c <= 57343) { U.push(String.fromCodePoint(65533)); } else { if (i === n - 1) { U.push(String.fromCodePoint(65533)); } else { const d = S.charCodeAt(i + 1); if (56320 <= d && d <= 57343) { const a = c & 1023; const b = d & 1023; U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); ++i; } else { U.push(String.fromCodePoint(65533)); } } } } return U.join(""); }; conversions["Date"] = function(V, opts) { if (!(V instanceof Date)) { throw new TypeError("Argument is not a Date object"); } if (isNaN(V)) { return void 0; } return V; }; conversions["RegExp"] = function(V, opts) { if (!(V instanceof RegExp)) { V = new RegExp(V); } return V; }; } }); // ../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/utils.js var require_utils7 = __commonJS2({ "../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/utils.js"(exports2, module2) { "use strict"; module2.exports.mixin = function mixin(target, source) { const keys = Object.getOwnPropertyNames(source); for (let i = 0; i < keys.length; ++i) { Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); } }; module2.exports.wrapperSymbol = Symbol("wrapper"); module2.exports.implSymbol = Symbol("impl"); module2.exports.wrapperForImpl = function(impl) { return impl[module2.exports.wrapperSymbol]; }; module2.exports.implForWrapper = function(wrapper) { return wrapper[module2.exports.implSymbol]; }; } }); // ../../node_modules/.pnpm/tr46@0.0.3/node_modules/tr46/lib/mappingTable.json var require_mappingTable = __commonJS2({ "../../node_modules/.pnpm/tr46@0.0.3/node_modules/tr46/lib/mappingTable.json"(exports2, module2) { module2.exports = [[[0, 44], "disallowed_STD3_valid"], [[45, 46], "valid"], [[47, 47], "disallowed_STD3_valid"], [[48, 57], "valid"], [[58, 64], "disallowed_STD3_valid"], [[65, 65], "mapped", [97]], [[66, 66], "mapped", [98]], [[67, 67], "mapped", [99]], [[68, 68], "mapped", [100]], [[69, 69], "mapped", [101]], [[70, 70], "mapped", [102]], [[71, 71], "mapped", [103]], [[72, 72], "mapped", [104]], [[73, 73], "mapped", [105]], [[74, 74], "mapped", [106]], [[75, 75], "mapped", [107]], [[76, 76], "mapped", [108]], [[77, 77], "mapped", [109]], [[78, 78], "mapped", [110]], [[79, 79], "mapped", [111]], [[80, 80], "mapped", [112]], [[81, 81], "mapped", [113]], [[82, 82], "mapped", [114]], [[83, 83], "mapped", [115]], [[84, 84], "mapped", [116]], [[85, 85], "mapped", [117]], [[86, 86], "mapped", [118]], [[87, 87], "mapped", [119]], [[88, 88], "mapped", [120]], [[89, 89], "mapped", [121]], [[90, 90], "mapped", [122]], [[91, 96], "disallowed_STD3_valid"], [[97, 122], "valid"], [[123, 127], "disallowed_STD3_valid"], [[128, 159], "disallowed"], [[160, 160], "disallowed_STD3_mapped", [32]], [[161, 167], "valid", [], "NV8"], [[168, 168], "disallowed_STD3_mapped", [32, 776]], [[169, 169], "valid", [], "NV8"], [[170, 170], "mapped", [97]], [[171, 172], "valid", [], "NV8"], [[173, 173], "ignored"], [[174, 174], "valid", [], "NV8"], [[175, 175], "disallowed_STD3_mapped", [32, 772]], [[176, 177], "valid", [], "NV8"], [[178, 178], "mapped", [50]], [[179, 179], "mapped", [51]], [[180, 180], "disallowed_STD3_mapped", [32, 769]], [[181, 181], "mapped", [956]], [[182, 182], "valid", [], "NV8"], [[183, 183], "valid"], [[184, 184], "disallowed_STD3_mapped", [32, 807]], [[185, 185], "mapped", [49]], [[186, 186], "mapped", [111]], [[187, 187], "valid", [], "NV8"], [[188, 188], "mapped", [49, 8260, 52]], [[189, 189], "mapped", [49, 8260, 50]], [[190, 190], "mapped", [51, 8260, 52]], [[191, 191], "valid", [], "NV8"], [[192, 192], "mapped", [224]], [[193, 193], "mapped", [225]], [[194, 194], "mapped", [226]], [[195, 195], "mapped", [227]], [[196, 196], "mapped", [228]], [[197, 197], "mapped", [229]], [[198, 198], "mapped", [230]], [[199, 199], "mapped", [231]], [[200, 200], "mapped", [232]], [[201, 201], "mapped", [233]], [[202, 202], "mapped", [234]], [[203, 203], "mapped", [235]], [[204, 204], "mapped", [236]], [[205, 205], "mapped", [237]], [[206, 206], "mapped", [238]], [[207, 207], "mapped", [239]], [[208, 208], "mapped", [240]], [[209, 209], "mapped", [241]], [[210, 210], "mapped", [242]], [[211, 211], "mapped", [243]], [[212, 212], "mapped", [244]], [[213, 213], "mapped", [245]], [[214, 214], "mapped", [246]], [[215, 215], "valid", [], "NV8"], [[216, 216], "mapped", [248]], [[217, 217], "mapped", [249]], [[218, 218], "mapped", [250]], [[219, 219], "mapped", [251]], [[220, 220], "mapped", [252]], [[221, 221], "mapped", [253]], [[222, 222], "mapped", [254]], [[223, 223], "deviation", [115, 115]], [[224, 246], "valid"], [[247, 247], "valid", [], "NV8"], [[248, 255], "valid"], [[256, 256], "mapped", [257]], [[257, 257], "valid"], [[258, 258], "mapped", [259]], [[259, 259], "valid"], [[260, 260], "mapped", [261]], [[261, 261], "valid"], [[262, 262], "mapped", [263]], [[263, 263], "valid"], [[264, 264], "mapped", [265]], [[265, 265], "valid"], [[266, 266], "mapped", [267]], [[267, 267], "valid"], [[268, 268], "mapped", [269]], [[269, 269], "valid"], [[270, 270], "mapped", [271]], [[271, 271], "valid"], [[272, 272], "mapped", [273]], [[273, 273], "valid"], [[274, 274], "mapped", [275]], [[275, 275], "valid"], [[276, 276], "mapped", [277]], [[277, 277], "valid"], [[278, 278], "mapped", [279]], [[279, 279], "valid"], [[280, 280], "mapped", [281]], [[281, 281], "valid"], [[282, 282], "mapped", [283]], [[283, 283], "valid"], [[284, 284], "mapped", [285]], [[285, 285], "valid"], [[286, 286], "mapped", [287]], [[287, 287], "valid"], [[288, 288], "mapped", [289]], [[289, 289], "valid"], [[290, 290], "mapped", [291]], [[291, 291], "valid"], [[292, 292], "mapped", [293]], [[293, 293], "valid"], [[294, 294], "mapped", [295]], [[295, 295], "valid"], [[296, 296], "mapped", [297]], [[297, 297], "valid"], [[298, 298], "mapped", [299]], [[299, 299], "valid"], [[300, 300], "mapped", [301]], [[301, 301], "valid"], [[302, 302], "mapped", [303]], [[303, 303], "valid"], [[304, 304], "mapped", [105, 775]], [[305, 305], "valid"], [[306, 307], "mapped", [105, 106]], [[308, 308], "mapped", [309]], [[309, 309], "valid"], [[310, 310], "mapped", [311]], [[311, 312], "valid"], [[313, 313], "mapped", [314]], [[314, 314], "valid"], [[315, 315], "mapped", [316]], [[316, 316], "valid"], [[317, 317], "mapped", [318]], [[318, 318], "valid"], [[319, 320], "mapped", [108, 183]], [[321, 321], "mapped", [322]], [[322, 322], "valid"], [[323, 323], "mapped", [324]], [[324, 324], "valid"], [[325, 325], "mapped", [326]], [[326, 326], "valid"], [[327, 327], "mapped", [328]], [[328, 328], "valid"], [[329, 329], "mapped", [700, 110]], [[330, 330], "mapped", [331]], [[331, 331], "valid"], [[332, 332], "mapped", [333]], [[333, 333], "valid"], [[334, 334], "mapped", [335]], [[335, 335], "valid"], [[336, 336], "mapped", [337]], [[337, 337], "valid"], [[338, 338], "mapped", [339]], [[339, 339], "valid"], [[340, 340], "mapped", [341]], [[341, 341], "valid"], [[342, 342], "mapped", [343]], [[343, 343], "valid"], [[344, 344], "mapped", [345]], [[345, 345], "valid"], [[346, 346], "mapped", [347]], [[347, 347], "valid"], [[348, 348], "mapped", [349]], [[349, 349], "valid"], [[350, 350], "mapped", [351]], [[351, 351], "valid"], [[352, 352], "mapped", [353]], [[353, 353], "valid"], [[354, 354], "mapped", [355]], [[355, 355], "valid"], [[356, 356], "mapped", [357]], [[357, 357], "valid"], [[358, 358], "mapped", [359]], [[359, 359], "valid"], [[360, 360], "mapped", [361]], [[361, 361], "valid"], [[362, 362], "mapped", [363]], [[363, 363], "valid"], [[364, 364], "mapped", [365]], [[365, 365], "valid"], [[366, 366], "mapped", [367]], [[367, 367], "valid"], [[368, 368], "mapped", [369]], [[369, 369], "valid"], [[370, 370], "mapped", [371]], [[371, 371], "valid"], [[372, 372], "mapped", [373]], [[373, 373], "valid"], [[374, 374], "mapped", [375]], [[375, 375], "valid"], [[376, 376], "mapped", [255]], [[377, 377], "mapped", [378]], [[378, 378], "valid"], [[379, 379], "mapped", [380]], [[380, 380], "valid"], [[381, 381], "mapped", [382]], [[382, 382], "valid"], [[383, 383], "mapped", [115]], [[384, 384], "valid"], [[385, 385], "mapped", [595]], [[386, 386], "mapped", [387]], [[387, 387], "valid"], [[388, 388], "mapped", [389]], [[389, 389], "valid"], [[390, 390], "mapped", [596]], [[391, 391], "mapped", [392]], [[392, 392], "valid"], [[393, 393], "mapped", [598]], [[394, 394], "mapped", [599]], [[395, 395], "mapped", [396]], [[396, 397], "valid"], [[398, 398], "mapped", [477]], [[399, 399], "mapped", [601]], [[400, 400], "mapped", [603]], [[401, 401], "mapped", [402]], [[402, 402], "valid"], [[403, 403], "mapped", [608]], [[404, 404], "mapped", [611]], [[405, 405], "valid"], [[406, 406], "mapped", [617]], [[407, 407], "mapped", [616]], [[408, 408], "mapped", [409]], [[409, 411], "valid"], [[412, 412], "mapped", [623]], [[413, 413], "mapped", [626]], [[414, 414], "valid"], [[415, 415], "mapped", [629]], [[416, 416], "mapped", [417]], [[417, 417], "valid"], [[418, 418], "mapped", [419]], [[419, 419], "valid"], [[420, 420], "mapped", [421]], [[421, 421], "valid"], [[422, 422], "mapped", [640]], [[423, 423], "mapped", [424]], [[424, 424], "valid"], [[425, 425], "mapped", [643]], [[426, 427], "valid"], [[428, 428], "mapped", [429]], [[429, 429], "valid"], [[430, 430], "mapped", [648]], [[431, 431], "mapped", [432]], [[432, 432], "valid"], [[433, 433], "mapped", [650]], [[434, 434], "mapped", [651]], [[435, 435], "mapped", [436]], [[436, 436], "valid"], [[437, 437], "mapped", [438]], [[438, 438], "valid"], [[439, 439], "mapped", [658]], [[440, 440], "mapped", [441]], [[441, 443], "valid"], [[444, 444], "mapped", [445]], [[445, 451], "valid"], [[452, 454], "mapped", [100, 382]], [[455, 457], "mapped", [108, 106]], [[458, 460], "mapped", [110, 106]], [[461, 461], "mapped", [462]], [[462, 462], "valid"], [[463, 463], "mapped", [464]], [[464, 464], "valid"], [[465, 465], "mapped", [466]], [[466, 466], "valid"], [[467, 467], "mapped", [468]], [[468, 468], "valid"], [[469, 469], "mapped", [470]], [[470, 470], "valid"], [[471, 471], "mapped", [472]], [[472, 472], "valid"], [[473, 473], "mapped", [474]], [[474, 474], "valid"], [[475, 475], "mapped", [476]], [[476, 477], "valid"], [[478, 478], "mapped", [479]], [[479, 479], "valid"], [[480, 480], "mapped", [481]], [[481, 481], "valid"], [[482, 482], "mapped", [483]], [[483, 483], "valid"], [[484, 484], "mapped", [485]], [[485, 485], "valid"], [[486, 486], "mapped", [487]], [[487, 487], "valid"], [[488, 488], "mapped", [489]], [[489, 489], "valid"], [[490, 490], "mapped", [491]], [[491, 491], "valid"], [[492, 492], "mapped", [493]], [[493, 493], "valid"], [[494, 494], "mapped", [495]], [[495, 496], "valid"], [[497, 499], "mapped", [100, 122]], [[500, 500], "mapped", [501]], [[501, 501], "valid"], [[502, 502], "mapped", [405]], [[503, 503], "mapped", [447]], [[504, 504], "mapped", [505]], [[505, 505], "valid"], [[506, 506], "mapped", [507]], [[507, 507], "valid"], [[508, 508], "mapped", [509]], [[509, 509], "valid"], [[510, 510], "mapped", [511]], [[511, 511], "valid"], [[512, 512], "mapped", [513]], [[513, 513], "valid"], [[514, 514], "mapped", [515]], [[515, 515], "valid"], [[516, 516], "mapped", [517]], [[517, 517], "valid"], [[518, 518], "mapped", [519]], [[519, 519], "valid"], [[520, 520], "mapped", [521]], [[521, 521], "valid"], [[522, 522], "mapped", [523]], [[523, 523], "valid"], [[524, 524], "mapped", [525]], [[525, 525], "valid"], [[526, 526], "mapped", [527]], [[527, 527], "valid"], [[528, 528], "mapped", [529]], [[529, 529], "valid"], [[530, 530], "mapped", [531]], [[531, 531], "valid"], [[532, 532], "mapped", [533]], [[533, 533], "valid"], [[534, 534], "mapped", [535]], [[535, 535], "valid"], [[536, 536], "mapped", [537]], [[537, 537], "valid"], [[538, 538], "mapped", [539]], [[539, 539], "valid"], [[540, 540], "mapped", [541]], [[541, 541], "valid"], [[542, 542], "mapped", [543]], [[543, 543], "valid"], [[544, 544], "mapped", [414]], [[545, 545], "valid"], [[546, 546], "mapped", [547]], [[547, 547], "valid"], [[548, 548], "mapped", [549]], [[549, 549], "valid"], [[550, 550], "mapped", [551]], [[551, 551], "valid"], [[552, 552], "mapped", [553]], [[553, 553], "valid"], [[554, 554], "mapped", [555]], [[555, 555], "valid"], [[556, 556], "mapped", [557]], [[557, 557], "valid"], [[558, 558], "mapped", [559]], [[559, 559], "valid"], [[560, 560], "mapped", [561]], [[561, 561], "valid"], [[562, 562], "mapped", [563]], [[563, 563], "valid"], [[564, 566], "valid"], [[567, 569], "valid"], [[570, 570], "mapped", [11365]], [[571, 571], "mapped", [572]], [[572, 572], "valid"], [[573, 573], "mapped", [410]], [[574, 574], "mapped", [11366]], [[575, 576], "valid"], [[577, 577], "mapped", [578]], [[578, 578], "valid"], [[579, 579], "mapped", [384]], [[580, 580], "mapped", [649]], [[581, 581], "mapped", [652]], [[582, 582], "mapped", [583]], [[583, 583], "valid"], [[584, 584], "mapped", [585]], [[585, 585], "valid"], [[586, 586], "mapped", [587]], [[587, 587], "valid"], [[588, 588], "mapped", [589]], [[589, 589], "valid"], [[590, 590], "mapped", [591]], [[591, 591], "valid"], [[592, 680], "valid"], [[681, 685], "valid"], [[686, 687], "valid"], [[688, 688], "mapped", [104]], [[689, 689], "mapped", [614]], [[690, 690], "mapped", [106]], [[691, 691], "mapped", [114]], [[692, 692], "mapped", [633]], [[693, 693], "mapped", [635]], [[694, 694], "mapped", [641]], [[695, 695], "mapped", [119]], [[696, 696], "mapped", [121]], [[697, 705], "valid"], [[706, 709], "valid", [], "NV8"], [[710, 721], "valid"], [[722, 727], "valid", [], "NV8"], [[728, 728], "disallowed_STD3_mapped", [32, 774]], [[729, 729], "disallowed_STD3_mapped", [32, 775]], [[730, 730], "disallowed_STD3_mapped", [32, 778]], [[731, 731], "disallowed_STD3_mapped", [32, 808]], [[732, 732], "disallowed_STD3_mapped", [32, 771]], [[733, 733], "disallowed_STD3_mapped", [32, 779]], [[734, 734], "valid", [], "NV8"], [[735, 735], "valid", [], "NV8"], [[736, 736], "mapped", [611]], [[737, 737], "mapped", [108]], [[738, 738], "mapped", [115]], [[739, 739], "mapped", [120]], [[740, 740], "mapped", [661]], [[741, 745], "valid", [], "NV8"], [[746, 747], "valid", [], "NV8"], [[748, 748], "valid"], [[749, 749], "valid", [], "NV8"], [[750, 750], "valid"], [[751, 767], "valid", [], "NV8"], [[768, 831], "valid"], [[832, 832], "mapped", [768]], [[833, 833], "mapped", [769]], [[834, 834], "valid"], [[835, 835], "mapped", [787]], [[836, 836], "mapped", [776, 769]], [[837, 837], "mapped", [953]], [[838, 846], "valid"], [[847, 847], "ignored"], [[848, 855], "valid"], [[856, 860], "valid"], [[861, 863], "valid"], [[864, 865], "valid"], [[866, 866], "valid"], [[867, 879], "valid"], [[880, 880], "mapped", [881]], [[881, 881], "valid"], [[882, 882], "mapped", [883]], [[883, 883], "valid"], [[884, 884], "mapped", [697]], [[885, 885], "valid"], [[886, 886], "mapped", [887]], [[887, 887], "valid"], [[888, 889], "disallowed"], [[890, 890], "disallowed_STD3_mapped", [32, 953]], [[891, 893], "valid"], [[894, 894], "disallowed_STD3_mapped", [59]], [[895, 895], "mapped", [1011]], [[896, 899], "disallowed"], [[900, 900], "disallowed_STD3_mapped", [32, 769]], [[901, 901], "disallowed_STD3_mapped", [32, 776, 769]], [[902, 902], "mapped", [940]], [[903, 903], "mapped", [183]], [[904, 904], "mapped", [941]], [[905, 905], "mapped", [942]], [[906, 906], "mapped", [943]], [[907, 907], "disallowed"], [[908, 908], "mapped", [972]], [[909, 909], "disallowed"], [[910, 910], "mapped", [973]], [[911, 911], "mapped", [974]], [[912, 912], "valid"], [[913, 913], "mapped", [945]], [[914, 914], "mapped", [946]], [[915, 915], "mapped", [947]], [[916, 916], "mapped", [948]], [[917, 917], "mapped", [949]], [[918, 918], "mapped", [950]], [[919, 919], "mapped", [951]], [[920, 920], "mapped", [952]], [[921, 921], "mapped", [953]], [[922, 922], "mapped", [954]], [[923, 923], "mapped", [955]], [[924, 924], "mapped", [956]], [[925, 925], "mapped", [957]], [[926, 926], "mapped", [958]], [[927, 927], "mapped", [959]], [[928, 928], "mapped", [960]], [[929, 929], "mapped", [961]], [[930, 930], "disallowed"], [[931, 931], "mapped", [963]], [[932, 932], "mapped", [964]], [[933, 933], "mapped", [965]], [[934, 934], "mapped", [966]], [[935, 935], "mapped", [967]], [[936, 936], "mapped", [968]], [[937, 937], "mapped", [969]], [[938, 938], "mapped", [970]], [[939, 939], "mapped", [971]], [[940, 961], "valid"], [[962, 962], "deviation", [963]], [[963, 974], "valid"], [[975, 975], "mapped", [983]], [[976, 976], "mapped", [946]], [[977, 977], "mapped", [952]], [[978, 978], "mapped", [965]], [[979, 979], "mapped", [973]], [[980, 980], "mapped", [971]], [[981, 981], "mapped", [966]], [[982, 982], "mapped", [960]], [[983, 983], "valid"], [[984, 984], "mapped", [985]], [[985, 985], "valid"], [[986, 986], "mapped", [987]], [[987, 987], "valid"], [[988, 988], "mapped", [989]], [[989, 989], "valid"], [[990, 990], "mapped", [991]], [[991, 991], "valid"], [[992, 992], "mapped", [993]], [[993, 993], "valid"], [[994, 994], "mapped", [995]], [[995, 995], "valid"], [[996, 996], "mapped", [997]], [[997, 997], "valid"], [[998, 998], "mapped", [999]], [[999, 999], "valid"], [[1e3, 1e3], "mapped", [1001]], [[1001, 1001], "valid"], [[1002, 1002], "mapped", [1003]], [[1003, 1003], "valid"], [[1004, 1004], "mapped", [1005]], [[1005, 1005], "valid"], [[1006, 1006], "mapped", [1007]], [[1007, 1007], "valid"], [[1008, 1008], "mapped", [954]], [[1009, 1009], "mapped", [961]], [[1010, 1010], "mapped", [963]], [[1011, 1011], "valid"], [[1012, 1012], "mapped", [952]], [[1013, 1013], "mapped", [949]], [[1014, 1014], "valid", [], "NV8"], [[1015, 1015], "mapped", [1016]], [[1016, 1016], "valid"], [[1017, 1017], "mapped", [963]], [[1018, 1018], "mapped", [1019]], [[1019, 1019], "valid"], [[1020, 1020], "valid"], [[1021, 1021], "mapped", [891]], [[1022, 1022], "mapped", [892]], [[1023, 1023], "mapped", [893]], [[1024, 1024], "mapped", [1104]], [[1025, 1025], "mapped", [1105]], [[1026, 1026], "mapped", [1106]], [[1027, 1027], "mapped", [1107]], [[1028, 1028], "mapped", [1108]], [[1029, 1029], "mapped", [1109]], [[1030, 1030], "mapped", [1110]], [[1031, 1031], "mapped", [1111]], [[1032, 1032], "mapped", [1112]], [[1033, 1033], "mapped", [1113]], [[1034, 1034], "mapped", [1114]], [[1035, 1035], "mapped", [1115]], [[1036, 1036], "mapped", [1116]], [[1037, 1037], "mapped", [1117]], [[1038, 1038], "mapped", [1118]], [[1039, 1039], "mapped", [1119]], [[1040, 1040], "mapped", [1072]], [[1041, 1041], "mapped", [1073]], [[1042, 1042], "mapped", [1074]], [[1043, 1043], "mapped", [1075]], [[1044, 1044], "mapped", [1076]], [[1045, 1045], "mapped", [1077]], [[1046, 1046], "mapped", [1078]], [[1047, 1047], "mapped", [1079]], [[1048, 1048], "mapped", [1080]], [[1049, 1049], "mapped", [1081]], [[1050, 1050], "mapped", [1082]], [[1051, 1051], "mapped", [1083]], [[1052, 1052], "mapped", [1084]], [[1053, 1053], "mapped", [1085]], [[1054, 1054], "mapped", [1086]], [[1055, 1055], "mapped", [1087]], [[1056, 1056], "mapped", [1088]], [[1057, 1057], "mapped", [1089]], [[1058, 1058], "mapped", [1090]], [[1059, 1059], "mapped", [1091]], [[1060, 1060], "mapped", [1092]], [[1061, 1061], "mapped", [1093]], [[1062, 1062], "mapped", [1094]], [[1063, 1063], "mapped", [1095]], [[1064, 1064], "mapped", [1096]], [[1065, 1065], "mapped", [1097]], [[1066, 1066], "mapped", [1098]], [[1067, 1067], "mapped", [1099]], [[1068, 1068], "mapped", [1100]], [[1069, 1069], "mapped", [1101]], [[1070, 1070], "mapped", [1102]], [[1071, 1071], "mapped", [1103]], [[1072, 1103], "valid"], [[1104, 1104], "valid"], [[1105, 1116], "valid"], [[1117, 1117], "valid"], [[1118, 1119], "valid"], [[1120, 1120], "mapped", [1121]], [[1121, 1121], "valid"], [[1122, 1122], "mapped", [1123]], [[1123, 1123], "valid"], [[1124, 1124], "mapped", [1125]], [[1125, 1125], "valid"], [[1126, 1126], "mapped", [1127]], [[1127, 1127], "valid"], [[1128, 1128], "mapped", [1129]], [[1129, 1129], "valid"], [[1130, 1130], "mapped", [1131]], [[1131, 1131], "valid"], [[1132, 1132], "mapped", [1133]], [[1133, 1133], "valid"], [[1134, 1134], "mapped", [1135]], [[1135, 1135], "valid"], [[1136, 1136], "mapped", [1137]], [[1137, 1137], "valid"], [[1138, 1138], "mapped", [1139]], [[1139, 1139], "valid"], [[1140, 1140], "mapped", [1141]], [[1141, 1141], "valid"], [[1142, 1142], "mapped", [1143]], [[1143, 1143], "valid"], [[1144, 1144], "mapped", [1145]], [[1145, 1145], "valid"], [[1146, 1146], "mapped", [1147]], [[1147, 1147], "valid"], [[1148, 1148], "mapped", [1149]], [[1149, 1149], "valid"], [[1150, 1150], "mapped", [1151]], [[1151, 1151], "valid"], [[1152, 1152], "mapped", [1153]], [[1153, 1153], "valid"], [[1154, 1154], "valid", [], "NV8"], [[1155, 1158], "valid"], [[1159, 1159], "valid"], [[1160, 1161], "valid", [], "NV8"], [[1162, 1162], "mapped", [1163]], [[1163, 1163], "valid"], [[1164, 1164], "mapped", [1165]], [[1165, 1165], "valid"], [[1166, 1166], "mapped", [1167]], [[1167, 1167], "valid"], [[1168, 1168], "mapped", [1169]], [[1169, 1169], "valid"], [[1170, 1170], "mapped", [1171]], [[1171, 1171], "valid"], [[1172, 1172], "mapped", [1173]], [[1173, 1173], "valid"], [[1174, 1174], "mapped", [1175]], [[1175, 1175], "valid"], [[1176, 1176], "mapped", [1177]], [[1177, 1177], "valid"], [[1178, 1178], "mapped", [1179]], [[1179, 1179], "valid"], [[1180, 1180], "mapped", [1181]], [[1181, 1181], "valid"], [[1182, 1182], "mapped", [1183]], [[1183, 1183], "valid"], [[1184, 1184], "mapped", [1185]], [[1185, 1185], "valid"], [[1186, 1186], "mapped", [1187]], [[1187, 1187], "valid"], [[1188, 1188], "mapped", [1189]], [[1189, 1189], "valid"], [[1190, 1190], "mapped", [1191]], [[1191, 1191], "valid"], [[1192, 1192], "mapped", [1193]], [[1193, 1193], "valid"], [[1194, 1194], "mapped", [1195]], [[1195, 1195], "valid"], [[1196, 1196], "mapped", [1197]], [[1197, 1197], "valid"], [[1198, 1198], "mapped", [1199]], [[1199, 1199], "valid"], [[1200, 1200], "mapped", [1201]], [[1201, 1201], "valid"], [[1202, 1202], "mapped", [1203]], [[1203, 1203], "valid"], [[1204, 1204], "mapped", [1205]], [[1205, 1205], "valid"], [[1206, 1206], "mapped", [1207]], [[1207, 1207], "valid"], [[1208, 1208], "mapped", [1209]], [[1209, 1209], "valid"], [[1210, 1210], "mapped", [1211]], [[1211, 1211], "valid"], [[1212, 1212], "mapped", [1213]], [[1213, 1213], "valid"], [[1214, 1214], "mapped", [1215]], [[1215, 1215], "valid"], [[1216, 1216], "disallowed"], [[1217, 1217], "mapped", [1218]], [[1218, 1218], "valid"], [[1219, 1219], "mapped", [1220]], [[1220, 1220], "valid"], [[1221, 1221], "mapped", [1222]], [[1222, 1222], "valid"], [[1223, 1223], "mapped", [1224]], [[1224, 1224], "valid"], [[1225, 1225], "mapped", [1226]], [[1226, 1226], "valid"], [[1227, 1227], "mapped", [1228]], [[1228, 1228], "valid"], [[1229, 1229], "mapped", [1230]], [[1230, 1230], "valid"], [[1231, 1231], "valid"], [[1232, 1232], "mapped", [1233]], [[1233, 1233], "valid"], [[1234, 1234], "mapped", [1235]], [[1235, 1235], "valid"], [[1236, 1236], "mapped", [1237]], [[1237, 1237], "valid"], [[1238, 1238], "mapped", [1239]], [[1239, 1239], "valid"], [[1240, 1240], "mapped", [1241]], [[1241, 1241], "valid"], [[1242, 1242], "mapped", [1243]], [[1243, 1243], "valid"], [[1244, 1244], "mapped", [1245]], [[1245, 1245], "valid"], [[1246, 1246], "mapped", [1247]], [[1247, 1247], "valid"], [[1248, 1248], "mapped", [1249]], [[1249, 1249], "valid"], [[1250, 1250], "mapped", [1251]], [[1251, 1251], "valid"], [[1252, 1252], "mapped", [1253]], [[1253, 1253], "valid"], [[1254, 1254], "mapped", [1255]], [[1255, 1255], "valid"], [[1256, 1256], "mapped", [1257]], [[1257, 1257], "valid"], [[1258, 1258], "mapped", [1259]], [[1259, 1259], "valid"], [[1260, 1260], "mapped", [1261]], [[1261, 1261], "valid"], [[1262, 1262], "mapped", [1263]], [[1263, 1263], "valid"], [[1264, 1264], "mapped", [1265]], [[1265, 1265], "valid"], [[1266, 1266], "mapped", [1267]], [[1267, 1267], "valid"], [[1268, 1268], "mapped", [1269]], [[1269, 1269], "valid"], [[1270, 1270], "mapped", [1271]], [[1271, 1271], "valid"], [[1272, 1272], "mapped", [1273]], [[1273, 1273], "valid"], [[1274, 1274], "mapped", [1275]], [[1275, 1275], "valid"], [[1276, 1276], "mapped", [1277]], [[1277, 1277], "valid"], [[1278, 1278], "mapped", [1279]], [[1279, 1279], "valid"], [[1280, 1280], "mapped", [1281]], [[1281, 1281], "valid"], [[1282, 1282], "mapped", [1283]], [[1283, 1283], "valid"], [[1284, 1284], "mapped", [1285]], [[1285, 1285], "valid"], [[1286, 1286], "mapped", [1287]], [[1287, 1287], "valid"], [[1288, 1288], "mapped", [1289]], [[1289, 1289], "valid"], [[1290, 1290], "mapped", [1291]], [[1291, 1291], "valid"], [[1292, 1292], "mapped", [1293]], [[1293, 1293], "valid"], [[1294, 1294], "mapped", [1295]], [[1295, 1295], "valid"], [[1296, 1296], "mapped", [1297]], [[1297, 1297], "valid"], [[1298, 1298], "mapped", [1299]], [[1299, 1299], "valid"], [[1300, 1300], "mapped", [1301]], [[1301, 1301], "valid"], [[1302, 1302], "mapped", [1303]], [[1303, 1303], "valid"], [[1304, 1304], "mapped", [1305]], [[1305, 1305], "valid"], [[1306, 1306], "mapped", [1307]], [[1307, 1307], "valid"], [[1308, 1308], "mapped", [1309]], [[1309, 1309], "valid"], [[1310, 1310], "mapped", [1311]], [[1311, 1311], "valid"], [[1312, 1312], "mapped", [1313]], [[1313, 1313], "valid"], [[1314, 1314], "mapped", [1315]], [[1315, 1315], "valid"], [[1316, 1316], "mapped", [1317]], [[1317, 1317], "valid"], [[1318, 1318], "mapped", [1319]], [[1319, 1319], "valid"], [[1320, 1320], "mapped", [1321]], [[1321, 1321], "valid"], [[1322, 1322], "mapped", [1323]], [[1323, 1323], "valid"], [[1324, 1324], "mapped", [1325]], [[1325, 1325], "valid"], [[1326, 1326], "mapped", [1327]], [[1327, 1327], "valid"], [[1328, 1328], "disallowed"], [[1329, 1329], "mapped", [1377]], [[1330, 1330], "mapped", [1378]], [[1331, 1331], "mapped", [1379]], [[1332, 1332], "mapped", [1380]], [[1333, 1333], "mapped", [1381]], [[1334, 1334], "mapped", [1382]], [[1335, 1335], "mapped", [1383]], [[1336, 1336], "mapped", [1384]], [[1337, 1337], "mapped", [1385]], [[1338, 1338], "mapped", [1386]], [[1339, 1339], "mapped", [1387]], [[1340, 1340], "mapped", [1388]], [[1341, 1341], "mapped", [1389]], [[1342, 1342], "mapped", [1390]], [[1343, 1343], "mapped", [1391]], [[1344, 1344], "mapped", [1392]], [[1345, 1345], "mapped", [1393]], [[1346, 1346], "mapped", [1394]], [[1347, 1347], "mapped", [1395]], [[1348, 1348], "mapped", [1396]], [[1349, 1349], "mapped", [1397]], [[1350, 1350], "mapped", [1398]], [[1351, 1351], "mapped", [1399]], [[1352, 1352], "mapped", [1400]], [[1353, 1353], "mapped", [1401]], [[1354, 1354], "mapped", [1402]], [[1355, 1355], "mapped", [1403]], [[1356, 1356], "mapped", [1404]], [[1357, 1357], "mapped", [1405]], [[1358, 1358], "mapped", [1406]], [[1359, 1359], "mapped", [1407]], [[1360, 1360], "mapped", [1408]], [[1361, 1361], "mapped", [1409]], [[1362, 1362], "mapped", [1410]], [[1363, 1363], "mapped", [1411]], [[1364, 1364], "mapped", [1412]], [[1365, 1365], "mapped", [1413]], [[1366, 1366], "mapped", [1414]], [[1367, 1368], "disallowed"], [[1369, 1369], "valid"], [[1370, 1375], "valid", [], "NV8"], [[1376, 1376], "disallowed"], [[1377, 1414], "valid"], [[1415, 1415], "mapped", [1381, 1410]], [[1416, 1416], "disallowed"], [[1417, 1417], "valid", [], "NV8"], [[1418, 1418], "valid", [], "NV8"], [[1419, 1420], "disallowed"], [[1421, 1422], "valid", [], "NV8"], [[1423, 1423], "valid", [], "NV8"], [[1424, 1424], "disallowed"], [[1425, 1441], "valid"], [[1442, 1442], "valid"], [[1443, 1455], "valid"], [[1456, 1465], "valid"], [[1466, 1466], "valid"], [[1467, 1469], "valid"], [[1470, 1470], "valid", [], "NV8"], [[1471, 1471], "valid"], [[1472, 1472], "valid", [], "NV8"], [[1473, 1474], "valid"], [[1475, 1475], "valid", [], "NV8"], [[1476, 1476], "valid"], [[1477, 1477], "valid"], [[1478, 1478], "valid", [], "NV8"], [[1479, 1479], "valid"], [[1480, 1487], "disallowed"], [[1488, 1514], "valid"], [[1515, 1519], "disallowed"], [[1520, 1524], "valid"], [[1525, 1535], "disallowed"], [[1536, 1539], "disallowed"], [[1540, 1540], "disallowed"], [[1541, 1541], "disallowed"], [[1542, 1546], "valid", [], "NV8"], [[1547, 1547], "valid", [], "NV8"], [[1548, 1548], "valid", [], "NV8"], [[1549, 1551], "valid", [], "NV8"], [[1552, 1557], "valid"], [[1558, 1562], "valid"], [[1563, 1563], "valid", [], "NV8"], [[1564, 1564], "disallowed"], [[1565, 1565], "disallowed"], [[1566, 1566], "valid", [], "NV8"], [[1567, 1567], "valid", [], "NV8"], [[1568, 1568], "valid"], [[1569, 1594], "valid"], [[1595, 1599], "valid"], [[1600, 1600], "valid", [], "NV8"], [[1601, 1618], "valid"], [[1619, 1621], "valid"], [[1622, 1624], "valid"], [[1625, 1630], "valid"], [[1631, 1631], "valid"], [[1632, 1641], "valid"], [[1642, 1645], "valid", [], "NV8"], [[1646, 1647], "valid"], [[1648, 1652], "valid"], [[1653, 1653], "mapped", [1575, 1652]], [[1654, 1654], "mapped", [1608, 1652]], [[1655, 1655], "mapped", [1735, 1652]], [[1656, 1656], "mapped", [1610, 1652]], [[1657, 1719], "valid"], [[1720, 1721], "valid"], [[1722, 1726], "valid"], [[1727, 1727], "valid"], [[1728, 1742], "valid"], [[1743, 1743], "valid"], [[1744, 1747], "valid"], [[1748, 1748], "valid", [], "NV8"], [[1749, 1756], "valid"], [[1757, 1757], "disallowed"], [[1758, 1758], "valid", [], "NV8"], [[1759, 1768], "valid"], [[1769, 1769], "valid", [], "NV8"], [[1770, 1773], "valid"], [[1774, 1775], "valid"], [[1776, 1785], "valid"], [[1786, 1790], "valid"], [[1791, 1791], "valid"], [[1792, 1805], "valid", [], "NV8"], [[1806, 1806], "disallowed"], [[1807, 1807], "disallowed"], [[1808, 1836], "valid"], [[1837, 1839], "valid"], [[1840, 1866], "valid"], [[1867, 1868], "disallowed"], [[1869, 1871], "valid"], [[1872, 1901], "valid"], [[1902, 1919], "valid"], [[1920, 1968], "valid"], [[1969, 1969], "valid"], [[1970, 1983], "disallowed"], [[1984, 2037], "valid"], [[2038, 2042], "valid", [], "NV8"], [[2043, 2047], "disallowed"], [[2048, 2093], "valid"], [[2094, 2095], "disallowed"], [[2096, 2110], "valid", [], "NV8"], [[2111, 2111], "disallowed"], [[2112, 2139], "valid"], [[2140, 2141], "disallowed"], [[2142, 2142], "valid", [], "NV8"], [[2143, 2207], "disallowed"], [[2208, 2208], "valid"], [[2209, 2209], "valid"], [[2210, 2220], "valid"], [[2221, 2226], "valid"], [[2227, 2228], "valid"], [[2229, 2274], "disallowed"], [[2275, 2275], "valid"], [[2276, 2302], "valid"], [[2303, 2303], "valid"], [[2304, 2304], "valid"], [[2305, 2307], "valid"], [[2308, 2308], "valid"], [[2309, 2361], "valid"], [[2362, 2363], "valid"], [[2364, 2381], "valid"], [[2382, 2382], "valid"], [[2383, 2383], "valid"], [[2384, 2388], "valid"], [[2389, 2389], "valid"], [[2390, 2391], "valid"], [[2392, 2392], "mapped", [2325, 2364]], [[2393, 2393], "mapped", [2326, 2364]], [[2394, 2394], "mapped", [2327, 2364]], [[2395, 2395], "mapped", [2332, 2364]], [[2396, 2396], "mapped", [2337, 2364]], [[2397, 2397], "mapped", [2338, 2364]], [[2398, 2398], "mapped", [2347, 2364]], [[2399, 2399], "mapped", [2351, 2364]], [[2400, 2403], "valid"], [[2404, 2405], "valid", [], "NV8"], [[2406, 2415], "valid"], [[2416, 2416], "valid", [], "NV8"], [[2417, 2418], "valid"], [[2419, 2423], "valid"], [[2424, 2424], "valid"], [[2425, 2426], "valid"], [[2427, 2428], "valid"], [[2429, 2429], "valid"], [[2430, 2431], "valid"], [[2432, 2432], "valid"], [[2433, 2435], "valid"], [[2436, 2436], "disallowed"], [[2437, 2444], "valid"], [[2445, 2446], "disallowed"], [[2447, 2448], "valid"], [[2449, 2450], "disallowed"], [[2451, 2472], "valid"], [[2473, 2473], "disallowed"], [[2474, 2480], "valid"], [[2481, 2481], "disallowed"], [[2482, 2482], "valid"], [[2483, 2485], "disallowed"], [[2486, 2489], "valid"], [[2490, 2491], "disallowed"], [[2492, 2492], "valid"], [[2493, 2493], "valid"], [[2494, 2500], "valid"], [[2501, 2502], "disallowed"], [[2503, 2504], "valid"], [[2505, 2506], "disallowed"], [[2507, 2509], "valid"], [[2510, 2510], "valid"], [[2511, 2518], "disallowed"], [[2519, 2519], "valid"], [[2520, 2523], "disallowed"], [[2524, 2524], "mapped", [2465, 2492]], [[2525, 2525], "mapped", [2466, 2492]], [[2526, 2526], "disallowed"], [[2527, 2527], "mapped", [2479, 2492]], [[2528, 2531], "valid"], [[2532, 2533], "disallowed"], [[2534, 2545], "valid"], [[2546, 2554], "valid", [], "NV8"], [[2555, 2555], "valid", [], "NV8"], [[2556, 2560], "disallowed"], [[2561, 2561], "valid"], [[2562, 2562], "valid"], [[2563, 2563], "valid"], [[2564, 2564], "disallowed"], [[2565, 2570], "valid"], [[2571, 2574], "disallowed"], [[2575, 2576], "valid"], [[2577, 2578], "disallowed"], [[2579, 2600], "valid"], [[2601, 2601], "disallowed"], [[2602, 2608], "valid"], [[2609, 2609], "disallowed"], [[2610, 2610], "valid"], [[2611, 2611], "mapped", [2610, 2620]], [[2612, 2612], "disallowed"], [[2613, 2613], "valid"], [[2614, 2614], "mapped", [2616, 2620]], [[2615, 2615], "disallowed"], [[2616, 2617], "valid"], [[2618, 2619], "disallowed"], [[2620, 2620], "valid"], [[2621, 2621], "disallowed"], [[2622, 2626], "valid"], [[2627, 2630], "disallowed"], [[2631, 2632], "valid"], [[2633, 2634], "disallowed"], [[2635, 2637], "valid"], [[2638, 2640], "disallowed"], [[2641, 2641], "valid"], [[2642, 2648], "disallowed"], [[2649, 2649], "mapped", [2582, 2620]], [[2650, 2650], "mapped", [2583, 2620]], [[2651, 2651], "mapped", [2588, 2620]], [[2652, 2652], "valid"], [[2653, 2653], "disallowed"], [[2654, 2654], "mapped", [2603, 2620]], [[2655, 2661], "disallowed"], [[2662, 2676], "valid"], [[2677, 2677], "valid"], [[2678, 2688], "disallowed"], [[2689, 2691], "valid"], [[2692, 2692], "disallowed"], [[2693, 2699], "valid"], [[2700, 2700], "valid"], [[2701, 2701], "valid"], [[2702, 2702], "disallowed"], [[2703, 2705], "valid"], [[2706, 2706], "disallowed"], [[2707, 2728], "valid"], [[2729, 2729], "disallowed"], [[2730, 2736], "valid"], [[2737, 2737], "disallowed"], [[2738, 2739], "valid"], [[2740, 2740], "disallowed"], [[2741, 2745], "valid"], [[2746, 2747], "disallowed"], [[2748, 2757], "valid"], [[2758, 2758], "disallowed"], [[2759, 2761], "valid"], [[2762, 2762], "disallowed"], [[2763, 2765], "valid"], [[2766, 2767], "disallowed"], [[2768, 2768], "valid"], [[2769, 2783], "disallowed"], [[2784, 2784], "valid"], [[2785, 2787], "valid"], [[2788, 2789], "disallowed"], [[2790, 2799], "valid"], [[2800, 2800], "valid", [], "NV8"], [[2801, 2801], "valid", [], "NV8"], [[2802, 2808], "disallowed"], [[2809, 2809], "valid"], [[2810, 2816], "disallowed"], [[2817, 2819], "valid"], [[2820, 2820], "disallowed"], [[2821, 2828], "valid"], [[2829, 2830], "disallowed"], [[2831, 2832], "valid"], [[2833, 2834], "disallowed"], [[2835, 2856], "valid"], [[2857, 2857], "disallowed"], [[2858, 2864], "valid"], [[2865, 2865], "disallowed"], [[2866, 2867], "valid"], [[2868, 2868], "disallowed"], [[2869, 2869], "valid"], [[2870, 2873], "valid"], [[2874, 2875], "disallowed"], [[2876, 2883], "valid"], [[2884, 2884], "valid"], [[2885, 2886], "disallowed"], [[2887, 2888], "valid"], [[2889, 2890], "disallowed"], [[2891, 2893], "valid"], [[2894, 2901], "disallowed"], [[2902, 2903], "valid"], [[2904, 2907], "disallowed"], [[2908, 2908], "mapped", [2849, 2876]], [[2909, 2909], "mapped", [2850, 2876]], [[2910, 2910], "disallowed"], [[2911, 2913], "valid"], [[2914, 2915], "valid"], [[2916, 2917], "disallowed"], [[2918, 2927], "valid"], [[2928, 2928], "valid", [], "NV8"], [[2929, 2929], "valid"], [[2930, 2935], "valid", [], "NV8"], [[2936, 2945], "disallowed"], [[2946, 2947], "valid"], [[2948, 2948], "disallowed"], [[2949, 2954], "valid"], [[2955, 2957], "disallowed"], [[2958, 2960], "valid"], [[2961, 2961], "disallowed"], [[2962, 2965], "valid"], [[2966, 2968], "disallowed"], [[2969, 2970], "valid"], [[2971, 2971], "disallowed"], [[2972, 2972], "valid"], [[2973, 2973], "disallowed"], [[2974, 2975], "valid"], [[2976, 2978], "disallowed"], [[2979, 2980], "valid"], [[2981, 2983], "disallowed"], [[2984, 2986], "valid"], [[2987, 2989], "disallowed"], [[2990, 2997], "valid"], [[2998, 2998], "valid"], [[2999, 3001], "valid"], [[3002, 3005], "disallowed"], [[3006, 3010], "valid"], [[3011, 3013], "disallowed"], [[3014, 3016], "valid"], [[3017, 3017], "disallowed"], [[3018, 3021], "valid"], [[3022, 3023], "disallowed"], [[3024, 3024], "valid"], [[3025, 3030], "disallowed"], [[3031, 3031], "valid"], [[3032, 3045], "disallowed"], [[3046, 3046], "valid"], [[3047, 3055], "valid"], [[3056, 3058], "valid", [], "NV8"], [[3059, 3066], "valid", [], "NV8"], [[3067, 3071], "disallowed"], [[3072, 3072], "valid"], [[3073, 3075], "valid"], [[3076, 3076], "disallowed"], [[3077, 3084], "valid"], [[3085, 3085], "disallowed"], [[3086, 3088], "valid"], [[3089, 3089], "disallowed"], [[3090, 3112], "valid"], [[3113, 3113], "disallowed"], [[3114, 3123], "valid"], [[3124, 3124], "valid"], [[3125, 3129], "valid"], [[3130, 3132], "disallowed"], [[3133, 3133], "valid"], [[3134, 3140], "valid"], [[3141, 3141], "disallowed"], [[3142, 3144], "valid"], [[3145, 3145], "disallowed"], [[3146, 3149], "valid"], [[3150, 3156], "disallowed"], [[3157, 3158], "valid"], [[3159, 3159], "disallowed"], [[3160, 3161], "valid"], [[3162, 3162], "valid"], [[3163, 3167], "disallowed"], [[3168, 3169], "valid"], [[3170, 3171], "valid"], [[3172, 3173], "disallowed"], [[3174, 3183], "valid"], [[3184, 3191], "disallowed"], [[3192, 3199], "valid", [], "NV8"], [[3200, 3200], "disallowed"], [[3201, 3201], "valid"], [[3202, 3203], "valid"], [[3204, 3204], "disallowed"], [[3205, 3212], "valid"], [[3213, 3213], "disallowed"], [[3214, 3216], "valid"], [[3217, 3217], "disallowed"], [[3218, 3240], "valid"], [[3241, 3241], "disallowed"], [[3242, 3251], "valid"], [[3252, 3252], "disallowed"], [[3253, 3257], "valid"], [[3258, 3259], "disallowed"], [[3260, 3261], "valid"], [[3262, 3268], "valid"], [[3269, 3269], "disallowed"], [[3270, 3272], "valid"], [[3273, 3273], "disallowed"], [[3274, 3277], "valid"], [[3278, 3284], "disallowed"], [[3285, 3286], "valid"], [[3287, 3293], "disallowed"], [[3294, 3294], "valid"], [[3295, 3295], "disallowed"], [[3296, 3297], "valid"], [[3298, 3299], "valid"], [[3300, 3301], "disallowed"], [[3302, 3311], "valid"], [[3312, 3312], "disallowed"], [[3313, 3314], "valid"], [[3315, 3328], "disallowed"], [[3329, 3329], "valid"], [[3330, 3331], "valid"], [[3332, 3332], "disallowed"], [[3333, 3340], "valid"], [[3341, 3341], "disallowed"], [[3342, 3344], "valid"], [[3345, 3345], "disallowed"], [[3346, 3368], "valid"], [[3369, 3369], "valid"], [[3370, 3385], "valid"], [[3386, 3386], "valid"], [[3387, 3388], "disallowed"], [[3389, 3389], "valid"], [[3390, 3395], "valid"], [[3396, 3396], "valid"], [[3397, 3397], "disallowed"], [[3398, 3400], "valid"], [[3401, 3401], "disallowed"], [[3402, 3405], "valid"], [[3406, 3406], "valid"], [[3407, 3414], "disallowed"], [[3415, 3415], "valid"], [[3416, 3422], "disallowed"], [[3423, 3423], "valid"], [[3424, 3425], "valid"], [[3426, 3427], "valid"], [[3428, 3429], "disallowed"], [[3430, 3439], "valid"], [[3440, 3445], "valid", [], "NV8"], [[3446, 3448], "disallowed"], [[3449, 3449], "valid", [], "NV8"], [[3450, 3455], "valid"], [[3456, 3457], "disallowed"], [[3458, 3459], "valid"], [[3460, 3460], "disallowed"], [[3461, 3478], "valid"], [[3479, 3481], "disallowed"], [[3482, 3505], "valid"], [[3506, 3506], "disallowed"], [[3507, 3515], "valid"], [[3516, 3516], "disallowed"], [[3517, 3517], "valid"], [[3518, 3519], "disallowed"], [[3520, 3526], "valid"], [[3527, 3529], "disallowed"], [[3530, 3530], "valid"], [[3531, 3534], "disallowed"], [[3535, 3540], "valid"], [[3541, 3541], "disallowed"], [[3542, 3542], "valid"], [[3543, 3543], "disallowed"], [[3544, 3551], "valid"], [[3552, 3557], "disallowed"], [[3558, 3567], "valid"], [[3568, 3569], "disallowed"], [[3570, 3571], "valid"], [[3572, 3572], "valid", [], "NV8"], [[3573, 3584], "disallowed"], [[3585, 3634], "valid"], [[3635, 3635], "mapped", [3661, 3634]], [[3636, 3642], "valid"], [[3643, 3646], "disallowed"], [[3647, 3647], "valid", [], "NV8"], [[3648, 3662], "valid"], [[3663, 3663], "valid", [], "NV8"], [[3664, 3673], "valid"], [[3674, 3675], "valid", [], "NV8"], [[3676, 3712], "disallowed"], [[3713, 3714], "valid"], [[3715, 3715], "disallowed"], [[3716, 3716], "valid"], [[3717, 3718], "disallowed"], [[3719, 3720], "valid"], [[3721, 3721], "disallowed"], [[3722, 3722], "valid"], [[3723, 3724], "disallowed"], [[3725, 3725], "valid"], [[3726, 3731], "disallowed"], [[3732, 3735], "valid"], [[3736, 3736], "disallowed"], [[3737, 3743], "valid"], [[3744, 3744], "disallowed"], [[3745, 3747], "valid"], [[3748, 3748], "disallowed"], [[3749, 3749], "valid"], [[3750, 3750], "disallowed"], [[3751, 3751], "valid"], [[3752, 3753], "disallowed"], [[3754, 3755], "valid"], [[3756, 3756], "disallowed"], [[3757, 3762], "valid"], [[3763, 3763], "mapped", [3789, 3762]], [[3764, 3769], "valid"], [[3770, 3770], "disallowed"], [[3771, 3773], "valid"], [[3774, 3775], "disallowed"], [[3776, 3780], "valid"], [[3781, 3781], "disallowed"], [[3782, 3782], "valid"], [[3783, 3783], "disallowed"], [[3784, 3789], "valid"], [[3790, 3791], "disallowed"], [[3792, 3801], "valid"], [[3802, 3803], "disallowed"], [[3804, 3804], "mapped", [3755, 3737]], [[3805, 3805], "mapped", [3755, 3745]], [[3806, 3807], "valid"], [[3808, 3839], "disallowed"], [[3840, 3840], "valid"], [[3841, 3850], "valid", [], "NV8"], [[3851, 3851], "valid"], [[3852, 3852], "mapped", [3851]], [[3853, 3863], "valid", [], "NV8"], [[3864, 3865], "valid"], [[3866, 3871], "valid", [], "NV8"], [[3872, 3881], "valid"], [[3882, 3892], "valid", [], "NV8"], [[3893, 3893], "valid"], [[3894, 3894], "valid", [], "NV8"], [[3895, 3895], "valid"], [[3896, 3896], "valid", [], "NV8"], [[3897, 3897], "valid"], [[3898, 3901], "valid", [], "NV8"], [[3902, 3906], "valid"], [[3907, 3907], "mapped", [3906, 4023]], [[3908, 3911], "valid"], [[3912, 3912], "disallowed"], [[3913, 3916], "valid"], [[3917, 3917], "mapped", [3916, 4023]], [[3918, 3921], "valid"], [[3922, 3922], "mapped", [3921, 4023]], [[3923, 3926], "valid"], [[3927, 3927], "mapped", [3926, 4023]], [[3928, 3931], "valid"], [[3932, 3932], "mapped", [3931, 4023]], [[3933, 3944], "valid"], [[3945, 3945], "mapped", [3904, 4021]], [[3946, 3946], "valid"], [[3947, 3948], "valid"], [[3949, 3952], "disallowed"], [[3953, 3954], "valid"], [[3955, 3955], "mapped", [3953, 3954]], [[3956, 3956], "valid"], [[3957, 3957], "mapped", [3953, 3956]], [[3958, 3958], "mapped", [4018, 3968]], [[3959, 3959], "mapped", [4018, 3953, 3968]], [[3960, 3960], "mapped", [4019, 3968]], [[3961, 3961], "mapped", [4019, 3953, 3968]], [[3962, 3968], "valid"], [[3969, 3969], "mapped", [3953, 3968]], [[3970, 3972], "valid"], [[3973, 3973], "valid", [], "NV8"], [[3974, 3979], "valid"], [[3980, 3983], "valid"], [[3984, 3986], "valid"], [[3987, 3987], "mapped", [3986, 4023]], [[3988, 3989], "valid"], [[3990, 3990], "valid"], [[3991, 3991], "valid"], [[3992, 3992], "disallowed"], [[3993, 3996], "valid"], [[3997, 3997], "mapped", [3996, 4023]], [[3998, 4001], "valid"], [[4002, 4002], "mapped", [4001, 4023]], [[4003, 4006], "valid"], [[4007, 4007], "mapped", [4006, 4023]], [[4008, 4011], "valid"], [[4012, 4012], "mapped", [4011, 4023]], [[4013, 4013], "valid"], [[4014, 4016], "valid"], [[4017, 4023], "valid"], [[4024, 4024], "valid"], [[4025, 4025], "mapped", [3984, 4021]], [[4026, 4028], "valid"], [[4029, 4029], "disallowed"], [[4030, 4037], "valid", [], "NV8"], [[4038, 4038], "valid"], [[4039, 4044], "valid", [], "NV8"], [[4045, 4045], "disallowed"], [[4046, 4046], "valid", [], "NV8"], [[4047, 4047], "valid", [], "NV8"], [[4048, 4049], "valid", [], "NV8"], [[4050, 4052], "valid", [], "NV8"], [[4053, 4056], "valid", [], "NV8"], [[4057, 4058], "valid", [], "NV8"], [[4059, 4095], "disallowed"], [[4096, 4129], "valid"], [[4130, 4130], "valid"], [[4131, 4135], "valid"], [[4136, 4136], "valid"], [[4137, 4138], "valid"], [[4139, 4139], "valid"], [[4140, 4146], "valid"], [[4147, 4149], "valid"], [[4150, 4153], "valid"], [[4154, 4159], "valid"], [[4160, 4169], "valid"], [[4170, 4175], "valid", [], "NV8"], [[4176, 4185], "valid"], [[4186, 4249], "valid"], [[4250, 4253], "valid"], [[4254, 4255], "valid", [], "NV8"], [[4256, 4293], "disallowed"], [[4294, 4294], "disallowed"], [[4295, 4295], "mapped", [11559]], [[4296, 4300], "disallowed"], [[4301, 4301], "mapped", [11565]], [[4302, 4303], "disallowed"], [[4304, 4342], "valid"], [[4343, 4344], "valid"], [[4345, 4346], "valid"], [[4347, 4347], "valid", [], "NV8"], [[4348, 4348], "mapped", [4316]], [[4349, 4351], "valid"], [[4352, 4441], "valid", [], "NV8"], [[4442, 4446], "valid", [], "NV8"], [[4447, 4448], "disallowed"], [[4449, 4514], "valid", [], "NV8"], [[4515, 4519], "valid", [], "NV8"], [[4520, 4601], "valid", [], "NV8"], [[4602, 4607], "valid", [], "NV8"], [[4608, 4614], "valid"], [[4615, 4615], "valid"], [[4616, 4678], "valid"], [[4679, 4679], "valid"], [[4680, 4680], "valid"], [[4681, 4681], "disallowed"], [[4682, 4685], "valid"], [[4686, 4687], "disallowed"], [[4688, 4694], "valid"], [[4695, 4695], "disallowed"], [[4696, 4696], "valid"], [[4697, 4697], "disallowed"], [[4698, 4701], "valid"], [[4702, 4703], "disallowed"], [[4704, 4742], "valid"], [[4743, 4743], "valid"], [[4744, 4744], "valid"], [[4745, 4745], "disallowed"], [[4746, 4749], "valid"], [[4750, 4751], "disallowed"], [[4752, 4782], "valid"], [[4783, 4783], "valid"], [[4784, 4784], "valid"], [[4785, 4785], "disallowed"], [[4786, 4789], "valid"], [[4790, 4791], "disallowed"], [[4792, 4798], "valid"], [[4799, 4799], "disallowed"], [[4800, 4800], "valid"], [[4801, 4801], "disallowed"], [[4802, 4805], "valid"], [[4806, 4807], "disallowed"], [[4808, 4814], "valid"], [[4815, 4815], "valid"], [[4816, 4822], "valid"], [[4823, 4823], "disallowed"], [[4824, 4846], "valid"], [[4847, 4847], "valid"], [[4848, 4878], "valid"], [[4879, 4879], "valid"], [[4880, 4880], "valid"], [[4881, 4881], "disallowed"], [[4882, 4885], "valid"], [[4886, 4887], "disallowed"], [[4888, 4894], "valid"], [[4895, 4895], "valid"], [[4896, 4934], "valid"], [[4935, 4935], "valid"], [[4936, 4954], "valid"], [[4955, 4956], "disallowed"], [[4957, 4958], "valid"], [[4959, 4959], "valid"], [[4960, 4960], "valid", [], "NV8"], [[4961, 4988], "valid", [], "NV8"], [[4989, 4991], "disallowed"], [[4992, 5007], "valid"], [[5008, 5017], "valid", [], "NV8"], [[5018, 5023], "disallowed"], [[5024, 5108], "valid"], [[5109, 5109], "valid"], [[5110, 5111], "disallowed"], [[5112, 5112], "mapped", [5104]], [[5113, 5113], "mapped", [5105]], [[5114, 5114], "mapped", [5106]], [[5115, 5115], "mapped", [5107]], [[5116, 5116], "mapped", [5108]], [[5117, 5117], "mapped", [5109]], [[5118, 5119], "disallowed"], [[5120, 5120], "valid", [], "NV8"], [[5121, 5740], "valid"], [[5741, 5742], "valid", [], "NV8"], [[5743, 5750], "valid"], [[5751, 5759], "valid"], [[5760, 5760], "disallowed"], [[5761, 5786], "valid"], [[5787, 5788], "valid", [], "NV8"], [[5789, 5791], "disallowed"], [[5792, 5866], "valid"], [[5867, 5872], "valid", [], "NV8"], [[5873, 5880], "valid"], [[5881, 5887], "disallowed"], [[5888, 5900], "valid"], [[5901, 5901], "disallowed"], [[5902, 5908], "valid"], [[5909, 5919], "disallowed"], [[5920, 5940], "valid"], [[5941, 5942], "valid", [], "NV8"], [[5943, 5951], "disallowed"], [[5952, 5971], "valid"], [[5972, 5983], "disallowed"], [[5984, 5996], "valid"], [[5997, 5997], "disallowed"], [[5998, 6e3], "valid"], [[6001, 6001], "disallowed"], [[6002, 6003], "valid"], [[6004, 6015], "disallowed"], [[6016, 6067], "valid"], [[6068, 6069], "disallowed"], [[6070, 6099], "valid"], [[6100, 6102], "valid", [], "NV8"], [[6103, 6103], "valid"], [[6104, 6107], "valid", [], "NV8"], [[6108, 6108], "valid"], [[6109, 6109], "valid"], [[6110, 6111], "disallowed"], [[6112, 6121], "valid"], [[6122, 6127], "disallowed"], [[6128, 6137], "valid", [], "NV8"], [[6138, 6143], "disallowed"], [[6144, 6149], "valid", [], "NV8"], [[6150, 6150], "disallowed"], [[6151, 6154], "valid", [], "NV8"], [[6155, 6157], "ignored"], [[6158, 6158], "disallowed"], [[6159, 6159], "disallowed"], [[6160, 6169], "valid"], [[6170, 6175], "disallowed"], [[6176, 6263], "valid"], [[6264, 6271], "disallowed"], [[6272, 6313], "valid"], [[6314, 6314], "valid"], [[6315, 6319], "disallowed"], [[6320, 6389], "valid"], [[6390, 6399], "disallowed"], [[6400, 6428], "valid"], [[6429, 6430], "valid"], [[6431, 6431], "disallowed"], [[6432, 6443], "valid"], [[6444, 6447], "disallowed"], [[6448, 6459], "valid"], [[6460, 6463], "disallowed"], [[6464, 6464], "valid", [], "NV8"], [[6465, 6467], "disallowed"], [[6468, 6469], "valid", [], "NV8"], [[6470, 6509], "valid"], [[6510, 6511], "disallowed"], [[6512, 6516], "valid"], [[6517, 6527], "disallowed"], [[6528, 6569], "valid"], [[6570, 6571], "valid"], [[6572, 6575], "disallowed"], [[6576, 6601], "valid"], [[6602, 6607], "disallowed"], [[6608, 6617], "valid"], [[6618, 6618], "valid", [], "XV8"], [[6619, 6621], "disallowed"], [[6622, 6623], "valid", [], "NV8"], [[6624, 6655], "valid", [], "NV8"], [[6656, 6683], "valid"], [[6684, 6685], "disallowed"], [[6686, 6687], "valid", [], "NV8"], [[6688, 6750], "valid"], [[6751, 6751], "disallowed"], [[6752, 6780], "valid"], [[6781, 6782], "disallowed"], [[6783, 6793], "valid"], [[6794, 6799], "disallowed"], [[6800, 6809], "valid"], [[6810, 6815], "disallowed"], [[6816, 6822], "valid", [], "NV8"], [[6823, 6823], "valid"], [[6824, 6829], "valid", [], "NV8"], [[6830, 6831], "disallowed"], [[6832, 6845], "valid"], [[6846, 6846], "valid", [], "NV8"], [[6847, 6911], "disallowed"], [[6912, 6987], "valid"], [[6988, 6991], "disallowed"], [[6992, 7001], "valid"], [[7002, 7018], "valid", [], "NV8"], [[7019, 7027], "valid"], [[7028, 7036], "valid", [], "NV8"], [[7037, 7039], "disallowed"], [[7040, 7082], "valid"], [[7083, 7085], "valid"], [[7086, 7097], "valid"], [[7098, 7103], "valid"], [[7104, 7155], "valid"], [[7156, 7163], "disallowed"], [[7164, 7167], "valid", [], "NV8"], [[7168, 7223], "valid"], [[7224, 7226], "disallowed"], [[7227, 7231], "valid", [], "NV8"], [[7232, 7241], "valid"], [[7242, 7244], "disallowed"], [[7245, 7293], "valid"], [[7294, 7295], "valid", [], "NV8"], [[7296, 7359], "disallowed"], [[7360, 7367], "valid", [], "NV8"], [[7368, 7375], "disallowed"], [[7376, 7378], "valid"], [[7379, 7379], "valid", [], "NV8"], [[7380, 7410], "valid"], [[7411, 7414], "valid"], [[7415, 7415], "disallowed"], [[7416, 7417], "valid"], [[7418, 7423], "disallowed"], [[7424, 7467], "valid"], [[7468, 7468], "mapped", [97]], [[7469, 7469], "mapped", [230]], [[7470, 7470], "mapped", [98]], [[7471, 7471], "valid"], [[7472, 7472], "mapped", [100]], [[7473, 7473], "mapped", [101]], [[7474, 7474], "mapped", [477]], [[7475, 7475], "mapped", [103]], [[7476, 7476], "mapped", [104]], [[7477, 7477], "mapped", [105]], [[7478, 7478], "mapped", [106]], [[7479, 7479], "mapped", [107]], [[7480, 7480], "mapped", [108]], [[7481, 7481], "mapped", [109]], [[7482, 7482], "mapped", [110]], [[7483, 7483], "valid"], [[7484, 7484], "mapped", [111]], [[7485, 7485], "mapped", [547]], [[7486, 7486], "mapped", [112]], [[7487, 7487], "mapped", [114]], [[7488, 7488], "mapped", [116]], [[7489, 7489], "mapped", [117]], [[7490, 7490], "mapped", [119]], [[7491, 7491], "mapped", [97]], [[7492, 7492], "mapped", [592]], [[7493, 7493], "mapped", [593]], [[7494, 7494], "mapped", [7426]], [[7495, 7495], "mapped", [98]], [[7496, 7496], "mapped", [100]], [[7497, 7497], "mapped", [101]], [[7498, 7498], "mapped", [601]], [[7499, 7499], "mapped", [603]], [[7500, 7500], "mapped", [604]], [[7501, 7501], "mapped", [103]], [[7502, 7502], "valid"], [[7503, 7503], "mapped", [107]], [[7504, 7504], "mapped", [109]], [[7505, 7505], "mapped", [331]], [[7506, 7506], "mapped", [111]], [[7507, 7507], "mapped", [596]], [[7508, 7508], "mapped", [7446]], [[7509, 7509], "mapped", [7447]], [[7510, 7510], "mapped", [112]], [[7511, 7511], "mapped", [116]], [[7512, 7512], "mapped", [117]], [[7513, 7513], "mapped", [7453]], [[7514, 7514], "mapped", [623]], [[7515, 7515], "mapped", [118]], [[7516, 7516], "mapped", [7461]], [[7517, 7517], "mapped", [946]], [[7518, 7518], "mapped", [947]], [[7519, 7519], "mapped", [948]], [[7520, 7520], "mapped", [966]], [[7521, 7521], "mapped", [967]], [[7522, 7522], "mapped", [105]], [[7523, 7523], "mapped", [114]], [[7524, 7524], "mapped", [117]], [[7525, 7525], "mapped", [118]], [[7526, 7526], "mapped", [946]], [[7527, 7527], "mapped", [947]], [[7528, 7528], "mapped", [961]], [[7529, 7529], "mapped", [966]], [[7530, 7530], "mapped", [967]], [[7531, 7531], "valid"], [[7532, 7543], "valid"], [[7544, 7544], "mapped", [1085]], [[7545, 7578], "valid"], [[7579, 7579], "mapped", [594]], [[7580, 7580], "mapped", [99]], [[7581, 7581], "mapped", [597]], [[7582, 7582], "mapped", [240]], [[7583, 7583], "mapped", [604]], [[7584, 7584], "mapped", [102]], [[7585, 7585], "mapped", [607]], [[7586, 7586], "mapped", [609]], [[7587, 7587], "mapped", [613]], [[7588, 7588], "mapped", [616]], [[7589, 7589], "mapped", [617]], [[7590, 7590], "mapped", [618]], [[7591, 7591], "mapped", [7547]], [[7592, 7592], "mapped", [669]], [[7593, 7593], "mapped", [621]], [[7594, 7594], "mapped", [7557]], [[7595, 7595], "mapped", [671]], [[7596, 7596], "mapped", [625]], [[7597, 7597], "mapped", [624]], [[7598, 7598], "mapped", [626]], [[7599, 7599], "mapped", [627]], [[7600, 7600], "mapped", [628]], [[7601, 7601], "mapped", [629]], [[7602, 7602], "mapped", [632]], [[7603, 7603], "mapped", [642]], [[7604, 7604], "mapped", [643]], [[7605, 7605], "mapped", [427]], [[7606, 7606], "mapped", [649]], [[7607, 7607], "mapped", [650]], [[7608, 7608], "mapped", [7452]], [[7609, 7609], "mapped", [651]], [[7610, 7610], "mapped", [652]], [[7611, 7611], "mapped", [122]], [[7612, 7612], "mapped", [656]], [[7613, 7613], "mapped", [657]], [[7614, 7614], "mapped", [658]], [[7615, 7615], "mapped", [952]], [[7616, 7619], "valid"], [[7620, 7626], "valid"], [[7627, 7654], "valid"], [[7655, 7669], "valid"], [[7670, 7675], "disallowed"], [[7676, 7676], "valid"], [[7677, 7677], "valid"], [[7678, 7679], "valid"], [[7680, 7680], "mapped", [7681]], [[7681, 7681], "valid"], [[7682, 7682], "mapped", [7683]], [[7683, 7683], "valid"], [[7684, 7684], "mapped", [7685]], [[7685, 7685], "valid"], [[7686, 7686], "mapped", [7687]], [[7687, 7687], "valid"], [[7688, 7688], "mapped", [7689]], [[7689, 7689], "valid"], [[7690, 7690], "mapped", [7691]], [[7691, 7691], "valid"], [[7692, 7692], "mapped", [7693]], [[7693, 7693], "valid"], [[7694, 7694], "mapped", [7695]], [[7695, 7695], "valid"], [[7696, 7696], "mapped", [7697]], [[7697, 7697], "valid"], [[7698, 7698], "mapped", [7699]], [[7699, 7699], "valid"], [[7700, 7700], "mapped", [7701]], [[7701, 7701], "valid"], [[7702, 7702], "mapped", [7703]], [[7703, 7703], "valid"], [[7704, 7704], "mapped", [7705]], [[7705, 7705], "valid"], [[7706, 7706], "mapped", [7707]], [[7707, 7707], "valid"], [[7708, 7708], "mapped", [7709]], [[7709, 7709], "valid"], [[7710, 7710], "mapped", [7711]], [[7711, 7711], "valid"], [[7712, 7712], "mapped", [7713]], [[7713, 7713], "valid"], [[7714, 7714], "mapped", [7715]], [[7715, 7715], "valid"], [[7716, 7716], "mapped", [7717]], [[7717, 7717], "valid"], [[7718, 7718], "mapped", [7719]], [[7719, 7719], "valid"], [[7720, 7720], "mapped", [7721]], [[7721, 7721], "valid"], [[7722, 7722], "mapped", [7723]], [[7723, 7723], "valid"], [[7724, 7724], "mapped", [7725]], [[7725, 7725], "valid"], [[7726, 7726], "mapped", [7727]], [[7727, 7727], "valid"], [[7728, 7728], "mapped", [7729]], [[7729, 7729], "valid"], [[7730, 7730], "mapped", [7731]], [[7731, 7731], "valid"], [[7732, 7732], "mapped", [7733]], [[7733, 7733], "valid"], [[7734, 7734], "mapped", [7735]], [[7735, 7735], "valid"], [[7736, 7736], "mapped", [7737]], [[7737, 7737], "valid"], [[7738, 7738], "mapped", [7739]], [[7739, 7739], "valid"], [[7740, 7740], "mapped", [7741]], [[7741, 7741], "valid"], [[7742, 7742], "mapped", [7743]], [[7743, 7743], "valid"], [[7744, 7744], "mapped", [7745]], [[7745, 7745], "valid"], [[7746, 7746], "mapped", [7747]], [[7747, 7747], "valid"], [[7748, 7748], "mapped", [7749]], [[7749, 7749], "valid"], [[7750, 7750], "mapped", [7751]], [[7751, 7751], "valid"], [[7752, 7752], "mapped", [7753]], [[7753, 7753], "valid"], [[7754, 7754], "mapped", [7755]], [[7755, 7755], "valid"], [[7756, 7756], "mapped", [7757]], [[7757, 7757], "valid"], [[7758, 7758], "mapped", [7759]], [[7759, 7759], "valid"], [[7760, 7760], "mapped", [7761]], [[7761, 7761], "valid"], [[7762, 7762], "mapped", [7763]], [[7763, 7763], "valid"], [[7764, 7764], "mapped", [7765]], [[7765, 7765], "valid"], [[7766, 7766], "mapped", [7767]], [[7767, 7767], "valid"], [[7768, 7768], "mapped", [7769]], [[7769, 7769], "valid"], [[7770, 7770], "mapped", [7771]], [[7771, 7771], "valid"], [[7772, 7772], "mapped", [7773]], [[7773, 7773], "valid"], [[7774, 7774], "mapped", [7775]], [[7775, 7775], "valid"], [[7776, 7776], "mapped", [7777]], [[7777, 7777], "valid"], [[7778, 7778], "mapped", [7779]], [[7779, 7779], "valid"], [[7780, 7780], "mapped", [7781]], [[7781, 7781], "valid"], [[7782, 7782], "mapped", [7783]], [[7783, 7783], "valid"], [[7784, 7784], "mapped", [7785]], [[7785, 7785], "valid"], [[7786, 7786], "mapped", [7787]], [[7787, 7787], "valid"], [[7788, 7788], "mapped", [7789]], [[7789, 7789], "valid"], [[7790, 7790], "mapped", [7791]], [[7791, 7791], "valid"], [[7792, 7792], "mapped", [7793]], [[7793, 7793], "valid"], [[7794, 7794], "mapped", [7795]], [[7795, 7795], "valid"], [[7796, 7796], "mapped", [7797]], [[7797, 7797], "valid"], [[7798, 7798], "mapped", [7799]], [[7799, 7799], "valid"], [[7800, 7800], "mapped", [7801]], [[7801, 7801], "valid"], [[7802, 7802], "mapped", [7803]], [[7803, 7803], "valid"], [[7804, 7804], "mapped", [7805]], [[7805, 7805], "valid"], [[7806, 7806], "mapped", [7807]], [[7807, 7807], "valid"], [[7808, 7808], "mapped", [7809]], [[7809, 7809], "valid"], [[7810, 7810], "mapped", [7811]], [[7811, 7811], "valid"], [[7812, 7812], "mapped", [7813]], [[7813, 7813], "valid"], [[7814, 7814], "mapped", [7815]], [[7815, 7815], "valid"], [[7816, 7816], "mapped", [7817]], [[7817, 7817], "valid"], [[7818, 7818], "mapped", [7819]], [[7819, 7819], "valid"], [[7820, 7820], "mapped", [7821]], [[7821, 7821], "valid"], [[7822, 7822], "mapped", [7823]], [[7823, 7823], "valid"], [[7824, 7824], "mapped", [7825]], [[7825, 7825], "valid"], [[7826, 7826], "mapped", [7827]], [[7827, 7827], "valid"], [[7828, 7828], "mapped", [7829]], [[7829, 7833], "valid"], [[7834, 7834], "mapped", [97, 702]], [[7835, 7835], "mapped", [7777]], [[7836, 7837], "valid"], [[7838, 7838], "mapped", [115, 115]], [[7839, 7839], "valid"], [[7840, 7840], "mapped", [7841]], [[7841, 7841], "valid"], [[7842, 7842], "mapped", [7843]], [[7843, 7843], "valid"], [[7844, 7844], "mapped", [7845]], [[7845, 7845], "valid"], [[7846, 7846], "mapped", [7847]], [[7847, 7847], "valid"], [[7848, 7848], "mapped", [7849]], [[7849, 7849], "valid"], [[7850, 7850], "mapped", [7851]], [[7851, 7851], "valid"], [[7852, 7852], "mapped", [7853]], [[7853, 7853], "valid"], [[7854, 7854], "mapped", [7855]], [[7855, 7855], "valid"], [[7856, 7856], "mapped", [7857]], [[7857, 7857], "valid"], [[7858, 7858], "mapped", [7859]], [[7859, 7859], "valid"], [[7860, 7860], "mapped", [7861]], [[7861, 7861], "valid"], [[7862, 7862], "mapped", [7863]], [[7863, 7863], "valid"], [[7864, 7864], "mapped", [7865]], [[7865, 7865], "valid"], [[7866, 7866], "mapped", [7867]], [[7867, 7867], "valid"], [[7868, 7868], "mapped", [7869]], [[7869, 7869], "valid"], [[7870, 7870], "mapped", [7871]], [[7871, 7871], "valid"], [[7872, 7872], "mapped", [7873]], [[7873, 7873], "valid"], [[7874, 7874], "mapped", [7875]], [[7875, 7875], "valid"], [[7876, 7876], "mapped", [7877]], [[7877, 7877], "valid"], [[7878, 7878], "mapped", [7879]], [[7879, 7879], "valid"], [[7880, 7880], "mapped", [7881]], [[7881, 7881], "valid"], [[7882, 7882], "mapped", [7883]], [[7883, 7883], "valid"], [[7884, 7884], "mapped", [7885]], [[7885, 7885], "valid"], [[7886, 7886], "mapped", [7887]], [[7887, 7887], "valid"], [[7888, 7888], "mapped", [7889]], [[7889, 7889], "valid"], [[7890, 7890], "mapped", [7891]], [[7891, 7891], "valid"], [[7892, 7892], "mapped", [7893]], [[7893, 7893], "valid"], [[7894, 7894], "mapped", [7895]], [[7895, 7895], "valid"], [[7896, 7896], "mapped", [7897]], [[7897, 7897], "valid"], [[7898, 7898], "mapped", [7899]], [[7899, 7899], "valid"], [[7900, 7900], "mapped", [7901]], [[7901, 7901], "valid"], [[7902, 7902], "mapped", [7903]], [[7903, 7903], "valid"], [[7904, 7904], "mapped", [7905]], [[7905, 7905], "valid"], [[7906, 7906], "mapped", [7907]], [[7907, 7907], "valid"], [[7908, 7908], "mapped", [7909]], [[7909, 7909], "valid"], [[7910, 7910], "mapped", [7911]], [[7911, 7911], "valid"], [[7912, 7912], "mapped", [7913]], [[7913, 7913], "valid"], [[7914, 7914], "mapped", [7915]], [[7915, 7915], "valid"], [[7916, 7916], "mapped", [7917]], [[7917, 7917], "valid"], [[7918, 7918], "mapped", [7919]], [[7919, 7919], "valid"], [[7920, 7920], "mapped", [7921]], [[7921, 7921], "valid"], [[7922, 7922], "mapped", [7923]], [[7923, 7923], "valid"], [[7924, 7924], "mapped", [7925]], [[7925, 7925], "valid"], [[7926, 7926], "mapped", [7927]], [[7927, 7927], "valid"], [[7928, 7928], "mapped", [7929]], [[7929, 7929], "valid"], [[7930, 7930], "mapped", [7931]], [[7931, 7931], "valid"], [[7932, 7932], "mapped", [7933]], [[7933, 7933], "valid"], [[7934, 7934], "mapped", [7935]], [[7935, 7935], "valid"], [[7936, 7943], "valid"], [[7944, 7944], "mapped", [7936]], [[7945, 7945], "mapped", [7937]], [[7946, 7946], "mapped", [7938]], [[7947, 7947], "mapped", [7939]], [[7948, 7948], "mapped", [7940]], [[7949, 7949], "mapped", [7941]], [[7950, 7950], "mapped", [7942]], [[7951, 7951], "mapped", [7943]], [[7952, 7957], "valid"], [[7958, 7959], "disallowed"], [[7960, 7960], "mapped", [7952]], [[7961, 7961], "mapped", [7953]], [[7962, 7962], "mapped", [7954]], [[7963, 7963], "mapped", [7955]], [[7964, 7964], "mapped", [7956]], [[7965, 7965], "mapped", [7957]], [[7966, 7967], "disallowed"], [[7968, 7975], "valid"], [[7976, 7976], "mapped", [7968]], [[7977, 7977], "mapped", [7969]], [[7978, 7978], "mapped", [7970]], [[7979, 7979], "mapped", [7971]], [[7980, 7980], "mapped", [7972]], [[7981, 7981], "mapped", [7973]], [[7982, 7982], "mapped", [7974]], [[7983, 7983], "mapped", [7975]], [[7984, 7991], "valid"], [[7992, 7992], "mapped", [7984]], [[7993, 7993], "mapped", [7985]], [[7994, 7994], "mapped", [7986]], [[7995, 7995], "mapped", [7987]], [[7996, 7996], "mapped", [7988]], [[7997, 7997], "mapped", [7989]], [[7998, 7998], "mapped", [7990]], [[7999, 7999], "mapped", [7991]], [[8e3, 8005], "valid"], [[8006, 8007], "disallowed"], [[8008, 8008], "mapped", [8e3]], [[8009, 8009], "mapped", [8001]], [[8010, 8010], "mapped", [8002]], [[8011, 8011], "mapped", [8003]], [[8012, 8012], "mapped", [8004]], [[8013, 8013], "mapped", [8005]], [[8014, 8015], "disallowed"], [[8016, 8023], "valid"], [[8024, 8024], "disallowed"], [[8025, 8025], "mapped", [8017]], [[8026, 8026], "disallowed"], [[8027, 8027], "mapped", [8019]], [[8028, 8028], "disallowed"], [[8029, 8029], "mapped", [8021]], [[8030, 8030], "disallowed"], [[8031, 8031], "mapped", [8023]], [[8032, 8039], "valid"], [[8040, 8040], "mapped", [8032]], [[8041, 8041], "mapped", [8033]], [[8042, 8042], "mapped", [8034]], [[8043, 8043], "mapped", [8035]], [[8044, 8044], "mapped", [8036]], [[8045, 8045], "mapped", [8037]], [[8046, 8046], "mapped", [8038]], [[8047, 8047], "mapped", [8039]], [[8048, 8048], "valid"], [[8049, 8049], "mapped", [940]], [[8050, 8050], "valid"], [[8051, 8051], "mapped", [941]], [[8052, 8052], "valid"], [[8053, 8053], "mapped", [942]], [[8054, 8054], "valid"], [[8055, 8055], "mapped", [943]], [[8056, 8056], "valid"], [[8057, 8057], "mapped", [972]], [[8058, 8058], "valid"], [[8059, 8059], "mapped", [973]], [[8060, 8060], "valid"], [[8061, 8061], "mapped", [974]], [[8062, 8063], "disallowed"], [[8064, 8064], "mapped", [7936, 953]], [[8065, 8065], "mapped", [7937, 953]], [[8066, 8066], "mapped", [7938, 953]], [[8067, 8067], "mapped", [7939, 953]], [[8068, 8068], "mapped", [7940, 953]], [[8069, 8069], "mapped", [7941, 953]], [[8070, 8070], "mapped", [7942, 953]], [[8071, 8071], "mapped", [7943, 953]], [[8072, 8072], "mapped", [7936, 953]], [[8073, 8073], "mapped", [7937, 953]], [[8074, 8074], "mapped", [7938, 953]], [[8075, 8075], "mapped", [7939, 953]], [[8076, 8076], "mapped", [7940, 953]], [[8077, 8077], "mapped", [7941, 953]], [[8078, 8078], "mapped", [7942, 953]], [[8079, 8079], "mapped", [7943, 953]], [[8080, 8080], "mapped", [7968, 953]], [[8081, 8081], "mapped", [7969, 953]], [[8082, 8082], "mapped", [7970, 953]], [[8083, 8083], "mapped", [7971, 953]], [[8084, 8084], "mapped", [7972, 953]], [[8085, 8085], "mapped", [7973, 953]], [[8086, 8086], "mapped", [7974, 953]], [[8087, 8087], "mapped", [7975, 953]], [[8088, 8088], "mapped", [7968, 953]], [[8089, 8089], "mapped", [7969, 953]], [[8090, 8090], "mapped", [7970, 953]], [[8091, 8091], "mapped", [7971, 953]], [[8092, 8092], "mapped", [7972, 953]], [[8093, 8093], "mapped", [7973, 953]], [[8094, 8094], "mapped", [7974, 953]], [[8095, 8095], "mapped", [7975, 953]], [[8096, 8096], "mapped", [8032, 953]], [[8097, 8097], "mapped", [8033, 953]], [[8098, 8098], "mapped", [8034, 953]], [[8099, 8099], "mapped", [8035, 953]], [[8100, 8100], "mapped", [8036, 953]], [[8101, 8101], "mapped", [8037, 953]], [[8102, 8102], "mapped", [8038, 953]], [[8103, 8103], "mapped", [8039, 953]], [[8104, 8104], "mapped", [8032, 953]], [[8105, 8105], "mapped", [8033, 953]], [[8106, 8106], "mapped", [8034, 953]], [[8107, 8107], "mapped", [8035, 953]], [[8108, 8108], "mapped", [8036, 953]], [[8109, 8109], "mapped", [8037, 953]], [[8110, 8110], "mapped", [8038, 953]], [[8111, 8111], "mapped", [8039, 953]], [[8112, 8113], "valid"], [[8114, 8114], "mapped", [8048, 953]], [[8115, 8115], "mapped", [945, 953]], [[8116, 8116], "mapped", [940, 953]], [[8117, 8117], "disallowed"], [[8118, 8118], "valid"], [[8119, 8119], "mapped", [8118, 953]], [[8120, 8120], "mapped", [8112]], [[8121, 8121], "mapped", [8113]], [[8122, 8122], "mapped", [8048]], [[8123, 8123], "mapped", [940]], [[8124, 8124], "mapped", [945, 953]], [[8125, 8125], "disallowed_STD3_mapped", [32, 787]], [[8126, 8126], "mapped", [953]], [[8127, 8127], "disallowed_STD3_mapped", [32, 787]], [[8128, 8128], "disallowed_STD3_mapped", [32, 834]], [[8129, 8129], "disallowed_STD3_mapped", [32, 776, 834]], [[8130, 8130], "mapped", [8052, 953]], [[8131, 8131], "mapped", [951, 953]], [[8132, 8132], "mapped", [942, 953]], [[8133, 8133], "disallowed"], [[8134, 8134], "valid"], [[8135, 8135], "mapped", [8134, 953]], [[8136, 8136], "mapped", [8050]], [[8137, 8137], "mapped", [941]], [[8138, 8138], "mapped", [8052]], [[8139, 8139], "mapped", [942]], [[8140, 8140], "mapped", [951, 953]], [[8141, 8141], "disallowed_STD3_mapped", [32, 787, 768]], [[8142, 8142], "disallowed_STD3_mapped", [32, 787, 769]], [[8143, 8143], "disallowed_STD3_mapped", [32, 787, 834]], [[8144, 8146], "valid"], [[8147, 8147], "mapped", [912]], [[8148, 8149], "disallowed"], [[8150, 8151], "valid"], [[8152, 8152], "mapped", [8144]], [[8153, 8153], "mapped", [8145]], [[8154, 8154], "mapped", [8054]], [[8155, 8155], "mapped", [943]], [[8156, 8156], "disallowed"], [[8157, 8157], "disallowed_STD3_mapped", [32, 788, 768]], [[8158, 8158], "disallowed_STD3_mapped", [32, 788, 769]], [[8159, 8159], "disallowed_STD3_mapped", [32, 788, 834]], [[8160, 8162], "valid"], [[8163, 8163], "mapped", [944]], [[8164, 8167], "valid"], [[8168, 8168], "mapped", [8160]], [[8169, 8169], "mapped", [8161]], [[8170, 8170], "mapped", [8058]], [[8171, 8171], "mapped", [973]], [[8172, 8172], "mapped", [8165]], [[8173, 8173], "disallowed_STD3_mapped", [32, 776, 768]], [[8174, 8174], "disallowed_STD3_mapped", [32, 776, 769]], [[8175, 8175], "disallowed_STD3_mapped", [96]], [[8176, 8177], "disallowed"], [[8178, 8178], "mapped", [8060, 953]], [[8179, 8179], "mapped", [969, 953]], [[8180, 8180], "mapped", [974, 953]], [[8181, 8181], "disallowed"], [[8182, 8182], "valid"], [[8183, 8183], "mapped", [8182, 953]], [[8184, 8184], "mapped", [8056]], [[8185, 8185], "mapped", [972]], [[8186, 8186], "mapped", [8060]], [[8187, 8187], "mapped", [974]], [[8188, 8188], "mapped", [969, 953]], [[8189, 8189], "disallowed_STD3_mapped", [32, 769]], [[8190, 8190], "disallowed_STD3_mapped", [32, 788]], [[8191, 8191], "disallowed"], [[8192, 8202], "disallowed_STD3_mapped", [32]], [[8203, 8203], "ignored"], [[8204, 8205], "deviation", []], [[8206, 8207], "disallowed"], [[8208, 8208], "valid", [], "NV8"], [[8209, 8209], "mapped", [8208]], [[8210, 8214], "valid", [], "NV8"], [[8215, 8215], "disallowed_STD3_mapped", [32, 819]], [[8216, 8227], "valid", [], "NV8"], [[8228, 8230], "disallowed"], [[8231, 8231], "valid", [], "NV8"], [[8232, 8238], "disallowed"], [[8239, 8239], "disallowed_STD3_mapped", [32]], [[8240, 8242], "valid", [], "NV8"], [[8243, 8243], "mapped", [8242, 8242]], [[8244, 8244], "mapped", [8242, 8242, 8242]], [[8245, 8245], "valid", [], "NV8"], [[8246, 8246], "mapped", [8245, 8245]], [[8247, 8247], "mapped", [8245, 8245, 8245]], [[8248, 8251], "valid", [], "NV8"], [[8252, 8252], "disallowed_STD3_mapped", [33, 33]], [[8253, 8253], "valid", [], "NV8"], [[8254, 8254], "disallowed_STD3_mapped", [32, 773]], [[8255, 8262], "valid", [], "NV8"], [[8263, 8263], "disallowed_STD3_mapped", [63, 63]], [[8264, 8264], "disallowed_STD3_mapped", [63, 33]], [[8265, 8265], "disallowed_STD3_mapped", [33, 63]], [[8266, 8269], "valid", [], "NV8"], [[8270, 8274], "valid", [], "NV8"], [[8275, 8276], "valid", [], "NV8"], [[8277, 8278], "valid", [], "NV8"], [[8279, 8279], "mapped", [8242, 8242, 8242, 8242]], [[8280, 8286], "valid", [], "NV8"], [[8287, 8287], "disallowed_STD3_mapped", [32]], [[8288, 8288], "ignored"], [[8289, 8291], "disallowed"], [[8292, 8292], "ignored"], [[8293, 8293], "disallowed"], [[8294, 8297], "disallowed"], [[8298, 8303], "disallowed"], [[8304, 8304], "mapped", [48]], [[8305, 8305], "mapped", [105]], [[8306, 8307], "disallowed"], [[8308, 8308], "mapped", [52]], [[8309, 8309], "mapped", [53]], [[8310, 8310], "mapped", [54]], [[8311, 8311], "mapped", [55]], [[8312, 8312], "mapped", [56]], [[8313, 8313], "mapped", [57]], [[8314, 8314], "disallowed_STD3_mapped", [43]], [[8315, 8315], "mapped", [8722]], [[8316, 8316], "disallowed_STD3_mapped", [61]], [[8317, 8317], "disallowed_STD3_mapped", [40]], [[8318, 8318], "disallowed_STD3_mapped", [41]], [[8319, 8319], "mapped", [110]], [[8320, 8320], "mapped", [48]], [[8321, 8321], "mapped", [49]], [[8322, 8322], "mapped", [50]], [[8323, 8323], "mapped", [51]], [[8324, 8324], "mapped", [52]], [[8325, 8325], "mapped", [53]], [[8326, 8326], "mapped", [54]], [[8327, 8327], "mapped", [55]], [[8328, 8328], "mapped", [56]], [[8329, 8329], "mapped", [57]], [[8330, 8330], "disallowed_STD3_mapped", [43]], [[8331, 8331], "mapped", [8722]], [[8332, 8332], "disallowed_STD3_mapped", [61]], [[8333, 8333], "disallowed_STD3_mapped", [40]], [[8334, 8334], "disallowed_STD3_mapped", [41]], [[8335, 8335], "disallowed"], [[8336, 8336], "mapped", [97]], [[8337, 8337], "mapped", [101]], [[8338, 8338], "mapped", [111]], [[8339, 8339], "mapped", [120]], [[8340, 8340], "mapped", [601]], [[8341, 8341], "mapped", [104]], [[8342, 8342], "mapped", [107]], [[8343, 8343], "mapped", [108]], [[8344, 8344], "mapped", [109]], [[8345, 8345], "mapped", [110]], [[8346, 8346], "mapped", [112]], [[8347, 8347], "mapped", [115]], [[8348, 8348], "mapped", [116]], [[8349, 8351], "disallowed"], [[8352, 8359], "valid", [], "NV8"], [[8360, 8360], "mapped", [114, 115]], [[8361, 8362], "valid", [], "NV8"], [[8363, 8363], "valid", [], "NV8"], [[8364, 8364], "valid", [], "NV8"], [[8365, 8367], "valid", [], "NV8"], [[8368, 8369], "valid", [], "NV8"], [[8370, 8373], "valid", [], "NV8"], [[8374, 8376], "valid", [], "NV8"], [[8377, 8377], "valid", [], "NV8"], [[8378, 8378], "valid", [], "NV8"], [[8379, 8381], "valid", [], "NV8"], [[8382, 8382], "valid", [], "NV8"], [[8383, 8399], "disallowed"], [[8400, 8417], "valid", [], "NV8"], [[8418, 8419], "valid", [], "NV8"], [[8420, 8426], "valid", [], "NV8"], [[8427, 8427], "valid", [], "NV8"], [[8428, 8431], "valid", [], "NV8"], [[8432, 8432], "valid", [], "NV8"], [[8433, 8447], "disallowed"], [[8448, 8448], "disallowed_STD3_mapped", [97, 47, 99]], [[8449, 8449], "disallowed_STD3_mapped", [97, 47, 115]], [[8450, 8450], "mapped", [99]], [[8451, 8451], "mapped", [176, 99]], [[8452, 8452], "valid", [], "NV8"], [[8453, 8453], "disallowed_STD3_mapped", [99, 47, 111]], [[8454, 8454], "disallowed_STD3_mapped", [99, 47, 117]], [[8455, 8455], "mapped", [603]], [[8456, 8456], "valid", [], "NV8"], [[8457, 8457], "mapped", [176, 102]], [[8458, 8458], "mapped", [103]], [[8459, 8462], "mapped", [104]], [[8463, 8463], "mapped", [295]], [[8464, 8465], "mapped", [105]], [[8466, 8467], "mapped", [108]], [[8468, 8468], "valid", [], "NV8"], [[8469, 8469], "mapped", [110]], [[8470, 8470], "mapped", [110, 111]], [[8471, 8472], "valid", [], "NV8"], [[8473, 8473], "mapped", [112]], [[8474, 8474], "mapped", [113]], [[8475, 8477], "mapped", [114]], [[8478, 8479], "valid", [], "NV8"], [[8480, 8480], "mapped", [115, 109]], [[8481, 8481], "mapped", [116, 101, 108]], [[8482, 8482], "mapped", [116, 109]], [[8483, 8483], "valid", [], "NV8"], [[8484, 8484], "mapped", [122]], [[8485, 8485], "valid", [], "NV8"], [[8486, 8486], "mapped", [969]], [[8487, 8487], "valid", [], "NV8"], [[8488, 8488], "mapped", [122]], [[8489, 8489], "valid", [], "NV8"], [[8490, 8490], "mapped", [107]], [[8491, 8491], "mapped", [229]], [[8492, 8492], "mapped", [98]], [[8493, 8493], "mapped", [99]], [[8494, 8494], "valid", [], "NV8"], [[8495, 8496], "mapped", [101]], [[8497, 8497], "mapped", [102]], [[8498, 8498], "disallowed"], [[8499, 8499], "mapped", [109]], [[8500, 8500], "mapped", [111]], [[8501, 8501], "mapped", [1488]], [[8502, 8502], "mapped", [1489]], [[8503, 8503], "mapped", [1490]], [[8504, 8504], "mapped", [1491]], [[8505, 8505], "mapped", [105]], [[8506, 8506], "valid", [], "NV8"], [[8507, 8507], "mapped", [102, 97, 120]], [[8508, 8508], "mapped", [960]], [[8509, 8510], "mapped", [947]], [[8511, 8511], "mapped", [960]], [[8512, 8512], "mapped", [8721]], [[8513, 8516], "valid", [], "NV8"], [[8517, 8518], "mapped", [100]], [[8519, 8519], "mapped", [101]], [[8520, 8520], "mapped", [105]], [[8521, 8521], "mapped", [106]], [[8522, 8523], "valid", [], "NV8"], [[8524, 8524], "valid", [], "NV8"], [[8525, 8525], "valid", [], "NV8"], [[8526, 8526], "valid"], [[8527, 8527], "valid", [], "NV8"], [[8528, 8528], "mapped", [49, 8260, 55]], [[8529, 8529], "mapped", [49, 8260, 57]], [[8530, 8530], "mapped", [49, 8260, 49, 48]], [[8531, 8531], "mapped", [49, 8260, 51]], [[8532, 8532], "mapped", [50, 8260, 51]], [[8533, 8533], "mapped", [49, 8260, 53]], [[8534, 8534], "mapped", [50, 8260, 53]], [[8535, 8535], "mapped", [51, 8260, 53]], [[8536, 8536], "mapped", [52, 8260, 53]], [[8537, 8537], "mapped", [49, 8260, 54]], [[8538, 8538], "mapped", [53, 8260, 54]], [[8539, 8539], "mapped", [49, 8260, 56]], [[8540, 8540], "mapped", [51, 8260, 56]], [[8541, 8541], "mapped", [53, 8260, 56]], [[8542, 8542], "mapped", [55, 8260, 56]], [[8543, 8543], "mapped", [49, 8260]], [[8544, 8544], "mapped", [105]], [[8545, 8545], "mapped", [105, 105]], [[8546, 8546], "mapped", [105, 105, 105]], [[8547, 8547], "mapped", [105, 118]], [[8548, 8548], "mapped", [118]], [[8549, 8549], "mapped", [118, 105]], [[8550, 8550], "mapped", [118, 105, 105]], [[8551, 8551], "mapped", [118, 105, 105, 105]], [[8552, 8552], "mapped", [105, 120]], [[8553, 8553], "mapped", [120]], [[8554, 8554], "mapped", [120, 105]], [[8555, 8555], "mapped", [120, 105, 105]], [[8556, 8556], "mapped", [108]], [[8557, 8557], "mapped", [99]], [[8558, 8558], "mapped", [100]], [[8559, 8559], "mapped", [109]], [[8560, 8560], "mapped", [105]], [[8561, 8561], "mapped", [105, 105]], [[8562, 8562], "mapped", [105, 105, 105]], [[8563, 8563], "mapped", [105, 118]], [[8564, 8564], "mapped", [118]], [[8565, 8565], "mapped", [118, 105]], [[8566, 8566], "mapped", [118, 105, 105]], [[8567, 8567], "mapped", [118, 105, 105, 105]], [[8568, 8568], "mapped", [105, 120]], [[8569, 8569], "mapped", [120]], [[8570, 8570], "mapped", [120, 105]], [[8571, 8571], "mapped", [120, 105, 105]], [[8572, 8572], "mapped", [108]], [[8573, 8573], "mapped", [99]], [[8574, 8574], "mapped", [100]], [[8575, 8575], "mapped", [109]], [[8576, 8578], "valid", [], "NV8"], [[8579, 8579], "disallowed"], [[8580, 8580], "valid"], [[8581, 8584], "valid", [], "NV8"], [[8585, 8585], "mapped", [48, 8260, 51]], [[8586, 8587], "valid", [], "NV8"], [[8588, 8591], "disallowed"], [[8592, 8682], "valid", [], "NV8"], [[8683, 8691], "valid", [], "NV8"], [[8692, 8703], "valid", [], "NV8"], [[8704, 8747], "valid", [], "NV8"], [[8748, 8748], "mapped", [8747, 8747]], [[8749, 8749], "mapped", [8747, 8747, 8747]], [[8750, 8750], "valid", [], "NV8"], [[8751, 8751], "mapped", [8750, 8750]], [[8752, 8752], "mapped", [8750, 8750, 8750]], [[8753, 8799], "valid", [], "NV8"], [[8800, 8800], "disallowed_STD3_valid"], [[8801, 8813], "valid", [], "NV8"], [[8814, 8815], "disallowed_STD3_valid"], [[8816, 8945], "valid", [], "NV8"], [[8946, 8959], "valid", [], "NV8"], [[8960, 8960], "valid", [], "NV8"], [[8961, 8961], "valid", [], "NV8"], [[8962, 9e3], "valid", [], "NV8"], [[9001, 9001], "mapped", [12296]], [[9002, 9002], "mapped", [12297]], [[9003, 9082], "valid", [], "NV8"], [[9083, 9083], "valid", [], "NV8"], [[9084, 9084], "valid", [], "NV8"], [[9085, 9114], "valid", [], "NV8"], [[9115, 9166], "valid", [], "NV8"], [[9167, 9168], "valid", [], "NV8"], [[9169, 9179], "valid", [], "NV8"], [[9180, 9191], "valid", [], "NV8"], [[9192, 9192], "valid", [], "NV8"], [[9193, 9203], "valid", [], "NV8"], [[9204, 9210], "valid", [], "NV8"], [[9211, 9215], "disallowed"], [[9216, 9252], "valid", [], "NV8"], [[9253, 9254], "valid", [], "NV8"], [[9255, 9279], "disallowed"], [[9280, 9290], "valid", [], "NV8"], [[9291, 9311], "disallowed"], [[9312, 9312], "mapped", [49]], [[9313, 9313], "mapped", [50]], [[9314, 9314], "mapped", [51]], [[9315, 9315], "mapped", [52]], [[9316, 9316], "mapped", [53]], [[9317, 9317], "mapped", [54]], [[9318, 9318], "mapped", [55]], [[9319, 9319], "mapped", [56]], [[9320, 9320], "mapped", [57]], [[9321, 9321], "mapped", [49, 48]], [[9322, 9322], "mapped", [49, 49]], [[9323, 9323], "mapped", [49, 50]], [[9324, 9324], "mapped", [49, 51]], [[9325, 9325], "mapped", [49, 52]], [[9326, 9326], "mapped", [49, 53]], [[9327, 9327], "mapped", [49, 54]], [[9328, 9328], "mapped", [49, 55]], [[9329, 9329], "mapped", [49, 56]], [[9330, 9330], "mapped", [49, 57]], [[9331, 9331], "mapped", [50, 48]], [[9332, 9332], "disallowed_STD3_mapped", [40, 49, 41]], [[9333, 9333], "disallowed_STD3_mapped", [40, 50, 41]], [[9334, 9334], "disallowed_STD3_mapped", [40, 51, 41]], [[9335, 9335], "disallowed_STD3_mapped", [40, 52, 41]], [[9336, 9336], "disallowed_STD3_mapped", [40, 53, 41]], [[9337, 9337], "disallowed_STD3_mapped", [40, 54, 41]], [[9338, 9338], "disallowed_STD3_mapped", [40, 55, 41]], [[9339, 9339], "disallowed_STD3_mapped", [40, 56, 41]], [[9340, 9340], "disallowed_STD3_mapped", [40, 57, 41]], [[9341, 9341], "disallowed_STD3_mapped", [40, 49, 48, 41]], [[9342, 9342], "disallowed_STD3_mapped", [40, 49, 49, 41]], [[9343, 9343], "disallowed_STD3_mapped", [40, 49, 50, 41]], [[9344, 9344], "disallowed_STD3_mapped", [40, 49, 51, 41]], [[9345, 9345], "disallowed_STD3_mapped", [40, 49, 52, 41]], [[9346, 9346], "disallowed_STD3_mapped", [40, 49, 53, 41]], [[9347, 9347], "disallowed_STD3_mapped", [40, 49, 54, 41]], [[9348, 9348], "disallowed_STD3_mapped", [40, 49, 55, 41]], [[9349, 9349], "disallowed_STD3_mapped", [40, 49, 56, 41]], [[9350, 9350], "disallowed_STD3_mapped", [40, 49, 57, 41]], [[9351, 9351], "disallowed_STD3_mapped", [40, 50, 48, 41]], [[9352, 9371], "disallowed"], [[9372, 9372], "disallowed_STD3_mapped", [40, 97, 41]], [[9373, 9373], "disallowed_STD3_mapped", [40, 98, 41]], [[9374, 9374], "disallowed_STD3_mapped", [40, 99, 41]], [[9375, 9375], "disallowed_STD3_mapped", [40, 100, 41]], [[9376, 9376], "disallowed_STD3_mapped", [40, 101, 41]], [[9377, 9377], "disallowed_STD3_mapped", [40, 102, 41]], [[9378, 9378], "disallowed_STD3_mapped", [40, 103, 41]], [[9379, 9379], "disallowed_STD3_mapped", [40, 104, 41]], [[9380, 9380], "disallowed_STD3_mapped", [40, 105, 41]], [[9381, 9381], "disallowed_STD3_mapped", [40, 106, 41]], [[9382, 9382], "disallowed_STD3_mapped", [40, 107, 41]], [[9383, 9383], "disallowed_STD3_mapped", [40, 108, 41]], [[9384, 9384], "disallowed_STD3_mapped", [40, 109, 41]], [[9385, 9385], "disallowed_STD3_mapped", [40, 110, 41]], [[9386, 9386], "disallowed_STD3_mapped", [40, 111, 41]], [[9387, 9387], "disallowed_STD3_mapped", [40, 112, 41]], [[9388, 9388], "disallowed_STD3_mapped", [40, 113, 41]], [[9389, 9389], "disallowed_STD3_mapped", [40, 114, 41]], [[9390, 9390], "disallowed_STD3_mapped", [40, 115, 41]], [[9391, 9391], "disallowed_STD3_mapped", [40, 116, 41]], [[9392, 9392], "disallowed_STD3_mapped", [40, 117, 41]], [[9393, 9393], "disallowed_STD3_mapped", [40, 118, 41]], [[9394, 9394], "disallowed_STD3_mapped", [40, 119, 41]], [[9395, 9395], "disallowed_STD3_mapped", [40, 120, 41]], [[9396, 9396], "disallowed_STD3_mapped", [40, 121, 41]], [[9397, 9397], "disallowed_STD3_mapped", [40, 122, 41]], [[9398, 9398], "mapped", [97]], [[9399, 9399], "mapped", [98]], [[9400, 9400], "mapped", [99]], [[9401, 9401], "mapped", [100]], [[9402, 9402], "mapped", [101]], [[9403, 9403], "mapped", [102]], [[9404, 9404], "mapped", [103]], [[9405, 9405], "mapped", [104]], [[9406, 9406], "mapped", [105]], [[9407, 9407], "mapped", [106]], [[9408, 9408], "mapped", [107]], [[9409, 9409], "mapped", [108]], [[9410, 9410], "mapped", [109]], [[9411, 9411], "mapped", [110]], [[9412, 9412], "mapped", [111]], [[9413, 9413], "mapped", [112]], [[9414, 9414], "mapped", [113]], [[9415, 9415], "mapped", [114]], [[9416, 9416], "mapped", [115]], [[9417, 9417], "mapped", [116]], [[9418, 9418], "mapped", [117]], [[9419, 9419], "mapped", [118]], [[9420, 9420], "mapped", [119]], [[9421, 9421], "mapped", [120]], [[9422, 9422], "mapped", [121]], [[9423, 9423], "mapped", [122]], [[9424, 9424], "mapped", [97]], [[9425, 9425], "mapped", [98]], [[9426, 9426], "mapped", [99]], [[9427, 9427], "mapped", [100]], [[9428, 9428], "mapped", [101]], [[9429, 9429], "mapped", [102]], [[9430, 9430], "mapped", [103]], [[9431, 9431], "mapped", [104]], [[9432, 9432], "mapped", [105]], [[9433, 9433], "mapped", [106]], [[9434, 9434], "mapped", [107]], [[9435, 9435], "mapped", [108]], [[9436, 9436], "mapped", [109]], [[9437, 9437], "mapped", [110]], [[9438, 9438], "mapped", [111]], [[9439, 9439], "mapped", [112]], [[9440, 9440], "mapped", [113]], [[9441, 9441], "mapped", [114]], [[9442, 9442], "mapped", [115]], [[9443, 9443], "mapped", [116]], [[9444, 9444], "mapped", [117]], [[9445, 9445], "mapped", [118]], [[9446, 9446], "mapped", [119]], [[9447, 9447], "mapped", [120]], [[9448, 9448], "mapped", [121]], [[9449, 9449], "mapped", [122]], [[9450, 9450], "mapped", [48]], [[9451, 9470], "valid", [], "NV8"], [[9471, 9471], "valid", [], "NV8"], [[9472, 9621], "valid", [], "NV8"], [[9622, 9631], "valid", [], "NV8"], [[9632, 9711], "valid", [], "NV8"], [[9712, 9719], "valid", [], "NV8"], [[9720, 9727], "valid", [], "NV8"], [[9728, 9747], "valid", [], "NV8"], [[9748, 9749], "valid", [], "NV8"], [[9750, 9751], "valid", [], "NV8"], [[9752, 9752], "valid", [], "NV8"], [[9753, 9753], "valid", [], "NV8"], [[9754, 9839], "valid", [], "NV8"], [[9840, 9841], "valid", [], "NV8"], [[9842, 9853], "valid", [], "NV8"], [[9854, 9855], "valid", [], "NV8"], [[9856, 9865], "valid", [], "NV8"], [[9866, 9873], "valid", [], "NV8"], [[9874, 9884], "valid", [], "NV8"], [[9885, 9885], "valid", [], "NV8"], [[9886, 9887], "valid", [], "NV8"], [[9888, 9889], "valid", [], "NV8"], [[9890, 9905], "valid", [], "NV8"], [[9906, 9906], "valid", [], "NV8"], [[9907, 9916], "valid", [], "NV8"], [[9917, 9919], "valid", [], "NV8"], [[9920, 9923], "valid", [], "NV8"], [[9924, 9933], "valid", [], "NV8"], [[9934, 9934], "valid", [], "NV8"], [[9935, 9953], "valid", [], "NV8"], [[9954, 9954], "valid", [], "NV8"], [[9955, 9955], "valid", [], "NV8"], [[9956, 9959], "valid", [], "NV8"], [[9960, 9983], "valid", [], "NV8"], [[9984, 9984], "valid", [], "NV8"], [[9985, 9988], "valid", [], "NV8"], [[9989, 9989], "valid", [], "NV8"], [[9990, 9993], "valid", [], "NV8"], [[9994, 9995], "valid", [], "NV8"], [[9996, 10023], "valid", [], "NV8"], [[10024, 10024], "valid", [], "NV8"], [[10025, 10059], "valid", [], "NV8"], [[10060, 10060], "valid", [], "NV8"], [[10061, 10061], "valid", [], "NV8"], [[10062, 10062], "valid", [], "NV8"], [[10063, 10066], "valid", [], "NV8"], [[10067, 10069], "valid", [], "NV8"], [[10070, 10070], "valid", [], "NV8"], [[10071, 10071], "valid", [], "NV8"], [[10072, 10078], "valid", [], "NV8"], [[10079, 10080], "valid", [], "NV8"], [[10081, 10087], "valid", [], "NV8"], [[10088, 10101], "valid", [], "NV8"], [[10102, 10132], "valid", [], "NV8"], [[10133, 10135], "valid", [], "NV8"], [[10136, 10159], "valid", [], "NV8"], [[10160, 10160], "valid", [], "NV8"], [[10161, 10174], "valid", [], "NV8"], [[10175, 10175], "valid", [], "NV8"], [[10176, 10182], "valid", [], "NV8"], [[10183, 10186], "valid", [], "NV8"], [[10187, 10187], "valid", [], "NV8"], [[10188, 10188], "valid", [], "NV8"], [[10189, 10189], "valid", [], "NV8"], [[10190, 10191], "valid", [], "NV8"], [[10192, 10219], "valid", [], "NV8"], [[10220, 10223], "valid", [], "NV8"], [[10224, 10239], "valid", [], "NV8"], [[10240, 10495], "valid", [], "NV8"], [[10496, 10763], "valid", [], "NV8"], [[10764, 10764], "mapped", [8747, 8747, 8747, 8747]], [[10765, 10867], "valid", [], "NV8"], [[10868, 10868], "disallowed_STD3_mapped", [58, 58, 61]], [[10869, 10869], "disallowed_STD3_mapped", [61, 61]], [[10870, 10870], "disallowed_STD3_mapped", [61, 61, 61]], [[10871, 10971], "valid", [], "NV8"], [[10972, 10972], "mapped", [10973, 824]], [[10973, 11007], "valid", [], "NV8"], [[11008, 11021], "valid", [], "NV8"], [[11022, 11027], "valid", [], "NV8"], [[11028, 11034], "valid", [], "NV8"], [[11035, 11039], "valid", [], "NV8"], [[11040, 11043], "valid", [], "NV8"], [[11044, 11084], "valid", [], "NV8"], [[11085, 11087], "valid", [], "NV8"], [[11088, 11092], "valid", [], "NV8"], [[11093, 11097], "valid", [], "NV8"], [[11098, 11123], "valid", [], "NV8"], [[11124, 11125], "disallowed"], [[11126, 11157], "valid", [], "NV8"], [[11158, 11159], "disallowed"], [[11160, 11193], "valid", [], "NV8"], [[11194, 11196], "disallowed"], [[11197, 11208], "valid", [], "NV8"], [[11209, 11209], "disallowed"], [[11210, 11217], "valid", [], "NV8"], [[11218, 11243], "disallowed"], [[11244, 11247], "valid", [], "NV8"], [[11248, 11263], "disallowed"], [[11264, 11264], "mapped", [11312]], [[11265, 11265], "mapped", [11313]], [[11266, 11266], "mapped", [11314]], [[11267, 11267], "mapped", [11315]], [[11268, 11268], "mapped", [11316]], [[11269, 11269], "mapped", [11317]], [[11270, 11270], "mapped", [11318]], [[11271, 11271], "mapped", [11319]], [[11272, 11272], "mapped", [11320]], [[11273, 11273], "mapped", [11321]], [[11274, 11274], "mapped", [11322]], [[11275, 11275], "mapped", [11323]], [[11276, 11276], "mapped", [11324]], [[11277, 11277], "mapped", [11325]], [[11278, 11278], "mapped", [11326]], [[11279, 11279], "mapped", [11327]], [[11280, 11280], "mapped", [11328]], [[11281, 11281], "mapped", [11329]], [[11282, 11282], "mapped", [11330]], [[11283, 11283], "mapped", [11331]], [[11284, 11284], "mapped", [11332]], [[11285, 11285], "mapped", [11333]], [[11286, 11286], "mapped", [11334]], [[11287, 11287], "mapped", [11335]], [[11288, 11288], "mapped", [11336]], [[11289, 11289], "mapped", [11337]], [[11290, 11290], "mapped", [11338]], [[11291, 11291], "mapped", [11339]], [[11292, 11292], "mapped", [11340]], [[11293, 11293], "mapped", [11341]], [[11294, 11294], "mapped", [11342]], [[11295, 11295], "mapped", [11343]], [[11296, 11296], "mapped", [11344]], [[11297, 11297], "mapped", [11345]], [[11298, 11298], "mapped", [11346]], [[11299, 11299], "mapped", [11347]], [[11300, 11300], "mapped", [11348]], [[11301, 11301], "mapped", [11349]], [[11302, 11302], "mapped", [11350]], [[11303, 11303], "mapped", [11351]], [[11304, 11304], "mapped", [11352]], [[11305, 11305], "mapped", [11353]], [[11306, 11306], "mapped", [11354]], [[11307, 11307], "mapped", [11355]], [[11308, 11308], "mapped", [11356]], [[11309, 11309], "mapped", [11357]], [[11310, 11310], "mapped", [11358]], [[11311, 11311], "disallowed"], [[11312, 11358], "valid"], [[11359, 11359], "disallowed"], [[11360, 11360], "mapped", [11361]], [[11361, 11361], "valid"], [[11362, 11362], "mapped", [619]], [[11363, 11363], "mapped", [7549]], [[11364, 11364], "mapped", [637]], [[11365, 11366], "valid"], [[11367, 11367], "mapped", [11368]], [[11368, 11368], "valid"], [[11369, 11369], "mapped", [11370]], [[11370, 11370], "valid"], [[11371, 11371], "mapped", [11372]], [[11372, 11372], "valid"], [[11373, 11373], "mapped", [593]], [[11374, 11374], "mapped", [625]], [[11375, 11375], "mapped", [592]], [[11376, 11376], "mapped", [594]], [[11377, 11377], "valid"], [[11378, 11378], "mapped", [11379]], [[11379, 11379], "valid"], [[11380, 11380], "valid"], [[11381, 11381], "mapped", [11382]], [[11382, 11383], "valid"], [[11384, 11387], "valid"], [[11388, 11388], "mapped", [106]], [[11389, 11389], "mapped", [118]], [[11390, 11390], "mapped", [575]], [[11391, 11391], "mapped", [576]], [[11392, 11392], "mapped", [11393]], [[11393, 11393], "valid"], [[11394, 11394], "mapped", [11395]], [[11395, 11395], "valid"], [[11396, 11396], "mapped", [11397]], [[11397, 11397], "valid"], [[11398, 11398], "mapped", [11399]], [[11399, 11399], "valid"], [[11400, 11400], "mapped", [11401]], [[11401, 11401], "valid"], [[11402, 11402], "mapped", [11403]], [[11403, 11403], "valid"], [[11404, 11404], "mapped", [11405]], [[11405, 11405], "valid"], [[11406, 11406], "mapped", [11407]], [[11407, 11407], "valid"], [[11408, 11408], "mapped", [11409]], [[11409, 11409], "valid"], [[11410, 11410], "mapped", [11411]], [[11411, 11411], "valid"], [[11412, 11412], "mapped", [11413]], [[11413, 11413], "valid"], [[11414, 11414], "mapped", [11415]], [[11415, 11415], "valid"], [[11416, 11416], "mapped", [11417]], [[11417, 11417], "valid"], [[11418, 11418], "mapped", [11419]], [[11419, 11419], "valid"], [[11420, 11420], "mapped", [11421]], [[11421, 11421], "valid"], [[11422, 11422], "mapped", [11423]], [[11423, 11423], "valid"], [[11424, 11424], "mapped", [11425]], [[11425, 11425], "valid"], [[11426, 11426], "mapped", [11427]], [[11427, 11427], "valid"], [[11428, 11428], "mapped", [11429]], [[11429, 11429], "valid"], [[11430, 11430], "mapped", [11431]], [[11431, 11431], "valid"], [[11432, 11432], "mapped", [11433]], [[11433, 11433], "valid"], [[11434, 11434], "mapped", [11435]], [[11435, 11435], "valid"], [[11436, 11436], "mapped", [11437]], [[11437, 11437], "valid"], [[11438, 11438], "mapped", [11439]], [[11439, 11439], "valid"], [[11440, 11440], "mapped", [11441]], [[11441, 11441], "valid"], [[11442, 11442], "mapped", [11443]], [[11443, 11443], "valid"], [[11444, 11444], "mapped", [11445]], [[11445, 11445], "valid"], [[11446, 11446], "mapped", [11447]], [[11447, 11447], "valid"], [[11448, 11448], "mapped", [11449]], [[11449, 11449], "valid"], [[11450, 11450], "mapped", [11451]], [[11451, 11451], "valid"], [[11452, 11452], "mapped", [11453]], [[11453, 11453], "valid"], [[11454, 11454], "mapped", [11455]], [[11455, 11455], "valid"], [[11456, 11456], "mapped", [11457]], [[11457, 11457], "valid"], [[11458, 11458], "mapped", [11459]], [[11459, 11459], "valid"], [[11460, 11460], "mapped", [11461]], [[11461, 11461], "valid"], [[11462, 11462], "mapped", [11463]], [[11463, 11463], "valid"], [[11464, 11464], "mapped", [11465]], [[11465, 11465], "valid"], [[11466, 11466], "mapped", [11467]], [[11467, 11467], "valid"], [[11468, 11468], "mapped", [11469]], [[11469, 11469], "valid"], [[11470, 11470], "mapped", [11471]], [[11471, 11471], "valid"], [[11472, 11472], "mapped", [11473]], [[11473, 11473], "valid"], [[11474, 11474], "mapped", [11475]], [[11475, 11475], "valid"], [[11476, 11476], "mapped", [11477]], [[11477, 11477], "valid"], [[11478, 11478], "mapped", [11479]], [[11479, 11479], "valid"], [[11480, 11480], "mapped", [11481]], [[11481, 11481], "valid"], [[11482, 11482], "mapped", [11483]], [[11483, 11483], "valid"], [[11484, 11484], "mapped", [11485]], [[11485, 11485], "valid"], [[11486, 11486], "mapped", [11487]], [[11487, 11487], "valid"], [[11488, 11488], "mapped", [11489]], [[11489, 11489], "valid"], [[11490, 11490], "mapped", [11491]], [[11491, 11492], "valid"], [[11493, 11498], "valid", [], "NV8"], [[11499, 11499], "mapped", [11500]], [[11500, 11500], "valid"], [[11501, 11501], "mapped", [11502]], [[11502, 11505], "valid"], [[11506, 11506], "mapped", [11507]], [[11507, 11507], "valid"], [[11508, 11512], "disallowed"], [[11513, 11519], "valid", [], "NV8"], [[11520, 11557], "valid"], [[11558, 11558], "disallowed"], [[11559, 11559], "valid"], [[11560, 11564], "disallowed"], [[11565, 11565], "valid"], [[11566, 11567], "disallowed"], [[11568, 11621], "valid"], [[11622, 11623], "valid"], [[11624, 11630], "disallowed"], [[11631, 11631], "mapped", [11617]], [[11632, 11632], "valid", [], "NV8"], [[11633, 11646], "disallowed"], [[11647, 11647], "valid"], [[11648, 11670], "valid"], [[11671, 11679], "disallowed"], [[11680, 11686], "valid"], [[11687, 11687], "disallowed"], [[11688, 11694], "valid"], [[11695, 11695], "disallowed"], [[11696, 11702], "valid"], [[11703, 11703], "disallowed"], [[11704, 11710], "valid"], [[11711, 11711], "disallowed"], [[11712, 11718], "valid"], [[11719, 11719], "disallowed"], [[11720, 11726], "valid"], [[11727, 11727], "disallowed"], [[11728, 11734], "valid"], [[11735, 11735], "disallowed"], [[11736, 11742], "valid"], [[11743, 11743], "disallowed"], [[11744, 11775], "valid"], [[11776, 11799], "valid", [], "NV8"], [[11800, 11803], "valid", [], "NV8"], [[11804, 11805], "valid", [], "NV8"], [[11806, 11822], "valid", [], "NV8"], [[11823, 11823], "valid"], [[11824, 11824], "valid", [], "NV8"], [[11825, 11825], "valid", [], "NV8"], [[11826, 11835], "valid", [], "NV8"], [[11836, 11842], "valid", [], "NV8"], [[11843, 11903], "disallowed"], [[11904, 11929], "valid", [], "NV8"], [[11930, 11930], "disallowed"], [[11931, 11934], "valid", [], "NV8"], [[11935, 11935], "mapped", [27597]], [[11936, 12018], "valid", [], "NV8"], [[12019, 12019], "mapped", [40863]], [[12020, 12031], "disallowed"], [[12032, 12032], "mapped", [19968]], [[12033, 12033], "mapped", [20008]], [[12034, 12034], "mapped", [20022]], [[12035, 12035], "mapped", [20031]], [[12036, 12036], "mapped", [20057]], [[12037, 12037], "mapped", [20101]], [[12038, 12038], "mapped", [20108]], [[12039, 12039], "mapped", [20128]], [[12040, 12040], "mapped", [20154]], [[12041, 12041], "mapped", [20799]], [[12042, 12042], "mapped", [20837]], [[12043, 12043], "mapped", [20843]], [[12044, 12044], "mapped", [20866]], [[12045, 12045], "mapped", [20886]], [[12046, 12046], "mapped", [20907]], [[12047, 12047], "mapped", [20960]], [[12048, 12048], "mapped", [20981]], [[12049, 12049], "mapped", [20992]], [[12050, 12050], "mapped", [21147]], [[12051, 12051], "mapped", [21241]], [[12052, 12052], "mapped", [21269]], [[12053, 12053], "mapped", [21274]], [[12054, 12054], "mapped", [21304]], [[12055, 12055], "mapped", [21313]], [[12056, 12056], "mapped", [21340]], [[12057, 12057], "mapped", [21353]], [[12058, 12058], "mapped", [21378]], [[12059, 12059], "mapped", [21430]], [[12060, 12060], "mapped", [21448]], [[12061, 12061], "mapped", [21475]], [[12062, 12062], "mapped", [22231]], [[12063, 12063], "mapped", [22303]], [[12064, 12064], "mapped", [22763]], [[12065, 12065], "mapped", [22786]], [[12066, 12066], "mapped", [22794]], [[12067, 12067], "mapped", [22805]], [[12068, 12068], "mapped", [22823]], [[12069, 12069], "mapped", [22899]], [[12070, 12070], "mapped", [23376]], [[12071, 12071], "mapped", [23424]], [[12072, 12072], "mapped", [23544]], [[12073, 12073], "mapped", [23567]], [[12074, 12074], "mapped", [23586]], [[12075, 12075], "mapped", [23608]], [[12076, 12076], "mapped", [23662]], [[12077, 12077], "mapped", [23665]], [[12078, 12078], "mapped", [24027]], [[12079, 12079], "mapped", [24037]], [[12080, 12080], "mapped", [24049]], [[12081, 12081], "mapped", [24062]], [[12082, 12082], "mapped", [24178]], [[12083, 12083], "mapped", [24186]], [[12084, 12084], "mapped", [24191]], [[12085, 12085], "mapped", [24308]], [[12086, 12086], "mapped", [24318]], [[12087, 12087], "mapped", [24331]], [[12088, 12088], "mapped", [24339]], [[12089, 12089], "mapped", [24400]], [[12090, 12090], "mapped", [24417]], [[12091, 12091], "mapped", [24435]], [[12092, 12092], "mapped", [24515]], [[12093, 12093], "mapped", [25096]], [[12094, 12094], "mapped", [25142]], [[12095, 12095], "mapped", [25163]], [[12096, 12096], "mapped", [25903]], [[12097, 12097], "mapped", [25908]], [[12098, 12098], "mapped", [25991]], [[12099, 12099], "mapped", [26007]], [[12100, 12100], "mapped", [26020]], [[12101, 12101], "mapped", [26041]], [[12102, 12102], "mapped", [26080]], [[12103, 12103], "mapped", [26085]], [[12104, 12104], "mapped", [26352]], [[12105, 12105], "mapped", [26376]], [[12106, 12106], "mapped", [26408]], [[12107, 12107], "mapped", [27424]], [[12108, 12108], "mapped", [27490]], [[12109, 12109], "mapped", [27513]], [[12110, 12110], "mapped", [27571]], [[12111, 12111], "mapped", [27595]], [[12112, 12112], "mapped", [27604]], [[12113, 12113], "mapped", [27611]], [[12114, 12114], "mapped", [27663]], [[12115, 12115], "mapped", [27668]], [[12116, 12116], "mapped", [27700]], [[12117, 12117], "mapped", [28779]], [[12118, 12118], "mapped", [29226]], [[12119, 12119], "mapped", [29238]], [[12120, 12120], "mapped", [29243]], [[12121, 12121], "mapped", [29247]], [[12122, 12122], "mapped", [29255]], [[12123, 12123], "mapped", [29273]], [[12124, 12124], "mapped", [29275]], [[12125, 12125], "mapped", [29356]], [[12126, 12126], "mapped", [29572]], [[12127, 12127], "mapped", [29577]], [[12128, 12128], "mapped", [29916]], [[12129, 12129], "mapped", [29926]], [[12130, 12130], "mapped", [29976]], [[12131, 12131], "mapped", [29983]], [[12132, 12132], "mapped", [29992]], [[12133, 12133], "mapped", [3e4]], [[12134, 12134], "mapped", [30091]], [[12135, 12135], "mapped", [30098]], [[12136, 12136], "mapped", [30326]], [[12137, 12137], "mapped", [30333]], [[12138, 12138], "mapped", [30382]], [[12139, 12139], "mapped", [30399]], [[12140, 12140], "mapped", [30446]], [[12141, 12141], "mapped", [30683]], [[12142, 12142], "mapped", [30690]], [[12143, 12143], "mapped", [30707]], [[12144, 12144], "mapped", [31034]], [[12145, 12145], "mapped", [31160]], [[12146, 12146], "mapped", [31166]], [[12147, 12147], "mapped", [31348]], [[12148, 12148], "mapped", [31435]], [[12149, 12149], "mapped", [31481]], [[12150, 12150], "mapped", [31859]], [[12151, 12151], "mapped", [31992]], [[12152, 12152], "mapped", [32566]], [[12153, 12153], "mapped", [32593]], [[12154, 12154], "mapped", [32650]], [[12155, 12155], "mapped", [32701]], [[12156, 12156], "mapped", [32769]], [[12157, 12157], "mapped", [32780]], [[12158, 12158], "mapped", [32786]], [[12159, 12159], "mapped", [32819]], [[12160, 12160], "mapped", [32895]], [[12161, 12161], "mapped", [32905]], [[12162, 12162], "mapped", [33251]], [[12163, 12163], "mapped", [33258]], [[12164, 12164], "mapped", [33267]], [[12165, 12165], "mapped", [33276]], [[12166, 12166], "mapped", [33292]], [[12167, 12167], "mapped", [33307]], [[12168, 12168], "mapped", [33311]], [[12169, 12169], "mapped", [33390]], [[12170, 12170], "mapped", [33394]], [[12171, 12171], "mapped", [33400]], [[12172, 12172], "mapped", [34381]], [[12173, 12173], "mapped", [34411]], [[12174, 12174], "mapped", [34880]], [[12175, 12175], "mapped", [34892]], [[12176, 12176], "mapped", [34915]], [[12177, 12177], "mapped", [35198]], [[12178, 12178], "mapped", [35211]], [[12179, 12179], "mapped", [35282]], [[12180, 12180], "mapped", [35328]], [[12181, 12181], "mapped", [35895]], [[12182, 12182], "mapped", [35910]], [[12183, 12183], "mapped", [35925]], [[12184, 12184], "mapped", [35960]], [[12185, 12185], "mapped", [35997]], [[12186, 12186], "mapped", [36196]], [[12187, 12187], "mapped", [36208]], [[12188, 12188], "mapped", [36275]], [[12189, 12189], "mapped", [36523]], [[12190, 12190], "mapped", [36554]], [[12191, 12191], "mapped", [36763]], [[12192, 12192], "mapped", [36784]], [[12193, 12193], "mapped", [36789]], [[12194, 12194], "mapped", [37009]], [[12195, 12195], "mapped", [37193]], [[12196, 12196], "mapped", [37318]], [[12197, 12197], "mapped", [37324]], [[12198, 12198], "mapped", [37329]], [[12199, 12199], "mapped", [38263]], [[12200, 12200], "mapped", [38272]], [[12201, 12201], "mapped", [38428]], [[12202, 12202], "mapped", [38582]], [[12203, 12203], "mapped", [38585]], [[12204, 12204], "mapped", [38632]], [[12205, 12205], "mapped", [38737]], [[12206, 12206], "mapped", [38750]], [[12207, 12207], "mapped", [38754]], [[12208, 12208], "mapped", [38761]], [[12209, 12209], "mapped", [38859]], [[12210, 12210], "mapped", [38893]], [[12211, 12211], "mapped", [38899]], [[12212, 12212], "mapped", [38913]], [[12213, 12213], "mapped", [39080]], [[12214, 12214], "mapped", [39131]], [[12215, 12215], "mapped", [39135]], [[12216, 12216], "mapped", [39318]], [[12217, 12217], "mapped", [39321]], [[12218, 12218], "mapped", [39340]], [[12219, 12219], "mapped", [39592]], [[12220, 12220], "mapped", [39640]], [[12221, 12221], "mapped", [39647]], [[12222, 12222], "mapped", [39717]], [[12223, 12223], "mapped", [39727]], [[12224, 12224], "mapped", [39730]], [[12225, 12225], "mapped", [39740]], [[12226, 12226], "mapped", [39770]], [[12227, 12227], "mapped", [40165]], [[12228, 12228], "mapped", [40565]], [[12229, 12229], "mapped", [40575]], [[12230, 12230], "mapped", [40613]], [[12231, 12231], "mapped", [40635]], [[12232, 12232], "mapped", [40643]], [[12233, 12233], "mapped", [40653]], [[12234, 12234], "mapped", [40657]], [[12235, 12235], "mapped", [40697]], [[12236, 12236], "mapped", [40701]], [[12237, 12237], "mapped", [40718]], [[12238, 12238], "mapped", [40723]], [[12239, 12239], "mapped", [40736]], [[12240, 12240], "mapped", [40763]], [[12241, 12241], "mapped", [40778]], [[12242, 12242], "mapped", [40786]], [[12243, 12243], "mapped", [40845]], [[12244, 12244], "mapped", [40860]], [[12245, 12245], "mapped", [40864]], [[12246, 12271], "disallowed"], [[12272, 12283], "disallowed"], [[12284, 12287], "disallowed"], [[12288, 12288], "disallowed_STD3_mapped", [32]], [[12289, 12289], "valid", [], "NV8"], [[12290, 12290], "mapped", [46]], [[12291, 12292], "valid", [], "NV8"], [[12293, 12295], "valid"], [[12296, 12329], "valid", [], "NV8"], [[12330, 12333], "valid"], [[12334, 12341], "valid", [], "NV8"], [[12342, 12342], "mapped", [12306]], [[12343, 12343], "valid", [], "NV8"], [[12344, 12344], "mapped", [21313]], [[12345, 12345], "mapped", [21316]], [[12346, 12346], "mapped", [21317]], [[12347, 12347], "valid", [], "NV8"], [[12348, 12348], "valid"], [[12349, 12349], "valid", [], "NV8"], [[12350, 12350], "valid", [], "NV8"], [[12351, 12351], "valid", [], "NV8"], [[12352, 12352], "disallowed"], [[12353, 12436], "valid"], [[12437, 12438], "valid"], [[12439, 12440], "disallowed"], [[12441, 12442], "valid"], [[12443, 12443], "disallowed_STD3_mapped", [32, 12441]], [[12444, 12444], "disallowed_STD3_mapped", [32, 12442]], [[12445, 12446], "valid"], [[12447, 12447], "mapped", [12424, 12426]], [[12448, 12448], "valid", [], "NV8"], [[12449, 12542], "valid"], [[12543, 12543], "mapped", [12467, 12488]], [[12544, 12548], "disallowed"], [[12549, 12588], "valid"], [[12589, 12589], "valid"], [[12590, 12592], "disallowed"], [[12593, 12593], "mapped", [4352]], [[12594, 12594], "mapped", [4353]], [[12595, 12595], "mapped", [4522]], [[12596, 12596], "mapped", [4354]], [[12597, 12597], "mapped", [4524]], [[12598, 12598], "mapped", [4525]], [[12599, 12599], "mapped", [4355]], [[12600, 12600], "mapped", [4356]], [[12601, 12601], "mapped", [4357]], [[12602, 12602], "mapped", [4528]], [[12603, 12603], "mapped", [4529]], [[12604, 12604], "mapped", [4530]], [[12605, 12605], "mapped", [4531]], [[12606, 12606], "mapped", [4532]], [[12607, 12607], "mapped", [4533]], [[12608, 12608], "mapped", [4378]], [[12609, 12609], "mapped", [4358]], [[12610, 12610], "mapped", [4359]], [[12611, 12611], "mapped", [4360]], [[12612, 12612], "mapped", [4385]], [[12613, 12613], "mapped", [4361]], [[12614, 12614], "mapped", [4362]], [[12615, 12615], "mapped", [4363]], [[12616, 12616], "mapped", [4364]], [[12617, 12617], "mapped", [4365]], [[12618, 12618], "mapped", [4366]], [[12619, 12619], "mapped", [4367]], [[12620, 12620], "mapped", [4368]], [[12621, 12621], "mapped", [4369]], [[12622, 12622], "mapped", [4370]], [[12623, 12623], "mapped", [4449]], [[12624, 12624], "mapped", [4450]], [[12625, 12625], "mapped", [4451]], [[12626, 12626], "mapped", [4452]], [[12627, 12627], "mapped", [4453]], [[12628, 12628], "mapped", [4454]], [[12629, 12629], "mapped", [4455]], [[12630, 12630], "mapped", [4456]], [[12631, 12631], "mapped", [4457]], [[12632, 12632], "mapped", [4458]], [[12633, 12633], "mapped", [4459]], [[12634, 12634], "mapped", [4460]], [[12635, 12635], "mapped", [4461]], [[12636, 12636], "mapped", [4462]], [[12637, 12637], "mapped", [4463]], [[12638, 12638], "mapped", [4464]], [[12639, 12639], "mapped", [4465]], [[12640, 12640], "mapped", [4466]], [[12641, 12641], "mapped", [4467]], [[12642, 12642], "mapped", [4468]], [[12643, 12643], "mapped", [4469]], [[12644, 12644], "disallowed"], [[12645, 12645], "mapped", [4372]], [[12646, 12646], "mapped", [4373]], [[12647, 12647], "mapped", [4551]], [[12648, 12648], "mapped", [4552]], [[12649, 12649], "mapped", [4556]], [[12650, 12650], "mapped", [4558]], [[12651, 12651], "mapped", [4563]], [[12652, 12652], "mapped", [4567]], [[12653, 12653], "mapped", [4569]], [[12654, 12654], "mapped", [4380]], [[12655, 12655], "mapped", [4573]], [[12656, 12656], "mapped", [4575]], [[12657, 12657], "mapped", [4381]], [[12658, 12658], "mapped", [4382]], [[12659, 12659], "mapped", [4384]], [[12660, 12660], "mapped", [4386]], [[12661, 12661], "mapped", [4387]], [[12662, 12662], "mapped", [4391]], [[12663, 12663], "mapped", [4393]], [[12664, 12664], "mapped", [4395]], [[12665, 12665], "mapped", [4396]], [[12666, 12666], "mapped", [4397]], [[12667, 12667], "mapped", [4398]], [[12668, 12668], "mapped", [4399]], [[12669, 12669], "mapped", [4402]], [[12670, 12670], "mapped", [4406]], [[12671, 12671], "mapped", [4416]], [[12672, 12672], "mapped", [4423]], [[12673, 12673], "mapped", [4428]], [[12674, 12674], "mapped", [4593]], [[12675, 12675], "mapped", [4594]], [[12676, 12676], "mapped", [4439]], [[12677, 12677], "mapped", [4440]], [[12678, 12678], "mapped", [4441]], [[12679, 12679], "mapped", [4484]], [[12680, 12680], "mapped", [4485]], [[12681, 12681], "mapped", [4488]], [[12682, 12682], "mapped", [4497]], [[12683, 12683], "mapped", [4498]], [[12684, 12684], "mapped", [4500]], [[12685, 12685], "mapped", [4510]], [[12686, 12686], "mapped", [4513]], [[12687, 12687], "disallowed"], [[12688, 12689], "valid", [], "NV8"], [[12690, 12690], "mapped", [19968]], [[12691, 12691], "mapped", [20108]], [[12692, 12692], "mapped", [19977]], [[12693, 12693], "mapped", [22235]], [[12694, 12694], "mapped", [19978]], [[12695, 12695], "mapped", [20013]], [[12696, 12696], "mapped", [19979]], [[12697, 12697], "mapped", [30002]], [[12698, 12698], "mapped", [20057]], [[12699, 12699], "mapped", [19993]], [[12700, 12700], "mapped", [19969]], [[12701, 12701], "mapped", [22825]], [[12702, 12702], "mapped", [22320]], [[12703, 12703], "mapped", [20154]], [[12704, 12727], "valid"], [[12728, 12730], "valid"], [[12731, 12735], "disallowed"], [[12736, 12751], "valid", [], "NV8"], [[12752, 12771], "valid", [], "NV8"], [[12772, 12783], "disallowed"], [[12784, 12799], "valid"], [[12800, 12800], "disallowed_STD3_mapped", [40, 4352, 41]], [[12801, 12801], "disallowed_STD3_mapped", [40, 4354, 41]], [[12802, 12802], "disallowed_STD3_mapped", [40, 4355, 41]], [[12803, 12803], "disallowed_STD3_mapped", [40, 4357, 41]], [[12804, 12804], "disallowed_STD3_mapped", [40, 4358, 41]], [[12805, 12805], "disallowed_STD3_mapped", [40, 4359, 41]], [[12806, 12806], "disallowed_STD3_mapped", [40, 4361, 41]], [[12807, 12807], "disallowed_STD3_mapped", [40, 4363, 41]], [[12808, 12808], "disallowed_STD3_mapped", [40, 4364, 41]], [[12809, 12809], "disallowed_STD3_mapped", [40, 4366, 41]], [[12810, 12810], "disallowed_STD3_mapped", [40, 4367, 41]], [[12811, 12811], "disallowed_STD3_mapped", [40, 4368, 41]], [[12812, 12812], "disallowed_STD3_mapped", [40, 4369, 41]], [[12813, 12813], "disallowed_STD3_mapped", [40, 4370, 41]], [[12814, 12814], "disallowed_STD3_mapped", [40, 44032, 41]], [[12815, 12815], "disallowed_STD3_mapped", [40, 45208, 41]], [[12816, 12816], "disallowed_STD3_mapped", [40, 45796, 41]], [[12817, 12817], "disallowed_STD3_mapped", [40, 46972, 41]], [[12818, 12818], "disallowed_STD3_mapped", [40, 47560, 41]], [[12819, 12819], "disallowed_STD3_mapped", [40, 48148, 41]], [[12820, 12820], "disallowed_STD3_mapped", [40, 49324, 41]], [[12821, 12821], "disallowed_STD3_mapped", [40, 50500, 41]], [[12822, 12822], "disallowed_STD3_mapped", [40, 51088, 41]], [[12823, 12823], "disallowed_STD3_mapped", [40, 52264, 41]], [[12824, 12824], "disallowed_STD3_mapped", [40, 52852, 41]], [[12825, 12825], "disallowed_STD3_mapped", [40, 53440, 41]], [[12826, 12826], "disallowed_STD3_mapped", [40, 54028, 41]], [[12827, 12827], "disallowed_STD3_mapped", [40, 54616, 41]], [[12828, 12828], "disallowed_STD3_mapped", [40, 51452, 41]], [[12829, 12829], "disallowed_STD3_mapped", [40, 50724, 51204, 41]], [[12830, 12830], "disallowed_STD3_mapped", [40, 50724, 54980, 41]], [[12831, 12831], "disallowed"], [[12832, 12832], "disallowed_STD3_mapped", [40, 19968, 41]], [[12833, 12833], "disallowed_STD3_mapped", [40, 20108, 41]], [[12834, 12834], "disallowed_STD3_mapped", [40, 19977, 41]], [[12835, 12835], "disallowed_STD3_mapped", [40, 22235, 41]], [[12836, 12836], "disallowed_STD3_mapped", [40, 20116, 41]], [[12837, 12837], "disallowed_STD3_mapped", [40, 20845, 41]], [[12838, 12838], "disallowed_STD3_mapped", [40, 19971, 41]], [[12839, 12839], "disallowed_STD3_mapped", [40, 20843, 41]], [[12840, 12840], "disallowed_STD3_mapped", [40, 20061, 41]], [[12841, 12841], "disallowed_STD3_mapped", [40, 21313, 41]], [[12842, 12842], "disallowed_STD3_mapped", [40, 26376, 41]], [[12843, 12843], "disallowed_STD3_mapped", [40, 28779, 41]], [[12844, 12844], "disallowed_STD3_mapped", [40, 27700, 41]], [[12845, 12845], "disallowed_STD3_mapped", [40, 26408, 41]], [[12846, 12846], "disallowed_STD3_mapped", [40, 37329, 41]], [[12847, 12847], "disallowed_STD3_mapped", [40, 22303, 41]], [[12848, 12848], "disallowed_STD3_mapped", [40, 26085, 41]], [[12849, 12849], "disallowed_STD3_mapped", [40, 26666, 41]], [[12850, 12850], "disallowed_STD3_mapped", [40, 26377, 41]], [[12851, 12851], "disallowed_STD3_mapped", [40, 31038, 41]], [[12852, 12852], "disallowed_STD3_mapped", [40, 21517, 41]], [[12853, 12853], "disallowed_STD3_mapped", [40, 29305, 41]], [[12854, 12854], "disallowed_STD3_mapped", [40, 36001, 41]], [[12855, 12855], "disallowed_STD3_mapped", [40, 31069, 41]], [[12856, 12856], "disallowed_STD3_mapped", [40, 21172, 41]], [[12857, 12857], "disallowed_STD3_mapped", [40, 20195, 41]], [[12858, 12858], "disallowed_STD3_mapped", [40, 21628, 41]], [[12859, 12859], "disallowed_STD3_mapped", [40, 23398, 41]], [[12860, 12860], "disallowed_STD3_mapped", [40, 30435, 41]], [[12861, 12861], "disallowed_STD3_mapped", [40, 20225, 41]], [[12862, 12862], "disallowed_STD3_mapped", [40, 36039, 41]], [[12863, 12863], "disallowed_STD3_mapped", [40, 21332, 41]], [[12864, 12864], "disallowed_STD3_mapped", [40, 31085, 41]], [[12865, 12865], "disallowed_STD3_mapped", [40, 20241, 41]], [[12866, 12866], "disallowed_STD3_mapped", [40, 33258, 41]], [[12867, 12867], "disallowed_STD3_mapped", [40, 33267, 41]], [[12868, 12868], "mapped", [21839]], [[12869, 12869], "mapped", [24188]], [[12870, 12870], "mapped", [25991]], [[12871, 12871], "mapped", [31631]], [[12872, 12879], "valid", [], "NV8"], [[12880, 12880], "mapped", [112, 116, 101]], [[12881, 12881], "mapped", [50, 49]], [[12882, 12882], "mapped", [50, 50]], [[12883, 12883], "mapped", [50, 51]], [[12884, 12884], "mapped", [50, 52]], [[12885, 12885], "mapped", [50, 53]], [[12886, 12886], "mapped", [50, 54]], [[12887, 12887], "mapped", [50, 55]], [[12888, 12888], "mapped", [50, 56]], [[12889, 12889], "mapped", [50, 57]], [[12890, 12890], "mapped", [51, 48]], [[12891, 12891], "mapped", [51, 49]], [[12892, 12892], "mapped", [51, 50]], [[12893, 12893], "mapped", [51, 51]], [[12894, 12894], "mapped", [51, 52]], [[12895, 12895], "mapped", [51, 53]], [[12896, 12896], "mapped", [4352]], [[12897, 12897], "mapped", [4354]], [[12898, 12898], "mapped", [4355]], [[12899, 12899], "mapped", [4357]], [[12900, 12900], "mapped", [4358]], [[12901, 12901], "mapped", [4359]], [[12902, 12902], "mapped", [4361]], [[12903, 12903], "mapped", [4363]], [[12904, 12904], "mapped", [4364]], [[12905, 12905], "mapped", [4366]], [[12906, 12906], "mapped", [4367]], [[12907, 12907], "mapped", [4368]], [[12908, 12908], "mapped", [4369]], [[12909, 12909], "mapped", [4370]], [[12910, 12910], "mapped", [44032]], [[12911, 12911], "mapped", [45208]], [[12912, 12912], "mapped", [45796]], [[12913, 12913], "mapped", [46972]], [[12914, 12914], "mapped", [47560]], [[12915, 12915], "mapped", [48148]], [[12916, 12916], "mapped", [49324]], [[12917, 12917], "mapped", [50500]], [[12918, 12918], "mapped", [51088]], [[12919, 12919], "mapped", [52264]], [[12920, 12920], "mapped", [52852]], [[12921, 12921], "mapped", [53440]], [[12922, 12922], "mapped", [54028]], [[12923, 12923], "mapped", [54616]], [[12924, 12924], "mapped", [52280, 44256]], [[12925, 12925], "mapped", [51452, 51032]], [[12926, 12926], "mapped", [50864]], [[12927, 12927], "valid", [], "NV8"], [[12928, 12928], "mapped", [19968]], [[12929, 12929], "mapped", [20108]], [[12930, 12930], "mapped", [19977]], [[12931, 12931], "mapped", [22235]], [[12932, 12932], "mapped", [20116]], [[12933, 12933], "mapped", [20845]], [[12934, 12934], "mapped", [19971]], [[12935, 12935], "mapped", [20843]], [[12936, 12936], "mapped", [20061]], [[12937, 12937], "mapped", [21313]], [[12938, 12938], "mapped", [26376]], [[12939, 12939], "mapped", [28779]], [[12940, 12940], "mapped", [27700]], [[12941, 12941], "mapped", [26408]], [[12942, 12942], "mapped", [37329]], [[12943, 12943], "mapped", [22303]], [[12944, 12944], "mapped", [26085]], [[12945, 12945], "mapped", [26666]], [[12946, 12946], "mapped", [26377]], [[12947, 12947], "mapped", [31038]], [[12948, 12948], "mapped", [21517]], [[12949, 12949], "mapped", [29305]], [[12950, 12950], "mapped", [36001]], [[12951, 12951], "mapped", [31069]], [[12952, 12952], "mapped", [21172]], [[12953, 12953], "mapped", [31192]], [[12954, 12954], "mapped", [30007]], [[12955, 12955], "mapped", [22899]], [[12956, 12956], "mapped", [36969]], [[12957, 12957], "mapped", [20778]], [[12958, 12958], "mapped", [21360]], [[12959, 12959], "mapped", [27880]], [[12960, 12960], "mapped", [38917]], [[12961, 12961], "mapped", [20241]], [[12962, 12962], "mapped", [20889]], [[12963, 12963], "mapped", [27491]], [[12964, 12964], "mapped", [19978]], [[12965, 12965], "mapped", [20013]], [[12966, 12966], "mapped", [19979]], [[12967, 12967], "mapped", [24038]], [[12968, 12968], "mapped", [21491]], [[12969, 12969], "mapped", [21307]], [[12970, 12970], "mapped", [23447]], [[12971, 12971], "mapped", [23398]], [[12972, 12972], "mapped", [30435]], [[12973, 12973], "mapped", [20225]], [[12974, 12974], "mapped", [36039]], [[12975, 12975], "mapped", [21332]], [[12976, 12976], "mapped", [22812]], [[12977, 12977], "mapped", [51, 54]], [[12978, 12978], "mapped", [51, 55]], [[12979, 12979], "mapped", [51, 56]], [[12980, 12980], "mapped", [51, 57]], [[12981, 12981], "mapped", [52, 48]], [[12982, 12982], "mapped", [52, 49]], [[12983, 12983], "mapped", [52, 50]], [[12984, 12984], "mapped", [52, 51]], [[12985, 12985], "mapped", [52, 52]], [[12986, 12986], "mapped", [52, 53]], [[12987, 12987], "mapped", [52, 54]], [[12988, 12988], "mapped", [52, 55]], [[12989, 12989], "mapped", [52, 56]], [[12990, 12990], "mapped", [52, 57]], [[12991, 12991], "mapped", [53, 48]], [[12992, 12992], "mapped", [49, 26376]], [[12993, 12993], "mapped", [50, 26376]], [[12994, 12994], "mapped", [51, 26376]], [[12995, 12995], "mapped", [52, 26376]], [[12996, 12996], "mapped", [53, 26376]], [[12997, 12997], "mapped", [54, 26376]], [[12998, 12998], "mapped", [55, 26376]], [[12999, 12999], "mapped", [56, 26376]], [[13e3, 13e3], "mapped", [57, 26376]], [[13001, 13001], "mapped", [49, 48, 26376]], [[13002, 13002], "mapped", [49, 49, 26376]], [[13003, 13003], "mapped", [49, 50, 26376]], [[13004, 13004], "mapped", [104, 103]], [[13005, 13005], "mapped", [101, 114, 103]], [[13006, 13006], "mapped", [101, 118]], [[13007, 13007], "mapped", [108, 116, 100]], [[13008, 13008], "mapped", [12450]], [[13009, 13009], "mapped", [12452]], [[13010, 13010], "mapped", [12454]], [[13011, 13011], "mapped", [12456]], [[13012, 13012], "mapped", [12458]], [[13013, 13013], "mapped", [12459]], [[13014, 13014], "mapped", [12461]], [[13015, 13015], "mapped", [12463]], [[13016, 13016], "mapped", [12465]], [[13017, 13017], "mapped", [12467]], [[13018, 13018], "mapped", [12469]], [[13019, 13019], "mapped", [12471]], [[13020, 13020], "mapped", [12473]], [[13021, 13021], "mapped", [12475]], [[13022, 13022], "mapped", [12477]], [[13023, 13023], "mapped", [12479]], [[13024, 13024], "mapped", [12481]], [[13025, 13025], "mapped", [12484]], [[13026, 13026], "mapped", [12486]], [[13027, 13027], "mapped", [12488]], [[13028, 13028], "mapped", [12490]], [[13029, 13029], "mapped", [12491]], [[13030, 13030], "mapped", [12492]], [[13031, 13031], "mapped", [12493]], [[13032, 13032], "mapped", [12494]], [[13033, 13033], "mapped", [12495]], [[13034, 13034], "mapped", [12498]], [[13035, 13035], "mapped", [12501]], [[13036, 13036], "mapped", [12504]], [[13037, 13037], "mapped", [12507]], [[13038, 13038], "mapped", [12510]], [[13039, 13039], "mapped", [12511]], [[13040, 13040], "mapped", [12512]], [[13041, 13041], "mapped", [12513]], [[13042, 13042], "mapped", [12514]], [[13043, 13043], "mapped", [12516]], [[13044, 13044], "mapped", [12518]], [[13045, 13045], "mapped", [12520]], [[13046, 13046], "mapped", [12521]], [[13047, 13047], "mapped", [12522]], [[13048, 13048], "mapped", [12523]], [[13049, 13049], "mapped", [12524]], [[13050, 13050], "mapped", [12525]], [[13051, 13051], "mapped", [12527]], [[13052, 13052], "mapped", [12528]], [[13053, 13053], "mapped", [12529]], [[13054, 13054], "mapped", [12530]], [[13055, 13055], "disallowed"], [[13056, 13056], "mapped", [12450, 12497, 12540, 12488]], [[13057, 13057], "mapped", [12450, 12523, 12501, 12449]], [[13058, 13058], "mapped", [12450, 12531, 12506, 12450]], [[13059, 13059], "mapped", [12450, 12540, 12523]], [[13060, 13060], "mapped", [12452, 12491, 12531, 12464]], [[13061, 13061], "mapped", [12452, 12531, 12481]], [[13062, 13062], "mapped", [12454, 12457, 12531]], [[13063, 13063], "mapped", [12456, 12473, 12463, 12540, 12489]], [[13064, 13064], "mapped", [12456, 12540, 12459, 12540]], [[13065, 13065], "mapped", [12458, 12531, 12473]], [[13066, 13066], "mapped", [12458, 12540, 12512]], [[13067, 13067], "mapped", [12459, 12452, 12522]], [[13068, 13068], "mapped", [12459, 12521, 12483, 12488]], [[13069, 13069], "mapped", [12459, 12525, 12522, 12540]], [[13070, 13070], "mapped", [12460, 12525, 12531]], [[13071, 13071], "mapped", [12460, 12531, 12510]], [[13072, 13072], "mapped", [12462, 12460]], [[13073, 13073], "mapped", [12462, 12491, 12540]], [[13074, 13074], "mapped", [12461, 12517, 12522, 12540]], [[13075, 13075], "mapped", [12462, 12523, 12480, 12540]], [[13076, 13076], "mapped", [12461, 12525]], [[13077, 13077], "mapped", [12461, 12525, 12464, 12521, 12512]], [[13078, 13078], "mapped", [12461, 12525, 12513, 12540, 12488, 12523]], [[13079, 13079], "mapped", [12461, 12525, 12527, 12483, 12488]], [[13080, 13080], "mapped", [12464, 12521, 12512]], [[13081, 13081], "mapped", [12464, 12521, 12512, 12488, 12531]], [[13082, 13082], "mapped", [12463, 12523, 12476, 12452, 12525]], [[13083, 13083], "mapped", [12463, 12525, 12540, 12493]], [[13084, 13084], "mapped", [12465, 12540, 12473]], [[13085, 13085], "mapped", [12467, 12523, 12490]], [[13086, 13086], "mapped", [12467, 12540, 12509]], [[13087, 13087], "mapped", [12469, 12452, 12463, 12523]], [[13088, 13088], "mapped", [12469, 12531, 12481, 12540, 12512]], [[13089, 13089], "mapped", [12471, 12522, 12531, 12464]], [[13090, 13090], "mapped", [12475, 12531, 12481]], [[13091, 13091], "mapped", [12475, 12531, 12488]], [[13092, 13092], "mapped", [12480, 12540, 12473]], [[13093, 13093], "mapped", [12487, 12471]], [[13094, 13094], "mapped", [12489, 12523]], [[13095, 13095], "mapped", [12488, 12531]], [[13096, 13096], "mapped", [12490, 12494]], [[13097, 13097], "mapped", [12494, 12483, 12488]], [[13098, 13098], "mapped", [12495, 12452, 12484]], [[13099, 13099], "mapped", [12497, 12540, 12475, 12531, 12488]], [[13100, 13100], "mapped", [12497, 12540, 12484]], [[13101, 13101], "mapped", [12496, 12540, 12524, 12523]], [[13102, 13102], "mapped", [12500, 12450, 12473, 12488, 12523]], [[13103, 13103], "mapped", [12500, 12463, 12523]], [[13104, 13104], "mapped", [12500, 12467]], [[13105, 13105], "mapped", [12499, 12523]], [[13106, 13106], "mapped", [12501, 12449, 12521, 12483, 12489]], [[13107, 13107], "mapped", [12501, 12451, 12540, 12488]], [[13108, 13108], "mapped", [12502, 12483, 12471, 12455, 12523]], [[13109, 13109], "mapped", [12501, 12521, 12531]], [[13110, 13110], "mapped", [12504, 12463, 12479, 12540, 12523]], [[13111, 13111], "mapped", [12506, 12477]], [[13112, 13112], "mapped", [12506, 12491, 12498]], [[13113, 13113], "mapped", [12504, 12523, 12484]], [[13114, 13114], "mapped", [12506, 12531, 12473]], [[13115, 13115], "mapped", [12506, 12540, 12472]], [[13116, 13116], "mapped", [12505, 12540, 12479]], [[13117, 13117], "mapped", [12509, 12452, 12531, 12488]], [[13118, 13118], "mapped", [12508, 12523, 12488]], [[13119, 13119], "mapped", [12507, 12531]], [[13120, 13120], "mapped", [12509, 12531, 12489]], [[13121, 13121], "mapped", [12507, 12540, 12523]], [[13122, 13122], "mapped", [12507, 12540, 12531]], [[13123, 13123], "mapped", [12510, 12452, 12463, 12525]], [[13124, 13124], "mapped", [12510, 12452, 12523]], [[13125, 13125], "mapped", [12510, 12483, 12495]], [[13126, 13126], "mapped", [12510, 12523, 12463]], [[13127, 13127], "mapped", [12510, 12531, 12471, 12519, 12531]], [[13128, 13128], "mapped", [12511, 12463, 12525, 12531]], [[13129, 13129], "mapped", [12511, 12522]], [[13130, 13130], "mapped", [12511, 12522, 12496, 12540, 12523]], [[13131, 13131], "mapped", [12513, 12460]], [[13132, 13132], "mapped", [12513, 12460, 12488, 12531]], [[13133, 13133], "mapped", [12513, 12540, 12488, 12523]], [[13134, 13134], "mapped", [12516, 12540, 12489]], [[13135, 13135], "mapped", [12516, 12540, 12523]], [[13136, 13136], "mapped", [12518, 12450, 12531]], [[13137, 13137], "mapped", [12522, 12483, 12488, 12523]], [[13138, 13138], "mapped", [12522, 12521]], [[13139, 13139], "mapped", [12523, 12500, 12540]], [[13140, 13140], "mapped", [12523, 12540, 12502, 12523]], [[13141, 13141], "mapped", [12524, 12512]], [[13142, 13142], "mapped", [12524, 12531, 12488, 12466, 12531]], [[13143, 13143], "mapped", [12527, 12483, 12488]], [[13144, 13144], "mapped", [48, 28857]], [[13145, 13145], "mapped", [49, 28857]], [[13146, 13146], "mapped", [50, 28857]], [[13147, 13147], "mapped", [51, 28857]], [[13148, 13148], "mapped", [52, 28857]], [[13149, 13149], "mapped", [53, 28857]], [[13150, 13150], "mapped", [54, 28857]], [[13151, 13151], "mapped", [55, 28857]], [[13152, 13152], "mapped", [56, 28857]], [[13153, 13153], "mapped", [57, 28857]], [[13154, 13154], "mapped", [49, 48, 28857]], [[13155, 13155], "mapped", [49, 49, 28857]], [[13156, 13156], "mapped", [49, 50, 28857]], [[13157, 13157], "mapped", [49, 51, 28857]], [[13158, 13158], "mapped", [49, 52, 28857]], [[13159, 13159], "mapped", [49, 53, 28857]], [[13160, 13160], "mapped", [49, 54, 28857]], [[13161, 13161], "mapped", [49, 55, 28857]], [[13162, 13162], "mapped", [49, 56, 28857]], [[13163, 13163], "mapped", [49, 57, 28857]], [[13164, 13164], "mapped", [50, 48, 28857]], [[13165, 13165], "mapped", [50, 49, 28857]], [[13166, 13166], "mapped", [50, 50, 28857]], [[13167, 13167], "mapped", [50, 51, 28857]], [[13168, 13168], "mapped", [50, 52, 28857]], [[13169, 13169], "mapped", [104, 112, 97]], [[13170, 13170], "mapped", [100, 97]], [[13171, 13171], "mapped", [97, 117]], [[13172, 13172], "mapped", [98, 97, 114]], [[13173, 13173], "mapped", [111, 118]], [[13174, 13174], "mapped", [112, 99]], [[13175, 13175], "mapped", [100, 109]], [[13176, 13176], "mapped", [100, 109, 50]], [[13177, 13177], "mapped", [100, 109, 51]], [[13178, 13178], "mapped", [105, 117]], [[13179, 13179], "mapped", [24179, 25104]], [[13180, 13180], "mapped", [26157, 21644]], [[13181, 13181], "mapped", [22823, 27491]], [[13182, 13182], "mapped", [26126, 27835]], [[13183, 13183], "mapped", [26666, 24335, 20250, 31038]], [[13184, 13184], "mapped", [112, 97]], [[13185, 13185], "mapped", [110, 97]], [[13186, 13186], "mapped", [956, 97]], [[13187, 13187], "mapped", [109, 97]], [[13188, 13188], "mapped", [107, 97]], [[13189, 13189], "mapped", [107, 98]], [[13190, 13190], "mapped", [109, 98]], [[13191, 13191], "mapped", [103, 98]], [[13192, 13192], "mapped", [99, 97, 108]], [[13193, 13193], "mapped", [107, 99, 97, 108]], [[13194, 13194], "mapped", [112, 102]], [[13195, 13195], "mapped", [110, 102]], [[13196, 13196], "mapped", [956, 102]], [[13197, 13197], "mapped", [956, 103]], [[13198, 13198], "mapped", [109, 103]], [[13199, 13199], "mapped", [107, 103]], [[13200, 13200], "mapped", [104, 122]], [[13201, 13201], "mapped", [107, 104, 122]], [[13202, 13202], "mapped", [109, 104, 122]], [[13203, 13203], "mapped", [103, 104, 122]], [[13204, 13204], "mapped", [116, 104, 122]], [[13205, 13205], "mapped", [956, 108]], [[13206, 13206], "mapped", [109, 108]], [[13207, 13207], "mapped", [100, 108]], [[13208, 13208], "mapped", [107, 108]], [[13209, 13209], "mapped", [102, 109]], [[13210, 13210], "mapped", [110, 109]], [[13211, 13211], "mapped", [956, 109]], [[13212, 13212], "mapped", [109, 109]], [[13213, 13213], "mapped", [99, 109]], [[13214, 13214], "mapped", [107, 109]], [[13215, 13215], "mapped", [109, 109, 50]], [[13216, 13216], "mapped", [99, 109, 50]], [[13217, 13217], "mapped", [109, 50]], [[13218, 13218], "mapped", [107, 109, 50]], [[13219, 13219], "mapped", [109, 109, 51]], [[13220, 13220], "mapped", [99, 109, 51]], [[13221, 13221], "mapped", [109, 51]], [[13222, 13222], "mapped", [107, 109, 51]], [[13223, 13223], "mapped", [109, 8725, 115]], [[13224, 13224], "mapped", [109, 8725, 115, 50]], [[13225, 13225], "mapped", [112, 97]], [[13226, 13226], "mapped", [107, 112, 97]], [[13227, 13227], "mapped", [109, 112, 97]], [[13228, 13228], "mapped", [103, 112, 97]], [[13229, 13229], "mapped", [114, 97, 100]], [[13230, 13230], "mapped", [114, 97, 100, 8725, 115]], [[13231, 13231], "mapped", [114, 97, 100, 8725, 115, 50]], [[13232, 13232], "mapped", [112, 115]], [[13233, 13233], "mapped", [110, 115]], [[13234, 13234], "mapped", [956, 115]], [[13235, 13235], "mapped", [109, 115]], [[13236, 13236], "mapped", [112, 118]], [[13237, 13237], "mapped", [110, 118]], [[13238, 13238], "mapped", [956, 118]], [[13239, 13239], "mapped", [109, 118]], [[13240, 13240], "mapped", [107, 118]], [[13241, 13241], "mapped", [109, 118]], [[13242, 13242], "mapped", [112, 119]], [[13243, 13243], "mapped", [110, 119]], [[13244, 13244], "mapped", [956, 119]], [[13245, 13245], "mapped", [109, 119]], [[13246, 13246], "mapped", [107, 119]], [[13247, 13247], "mapped", [109, 119]], [[13248, 13248], "mapped", [107, 969]], [[13249, 13249], "mapped", [109, 969]], [[13250, 13250], "disallowed"], [[13251, 13251], "mapped", [98, 113]], [[13252, 13252], "mapped", [99, 99]], [[13253, 13253], "mapped", [99, 100]], [[13254, 13254], "mapped", [99, 8725, 107, 103]], [[13255, 13255], "disallowed"], [[13256, 13256], "mapped", [100, 98]], [[13257, 13257], "mapped", [103, 121]], [[13258, 13258], "mapped", [104, 97]], [[13259, 13259], "mapped", [104, 112]], [[13260, 13260], "mapped", [105, 110]], [[13261, 13261], "mapped", [107, 107]], [[13262, 13262], "mapped", [107, 109]], [[13263, 13263], "mapped", [107, 116]], [[13264, 13264], "mapped", [108, 109]], [[13265, 13265], "mapped", [108, 110]], [[13266, 13266], "mapped", [108, 111, 103]], [[13267, 13267], "mapped", [108, 120]], [[13268, 13268], "mapped", [109, 98]], [[13269, 13269], "mapped", [109, 105, 108]], [[13270, 13270], "mapped", [109, 111, 108]], [[13271, 13271], "mapped", [112, 104]], [[13272, 13272], "disallowed"], [[13273, 13273], "mapped", [112, 112, 109]], [[13274, 13274], "mapped", [112, 114]], [[13275, 13275], "mapped", [115, 114]], [[13276, 13276], "mapped", [115, 118]], [[13277, 13277], "mapped", [119, 98]], [[13278, 13278], "mapped", [118, 8725, 109]], [[13279, 13279], "mapped", [97, 8725, 109]], [[13280, 13280], "mapped", [49, 26085]], [[13281, 13281], "mapped", [50, 26085]], [[13282, 13282], "mapped", [51, 26085]], [[13283, 13283], "mapped", [52, 26085]], [[13284, 13284], "mapped", [53, 26085]], [[13285, 13285], "mapped", [54, 26085]], [[13286, 13286], "mapped", [55, 26085]], [[13287, 13287], "mapped", [56, 26085]], [[13288, 13288], "mapped", [57, 26085]], [[13289, 13289], "mapped", [49, 48, 26085]], [[13290, 13290], "mapped", [49, 49, 26085]], [[13291, 13291], "mapped", [49, 50, 26085]], [[13292, 13292], "mapped", [49, 51, 26085]], [[13293, 13293], "mapped", [49, 52, 26085]], [[13294, 13294], "mapped", [49, 53, 26085]], [[13295, 13295], "mapped", [49, 54, 26085]], [[13296, 13296], "mapped", [49, 55, 26085]], [[13297, 13297], "mapped", [49, 56, 26085]], [[13298, 13298], "mapped", [49, 57, 26085]], [[13299, 13299], "mapped", [50, 48, 26085]], [[13300, 13300], "mapped", [50, 49, 26085]], [[13301, 13301], "mapped", [50, 50, 26085]], [[13302, 13302], "mapped", [50, 51, 26085]], [[13303, 13303], "mapped", [50, 52, 26085]], [[13304, 13304], "mapped", [50, 53, 26085]], [[13305, 13305], "mapped", [50, 54, 26085]], [[13306, 13306], "mapped", [50, 55, 26085]], [[13307, 13307], "mapped", [50, 56, 26085]], [[13308, 13308], "mapped", [50, 57, 26085]], [[13309, 13309], "mapped", [51, 48, 26085]], [[13310, 13310], "mapped", [51, 49, 26085]], [[13311, 13311], "mapped", [103, 97, 108]], [[13312, 19893], "valid"], [[19894, 19903], "disallowed"], [[19904, 19967], "valid", [], "NV8"], [[19968, 40869], "valid"], [[40870, 40891], "valid"], [[40892, 40899], "valid"], [[40900, 40907], "valid"], [[40908, 40908], "valid"], [[40909, 40917], "valid"], [[40918, 40959], "disallowed"], [[40960, 42124], "valid"], [[42125, 42127], "disallowed"], [[42128, 42145], "valid", [], "NV8"], [[42146, 42147], "valid", [], "NV8"], [[42148, 42163], "valid", [], "NV8"], [[42164, 42164], "valid", [], "NV8"], [[42165, 42176], "valid", [], "NV8"], [[42177, 42177], "valid", [], "NV8"], [[42178, 42180], "valid", [], "NV8"], [[42181, 42181], "valid", [], "NV8"], [[42182, 42182], "valid", [], "NV8"], [[42183, 42191], "disallowed"], [[42192, 42237], "valid"], [[42238, 42239], "valid", [], "NV8"], [[42240, 42508], "valid"], [[42509, 42511], "valid", [], "NV8"], [[42512, 42539], "valid"], [[42540, 42559], "disallowed"], [[42560, 42560], "mapped", [42561]], [[42561, 42561], "valid"], [[42562, 42562], "mapped", [42563]], [[42563, 42563], "valid"], [[42564, 42564], "mapped", [42565]], [[42565, 42565], "valid"], [[42566, 42566], "mapped", [42567]], [[42567, 42567], "valid"], [[42568, 42568], "mapped", [42569]], [[42569, 42569], "valid"], [[42570, 42570], "mapped", [42571]], [[42571, 42571], "valid"], [[42572, 42572], "mapped", [42573]], [[42573, 42573], "valid"], [[42574, 42574], "mapped", [42575]], [[42575, 42575], "valid"], [[42576, 42576], "mapped", [42577]], [[42577, 42577], "valid"], [[42578, 42578], "mapped", [42579]], [[42579, 42579], "valid"], [[42580, 42580], "mapped", [42581]], [[42581, 42581], "valid"], [[42582, 42582], "mapped", [42583]], [[42583, 42583], "valid"], [[42584, 42584], "mapped", [42585]], [[42585, 42585], "valid"], [[42586, 42586], "mapped", [42587]], [[42587, 42587], "valid"], [[42588, 42588], "mapped", [42589]], [[42589, 42589], "valid"], [[42590, 42590], "mapped", [42591]], [[42591, 42591], "valid"], [[42592, 42592], "mapped", [42593]], [[42593, 42593], "valid"], [[42594, 42594], "mapped", [42595]], [[42595, 42595], "valid"], [[42596, 42596], "mapped", [42597]], [[42597, 42597], "valid"], [[42598, 42598], "mapped", [42599]], [[42599, 42599], "valid"], [[42600, 42600], "mapped", [42601]], [[42601, 42601], "valid"], [[42602, 42602], "mapped", [42603]], [[42603, 42603], "valid"], [[42604, 42604], "mapped", [42605]], [[42605, 42607], "valid"], [[42608, 42611], "valid", [], "NV8"], [[42612, 42619], "valid"], [[42620, 42621], "valid"], [[42622, 42622], "valid", [], "NV8"], [[42623, 42623], "valid"], [[42624, 42624], "mapped", [42625]], [[42625, 42625], "valid"], [[42626, 42626], "mapped", [42627]], [[42627, 42627], "valid"], [[42628, 42628], "mapped", [42629]], [[42629, 42629], "valid"], [[42630, 42630], "mapped", [42631]], [[42631, 42631], "valid"], [[42632, 42632], "mapped", [42633]], [[42633, 42633], "valid"], [[42634, 42634], "mapped", [42635]], [[42635, 42635], "valid"], [[42636, 42636], "mapped", [42637]], [[42637, 42637], "valid"], [[42638, 42638], "mapped", [42639]], [[42639, 42639], "valid"], [[42640, 42640], "mapped", [42641]], [[42641, 42641], "valid"], [[42642, 42642], "mapped", [42643]], [[42643, 42643], "valid"], [[42644, 42644], "mapped", [42645]], [[42645, 42645], "valid"], [[42646, 42646], "mapped", [42647]], [[42647, 42647], "valid"], [[42648, 42648], "mapped", [42649]], [[42649, 42649], "valid"], [[42650, 42650], "mapped", [42651]], [[42651, 42651], "valid"], [[42652, 42652], "mapped", [1098]], [[42653, 42653], "mapped", [1100]], [[42654, 42654], "valid"], [[42655, 42655], "valid"], [[42656, 42725], "valid"], [[42726, 42735], "valid", [], "NV8"], [[42736, 42737], "valid"], [[42738, 42743], "valid", [], "NV8"], [[42744, 42751], "disallowed"], [[42752, 42774], "valid", [], "NV8"], [[42775, 42778], "valid"], [[42779, 42783], "valid"], [[42784, 42785], "valid", [], "NV8"], [[42786, 42786], "mapped", [42787]], [[42787, 42787], "valid"], [[42788, 42788], "mapped", [42789]], [[42789, 42789], "valid"], [[42790, 42790], "mapped", [42791]], [[42791, 42791], "valid"], [[42792, 42792], "mapped", [42793]], [[42793, 42793], "valid"], [[42794, 42794], "mapped", [42795]], [[42795, 42795], "valid"], [[42796, 42796], "mapped", [42797]], [[42797, 42797], "valid"], [[42798, 42798], "mapped", [42799]], [[42799, 42801], "valid"], [[42802, 42802], "mapped", [42803]], [[42803, 42803], "valid"], [[42804, 42804], "mapped", [42805]], [[42805, 42805], "valid"], [[42806, 42806], "mapped", [42807]], [[42807, 42807], "valid"], [[42808, 42808], "mapped", [42809]], [[42809, 42809], "valid"], [[42810, 42810], "mapped", [42811]], [[42811, 42811], "valid"], [[42812, 42812], "mapped", [42813]], [[42813, 42813], "valid"], [[42814, 42814], "mapped", [42815]], [[42815, 42815], "valid"], [[42816, 42816], "mapped", [42817]], [[42817, 42817], "valid"], [[42818, 42818], "mapped", [42819]], [[42819, 42819], "valid"], [[42820, 42820], "mapped", [42821]], [[42821, 42821], "valid"], [[42822, 42822], "mapped", [42823]], [[42823, 42823], "valid"], [[42824, 42824], "mapped", [42825]], [[42825, 42825], "valid"], [[42826, 42826], "mapped", [42827]], [[42827, 42827], "valid"], [[42828, 42828], "mapped", [42829]], [[42829, 42829], "valid"], [[42830, 42830], "mapped", [42831]], [[42831, 42831], "valid"], [[42832, 42832], "mapped", [42833]], [[42833, 42833], "valid"], [[42834, 42834], "mapped", [42835]], [[42835, 42835], "valid"], [[42836, 42836], "mapped", [42837]], [[42837, 42837], "valid"], [[42838, 42838], "mapped", [42839]], [[42839, 42839], "valid"], [[42840, 42840], "mapped", [42841]], [[42841, 42841], "valid"], [[42842, 42842], "mapped", [42843]], [[42843, 42843], "valid"], [[42844, 42844], "mapped", [42845]], [[42845, 42845], "valid"], [[42846, 42846], "mapped", [42847]], [[42847, 42847], "valid"], [[42848, 42848], "mapped", [42849]], [[42849, 42849], "valid"], [[42850, 42850], "mapped", [42851]], [[42851, 42851], "valid"], [[42852, 42852], "mapped", [42853]], [[42853, 42853], "valid"], [[42854, 42854], "mapped", [42855]], [[42855, 42855], "valid"], [[42856, 42856], "mapped", [42857]], [[42857, 42857], "valid"], [[42858, 42858], "mapped", [42859]], [[42859, 42859], "valid"], [[42860, 42860], "mapped", [42861]], [[42861, 42861], "valid"], [[42862, 42862], "mapped", [42863]], [[42863, 42863], "valid"], [[42864, 42864], "mapped", [42863]], [[42865, 42872], "valid"], [[42873, 42873], "mapped", [42874]], [[42874, 42874], "valid"], [[42875, 42875], "mapped", [42876]], [[42876, 42876], "valid"], [[42877, 42877], "mapped", [7545]], [[42878, 42878], "mapped", [42879]], [[42879, 42879], "valid"], [[42880, 42880], "mapped", [42881]], [[42881, 42881], "valid"], [[42882, 42882], "mapped", [42883]], [[42883, 42883], "valid"], [[42884, 42884], "mapped", [42885]], [[42885, 42885], "valid"], [[42886, 42886], "mapped", [42887]], [[42887, 42888], "valid"], [[42889, 42890], "valid", [], "NV8"], [[42891, 42891], "mapped", [42892]], [[42892, 42892], "valid"], [[42893, 42893], "mapped", [613]], [[42894, 42894], "valid"], [[42895, 42895], "valid"], [[42896, 42896], "mapped", [42897]], [[42897, 42897], "valid"], [[42898, 42898], "mapped", [42899]], [[42899, 42899], "valid"], [[42900, 42901], "valid"], [[42902, 42902], "mapped", [42903]], [[42903, 42903], "valid"], [[42904, 42904], "mapped", [42905]], [[42905, 42905], "valid"], [[42906, 42906], "mapped", [42907]], [[42907, 42907], "valid"], [[42908, 42908], "mapped", [42909]], [[42909, 42909], "valid"], [[42910, 42910], "mapped", [42911]], [[42911, 42911], "valid"], [[42912, 42912], "mapped", [42913]], [[42913, 42913], "valid"], [[42914, 42914], "mapped", [42915]], [[42915, 42915], "valid"], [[42916, 42916], "mapped", [42917]], [[42917, 42917], "valid"], [[42918, 42918], "mapped", [42919]], [[42919, 42919], "valid"], [[42920, 42920], "mapped", [42921]], [[42921, 42921], "valid"], [[42922, 42922], "mapped", [614]], [[42923, 42923], "mapped", [604]], [[42924, 42924], "mapped", [609]], [[42925, 42925], "mapped", [620]], [[42926, 42927], "disallowed"], [[42928, 42928], "mapped", [670]], [[42929, 42929], "mapped", [647]], [[42930, 42930], "mapped", [669]], [[42931, 42931], "mapped", [43859]], [[42932, 42932], "mapped", [42933]], [[42933, 42933], "valid"], [[42934, 42934], "mapped", [42935]], [[42935, 42935], "valid"], [[42936, 42998], "disallowed"], [[42999, 42999], "valid"], [[43e3, 43e3], "mapped", [295]], [[43001, 43001], "mapped", [339]], [[43002, 43002], "valid"], [[43003, 43007], "valid"], [[43008, 43047], "valid"], [[43048, 43051], "valid", [], "NV8"], [[43052, 43055], "disallowed"], [[43056, 43065], "valid", [], "NV8"], [[43066, 43071], "disallowed"], [[43072, 43123], "valid"], [[43124, 43127], "valid", [], "NV8"], [[43128, 43135], "disallowed"], [[43136, 43204], "valid"], [[43205, 43213], "disallowed"], [[43214, 43215], "valid", [], "NV8"], [[43216, 43225], "valid"], [[43226, 43231], "disallowed"], [[43232, 43255], "valid"], [[43256, 43258], "valid", [], "NV8"], [[43259, 43259], "valid"], [[43260, 43260], "valid", [], "NV8"], [[43261, 43261], "valid"], [[43262, 43263], "disallowed"], [[43264, 43309], "valid"], [[43310, 43311], "valid", [], "NV8"], [[43312, 43347], "valid"], [[43348, 43358], "disallowed"], [[43359, 43359], "valid", [], "NV8"], [[43360, 43388], "valid", [], "NV8"], [[43389, 43391], "disallowed"], [[43392, 43456], "valid"], [[43457, 43469], "valid", [], "NV8"], [[43470, 43470], "disallowed"], [[43471, 43481], "valid"], [[43482, 43485], "disallowed"], [[43486, 43487], "valid", [], "NV8"], [[43488, 43518], "valid"], [[43519, 43519], "disallowed"], [[43520, 43574], "valid"], [[43575, 43583], "disallowed"], [[43584, 43597], "valid"], [[43598, 43599], "disallowed"], [[43600, 43609], "valid"], [[43610, 43611], "disallowed"], [[43612, 43615], "valid", [], "NV8"], [[43616, 43638], "valid"], [[43639, 43641], "valid", [], "NV8"], [[43642, 43643], "valid"], [[43644, 43647], "valid"], [[43648, 43714], "valid"], [[43715, 43738], "disallowed"], [[43739, 43741], "valid"], [[43742, 43743], "valid", [], "NV8"], [[43744, 43759], "valid"], [[43760, 43761], "valid", [], "NV8"], [[43762, 43766], "valid"], [[43767, 43776], "disallowed"], [[43777, 43782], "valid"], [[43783, 43784], "disallowed"], [[43785, 43790], "valid"], [[43791, 43792], "disallowed"], [[43793, 43798], "valid"], [[43799, 43807], "disallowed"], [[43808, 43814], "valid"], [[43815, 43815], "disallowed"], [[43816, 43822], "valid"], [[43823, 43823], "disallowed"], [[43824, 43866], "valid"], [[43867, 43867], "valid", [], "NV8"], [[43868, 43868], "mapped", [42791]], [[43869, 43869], "mapped", [43831]], [[43870, 43870], "mapped", [619]], [[43871, 43871], "mapped", [43858]], [[43872, 43875], "valid"], [[43876, 43877], "valid"], [[43878, 43887], "disallowed"], [[43888, 43888], "mapped", [5024]], [[43889, 43889], "mapped", [5025]], [[43890, 43890], "mapped", [5026]], [[43891, 43891], "mapped", [5027]], [[43892, 43892], "mapped", [5028]], [[43893, 43893], "mapped", [5029]], [[43894, 43894], "mapped", [5030]], [[43895, 43895], "mapped", [5031]], [[43896, 43896], "mapped", [5032]], [[43897, 43897], "mapped", [5033]], [[43898, 43898], "mapped", [5034]], [[43899, 43899], "mapped", [5035]], [[43900, 43900], "mapped", [5036]], [[43901, 43901], "mapped", [5037]], [[43902, 43902], "mapped", [5038]], [[43903, 43903], "mapped", [5039]], [[43904, 43904], "mapped", [5040]], [[43905, 43905], "mapped", [5041]], [[43906, 43906], "mapped", [5042]], [[43907, 43907], "mapped", [5043]], [[43908, 43908], "mapped", [5044]], [[43909, 43909], "mapped", [5045]], [[43910, 43910], "mapped", [5046]], [[43911, 43911], "mapped", [5047]], [[43912, 43912], "mapped", [5048]], [[43913, 43913], "mapped", [5049]], [[43914, 43914], "mapped", [5050]], [[43915, 43915], "mapped", [5051]], [[43916, 43916], "mapped", [5052]], [[43917, 43917], "mapped", [5053]], [[43918, 43918], "mapped", [5054]], [[43919, 43919], "mapped", [5055]], [[43920, 43920], "mapped", [5056]], [[43921, 43921], "mapped", [5057]], [[43922, 43922], "mapped", [5058]], [[43923, 43923], "mapped", [5059]], [[43924, 43924], "mapped", [5060]], [[43925, 43925], "mapped", [5061]], [[43926, 43926], "mapped", [5062]], [[43927, 43927], "mapped", [5063]], [[43928, 43928], "mapped", [5064]], [[43929, 43929], "mapped", [5065]], [[43930, 43930], "mapped", [5066]], [[43931, 43931], "mapped", [5067]], [[43932, 43932], "mapped", [5068]], [[43933, 43933], "mapped", [5069]], [[43934, 43934], "mapped", [5070]], [[43935, 43935], "mapped", [5071]], [[43936, 43936], "mapped", [5072]], [[43937, 43937], "mapped", [5073]], [[43938, 43938], "mapped", [5074]], [[43939, 43939], "mapped", [5075]], [[43940, 43940], "mapped", [5076]], [[43941, 43941], "mapped", [5077]], [[43942, 43942], "mapped", [5078]], [[43943, 43943], "mapped", [5079]], [[43944, 43944], "mapped", [5080]], [[43945, 43945], "mapped", [5081]], [[43946, 43946], "mapped", [5082]], [[43947, 43947], "mapped", [5083]], [[43948, 43948], "mapped", [5084]], [[43949, 43949], "mapped", [5085]], [[43950, 43950], "mapped", [5086]], [[43951, 43951], "mapped", [5087]], [[43952, 43952], "mapped", [5088]], [[43953, 43953], "mapped", [5089]], [[43954, 43954], "mapped", [5090]], [[43955, 43955], "mapped", [5091]], [[43956, 43956], "mapped", [5092]], [[43957, 43957], "mapped", [5093]], [[43958, 43958], "mapped", [5094]], [[43959, 43959], "mapped", [5095]], [[43960, 43960], "mapped", [5096]], [[43961, 43961], "mapped", [5097]], [[43962, 43962], "mapped", [5098]], [[43963, 43963], "mapped", [5099]], [[43964, 43964], "mapped", [5100]], [[43965, 43965], "mapped", [5101]], [[43966, 43966], "mapped", [5102]], [[43967, 43967], "mapped", [5103]], [[43968, 44010], "valid"], [[44011, 44011], "valid", [], "NV8"], [[44012, 44013], "valid"], [[44014, 44015], "disallowed"], [[44016, 44025], "valid"], [[44026, 44031], "disallowed"], [[44032, 55203], "valid"], [[55204, 55215], "disallowed"], [[55216, 55238], "valid", [], "NV8"], [[55239, 55242], "disallowed"], [[55243, 55291], "valid", [], "NV8"], [[55292, 55295], "disallowed"], [[55296, 57343], "disallowed"], [[57344, 63743], "disallowed"], [[63744, 63744], "mapped", [35912]], [[63745, 63745], "mapped", [26356]], [[63746, 63746], "mapped", [36554]], [[63747, 63747], "mapped", [36040]], [[63748, 63748], "mapped", [28369]], [[63749, 63749], "mapped", [20018]], [[63750, 63750], "mapped", [21477]], [[63751, 63752], "mapped", [40860]], [[63753, 63753], "mapped", [22865]], [[63754, 63754], "mapped", [37329]], [[63755, 63755], "mapped", [21895]], [[63756, 63756], "mapped", [22856]], [[63757, 63757], "mapped", [25078]], [[63758, 63758], "mapped", [30313]], [[63759, 63759], "mapped", [32645]], [[63760, 63760], "mapped", [34367]], [[63761, 63761], "mapped", [34746]], [[63762, 63762], "mapped", [35064]], [[63763, 63763], "mapped", [37007]], [[63764, 63764], "mapped", [27138]], [[63765, 63765], "mapped", [27931]], [[63766, 63766], "mapped", [28889]], [[63767, 63767], "mapped", [29662]], [[63768, 63768], "mapped", [33853]], [[63769, 63769], "mapped", [37226]], [[63770, 63770], "mapped", [39409]], [[63771, 63771], "mapped", [20098]], [[63772, 63772], "mapped", [21365]], [[63773, 63773], "mapped", [27396]], [[63774, 63774], "mapped", [29211]], [[63775, 63775], "mapped", [34349]], [[63776, 63776], "mapped", [40478]], [[63777, 63777], "mapped", [23888]], [[63778, 63778], "mapped", [28651]], [[63779, 63779], "mapped", [34253]], [[63780, 63780], "mapped", [35172]], [[63781, 63781], "mapped", [25289]], [[63782, 63782], "mapped", [33240]], [[63783, 63783], "mapped", [34847]], [[63784, 63784], "mapped", [24266]], [[63785, 63785], "mapped", [26391]], [[63786, 63786], "mapped", [28010]], [[63787, 63787], "mapped", [29436]], [[63788, 63788], "mapped", [37070]], [[63789, 63789], "mapped", [20358]], [[63790, 63790], "mapped", [20919]], [[63791, 63791], "mapped", [21214]], [[63792, 63792], "mapped", [25796]], [[63793, 63793], "mapped", [27347]], [[63794, 63794], "mapped", [29200]], [[63795, 63795], "mapped", [30439]], [[63796, 63796], "mapped", [32769]], [[63797, 63797], "mapped", [34310]], [[63798, 63798], "mapped", [34396]], [[63799, 63799], "mapped", [36335]], [[63800, 63800], "mapped", [38706]], [[63801, 63801], "mapped", [39791]], [[63802, 63802], "mapped", [40442]], [[63803, 63803], "mapped", [30860]], [[63804, 63804], "mapped", [31103]], [[63805, 63805], "mapped", [32160]], [[63806, 63806], "mapped", [33737]], [[63807, 63807], "mapped", [37636]], [[63808, 63808], "mapped", [40575]], [[63809, 63809], "mapped", [35542]], [[63810, 63810], "mapped", [22751]], [[63811, 63811], "mapped", [24324]], [[63812, 63812], "mapped", [31840]], [[63813, 63813], "mapped", [32894]], [[63814, 63814], "mapped", [29282]], [[63815, 63815], "mapped", [30922]], [[63816, 63816], "mapped", [36034]], [[63817, 63817], "mapped", [38647]], [[63818, 63818], "mapped", [22744]], [[63819, 63819], "mapped", [23650]], [[63820, 63820], "mapped", [27155]], [[63821, 63821], "mapped", [28122]], [[63822, 63822], "mapped", [28431]], [[63823, 63823], "mapped", [32047]], [[63824, 63824], "mapped", [32311]], [[63825, 63825], "mapped", [38475]], [[63826, 63826], "mapped", [21202]], [[63827, 63827], "mapped", [32907]], [[63828, 63828], "mapped", [20956]], [[63829, 63829], "mapped", [20940]], [[63830, 63830], "mapped", [31260]], [[63831, 63831], "mapped", [32190]], [[63832, 63832], "mapped", [33777]], [[63833, 63833], "mapped", [38517]], [[63834, 63834], "mapped", [35712]], [[63835, 63835], "mapped", [25295]], [[63836, 63836], "mapped", [27138]], [[63837, 63837], "mapped", [35582]], [[63838, 63838], "mapped", [20025]], [[63839, 63839], "mapped", [23527]], [[63840, 63840], "mapped", [24594]], [[63841, 63841], "mapped", [29575]], [[63842, 63842], "mapped", [30064]], [[63843, 63843], "mapped", [21271]], [[63844, 63844], "mapped", [30971]], [[63845, 63845], "mapped", [20415]], [[63846, 63846], "mapped", [24489]], [[63847, 63847], "mapped", [19981]], [[63848, 63848], "mapped", [27852]], [[63849, 63849], "mapped", [25976]], [[63850, 63850], "mapped", [32034]], [[63851, 63851], "mapped", [21443]], [[63852, 63852], "mapped", [22622]], [[63853, 63853], "mapped", [30465]], [[63854, 63854], "mapped", [33865]], [[63855, 63855], "mapped", [35498]], [[63856, 63856], "mapped", [27578]], [[63857, 63857], "mapped", [36784]], [[63858, 63858], "mapped", [27784]], [[63859, 63859], "mapped", [25342]], [[63860, 63860], "mapped", [33509]], [[63861, 63861], "mapped", [25504]], [[63862, 63862], "mapped", [30053]], [[63863, 63863], "mapped", [20142]], [[63864, 63864], "mapped", [20841]], [[63865, 63865], "mapped", [20937]], [[63866, 63866], "mapped", [26753]], [[63867, 63867], "mapped", [31975]], [[63868, 63868], "mapped", [33391]], [[63869, 63869], "mapped", [35538]], [[63870, 63870], "mapped", [37327]], [[63871, 63871], "mapped", [21237]], [[63872, 63872], "mapped", [21570]], [[63873, 63873], "mapped", [22899]], [[63874, 63874], "mapped", [24300]], [[63875, 63875], "mapped", [26053]], [[63876, 63876], "mapped", [28670]], [[63877, 63877], "mapped", [31018]], [[63878, 63878], "mapped", [38317]], [[63879, 63879], "mapped", [39530]], [[63880, 63880], "mapped", [40599]], [[63881, 63881], "mapped", [40654]], [[63882, 63882], "mapped", [21147]], [[63883, 63883], "mapped", [26310]], [[63884, 63884], "mapped", [27511]], [[63885, 63885], "mapped", [36706]], [[63886, 63886], "mapped", [24180]], [[63887, 63887], "mapped", [24976]], [[63888, 63888], "mapped", [25088]], [[63889, 63889], "mapped", [25754]], [[63890, 63890], "mapped", [28451]], [[63891, 63891], "mapped", [29001]], [[63892, 63892], "mapped", [29833]], [[63893, 63893], "mapped", [31178]], [[63894, 63894], "mapped", [32244]], [[63895, 63895], "mapped", [32879]], [[63896, 63896], "mapped", [36646]], [[63897, 63897], "mapped", [34030]], [[63898, 63898], "mapped", [36899]], [[63899, 63899], "mapped", [37706]], [[63900, 63900], "mapped", [21015]], [[63901, 63901], "mapped", [21155]], [[63902, 63902], "mapped", [21693]], [[63903, 63903], "mapped", [28872]], [[63904, 63904], "mapped", [35010]], [[63905, 63905], "mapped", [35498]], [[63906, 63906], "mapped", [24265]], [[63907, 63907], "mapped", [24565]], [[63908, 63908], "mapped", [25467]], [[63909, 63909], "mapped", [27566]], [[63910, 63910], "mapped", [31806]], [[63911, 63911], "mapped", [29557]], [[63912, 63912], "mapped", [20196]], [[63913, 63913], "mapped", [22265]], [[63914, 63914], "mapped", [23527]], [[63915, 63915], "mapped", [23994]], [[63916, 63916], "mapped", [24604]], [[63917, 63917], "mapped", [29618]], [[63918, 63918], "mapped", [29801]], [[63919, 63919], "mapped", [32666]], [[63920, 63920], "mapped", [32838]], [[63921, 63921], "mapped", [37428]], [[63922, 63922], "mapped", [38646]], [[63923, 63923], "mapped", [38728]], [[63924, 63924], "mapped", [38936]], [[63925, 63925], "mapped", [20363]], [[63926, 63926], "mapped", [31150]], [[63927, 63927], "mapped", [37300]], [[63928, 63928], "mapped", [38584]], [[63929, 63929], "mapped", [24801]], [[63930, 63930], "mapped", [20102]], [[63931, 63931], "mapped", [20698]], [[63932, 63932], "mapped", [23534]], [[63933, 63933], "mapped", [23615]], [[63934, 63934], "mapped", [26009]], [[63935, 63935], "mapped", [27138]], [[63936, 63936], "mapped", [29134]], [[63937, 63937], "mapped", [30274]], [[63938, 63938], "mapped", [34044]], [[63939, 63939], "mapped", [36988]], [[63940, 63940], "mapped", [40845]], [[63941, 63941], "mapped", [26248]], [[63942, 63942], "mapped", [38446]], [[63943, 63943], "mapped", [21129]], [[63944, 63944], "mapped", [26491]], [[63945, 63945], "mapped", [26611]], [[63946, 63946], "mapped", [27969]], [[63947, 63947], "mapped", [28316]], [[63948, 63948], "mapped", [29705]], [[63949, 63949], "mapped", [30041]], [[63950, 63950], "mapped", [30827]], [[63951, 63951], "mapped", [32016]], [[63952, 63952], "mapped", [39006]], [[63953, 63953], "mapped", [20845]], [[63954, 63954], "mapped", [25134]], [[63955, 63955], "mapped", [38520]], [[63956, 63956], "mapped", [20523]], [[63957, 63957], "mapped", [23833]], [[63958, 63958], "mapped", [28138]], [[63959, 63959], "mapped", [36650]], [[63960, 63960], "mapped", [24459]], [[63961, 63961], "mapped", [24900]], [[63962, 63962], "mapped", [26647]], [[63963, 63963], "mapped", [29575]], [[63964, 63964], "mapped", [38534]], [[63965, 63965], "mapped", [21033]], [[63966, 63966], "mapped", [21519]], [[63967, 63967], "mapped", [23653]], [[63968, 63968], "mapped", [26131]], [[63969, 63969], "mapped", [26446]], [[63970, 63970], "mapped", [26792]], [[63971, 63971], "mapped", [27877]], [[63972, 63972], "mapped", [29702]], [[63973, 63973], "mapped", [30178]], [[63974, 63974], "mapped", [32633]], [[63975, 63975], "mapped", [35023]], [[63976, 63976], "mapped", [35041]], [[63977, 63977], "mapped", [37324]], [[63978, 63978], "mapped", [38626]], [[63979, 63979], "mapped", [21311]], [[63980, 63980], "mapped", [28346]], [[63981, 63981], "mapped", [21533]], [[63982, 63982], "mapped", [29136]], [[63983, 63983], "mapped", [29848]], [[63984, 63984], "mapped", [34298]], [[63985, 63985], "mapped", [38563]], [[63986, 63986], "mapped", [40023]], [[63987, 63987], "mapped", [40607]], [[63988, 63988], "mapped", [26519]], [[63989, 63989], "mapped", [28107]], [[63990, 63990], "mapped", [33256]], [[63991, 63991], "mapped", [31435]], [[63992, 63992], "mapped", [31520]], [[63993, 63993], "mapped", [31890]], [[63994, 63994], "mapped", [29376]], [[63995, 63995], "mapped", [28825]], [[63996, 63996], "mapped", [35672]], [[63997, 63997], "mapped", [20160]], [[63998, 63998], "mapped", [33590]], [[63999, 63999], "mapped", [21050]], [[64e3, 64e3], "mapped", [20999]], [[64001, 64001], "mapped", [24230]], [[64002, 64002], "mapped", [25299]], [[64003, 64003], "mapped", [31958]], [[64004, 64004], "mapped", [23429]], [[64005, 64005], "mapped", [27934]], [[64006, 64006], "mapped", [26292]], [[64007, 64007], "mapped", [36667]], [[64008, 64008], "mapped", [34892]], [[64009, 64009], "mapped", [38477]], [[64010, 64010], "mapped", [35211]], [[64011, 64011], "mapped", [24275]], [[64012, 64012], "mapped", [20800]], [[64013, 64013], "mapped", [21952]], [[64014, 64015], "valid"], [[64016, 64016], "mapped", [22618]], [[64017, 64017], "valid"], [[64018, 64018], "mapped", [26228]], [[64019, 64020], "valid"], [[64021, 64021], "mapped", [20958]], [[64022, 64022], "mapped", [29482]], [[64023, 64023], "mapped", [30410]], [[64024, 64024], "mapped", [31036]], [[64025, 64025], "mapped", [31070]], [[64026, 64026], "mapped", [31077]], [[64027, 64027], "mapped", [31119]], [[64028, 64028], "mapped", [38742]], [[64029, 64029], "mapped", [31934]], [[64030, 64030], "mapped", [32701]], [[64031, 64031], "valid"], [[64032, 64032], "mapped", [34322]], [[64033, 64033], "valid"], [[64034, 64034], "mapped", [35576]], [[64035, 64036], "valid"], [[64037, 64037], "mapped", [36920]], [[64038, 64038], "mapped", [37117]], [[64039, 64041], "valid"], [[64042, 64042], "mapped", [39151]], [[64043, 64043], "mapped", [39164]], [[64044, 64044], "mapped", [39208]], [[64045, 64045], "mapped", [40372]], [[64046, 64046], "mapped", [37086]], [[64047, 64047], "mapped", [38583]], [[64048, 64048], "mapped", [20398]], [[64049, 64049], "mapped", [20711]], [[64050, 64050], "mapped", [20813]], [[64051, 64051], "mapped", [21193]], [[64052, 64052], "mapped", [21220]], [[64053, 64053], "mapped", [21329]], [[64054, 64054], "mapped", [21917]], [[64055, 64055], "mapped", [22022]], [[64056, 64056], "mapped", [22120]], [[64057, 64057], "mapped", [22592]], [[64058, 64058], "mapped", [22696]], [[64059, 64059], "mapped", [23652]], [[64060, 64060], "mapped", [23662]], [[64061, 64061], "mapped", [24724]], [[64062, 64062], "mapped", [24936]], [[64063, 64063], "mapped", [24974]], [[64064, 64064], "mapped", [25074]], [[64065, 64065], "mapped", [25935]], [[64066, 64066], "mapped", [26082]], [[64067, 64067], "mapped", [26257]], [[64068, 64068], "mapped", [26757]], [[64069, 64069], "mapped", [28023]], [[64070, 64070], "mapped", [28186]], [[64071, 64071], "mapped", [28450]], [[64072, 64072], "mapped", [29038]], [[64073, 64073], "mapped", [29227]], [[64074, 64074], "mapped", [29730]], [[64075, 64075], "mapped", [30865]], [[64076, 64076], "mapped", [31038]], [[64077, 64077], "mapped", [31049]], [[64078, 64078], "mapped", [31048]], [[64079, 64079], "mapped", [31056]], [[64080, 64080], "mapped", [31062]], [[64081, 64081], "mapped", [31069]], [[64082, 64082], "mapped", [31117]], [[64083, 64083], "mapped", [31118]], [[64084, 64084], "mapped", [31296]], [[64085, 64085], "mapped", [31361]], [[64086, 64086], "mapped", [31680]], [[64087, 64087], "mapped", [32244]], [[64088, 64088], "mapped", [32265]], [[64089, 64089], "mapped", [32321]], [[64090, 64090], "mapped", [32626]], [[64091, 64091], "mapped", [32773]], [[64092, 64092], "mapped", [33261]], [[64093, 64094], "mapped", [33401]], [[64095, 64095], "mapped", [33879]], [[64096, 64096], "mapped", [35088]], [[64097, 64097], "mapped", [35222]], [[64098, 64098], "mapped", [35585]], [[64099, 64099], "mapped", [35641]], [[64100, 64100], "mapped", [36051]], [[64101, 64101], "mapped", [36104]], [[64102, 64102], "mapped", [36790]], [[64103, 64103], "mapped", [36920]], [[64104, 64104], "mapped", [38627]], [[64105, 64105], "mapped", [38911]], [[64106, 64106], "mapped", [38971]], [[64107, 64107], "mapped", [24693]], [[64108, 64108], "mapped", [148206]], [[64109, 64109], "mapped", [33304]], [[64110, 64111], "disallowed"], [[64112, 64112], "mapped", [20006]], [[64113, 64113], "mapped", [20917]], [[64114, 64114], "mapped", [20840]], [[64115, 64115], "mapped", [20352]], [[64116, 64116], "mapped", [20805]], [[64117, 64117], "mapped", [20864]], [[64118, 64118], "mapped", [21191]], [[64119, 64119], "mapped", [21242]], [[64120, 64120], "mapped", [21917]], [[64121, 64121], "mapped", [21845]], [[64122, 64122], "mapped", [21913]], [[64123, 64123], "mapped", [21986]], [[64124, 64124], "mapped", [22618]], [[64125, 64125], "mapped", [22707]], [[64126, 64126], "mapped", [22852]], [[64127, 64127], "mapped", [22868]], [[64128, 64128], "mapped", [23138]], [[64129, 64129], "mapped", [23336]], [[64130, 64130], "mapped", [24274]], [[64131, 64131], "mapped", [24281]], [[64132, 64132], "mapped", [24425]], [[64133, 64133], "mapped", [24493]], [[64134, 64134], "mapped", [24792]], [[64135, 64135], "mapped", [24910]], [[64136, 64136], "mapped", [24840]], [[64137, 64137], "mapped", [24974]], [[64138, 64138], "mapped", [24928]], [[64139, 64139], "mapped", [25074]], [[64140, 64140], "mapped", [25140]], [[64141, 64141], "mapped", [25540]], [[64142, 64142], "mapped", [25628]], [[64143, 64143], "mapped", [25682]], [[64144, 64144], "mapped", [25942]], [[64145, 64145], "mapped", [26228]], [[64146, 64146], "mapped", [26391]], [[64147, 64147], "mapped", [26395]], [[64148, 64148], "mapped", [26454]], [[64149, 64149], "mapped", [27513]], [[64150, 64150], "mapped", [27578]], [[64151, 64151], "mapped", [27969]], [[64152, 64152], "mapped", [28379]], [[64153, 64153], "mapped", [28363]], [[64154, 64154], "mapped", [28450]], [[64155, 64155], "mapped", [28702]], [[64156, 64156], "mapped", [29038]], [[64157, 64157], "mapped", [30631]], [[64158, 64158], "mapped", [29237]], [[64159, 64159], "mapped", [29359]], [[64160, 64160], "mapped", [29482]], [[64161, 64161], "mapped", [29809]], [[64162, 64162], "mapped", [29958]], [[64163, 64163], "mapped", [30011]], [[64164, 64164], "mapped", [30237]], [[64165, 64165], "mapped", [30239]], [[64166, 64166], "mapped", [30410]], [[64167, 64167], "mapped", [30427]], [[64168, 64168], "mapped", [30452]], [[64169, 64169], "mapped", [30538]], [[64170, 64170], "mapped", [30528]], [[64171, 64171], "mapped", [30924]], [[64172, 64172], "mapped", [31409]], [[64173, 64173], "mapped", [31680]], [[64174, 64174], "mapped", [31867]], [[64175, 64175], "mapped", [32091]], [[64176, 64176], "mapped", [32244]], [[64177, 64177], "mapped", [32574]], [[64178, 64178], "mapped", [32773]], [[64179, 64179], "mapped", [33618]], [[64180, 64180], "mapped", [33775]], [[64181, 64181], "mapped", [34681]], [[64182, 64182], "mapped", [35137]], [[64183, 64183], "mapped", [35206]], [[64184, 64184], "mapped", [35222]], [[64185, 64185], "mapped", [35519]], [[64186, 64186], "mapped", [35576]], [[64187, 64187], "mapped", [35531]], [[64188, 64188], "mapped", [35585]], [[64189, 64189], "mapped", [35582]], [[64190, 64190], "mapped", [35565]], [[64191, 64191], "mapped", [35641]], [[64192, 64192], "mapped", [35722]], [[64193, 64193], "mapped", [36104]], [[64194, 64194], "mapped", [36664]], [[64195, 64195], "mapped", [36978]], [[64196, 64196], "mapped", [37273]], [[64197, 64197], "mapped", [37494]], [[64198, 64198], "mapped", [38524]], [[64199, 64199], "mapped", [38627]], [[64200, 64200], "mapped", [38742]], [[64201, 64201], "mapped", [38875]], [[64202, 64202], "mapped", [38911]], [[64203, 64203], "mapped", [38923]], [[64204, 64204], "mapped", [38971]], [[64205, 64205], "mapped", [39698]], [[64206, 64206], "mapped", [40860]], [[64207, 64207], "mapped", [141386]], [[64208, 64208], "mapped", [141380]], [[64209, 64209], "mapped", [144341]], [[64210, 64210], "mapped", [15261]], [[64211, 64211], "mapped", [16408]], [[64212, 64212], "mapped", [16441]], [[64213, 64213], "mapped", [152137]], [[64214, 64214], "mapped", [154832]], [[64215, 64215], "mapped", [163539]], [[64216, 64216], "mapped", [40771]], [[64217, 64217], "mapped", [40846]], [[64218, 64255], "disallowed"], [[64256, 64256], "mapped", [102, 102]], [[64257, 64257], "mapped", [102, 105]], [[64258, 64258], "mapped", [102, 108]], [[64259, 64259], "mapped", [102, 102, 105]], [[64260, 64260], "mapped", [102, 102, 108]], [[64261, 64262], "mapped", [115, 116]], [[64263, 64274], "disallowed"], [[64275, 64275], "mapped", [1396, 1398]], [[64276, 64276], "mapped", [1396, 1381]], [[64277, 64277], "mapped", [1396, 1387]], [[64278, 64278], "mapped", [1406, 1398]], [[64279, 64279], "mapped", [1396, 1389]], [[64280, 64284], "disallowed"], [[64285, 64285], "mapped", [1497, 1460]], [[64286, 64286], "valid"], [[64287, 64287], "mapped", [1522, 1463]], [[64288, 64288], "mapped", [1506]], [[64289, 64289], "mapped", [1488]], [[64290, 64290], "mapped", [1491]], [[64291, 64291], "mapped", [1492]], [[64292, 64292], "mapped", [1499]], [[64293, 64293], "mapped", [1500]], [[64294, 64294], "mapped", [1501]], [[64295, 64295], "mapped", [1512]], [[64296, 64296], "mapped", [1514]], [[64297, 64297], "disallowed_STD3_mapped", [43]], [[64298, 64298], "mapped", [1513, 1473]], [[64299, 64299], "mapped", [1513, 1474]], [[64300, 64300], "mapped", [1513, 1468, 1473]], [[64301, 64301], "mapped", [1513, 1468, 1474]], [[64302, 64302], "mapped", [1488, 1463]], [[64303, 64303], "mapped", [1488, 1464]], [[64304, 64304], "mapped", [1488, 1468]], [[64305, 64305], "mapped", [1489, 1468]], [[64306, 64306], "mapped", [1490, 1468]], [[64307, 64307], "mapped", [1491, 1468]], [[64308, 64308], "mapped", [1492, 1468]], [[64309, 64309], "mapped", [1493, 1468]], [[64310, 64310], "mapped", [1494, 1468]], [[64311, 64311], "disallowed"], [[64312, 64312], "mapped", [1496, 1468]], [[64313, 64313], "mapped", [1497, 1468]], [[64314, 64314], "mapped", [1498, 1468]], [[64315, 64315], "mapped", [1499, 1468]], [[64316, 64316], "mapped", [1500, 1468]], [[64317, 64317], "disallowed"], [[64318, 64318], "mapped", [1502, 1468]], [[64319, 64319], "disallowed"], [[64320, 64320], "mapped", [1504, 1468]], [[64321, 64321], "mapped", [1505, 1468]], [[64322, 64322], "disallowed"], [[64323, 64323], "mapped", [1507, 1468]], [[64324, 64324], "mapped", [1508, 1468]], [[64325, 64325], "disallowed"], [[64326, 64326], "mapped", [1510, 1468]], [[64327, 64327], "mapped", [1511, 1468]], [[64328, 64328], "mapped", [1512, 1468]], [[64329, 64329], "mapped", [1513, 1468]], [[64330, 64330], "mapped", [1514, 1468]], [[64331, 64331], "mapped", [1493, 1465]], [[64332, 64332], "mapped", [1489, 1471]], [[64333, 64333], "mapped", [1499, 1471]], [[64334, 64334], "mapped", [1508, 1471]], [[64335, 64335], "mapped", [1488, 1500]], [[64336, 64337], "mapped", [1649]], [[64338, 64341], "mapped", [1659]], [[64342, 64345], "mapped", [1662]], [[64346, 64349], "mapped", [1664]], [[64350, 64353], "mapped", [1658]], [[64354, 64357], "mapped", [1663]], [[64358, 64361], "mapped", [1657]], [[64362, 64365], "mapped", [1700]], [[64366, 64369], "mapped", [1702]], [[64370, 64373], "mapped", [1668]], [[64374, 64377], "mapped", [1667]], [[64378, 64381], "mapped", [1670]], [[64382, 64385], "mapped", [1671]], [[64386, 64387], "mapped", [1677]], [[64388, 64389], "mapped", [1676]], [[64390, 64391], "mapped", [1678]], [[64392, 64393], "mapped", [1672]], [[64394, 64395], "mapped", [1688]], [[64396, 64397], "mapped", [1681]], [[64398, 64401], "mapped", [1705]], [[64402, 64405], "mapped", [1711]], [[64406, 64409], "mapped", [1715]], [[64410, 64413], "mapped", [1713]], [[64414, 64415], "mapped", [1722]], [[64416, 64419], "mapped", [1723]], [[64420, 64421], "mapped", [1728]], [[64422, 64425], "mapped", [1729]], [[64426, 64429], "mapped", [1726]], [[64430, 64431], "mapped", [1746]], [[64432, 64433], "mapped", [1747]], [[64434, 64449], "valid", [], "NV8"], [[64450, 64466], "disallowed"], [[64467, 64470], "mapped", [1709]], [[64471, 64472], "mapped", [1735]], [[64473, 64474], "mapped", [1734]], [[64475, 64476], "mapped", [1736]], [[64477, 64477], "mapped", [1735, 1652]], [[64478, 64479], "mapped", [1739]], [[64480, 64481], "mapped", [1733]], [[64482, 64483], "mapped", [1737]], [[64484, 64487], "mapped", [1744]], [[64488, 64489], "mapped", [1609]], [[64490, 64491], "mapped", [1574, 1575]], [[64492, 64493], "mapped", [1574, 1749]], [[64494, 64495], "mapped", [1574, 1608]], [[64496, 64497], "mapped", [1574, 1735]], [[64498, 64499], "mapped", [1574, 1734]], [[64500, 64501], "mapped", [1574, 1736]], [[64502, 64504], "mapped", [1574, 1744]], [[64505, 64507], "mapped", [1574, 1609]], [[64508, 64511], "mapped", [1740]], [[64512, 64512], "mapped", [1574, 1580]], [[64513, 64513], "mapped", [1574, 1581]], [[64514, 64514], "mapped", [1574, 1605]], [[64515, 64515], "mapped", [1574, 1609]], [[64516, 64516], "mapped", [1574, 1610]], [[64517, 64517], "mapped", [1576, 1580]], [[64518, 64518], "mapped", [1576, 1581]], [[64519, 64519], "mapped", [1576, 1582]], [[64520, 64520], "mapped", [1576, 1605]], [[64521, 64521], "mapped", [1576, 1609]], [[64522, 64522], "mapped", [1576, 1610]], [[64523, 64523], "mapped", [1578, 1580]], [[64524, 64524], "mapped", [1578, 1581]], [[64525, 64525], "mapped", [1578, 1582]], [[64526, 64526], "mapped", [1578, 1605]], [[64527, 64527], "mapped", [1578, 1609]], [[64528, 64528], "mapped", [1578, 1610]], [[64529, 64529], "mapped", [1579, 1580]], [[64530, 64530], "mapped", [1579, 1605]], [[64531, 64531], "mapped", [1579, 1609]], [[64532, 64532], "mapped", [1579, 1610]], [[64533, 64533], "mapped", [1580, 1581]], [[64534, 64534], "mapped", [1580, 1605]], [[64535, 64535], "mapped", [1581, 1580]], [[64536, 64536], "mapped", [1581, 1605]], [[64537, 64537], "mapped", [1582, 1580]], [[64538, 64538], "mapped", [1582, 1581]], [[64539, 64539], "mapped", [1582, 1605]], [[64540, 64540], "mapped", [1587, 1580]], [[64541, 64541], "mapped", [1587, 1581]], [[64542, 64542], "mapped", [1587, 1582]], [[64543, 64543], "mapped", [1587, 1605]], [[64544, 64544], "mapped", [1589, 1581]], [[64545, 64545], "mapped", [1589, 1605]], [[64546, 64546], "mapped", [1590, 1580]], [[64547, 64547], "mapped", [1590, 1581]], [[64548, 64548], "mapped", [1590, 1582]], [[64549, 64549], "mapped", [1590, 1605]], [[64550, 64550], "mapped", [1591, 1581]], [[64551, 64551], "mapped", [1591, 1605]], [[64552, 64552], "mapped", [1592, 1605]], [[64553, 64553], "mapped", [1593, 1580]], [[64554, 64554], "mapped", [1593, 1605]], [[64555, 64555], "mapped", [1594, 1580]], [[64556, 64556], "mapped", [1594, 1605]], [[64557, 64557], "mapped", [1601, 1580]], [[64558, 64558], "mapped", [1601, 1581]], [[64559, 64559], "mapped", [1601, 1582]], [[64560, 64560], "mapped", [1601, 1605]], [[64561, 64561], "mapped", [1601, 1609]], [[64562, 64562], "mapped", [1601, 1610]], [[64563, 64563], "mapped", [1602, 1581]], [[64564, 64564], "mapped", [1602, 1605]], [[64565, 64565], "mapped", [1602, 1609]], [[64566, 64566], "mapped", [1602, 1610]], [[64567, 64567], "mapped", [1603, 1575]], [[64568, 64568], "mapped", [1603, 1580]], [[64569, 64569], "mapped", [1603, 1581]], [[64570, 64570], "mapped", [1603, 1582]], [[64571, 64571], "mapped", [1603, 1604]], [[64572, 64572], "mapped", [1603, 1605]], [[64573, 64573], "mapped", [1603, 1609]], [[64574, 64574], "mapped", [1603, 1610]], [[64575, 64575], "mapped", [1604, 1580]], [[64576, 64576], "mapped", [1604, 1581]], [[64577, 64577], "mapped", [1604, 1582]], [[64578, 64578], "mapped", [1604, 1605]], [[64579, 64579], "mapped", [1604, 1609]], [[64580, 64580], "mapped", [1604, 1610]], [[64581, 64581], "mapped", [1605, 1580]], [[64582, 64582], "mapped", [1605, 1581]], [[64583, 64583], "mapped", [1605, 1582]], [[64584, 64584], "mapped", [1605, 1605]], [[64585, 64585], "mapped", [1605, 1609]], [[64586, 64586], "mapped", [1605, 1610]], [[64587, 64587], "mapped", [1606, 1580]], [[64588, 64588], "mapped", [1606, 1581]], [[64589, 64589], "mapped", [1606, 1582]], [[64590, 64590], "mapped", [1606, 1605]], [[64591, 64591], "mapped", [1606, 1609]], [[64592, 64592], "mapped", [1606, 1610]], [[64593, 64593], "mapped", [1607, 1580]], [[64594, 64594], "mapped", [1607, 1605]], [[64595, 64595], "mapped", [1607, 1609]], [[64596, 64596], "mapped", [1607, 1610]], [[64597, 64597], "mapped", [1610, 1580]], [[64598, 64598], "mapped", [1610, 1581]], [[64599, 64599], "mapped", [1610, 1582]], [[64600, 64600], "mapped", [1610, 1605]], [[64601, 64601], "mapped", [1610, 1609]], [[64602, 64602], "mapped", [1610, 1610]], [[64603, 64603], "mapped", [1584, 1648]], [[64604, 64604], "mapped", [1585, 1648]], [[64605, 64605], "mapped", [1609, 1648]], [[64606, 64606], "disallowed_STD3_mapped", [32, 1612, 1617]], [[64607, 64607], "disallowed_STD3_mapped", [32, 1613, 1617]], [[64608, 64608], "disallowed_STD3_mapped", [32, 1614, 1617]], [[64609, 64609], "disallowed_STD3_mapped", [32, 1615, 1617]], [[64610, 64610], "disallowed_STD3_mapped", [32, 1616, 1617]], [[64611, 64611], "disallowed_STD3_mapped", [32, 1617, 1648]], [[64612, 64612], "mapped", [1574, 1585]], [[64613, 64613], "mapped", [1574, 1586]], [[64614, 64614], "mapped", [1574, 1605]], [[64615, 64615], "mapped", [1574, 1606]], [[64616, 64616], "mapped", [1574, 1609]], [[64617, 64617], "mapped", [1574, 1610]], [[64618, 64618], "mapped", [1576, 1585]], [[64619, 64619], "mapped", [1576, 1586]], [[64620, 64620], "mapped", [1576, 1605]], [[64621, 64621], "mapped", [1576, 1606]], [[64622, 64622], "mapped", [1576, 1609]], [[64623, 64623], "mapped", [1576, 1610]], [[64624, 64624], "mapped", [1578, 1585]], [[64625, 64625], "mapped", [1578, 1586]], [[64626, 64626], "mapped", [1578, 1605]], [[64627, 64627], "mapped", [1578, 1606]], [[64628, 64628], "mapped", [1578, 1609]], [[64629, 64629], "mapped", [1578, 1610]], [[64630, 64630], "mapped", [1579, 1585]], [[64631, 64631], "mapped", [1579, 1586]], [[64632, 64632], "mapped", [1579, 1605]], [[64633, 64633], "mapped", [1579, 1606]], [[64634, 64634], "mapped", [1579, 1609]], [[64635, 64635], "mapped", [1579, 1610]], [[64636, 64636], "mapped", [1601, 1609]], [[64637, 64637], "mapped", [1601, 1610]], [[64638, 64638], "mapped", [1602, 1609]], [[64639, 64639], "mapped", [1602, 1610]], [[64640, 64640], "mapped", [1603, 1575]], [[64641, 64641], "mapped", [1603, 1604]], [[64642, 64642], "mapped", [1603, 1605]], [[64643, 64643], "mapped", [1603, 1609]], [[64644, 64644], "mapped", [1603, 1610]], [[64645, 64645], "mapped", [1604, 1605]], [[64646, 64646], "mapped", [1604, 1609]], [[64647, 64647], "mapped", [1604, 1610]], [[64648, 64648], "mapped", [1605, 1575]], [[64649, 64649], "mapped", [1605, 1605]], [[64650, 64650], "mapped", [1606, 1585]], [[64651, 64651], "mapped", [1606, 1586]], [[64652, 64652], "mapped", [1606, 1605]], [[64653, 64653], "mapped", [1606, 1606]], [[64654, 64654], "mapped", [1606, 1609]], [[64655, 64655], "mapped", [1606, 1610]], [[64656, 64656], "mapped", [1609, 1648]], [[64657, 64657], "mapped", [1610, 1585]], [[64658, 64658], "mapped", [1610, 1586]], [[64659, 64659], "mapped", [1610, 1605]], [[64660, 64660], "mapped", [1610, 1606]], [[64661, 64661], "mapped", [1610, 1609]], [[64662, 64662], "mapped", [1610, 1610]], [[64663, 64663], "mapped", [1574, 1580]], [[64664, 64664], "mapped", [1574, 1581]], [[64665, 64665], "mapped", [1574, 1582]], [[64666, 64666], "mapped", [1574, 1605]], [[64667, 64667], "mapped", [1574, 1607]], [[64668, 64668], "mapped", [1576, 1580]], [[64669, 64669], "mapped", [1576, 1581]], [[64670, 64670], "mapped", [1576, 1582]], [[64671, 64671], "mapped", [1576, 1605]], [[64672, 64672], "mapped", [1576, 1607]], [[64673, 64673], "mapped", [1578, 1580]], [[64674, 64674], "mapped", [1578, 1581]], [[64675, 64675], "mapped", [1578, 1582]], [[64676, 64676], "mapped", [1578, 1605]], [[64677, 64677], "mapped", [1578, 1607]], [[64678, 64678], "mapped", [1579, 1605]], [[64679, 64679], "mapped", [1580, 1581]], [[64680, 64680], "mapped", [1580, 1605]], [[64681, 64681], "mapped", [1581, 1580]], [[64682, 64682], "mapped", [1581, 1605]], [[64683, 64683], "mapped", [1582, 1580]], [[64684, 64684], "mapped", [1582, 1605]], [[64685, 64685], "mapped", [1587, 1580]], [[64686, 64686], "mapped", [1587, 1581]], [[64687, 64687], "mapped", [1587, 1582]], [[64688, 64688], "mapped", [1587, 1605]], [[64689, 64689], "mapped", [1589, 1581]], [[64690, 64690], "mapped", [1589, 1582]], [[64691, 64691], "mapped", [1589, 1605]], [[64692, 64692], "mapped", [1590, 1580]], [[64693, 64693], "mapped", [1590, 1581]], [[64694, 64694], "mapped", [1590, 1582]], [[64695, 64695], "mapped", [1590, 1605]], [[64696, 64696], "mapped", [1591, 1581]], [[64697, 64697], "mapped", [1592, 1605]], [[64698, 64698], "mapped", [1593, 1580]], [[64699, 64699], "mapped", [1593, 1605]], [[64700, 64700], "mapped", [1594, 1580]], [[64701, 64701], "mapped", [1594, 1605]], [[64702, 64702], "mapped", [1601, 1580]], [[64703, 64703], "mapped", [1601, 1581]], [[64704, 64704], "mapped", [1601, 1582]], [[64705, 64705], "mapped", [1601, 1605]], [[64706, 64706], "mapped", [1602, 1581]], [[64707, 64707], "mapped", [1602, 1605]], [[64708, 64708], "mapped", [1603, 1580]], [[64709, 64709], "mapped", [1603, 1581]], [[64710, 64710], "mapped", [1603, 1582]], [[64711, 64711], "mapped", [1603, 1604]], [[64712, 64712], "mapped", [1603, 1605]], [[64713, 64713], "mapped", [1604, 1580]], [[64714, 64714], "mapped", [1604, 1581]], [[64715, 64715], "mapped", [1604, 1582]], [[64716, 64716], "mapped", [1604, 1605]], [[64717, 64717], "mapped", [1604, 1607]], [[64718, 64718], "mapped", [1605, 1580]], [[64719, 64719], "mapped", [1605, 1581]], [[64720, 64720], "mapped", [1605, 1582]], [[64721, 64721], "mapped", [1605, 1605]], [[64722, 64722], "mapped", [1606, 1580]], [[64723, 64723], "mapped", [1606, 1581]], [[64724, 64724], "mapped", [1606, 1582]], [[64725, 64725], "mapped", [1606, 1605]], [[64726, 64726], "mapped", [1606, 1607]], [[64727, 64727], "mapped", [1607, 1580]], [[64728, 64728], "mapped", [1607, 1605]], [[64729, 64729], "mapped", [1607, 1648]], [[64730, 64730], "mapped", [1610, 1580]], [[64731, 64731], "mapped", [1610, 1581]], [[64732, 64732], "mapped", [1610, 1582]], [[64733, 64733], "mapped", [1610, 1605]], [[64734, 64734], "mapped", [1610, 1607]], [[64735, 64735], "mapped", [1574, 1605]], [[64736, 64736], "mapped", [1574, 1607]], [[64737, 64737], "mapped", [1576, 1605]], [[64738, 64738], "mapped", [1576, 1607]], [[64739, 64739], "mapped", [1578, 1605]], [[64740, 64740], "mapped", [1578, 1607]], [[64741, 64741], "mapped", [1579, 1605]], [[64742, 64742], "mapped", [1579, 1607]], [[64743, 64743], "mapped", [1587, 1605]], [[64744, 64744], "mapped", [1587, 1607]], [[64745, 64745], "mapped", [1588, 1605]], [[64746, 64746], "mapped", [1588, 1607]], [[64747, 64747], "mapped", [1603, 1604]], [[64748, 64748], "mapped", [1603, 1605]], [[64749, 64749], "mapped", [1604, 1605]], [[64750, 64750], "mapped", [1606, 1605]], [[64751, 64751], "mapped", [1606, 1607]], [[64752, 64752], "mapped", [1610, 1605]], [[64753, 64753], "mapped", [1610, 1607]], [[64754, 64754], "mapped", [1600, 1614, 1617]], [[64755, 64755], "mapped", [1600, 1615, 1617]], [[64756, 64756], "mapped", [1600, 1616, 1617]], [[64757, 64757], "mapped", [1591, 1609]], [[64758, 64758], "mapped", [1591, 1610]], [[64759, 64759], "mapped", [1593, 1609]], [[64760, 64760], "mapped", [1593, 1610]], [[64761, 64761], "mapped", [1594, 1609]], [[64762, 64762], "mapped", [1594, 1610]], [[64763, 64763], "mapped", [1587, 1609]], [[64764, 64764], "mapped", [1587, 1610]], [[64765, 64765], "mapped", [1588, 1609]], [[64766, 64766], "mapped", [1588, 1610]], [[64767, 64767], "mapped", [1581, 1609]], [[64768, 64768], "mapped", [1581, 1610]], [[64769, 64769], "mapped", [1580, 1609]], [[64770, 64770], "mapped", [1580, 1610]], [[64771, 64771], "mapped", [1582, 1609]], [[64772, 64772], "mapped", [1582, 1610]], [[64773, 64773], "mapped", [1589, 1609]], [[64774, 64774], "mapped", [1589, 1610]], [[64775, 64775], "mapped", [1590, 1609]], [[64776, 64776], "mapped", [1590, 1610]], [[64777, 64777], "mapped", [1588, 1580]], [[64778, 64778], "mapped", [1588, 1581]], [[64779, 64779], "mapped", [1588, 1582]], [[64780, 64780], "mapped", [1588, 1605]], [[64781, 64781], "mapped", [1588, 1585]], [[64782, 64782], "mapped", [1587, 1585]], [[64783, 64783], "mapped", [1589, 1585]], [[64784, 64784], "mapped", [1590, 1585]], [[64785, 64785], "mapped", [1591, 1609]], [[64786, 64786], "mapped", [1591, 1610]], [[64787, 64787], "mapped", [1593, 1609]], [[64788, 64788], "mapped", [1593, 1610]], [[64789, 64789], "mapped", [1594, 1609]], [[64790, 64790], "mapped", [1594, 1610]], [[64791, 64791], "mapped", [1587, 1609]], [[64792, 64792], "mapped", [1587, 1610]], [[64793, 64793], "mapped", [1588, 1609]], [[64794, 64794], "mapped", [1588, 1610]], [[64795, 64795], "mapped", [1581, 1609]], [[64796, 64796], "mapped", [1581, 1610]], [[64797, 64797], "mapped", [1580, 1609]], [[64798, 64798], "mapped", [1580, 1610]], [[64799, 64799], "mapped", [1582, 1609]], [[64800, 64800], "mapped", [1582, 1610]], [[64801, 64801], "mapped", [1589, 1609]], [[64802, 64802], "mapped", [1589, 1610]], [[64803, 64803], "mapped", [1590, 1609]], [[64804, 64804], "mapped", [1590, 1610]], [[64805, 64805], "mapped", [1588, 1580]], [[64806, 64806], "mapped", [1588, 1581]], [[64807, 64807], "mapped", [1588, 1582]], [[64808, 64808], "mapped", [1588, 1605]], [[64809, 64809], "mapped", [1588, 1585]], [[64810, 64810], "mapped", [1587, 1585]], [[64811, 64811], "mapped", [1589, 1585]], [[64812, 64812], "mapped", [1590, 1585]], [[64813, 64813], "mapped", [1588, 1580]], [[64814, 64814], "mapped", [1588, 1581]], [[64815, 64815], "mapped", [1588, 1582]], [[64816, 64816], "mapped", [1588, 1605]], [[64817, 64817], "mapped", [1587, 1607]], [[64818, 64818], "mapped", [1588, 1607]], [[64819, 64819], "mapped", [1591, 1605]], [[64820, 64820], "mapped", [1587, 1580]], [[64821, 64821], "mapped", [1587, 1581]], [[64822, 64822], "mapped", [1587, 1582]], [[64823, 64823], "mapped", [1588, 1580]], [[64824, 64824], "mapped", [1588, 1581]], [[64825, 64825], "mapped", [1588, 1582]], [[64826, 64826], "mapped", [1591, 1605]], [[64827, 64827], "mapped", [1592, 1605]], [[64828, 64829], "mapped", [1575, 1611]], [[64830, 64831], "valid", [], "NV8"], [[64832, 64847], "disallowed"], [[64848, 64848], "mapped", [1578, 1580, 1605]], [[64849, 64850], "mapped", [1578, 1581, 1580]], [[64851, 64851], "mapped", [1578, 1581, 1605]], [[64852, 64852], "mapped", [1578, 1582, 1605]], [[64853, 64853], "mapped", [1578, 1605, 1580]], [[64854, 64854], "mapped", [1578, 1605, 1581]], [[64855, 64855], "mapped", [1578, 1605, 1582]], [[64856, 64857], "mapped", [1580, 1605, 1581]], [[64858, 64858], "mapped", [1581, 1605, 1610]], [[64859, 64859], "mapped", [1581, 1605, 1609]], [[64860, 64860], "mapped", [1587, 1581, 1580]], [[64861, 64861], "mapped", [1587, 1580, 1581]], [[64862, 64862], "mapped", [1587, 1580, 1609]], [[64863, 64864], "mapped", [1587, 1605, 1581]], [[64865, 64865], "mapped", [1587, 1605, 1580]], [[64866, 64867], "mapped", [1587, 1605, 1605]], [[64868, 64869], "mapped", [1589, 1581, 1581]], [[64870, 64870], "mapped", [1589, 1605, 1605]], [[64871, 64872], "mapped", [1588, 1581, 1605]], [[64873, 64873], "mapped", [1588, 1580, 1610]], [[64874, 64875], "mapped", [1588, 1605, 1582]], [[64876, 64877], "mapped", [1588, 1605, 1605]], [[64878, 64878], "mapped", [1590, 1581, 1609]], [[64879, 64880], "mapped", [1590, 1582, 1605]], [[64881, 64882], "mapped", [1591, 1605, 1581]], [[64883, 64883], "mapped", [1591, 1605, 1605]], [[64884, 64884], "mapped", [1591, 1605, 1610]], [[64885, 64885], "mapped", [1593, 1580, 1605]], [[64886, 64887], "mapped", [1593, 1605, 1605]], [[64888, 64888], "mapped", [1593, 1605, 1609]], [[64889, 64889], "mapped", [1594, 1605, 1605]], [[64890, 64890], "mapped", [1594, 1605, 1610]], [[64891, 64891], "mapped", [1594, 1605, 1609]], [[64892, 64893], "mapped", [1601, 1582, 1605]], [[64894, 64894], "mapped", [1602, 1605, 1581]], [[64895, 64895], "mapped", [1602, 1605, 1605]], [[64896, 64896], "mapped", [1604, 1581, 1605]], [[64897, 64897], "mapped", [1604, 1581, 1610]], [[64898, 64898], "mapped", [1604, 1581, 1609]], [[64899, 64900], "mapped", [1604, 1580, 1580]], [[64901, 64902], "mapped", [1604, 1582, 1605]], [[64903, 64904], "mapped", [1604, 1605, 1581]], [[64905, 64905], "mapped", [1605, 1581, 1580]], [[64906, 64906], "mapped", [1605, 1581, 1605]], [[64907, 64907], "mapped", [1605, 1581, 1610]], [[64908, 64908], "mapped", [1605, 1580, 1581]], [[64909, 64909], "mapped", [1605, 1580, 1605]], [[64910, 64910], "mapped", [1605, 1582, 1580]], [[64911, 64911], "mapped", [1605, 1582, 1605]], [[64912, 64913], "disallowed"], [[64914, 64914], "mapped", [1605, 1580, 1582]], [[64915, 64915], "mapped", [1607, 1605, 1580]], [[64916, 64916], "mapped", [1607, 1605, 1605]], [[64917, 64917], "mapped", [1606, 1581, 1605]], [[64918, 64918], "mapped", [1606, 1581, 1609]], [[64919, 64920], "mapped", [1606, 1580, 1605]], [[64921, 64921], "mapped", [1606, 1580, 1609]], [[64922, 64922], "mapped", [1606, 1605, 1610]], [[64923, 64923], "mapped", [1606, 1605, 1609]], [[64924, 64925], "mapped", [1610, 1605, 1605]], [[64926, 64926], "mapped", [1576, 1582, 1610]], [[64927, 64927], "mapped", [1578, 1580, 1610]], [[64928, 64928], "mapped", [1578, 1580, 1609]], [[64929, 64929], "mapped", [1578, 1582, 1610]], [[64930, 64930], "mapped", [1578, 1582, 1609]], [[64931, 64931], "mapped", [1578, 1605, 1610]], [[64932, 64932], "mapped", [1578, 1605, 1609]], [[64933, 64933], "mapped", [1580, 1605, 1610]], [[64934, 64934], "mapped", [1580, 1581, 1609]], [[64935, 64935], "mapped", [1580, 1605, 1609]], [[64936, 64936], "mapped", [1587, 1582, 1609]], [[64937, 64937], "mapped", [1589, 1581, 1610]], [[64938, 64938], "mapped", [1588, 1581, 1610]], [[64939, 64939], "mapped", [1590, 1581, 1610]], [[64940, 64940], "mapped", [1604, 1580, 1610]], [[64941, 64941], "mapped", [1604, 1605, 1610]], [[64942, 64942], "mapped", [1610, 1581, 1610]], [[64943, 64943], "mapped", [1610, 1580, 1610]], [[64944, 64944], "mapped", [1610, 1605, 1610]], [[64945, 64945], "mapped", [1605, 1605, 1610]], [[64946, 64946], "mapped", [1602, 1605, 1610]], [[64947, 64947], "mapped", [1606, 1581, 1610]], [[64948, 64948], "mapped", [1602, 1605, 1581]], [[64949, 64949], "mapped", [1604, 1581, 1605]], [[64950, 64950], "mapped", [1593, 1605, 1610]], [[64951, 64951], "mapped", [1603, 1605, 1610]], [[64952, 64952], "mapped", [1606, 1580, 1581]], [[64953, 64953], "mapped", [1605, 1582, 1610]], [[64954, 64954], "mapped", [1604, 1580, 1605]], [[64955, 64955], "mapped", [1603, 1605, 1605]], [[64956, 64956], "mapped", [1604, 1580, 1605]], [[64957, 64957], "mapped", [1606, 1580, 1581]], [[64958, 64958], "mapped", [1580, 1581, 1610]], [[64959, 64959], "mapped", [1581, 1580, 1610]], [[64960, 64960], "mapped", [1605, 1580, 1610]], [[64961, 64961], "mapped", [1601, 1605, 1610]], [[64962, 64962], "mapped", [1576, 1581, 1610]], [[64963, 64963], "mapped", [1603, 1605, 1605]], [[64964, 64964], "mapped", [1593, 1580, 1605]], [[64965, 64965], "mapped", [1589, 1605, 1605]], [[64966, 64966], "mapped", [1587, 1582, 1610]], [[64967, 64967], "mapped", [1606, 1580, 1610]], [[64968, 64975], "disallowed"], [[64976, 65007], "disallowed"], [[65008, 65008], "mapped", [1589, 1604, 1746]], [[65009, 65009], "mapped", [1602, 1604, 1746]], [[65010, 65010], "mapped", [1575, 1604, 1604, 1607]], [[65011, 65011], "mapped", [1575, 1603, 1576, 1585]], [[65012, 65012], "mapped", [1605, 1581, 1605, 1583]], [[65013, 65013], "mapped", [1589, 1604, 1593, 1605]], [[65014, 65014], "mapped", [1585, 1587, 1608, 1604]], [[65015, 65015], "mapped", [1593, 1604, 1610, 1607]], [[65016, 65016], "mapped", [1608, 1587, 1604, 1605]], [[65017, 65017], "mapped", [1589, 1604, 1609]], [[65018, 65018], "disallowed_STD3_mapped", [1589, 1604, 1609, 32, 1575, 1604, 1604, 1607, 32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, 1605]], [[65019, 65019], "disallowed_STD3_mapped", [1580, 1604, 32, 1580, 1604, 1575, 1604, 1607]], [[65020, 65020], "mapped", [1585, 1740, 1575, 1604]], [[65021, 65021], "valid", [], "NV8"], [[65022, 65023], "disallowed"], [[65024, 65039], "ignored"], [[65040, 65040], "disallowed_STD3_mapped", [44]], [[65041, 65041], "mapped", [12289]], [[65042, 65042], "disallowed"], [[65043, 65043], "disallowed_STD3_mapped", [58]], [[65044, 65044], "disallowed_STD3_mapped", [59]], [[65045, 65045], "disallowed_STD3_mapped", [33]], [[65046, 65046], "disallowed_STD3_mapped", [63]], [[65047, 65047], "mapped", [12310]], [[65048, 65048], "mapped", [12311]], [[65049, 65049], "disallowed"], [[65050, 65055], "disallowed"], [[65056, 65059], "valid"], [[65060, 65062], "valid"], [[65063, 65069], "valid"], [[65070, 65071], "valid"], [[65072, 65072], "disallowed"], [[65073, 65073], "mapped", [8212]], [[65074, 65074], "mapped", [8211]], [[65075, 65076], "disallowed_STD3_mapped", [95]], [[65077, 65077], "disallowed_STD3_mapped", [40]], [[65078, 65078], "disallowed_STD3_mapped", [41]], [[65079, 65079], "disallowed_STD3_mapped", [123]], [[65080, 65080], "disallowed_STD3_mapped", [125]], [[65081, 65081], "mapped", [12308]], [[65082, 65082], "mapped", [12309]], [[65083, 65083], "mapped", [12304]], [[65084, 65084], "mapped", [12305]], [[65085, 65085], "mapped", [12298]], [[65086, 65086], "mapped", [12299]], [[65087, 65087], "mapped", [12296]], [[65088, 65088], "mapped", [12297]], [[65089, 65089], "mapped", [12300]], [[65090, 65090], "mapped", [12301]], [[65091, 65091], "mapped", [12302]], [[65092, 65092], "mapped", [12303]], [[65093, 65094], "valid", [], "NV8"], [[65095, 65095], "disallowed_STD3_mapped", [91]], [[65096, 65096], "disallowed_STD3_mapped", [93]], [[65097, 65100], "disallowed_STD3_mapped", [32, 773]], [[65101, 65103], "disallowed_STD3_mapped", [95]], [[65104, 65104], "disallowed_STD3_mapped", [44]], [[65105, 65105], "mapped", [12289]], [[65106, 65106], "disallowed"], [[65107, 65107], "disallowed"], [[65108, 65108], "disallowed_STD3_mapped", [59]], [[65109, 65109], "disallowed_STD3_mapped", [58]], [[65110, 65110], "disallowed_STD3_mapped", [63]], [[65111, 65111], "disallowed_STD3_mapped", [33]], [[65112, 65112], "mapped", [8212]], [[65113, 65113], "disallowed_STD3_mapped", [40]], [[65114, 65114], "disallowed_STD3_mapped", [41]], [[65115, 65115], "disallowed_STD3_mapped", [123]], [[65116, 65116], "disallowed_STD3_mapped", [125]], [[65117, 65117], "mapped", [12308]], [[65118, 65118], "mapped", [12309]], [[65119, 65119], "disallowed_STD3_mapped", [35]], [[65120, 65120], "disallowed_STD3_mapped", [38]], [[65121, 65121], "disallowed_STD3_mapped", [42]], [[65122, 65122], "disallowed_STD3_mapped", [43]], [[65123, 65123], "mapped", [45]], [[65124, 65124], "disallowed_STD3_mapped", [60]], [[65125, 65125], "disallowed_STD3_mapped", [62]], [[65126, 65126], "disallowed_STD3_mapped", [61]], [[65127, 65127], "disallowed"], [[65128, 65128], "disallowed_STD3_mapped", [92]], [[65129, 65129], "disallowed_STD3_mapped", [36]], [[65130, 65130], "disallowed_STD3_mapped", [37]], [[65131, 65131], "disallowed_STD3_mapped", [64]], [[65132, 65135], "disallowed"], [[65136, 65136], "disallowed_STD3_mapped", [32, 1611]], [[65137, 65137], "mapped", [1600, 1611]], [[65138, 65138], "disallowed_STD3_mapped", [32, 1612]], [[65139, 65139], "valid"], [[65140, 65140], "disallowed_STD3_mapped", [32, 1613]], [[65141, 65141], "disallowed"], [[65142, 65142], "disallowed_STD3_mapped", [32, 1614]], [[65143, 65143], "mapped", [1600, 1614]], [[65144, 65144], "disallowed_STD3_mapped", [32, 1615]], [[65145, 65145], "mapped", [1600, 1615]], [[65146, 65146], "disallowed_STD3_mapped", [32, 1616]], [[65147, 65147], "mapped", [1600, 1616]], [[65148, 65148], "disallowed_STD3_mapped", [32, 1617]], [[65149, 65149], "mapped", [1600, 1617]], [[65150, 65150], "disallowed_STD3_mapped", [32, 1618]], [[65151, 65151], "mapped", [1600, 1618]], [[65152, 65152], "mapped", [1569]], [[65153, 65154], "mapped", [1570]], [[65155, 65156], "mapped", [1571]], [[65157, 65158], "mapped", [1572]], [[65159, 65160], "mapped", [1573]], [[65161, 65164], "mapped", [1574]], [[65165, 65166], "mapped", [1575]], [[65167, 65170], "mapped", [1576]], [[65171, 65172], "mapped", [1577]], [[65173, 65176], "mapped", [1578]], [[65177, 65180], "mapped", [1579]], [[65181, 65184], "mapped", [1580]], [[65185, 65188], "mapped", [1581]], [[65189, 65192], "mapped", [1582]], [[65193, 65194], "mapped", [1583]], [[65195, 65196], "mapped", [1584]], [[65197, 65198], "mapped", [1585]], [[65199, 65200], "mapped", [1586]], [[65201, 65204], "mapped", [1587]], [[65205, 65208], "mapped", [1588]], [[65209, 65212], "mapped", [1589]], [[65213, 65216], "mapped", [1590]], [[65217, 65220], "mapped", [1591]], [[65221, 65224], "mapped", [1592]], [[65225, 65228], "mapped", [1593]], [[65229, 65232], "mapped", [1594]], [[65233, 65236], "mapped", [1601]], [[65237, 65240], "mapped", [1602]], [[65241, 65244], "mapped", [1603]], [[65245, 65248], "mapped", [1604]], [[65249, 65252], "mapped", [1605]], [[65253, 65256], "mapped", [1606]], [[65257, 65260], "mapped", [1607]], [[65261, 65262], "mapped", [1608]], [[65263, 65264], "mapped", [1609]], [[65265, 65268], "mapped", [1610]], [[65269, 65270], "mapped", [1604, 1570]], [[65271, 65272], "mapped", [1604, 1571]], [[65273, 65274], "mapped", [1604, 1573]], [[65275, 65276], "mapped", [1604, 1575]], [[65277, 65278], "disallowed"], [[65279, 65279], "ignored"], [[65280, 65280], "disallowed"], [[65281, 65281], "disallowed_STD3_mapped", [33]], [[65282, 65282], "disallowed_STD3_mapped", [34]], [[65283, 65283], "disallowed_STD3_mapped", [35]], [[65284, 65284], "disallowed_STD3_mapped", [36]], [[65285, 65285], "disallowed_STD3_mapped", [37]], [[65286, 65286], "disallowed_STD3_mapped", [38]], [[65287, 65287], "disallowed_STD3_mapped", [39]], [[65288, 65288], "disallowed_STD3_mapped", [40]], [[65289, 65289], "disallowed_STD3_mapped", [41]], [[65290, 65290], "disallowed_STD3_mapped", [42]], [[65291, 65291], "disallowed_STD3_mapped", [43]], [[65292, 65292], "disallowed_STD3_mapped", [44]], [[65293, 65293], "mapped", [45]], [[65294, 65294], "mapped", [46]], [[65295, 65295], "disallowed_STD3_mapped", [47]], [[65296, 65296], "mapped", [48]], [[65297, 65297], "mapped", [49]], [[65298, 65298], "mapped", [50]], [[65299, 65299], "mapped", [51]], [[65300, 65300], "mapped", [52]], [[65301, 65301], "mapped", [53]], [[65302, 65302], "mapped", [54]], [[65303, 65303], "mapped", [55]], [[65304, 65304], "mapped", [56]], [[65305, 65305], "mapped", [57]], [[65306, 65306], "disallowed_STD3_mapped", [58]], [[65307, 65307], "disallowed_STD3_mapped", [59]], [[65308, 65308], "disallowed_STD3_mapped", [60]], [[65309, 65309], "disallowed_STD3_mapped", [61]], [[65310, 65310], "disallowed_STD3_mapped", [62]], [[65311, 65311], "disallowed_STD3_mapped", [63]], [[65312, 65312], "disallowed_STD3_mapped", [64]], [[65313, 65313], "mapped", [97]], [[65314, 65314], "mapped", [98]], [[65315, 65315], "mapped", [99]], [[65316, 65316], "mapped", [100]], [[65317, 65317], "mapped", [101]], [[65318, 65318], "mapped", [102]], [[65319, 65319], "mapped", [103]], [[65320, 65320], "mapped", [104]], [[65321, 65321], "mapped", [105]], [[65322, 65322], "mapped", [106]], [[65323, 65323], "mapped", [107]], [[65324, 65324], "mapped", [108]], [[65325, 65325], "mapped", [109]], [[65326, 65326], "mapped", [110]], [[65327, 65327], "mapped", [111]], [[65328, 65328], "mapped", [112]], [[65329, 65329], "mapped", [113]], [[65330, 65330], "mapped", [114]], [[65331, 65331], "mapped", [115]], [[65332, 65332], "mapped", [116]], [[65333, 65333], "mapped", [117]], [[65334, 65334], "mapped", [118]], [[65335, 65335], "mapped", [119]], [[65336, 65336], "mapped", [120]], [[65337, 65337], "mapped", [121]], [[65338, 65338], "mapped", [122]], [[65339, 65339], "disallowed_STD3_mapped", [91]], [[65340, 65340], "disallowed_STD3_mapped", [92]], [[65341, 65341], "disallowed_STD3_mapped", [93]], [[65342, 65342], "disallowed_STD3_mapped", [94]], [[65343, 65343], "disallowed_STD3_mapped", [95]], [[65344, 65344], "disallowed_STD3_mapped", [96]], [[65345, 65345], "mapped", [97]], [[65346, 65346], "mapped", [98]], [[65347, 65347], "mapped", [99]], [[65348, 65348], "mapped", [100]], [[65349, 65349], "mapped", [101]], [[65350, 65350], "mapped", [102]], [[65351, 65351], "mapped", [103]], [[65352, 65352], "mapped", [104]], [[65353, 65353], "mapped", [105]], [[65354, 65354], "mapped", [106]], [[65355, 65355], "mapped", [107]], [[65356, 65356], "mapped", [108]], [[65357, 65357], "mapped", [109]], [[65358, 65358], "mapped", [110]], [[65359, 65359], "mapped", [111]], [[65360, 65360], "mapped", [112]], [[65361, 65361], "mapped", [113]], [[65362, 65362], "mapped", [114]], [[65363, 65363], "mapped", [115]], [[65364, 65364], "mapped", [116]], [[65365, 65365], "mapped", [117]], [[65366, 65366], "mapped", [118]], [[65367, 65367], "mapped", [119]], [[65368, 65368], "mapped", [120]], [[65369, 65369], "mapped", [121]], [[65370, 65370], "mapped", [122]], [[65371, 65371], "disallowed_STD3_mapped", [123]], [[65372, 65372], "disallowed_STD3_mapped", [124]], [[65373, 65373], "disallowed_STD3_mapped", [125]], [[65374, 65374], "disallowed_STD3_mapped", [126]], [[65375, 65375], "mapped", [10629]], [[65376, 65376], "mapped", [10630]], [[65377, 65377], "mapped", [46]], [[65378, 65378], "mapped", [12300]], [[65379, 65379], "mapped", [12301]], [[65380, 65380], "mapped", [12289]], [[65381, 65381], "mapped", [12539]], [[65382, 65382], "mapped", [12530]], [[65383, 65383], "mapped", [12449]], [[65384, 65384], "mapped", [12451]], [[65385, 65385], "mapped", [12453]], [[65386, 65386], "mapped", [12455]], [[65387, 65387], "mapped", [12457]], [[65388, 65388], "mapped", [12515]], [[65389, 65389], "mapped", [12517]], [[65390, 65390], "mapped", [12519]], [[65391, 65391], "mapped", [12483]], [[65392, 65392], "mapped", [12540]], [[65393, 65393], "mapped", [12450]], [[65394, 65394], "mapped", [12452]], [[65395, 65395], "mapped", [12454]], [[65396, 65396], "mapped", [12456]], [[65397, 65397], "mapped", [12458]], [[65398, 65398], "mapped", [12459]], [[65399, 65399], "mapped", [12461]], [[65400, 65400], "mapped", [12463]], [[65401, 65401], "mapped", [12465]], [[65402, 65402], "mapped", [12467]], [[65403, 65403], "mapped", [12469]], [[65404, 65404], "mapped", [12471]], [[65405, 65405], "mapped", [12473]], [[65406, 65406], "mapped", [12475]], [[65407, 65407], "mapped", [12477]], [[65408, 65408], "mapped", [12479]], [[65409, 65409], "mapped", [12481]], [[65410, 65410], "mapped", [12484]], [[65411, 65411], "mapped", [12486]], [[65412, 65412], "mapped", [12488]], [[65413, 65413], "mapped", [12490]], [[65414, 65414], "mapped", [12491]], [[65415, 65415], "mapped", [12492]], [[65416, 65416], "mapped", [12493]], [[65417, 65417], "mapped", [12494]], [[65418, 65418], "mapped", [12495]], [[65419, 65419], "mapped", [12498]], [[65420, 65420], "mapped", [12501]], [[65421, 65421], "mapped", [12504]], [[65422, 65422], "mapped", [12507]], [[65423, 65423], "mapped", [12510]], [[65424, 65424], "mapped", [12511]], [[65425, 65425], "mapped", [12512]], [[65426, 65426], "mapped", [12513]], [[65427, 65427], "mapped", [12514]], [[65428, 65428], "mapped", [12516]], [[65429, 65429], "mapped", [12518]], [[65430, 65430], "mapped", [12520]], [[65431, 65431], "mapped", [12521]], [[65432, 65432], "mapped", [12522]], [[65433, 65433], "mapped", [12523]], [[65434, 65434], "mapped", [12524]], [[65435, 65435], "mapped", [12525]], [[65436, 65436], "mapped", [12527]], [[65437, 65437], "mapped", [12531]], [[65438, 65438], "mapped", [12441]], [[65439, 65439], "mapped", [12442]], [[65440, 65440], "disallowed"], [[65441, 65441], "mapped", [4352]], [[65442, 65442], "mapped", [4353]], [[65443, 65443], "mapped", [4522]], [[65444, 65444], "mapped", [4354]], [[65445, 65445], "mapped", [4524]], [[65446, 65446], "mapped", [4525]], [[65447, 65447], "mapped", [4355]], [[65448, 65448], "mapped", [4356]], [[65449, 65449], "mapped", [4357]], [[65450, 65450], "mapped", [4528]], [[65451, 65451], "mapped", [4529]], [[65452, 65452], "mapped", [4530]], [[65453, 65453], "mapped", [4531]], [[65454, 65454], "mapped", [4532]], [[65455, 65455], "mapped", [4533]], [[65456, 65456], "mapped", [4378]], [[65457, 65457], "mapped", [4358]], [[65458, 65458], "mapped", [4359]], [[65459, 65459], "mapped", [4360]], [[65460, 65460], "mapped", [4385]], [[65461, 65461], "mapped", [4361]], [[65462, 65462], "mapped", [4362]], [[65463, 65463], "mapped", [4363]], [[65464, 65464], "mapped", [4364]], [[65465, 65465], "mapped", [4365]], [[65466, 65466], "mapped", [4366]], [[65467, 65467], "mapped", [4367]], [[65468, 65468], "mapped", [4368]], [[65469, 65469], "mapped", [4369]], [[65470, 65470], "mapped", [4370]], [[65471, 65473], "disallowed"], [[65474, 65474], "mapped", [4449]], [[65475, 65475], "mapped", [4450]], [[65476, 65476], "mapped", [4451]], [[65477, 65477], "mapped", [4452]], [[65478, 65478], "mapped", [4453]], [[65479, 65479], "mapped", [4454]], [[65480, 65481], "disallowed"], [[65482, 65482], "mapped", [4455]], [[65483, 65483], "mapped", [4456]], [[65484, 65484], "mapped", [4457]], [[65485, 65485], "mapped", [4458]], [[65486, 65486], "mapped", [4459]], [[65487, 65487], "mapped", [4460]], [[65488, 65489], "disallowed"], [[65490, 65490], "mapped", [4461]], [[65491, 65491], "mapped", [4462]], [[65492, 65492], "mapped", [4463]], [[65493, 65493], "mapped", [4464]], [[65494, 65494], "mapped", [4465]], [[65495, 65495], "mapped", [4466]], [[65496, 65497], "disallowed"], [[65498, 65498], "mapped", [4467]], [[65499, 65499], "mapped", [4468]], [[65500, 65500], "mapped", [4469]], [[65501, 65503], "disallowed"], [[65504, 65504], "mapped", [162]], [[65505, 65505], "mapped", [163]], [[65506, 65506], "mapped", [172]], [[65507, 65507], "disallowed_STD3_mapped", [32, 772]], [[65508, 65508], "mapped", [166]], [[65509, 65509], "mapped", [165]], [[65510, 65510], "mapped", [8361]], [[65511, 65511], "disallowed"], [[65512, 65512], "mapped", [9474]], [[65513, 65513], "mapped", [8592]], [[65514, 65514], "mapped", [8593]], [[65515, 65515], "mapped", [8594]], [[65516, 65516], "mapped", [8595]], [[65517, 65517], "mapped", [9632]], [[65518, 65518], "mapped", [9675]], [[65519, 65528], "disallowed"], [[65529, 65531], "disallowed"], [[65532, 65532], "disallowed"], [[65533, 65533], "disallowed"], [[65534, 65535], "disallowed"], [[65536, 65547], "valid"], [[65548, 65548], "disallowed"], [[65549, 65574], "valid"], [[65575, 65575], "disallowed"], [[65576, 65594], "valid"], [[65595, 65595], "disallowed"], [[65596, 65597], "valid"], [[65598, 65598], "disallowed"], [[65599, 65613], "valid"], [[65614, 65615], "disallowed"], [[65616, 65629], "valid"], [[65630, 65663], "disallowed"], [[65664, 65786], "valid"], [[65787, 65791], "disallowed"], [[65792, 65794], "valid", [], "NV8"], [[65795, 65798], "disallowed"], [[65799, 65843], "valid", [], "NV8"], [[65844, 65846], "disallowed"], [[65847, 65855], "valid", [], "NV8"], [[65856, 65930], "valid", [], "NV8"], [[65931, 65932], "valid", [], "NV8"], [[65933, 65935], "disallowed"], [[65936, 65947], "valid", [], "NV8"], [[65948, 65951], "disallowed"], [[65952, 65952], "valid", [], "NV8"], [[65953, 65999], "disallowed"], [[66e3, 66044], "valid", [], "NV8"], [[66045, 66045], "valid"], [[66046, 66175], "disallowed"], [[66176, 66204], "valid"], [[66205, 66207], "disallowed"], [[66208, 66256], "valid"], [[66257, 66271], "disallowed"], [[66272, 66272], "valid"], [[66273, 66299], "valid", [], "NV8"], [[66300, 66303], "disallowed"], [[66304, 66334], "valid"], [[66335, 66335], "valid"], [[66336, 66339], "valid", [], "NV8"], [[66340, 66351], "disallowed"], [[66352, 66368], "valid"], [[66369, 66369], "valid", [], "NV8"], [[66370, 66377], "valid"], [[66378, 66378], "valid", [], "NV8"], [[66379, 66383], "disallowed"], [[66384, 66426], "valid"], [[66427, 66431], "disallowed"], [[66432, 66461], "valid"], [[66462, 66462], "disallowed"], [[66463, 66463], "valid", [], "NV8"], [[66464, 66499], "valid"], [[66500, 66503], "disallowed"], [[66504, 66511], "valid"], [[66512, 66517], "valid", [], "NV8"], [[66518, 66559], "disallowed"], [[66560, 66560], "mapped", [66600]], [[66561, 66561], "mapped", [66601]], [[66562, 66562], "mapped", [66602]], [[66563, 66563], "mapped", [66603]], [[66564, 66564], "mapped", [66604]], [[66565, 66565], "mapped", [66605]], [[66566, 66566], "mapped", [66606]], [[66567, 66567], "mapped", [66607]], [[66568, 66568], "mapped", [66608]], [[66569, 66569], "mapped", [66609]], [[66570, 66570], "mapped", [66610]], [[66571, 66571], "mapped", [66611]], [[66572, 66572], "mapped", [66612]], [[66573, 66573], "mapped", [66613]], [[66574, 66574], "mapped", [66614]], [[66575, 66575], "mapped", [66615]], [[66576, 66576], "mapped", [66616]], [[66577, 66577], "mapped", [66617]], [[66578, 66578], "mapped", [66618]], [[66579, 66579], "mapped", [66619]], [[66580, 66580], "mapped", [66620]], [[66581, 66581], "mapped", [66621]], [[66582, 66582], "mapped", [66622]], [[66583, 66583], "mapped", [66623]], [[66584, 66584], "mapped", [66624]], [[66585, 66585], "mapped", [66625]], [[66586, 66586], "mapped", [66626]], [[66587, 66587], "mapped", [66627]], [[66588, 66588], "mapped", [66628]], [[66589, 66589], "mapped", [66629]], [[66590, 66590], "mapped", [66630]], [[66591, 66591], "mapped", [66631]], [[66592, 66592], "mapped", [66632]], [[66593, 66593], "mapped", [66633]], [[66594, 66594], "mapped", [66634]], [[66595, 66595], "mapped", [66635]], [[66596, 66596], "mapped", [66636]], [[66597, 66597], "mapped", [66637]], [[66598, 66598], "mapped", [66638]], [[66599, 66599], "mapped", [66639]], [[66600, 66637], "valid"], [[66638, 66717], "valid"], [[66718, 66719], "disallowed"], [[66720, 66729], "valid"], [[66730, 66815], "disallowed"], [[66816, 66855], "valid"], [[66856, 66863], "disallowed"], [[66864, 66915], "valid"], [[66916, 66926], "disallowed"], [[66927, 66927], "valid", [], "NV8"], [[66928, 67071], "disallowed"], [[67072, 67382], "valid"], [[67383, 67391], "disallowed"], [[67392, 67413], "valid"], [[67414, 67423], "disallowed"], [[67424, 67431], "valid"], [[67432, 67583], "disallowed"], [[67584, 67589], "valid"], [[67590, 67591], "disallowed"], [[67592, 67592], "valid"], [[67593, 67593], "disallowed"], [[67594, 67637], "valid"], [[67638, 67638], "disallowed"], [[67639, 67640], "valid"], [[67641, 67643], "disallowed"], [[67644, 67644], "valid"], [[67645, 67646], "disallowed"], [[67647, 67647], "valid"], [[67648, 67669], "valid"], [[67670, 67670], "disallowed"], [[67671, 67679], "valid", [], "NV8"], [[67680, 67702], "valid"], [[67703, 67711], "valid", [], "NV8"], [[67712, 67742], "valid"], [[67743, 67750], "disallowed"], [[67751, 67759], "valid", [], "NV8"], [[67760, 67807], "disallowed"], [[67808, 67826], "valid"], [[67827, 67827], "disallowed"], [[67828, 67829], "valid"], [[67830, 67834], "disallowed"], [[67835, 67839], "valid", [], "NV8"], [[67840, 67861], "valid"], [[67862, 67865], "valid", [], "NV8"], [[67866, 67867], "valid", [], "NV8"], [[67868, 67870], "disallowed"], [[67871, 67871], "valid", [], "NV8"], [[67872, 67897], "valid"], [[67898, 67902], "disallowed"], [[67903, 67903], "valid", [], "NV8"], [[67904, 67967], "disallowed"], [[67968, 68023], "valid"], [[68024, 68027], "disallowed"], [[68028, 68029], "valid", [], "NV8"], [[68030, 68031], "valid"], [[68032, 68047], "valid", [], "NV8"], [[68048, 68049], "disallowed"], [[68050, 68095], "valid", [], "NV8"], [[68096, 68099], "valid"], [[68100, 68100], "disallowed"], [[68101, 68102], "valid"], [[68103, 68107], "disallowed"], [[68108, 68115], "valid"], [[68116, 68116], "disallowed"], [[68117, 68119], "valid"], [[68120, 68120], "disallowed"], [[68121, 68147], "valid"], [[68148, 68151], "disallowed"], [[68152, 68154], "valid"], [[68155, 68158], "disallowed"], [[68159, 68159], "valid"], [[68160, 68167], "valid", [], "NV8"], [[68168, 68175], "disallowed"], [[68176, 68184], "valid", [], "NV8"], [[68185, 68191], "disallowed"], [[68192, 68220], "valid"], [[68221, 68223], "valid", [], "NV8"], [[68224, 68252], "valid"], [[68253, 68255], "valid", [], "NV8"], [[68256, 68287], "disallowed"], [[68288, 68295], "valid"], [[68296, 68296], "valid", [], "NV8"], [[68297, 68326], "valid"], [[68327, 68330], "disallowed"], [[68331, 68342], "valid", [], "NV8"], [[68343, 68351], "disallowed"], [[68352, 68405], "valid"], [[68406, 68408], "disallowed"], [[68409, 68415], "valid", [], "NV8"], [[68416, 68437], "valid"], [[68438, 68439], "disallowed"], [[68440, 68447], "valid", [], "NV8"], [[68448, 68466], "valid"], [[68467, 68471], "disallowed"], [[68472, 68479], "valid", [], "NV8"], [[68480, 68497], "valid"], [[68498, 68504], "disallowed"], [[68505, 68508], "valid", [], "NV8"], [[68509, 68520], "disallowed"], [[68521, 68527], "valid", [], "NV8"], [[68528, 68607], "disallowed"], [[68608, 68680], "valid"], [[68681, 68735], "disallowed"], [[68736, 68736], "mapped", [68800]], [[68737, 68737], "mapped", [68801]], [[68738, 68738], "mapped", [68802]], [[68739, 68739], "mapped", [68803]], [[68740, 68740], "mapped", [68804]], [[68741, 68741], "mapped", [68805]], [[68742, 68742], "mapped", [68806]], [[68743, 68743], "mapped", [68807]], [[68744, 68744], "mapped", [68808]], [[68745, 68745], "mapped", [68809]], [[68746, 68746], "mapped", [68810]], [[68747, 68747], "mapped", [68811]], [[68748, 68748], "mapped", [68812]], [[68749, 68749], "mapped", [68813]], [[68750, 68750], "mapped", [68814]], [[68751, 68751], "mapped", [68815]], [[68752, 68752], "mapped", [68816]], [[68753, 68753], "mapped", [68817]], [[68754, 68754], "mapped", [68818]], [[68755, 68755], "mapped", [68819]], [[68756, 68756], "mapped", [68820]], [[68757, 68757], "mapped", [68821]], [[68758, 68758], "mapped", [68822]], [[68759, 68759], "mapped", [68823]], [[68760, 68760], "mapped", [68824]], [[68761, 68761], "mapped", [68825]], [[68762, 68762], "mapped", [68826]], [[68763, 68763], "mapped", [68827]], [[68764, 68764], "mapped", [68828]], [[68765, 68765], "mapped", [68829]], [[68766, 68766], "mapped", [68830]], [[68767, 68767], "mapped", [68831]], [[68768, 68768], "mapped", [68832]], [[68769, 68769], "mapped", [68833]], [[68770, 68770], "mapped", [68834]], [[68771, 68771], "mapped", [68835]], [[68772, 68772], "mapped", [68836]], [[68773, 68773], "mapped", [68837]], [[68774, 68774], "mapped", [68838]], [[68775, 68775], "mapped", [68839]], [[68776, 68776], "mapped", [68840]], [[68777, 68777], "mapped", [68841]], [[68778, 68778], "mapped", [68842]], [[68779, 68779], "mapped", [68843]], [[68780, 68780], "mapped", [68844]], [[68781, 68781], "mapped", [68845]], [[68782, 68782], "mapped", [68846]], [[68783, 68783], "mapped", [68847]], [[68784, 68784], "mapped", [68848]], [[68785, 68785], "mapped", [68849]], [[68786, 68786], "mapped", [68850]], [[68787, 68799], "disallowed"], [[68800, 68850], "valid"], [[68851, 68857], "disallowed"], [[68858, 68863], "valid", [], "NV8"], [[68864, 69215], "disallowed"], [[69216, 69246], "valid", [], "NV8"], [[69247, 69631], "disallowed"], [[69632, 69702], "valid"], [[69703, 69709], "valid", [], "NV8"], [[69710, 69713], "disallowed"], [[69714, 69733], "valid", [], "NV8"], [[69734, 69743], "valid"], [[69744, 69758], "disallowed"], [[69759, 69759], "valid"], [[69760, 69818], "valid"], [[69819, 69820], "valid", [], "NV8"], [[69821, 69821], "disallowed"], [[69822, 69825], "valid", [], "NV8"], [[69826, 69839], "disallowed"], [[69840, 69864], "valid"], [[69865, 69871], "disallowed"], [[69872, 69881], "valid"], [[69882, 69887], "disallowed"], [[69888, 69940], "valid"], [[69941, 69941], "disallowed"], [[69942, 69951], "valid"], [[69952, 69955], "valid", [], "NV8"], [[69956, 69967], "disallowed"], [[69968, 70003], "valid"], [[70004, 70005], "valid", [], "NV8"], [[70006, 70006], "valid"], [[70007, 70015], "disallowed"], [[70016, 70084], "valid"], [[70085, 70088], "valid", [], "NV8"], [[70089, 70089], "valid", [], "NV8"], [[70090, 70092], "valid"], [[70093, 70093], "valid", [], "NV8"], [[70094, 70095], "disallowed"], [[70096, 70105], "valid"], [[70106, 70106], "valid"], [[70107, 70107], "valid", [], "NV8"], [[70108, 70108], "valid"], [[70109, 70111], "valid", [], "NV8"], [[70112, 70112], "disallowed"], [[70113, 70132], "valid", [], "NV8"], [[70133, 70143], "disallowed"], [[70144, 70161], "valid"], [[70162, 70162], "disallowed"], [[70163, 70199], "valid"], [[70200, 70205], "valid", [], "NV8"], [[70206, 70271], "disallowed"], [[70272, 70278], "valid"], [[70279, 70279], "disallowed"], [[70280, 70280], "valid"], [[70281, 70281], "disallowed"], [[70282, 70285], "valid"], [[70286, 70286], "disallowed"], [[70287, 70301], "valid"], [[70302, 70302], "disallowed"], [[70303, 70312], "valid"], [[70313, 70313], "valid", [], "NV8"], [[70314, 70319], "disallowed"], [[70320, 70378], "valid"], [[70379, 70383], "disallowed"], [[70384, 70393], "valid"], [[70394, 70399], "disallowed"], [[70400, 70400], "valid"], [[70401, 70403], "valid"], [[70404, 70404], "disallowed"], [[70405, 70412], "valid"], [[70413, 70414], "disallowed"], [[70415, 70416], "valid"], [[70417, 70418], "disallowed"], [[70419, 70440], "valid"], [[70441, 70441], "disallowed"], [[70442, 70448], "valid"], [[70449, 70449], "disallowed"], [[70450, 70451], "valid"], [[70452, 70452], "disallowed"], [[70453, 70457], "valid"], [[70458, 70459], "disallowed"], [[70460, 70468], "valid"], [[70469, 70470], "disallowed"], [[70471, 70472], "valid"], [[70473, 70474], "disallowed"], [[70475, 70477], "valid"], [[70478, 70479], "disallowed"], [[70480, 70480], "valid"], [[70481, 70486], "disallowed"], [[70487, 70487], "valid"], [[70488, 70492], "disallowed"], [[70493, 70499], "valid"], [[70500, 70501], "disallowed"], [[70502, 70508], "valid"], [[70509, 70511], "disallowed"], [[70512, 70516], "valid"], [[70517, 70783], "disallowed"], [[70784, 70853], "valid"], [[70854, 70854], "valid", [], "NV8"], [[70855, 70855], "valid"], [[70856, 70863], "disallowed"], [[70864, 70873], "valid"], [[70874, 71039], "disallowed"], [[71040, 71093], "valid"], [[71094, 71095], "disallowed"], [[71096, 71104], "valid"], [[71105, 71113], "valid", [], "NV8"], [[71114, 71127], "valid", [], "NV8"], [[71128, 71133], "valid"], [[71134, 71167], "disallowed"], [[71168, 71232], "valid"], [[71233, 71235], "valid", [], "NV8"], [[71236, 71236], "valid"], [[71237, 71247], "disallowed"], [[71248, 71257], "valid"], [[71258, 71295], "disallowed"], [[71296, 71351], "valid"], [[71352, 71359], "disallowed"], [[71360, 71369], "valid"], [[71370, 71423], "disallowed"], [[71424, 71449], "valid"], [[71450, 71452], "disallowed"], [[71453, 71467], "valid"], [[71468, 71471], "disallowed"], [[71472, 71481], "valid"], [[71482, 71487], "valid", [], "NV8"], [[71488, 71839], "disallowed"], [[71840, 71840], "mapped", [71872]], [[71841, 71841], "mapped", [71873]], [[71842, 71842], "mapped", [71874]], [[71843, 71843], "mapped", [71875]], [[71844, 71844], "mapped", [71876]], [[71845, 71845], "mapped", [71877]], [[71846, 71846], "mapped", [71878]], [[71847, 71847], "mapped", [71879]], [[71848, 71848], "mapped", [71880]], [[71849, 71849], "mapped", [71881]], [[71850, 71850], "mapped", [71882]], [[71851, 71851], "mapped", [71883]], [[71852, 71852], "mapped", [71884]], [[71853, 71853], "mapped", [71885]], [[71854, 71854], "mapped", [71886]], [[71855, 71855], "mapped", [71887]], [[71856, 71856], "mapped", [71888]], [[71857, 71857], "mapped", [71889]], [[71858, 71858], "mapped", [71890]], [[71859, 71859], "mapped", [71891]], [[71860, 71860], "mapped", [71892]], [[71861, 71861], "mapped", [71893]], [[71862, 71862], "mapped", [71894]], [[71863, 71863], "mapped", [71895]], [[71864, 71864], "mapped", [71896]], [[71865, 71865], "mapped", [71897]], [[71866, 71866], "mapped", [71898]], [[71867, 71867], "mapped", [71899]], [[71868, 71868], "mapped", [71900]], [[71869, 71869], "mapped", [71901]], [[71870, 71870], "mapped", [71902]], [[71871, 71871], "mapped", [71903]], [[71872, 71913], "valid"], [[71914, 71922], "valid", [], "NV8"], [[71923, 71934], "disallowed"], [[71935, 71935], "valid"], [[71936, 72383], "disallowed"], [[72384, 72440], "valid"], [[72441, 73727], "disallowed"], [[73728, 74606], "valid"], [[74607, 74648], "valid"], [[74649, 74649], "valid"], [[74650, 74751], "disallowed"], [[74752, 74850], "valid", [], "NV8"], [[74851, 74862], "valid", [], "NV8"], [[74863, 74863], "disallowed"], [[74864, 74867], "valid", [], "NV8"], [[74868, 74868], "valid", [], "NV8"], [[74869, 74879], "disallowed"], [[74880, 75075], "valid"], [[75076, 77823], "disallowed"], [[77824, 78894], "valid"], [[78895, 82943], "disallowed"], [[82944, 83526], "valid"], [[83527, 92159], "disallowed"], [[92160, 92728], "valid"], [[92729, 92735], "disallowed"], [[92736, 92766], "valid"], [[92767, 92767], "disallowed"], [[92768, 92777], "valid"], [[92778, 92781], "disallowed"], [[92782, 92783], "valid", [], "NV8"], [[92784, 92879], "disallowed"], [[92880, 92909], "valid"], [[92910, 92911], "disallowed"], [[92912, 92916], "valid"], [[92917, 92917], "valid", [], "NV8"], [[92918, 92927], "disallowed"], [[92928, 92982], "valid"], [[92983, 92991], "valid", [], "NV8"], [[92992, 92995], "valid"], [[92996, 92997], "valid", [], "NV8"], [[92998, 93007], "disallowed"], [[93008, 93017], "valid"], [[93018, 93018], "disallowed"], [[93019, 93025], "valid", [], "NV8"], [[93026, 93026], "disallowed"], [[93027, 93047], "valid"], [[93048, 93052], "disallowed"], [[93053, 93071], "valid"], [[93072, 93951], "disallowed"], [[93952, 94020], "valid"], [[94021, 94031], "disallowed"], [[94032, 94078], "valid"], [[94079, 94094], "disallowed"], [[94095, 94111], "valid"], [[94112, 110591], "disallowed"], [[110592, 110593], "valid"], [[110594, 113663], "disallowed"], [[113664, 113770], "valid"], [[113771, 113775], "disallowed"], [[113776, 113788], "valid"], [[113789, 113791], "disallowed"], [[113792, 113800], "valid"], [[113801, 113807], "disallowed"], [[113808, 113817], "valid"], [[113818, 113819], "disallowed"], [[113820, 113820], "valid", [], "NV8"], [[113821, 113822], "valid"], [[113823, 113823], "valid", [], "NV8"], [[113824, 113827], "ignored"], [[113828, 118783], "disallowed"], [[118784, 119029], "valid", [], "NV8"], [[119030, 119039], "disallowed"], [[119040, 119078], "valid", [], "NV8"], [[119079, 119080], "disallowed"], [[119081, 119081], "valid", [], "NV8"], [[119082, 119133], "valid", [], "NV8"], [[119134, 119134], "mapped", [119127, 119141]], [[119135, 119135], "mapped", [119128, 119141]], [[119136, 119136], "mapped", [119128, 119141, 119150]], [[119137, 119137], "mapped", [119128, 119141, 119151]], [[119138, 119138], "mapped", [119128, 119141, 119152]], [[119139, 119139], "mapped", [119128, 119141, 119153]], [[119140, 119140], "mapped", [119128, 119141, 119154]], [[119141, 119154], "valid", [], "NV8"], [[119155, 119162], "disallowed"], [[119163, 119226], "valid", [], "NV8"], [[119227, 119227], "mapped", [119225, 119141]], [[119228, 119228], "mapped", [119226, 119141]], [[119229, 119229], "mapped", [119225, 119141, 119150]], [[119230, 119230], "mapped", [119226, 119141, 119150]], [[119231, 119231], "mapped", [119225, 119141, 119151]], [[119232, 119232], "mapped", [119226, 119141, 119151]], [[119233, 119261], "valid", [], "NV8"], [[119262, 119272], "valid", [], "NV8"], [[119273, 119295], "disallowed"], [[119296, 119365], "valid", [], "NV8"], [[119366, 119551], "disallowed"], [[119552, 119638], "valid", [], "NV8"], [[119639, 119647], "disallowed"], [[119648, 119665], "valid", [], "NV8"], [[119666, 119807], "disallowed"], [[119808, 119808], "mapped", [97]], [[119809, 119809], "mapped", [98]], [[119810, 119810], "mapped", [99]], [[119811, 119811], "mapped", [100]], [[119812, 119812], "mapped", [101]], [[119813, 119813], "mapped", [102]], [[119814, 119814], "mapped", [103]], [[119815, 119815], "mapped", [104]], [[119816, 119816], "mapped", [105]], [[119817, 119817], "mapped", [106]], [[119818, 119818], "mapped", [107]], [[119819, 119819], "mapped", [108]], [[119820, 119820], "mapped", [109]], [[119821, 119821], "mapped", [110]], [[119822, 119822], "mapped", [111]], [[119823, 119823], "mapped", [112]], [[119824, 119824], "mapped", [113]], [[119825, 119825], "mapped", [114]], [[119826, 119826], "mapped", [115]], [[119827, 119827], "mapped", [116]], [[119828, 119828], "mapped", [117]], [[119829, 119829], "mapped", [118]], [[119830, 119830], "mapped", [119]], [[119831, 119831], "mapped", [120]], [[119832, 119832], "mapped", [121]], [[119833, 119833], "mapped", [122]], [[119834, 119834], "mapped", [97]], [[119835, 119835], "mapped", [98]], [[119836, 119836], "mapped", [99]], [[119837, 119837], "mapped", [100]], [[119838, 119838], "mapped", [101]], [[119839, 119839], "mapped", [102]], [[119840, 119840], "mapped", [103]], [[119841, 119841], "mapped", [104]], [[119842, 119842], "mapped", [105]], [[119843, 119843], "mapped", [106]], [[119844, 119844], "mapped", [107]], [[119845, 119845], "mapped", [108]], [[119846, 119846], "mapped", [109]], [[119847, 119847], "mapped", [110]], [[119848, 119848], "mapped", [111]], [[119849, 119849], "mapped", [112]], [[119850, 119850], "mapped", [113]], [[119851, 119851], "mapped", [114]], [[119852, 119852], "mapped", [115]], [[119853, 119853], "mapped", [116]], [[119854, 119854], "mapped", [117]], [[119855, 119855], "mapped", [118]], [[119856, 119856], "mapped", [119]], [[119857, 119857], "mapped", [120]], [[119858, 119858], "mapped", [121]], [[119859, 119859], "mapped", [122]], [[119860, 119860], "mapped", [97]], [[119861, 119861], "mapped", [98]], [[119862, 119862], "mapped", [99]], [[119863, 119863], "mapped", [100]], [[119864, 119864], "mapped", [101]], [[119865, 119865], "mapped", [102]], [[119866, 119866], "mapped", [103]], [[119867, 119867], "mapped", [104]], [[119868, 119868], "mapped", [105]], [[119869, 119869], "mapped", [106]], [[119870, 119870], "mapped", [107]], [[119871, 119871], "mapped", [108]], [[119872, 119872], "mapped", [109]], [[119873, 119873], "mapped", [110]], [[119874, 119874], "mapped", [111]], [[119875, 119875], "mapped", [112]], [[119876, 119876], "mapped", [113]], [[119877, 119877], "mapped", [114]], [[119878, 119878], "mapped", [115]], [[119879, 119879], "mapped", [116]], [[119880, 119880], "mapped", [117]], [[119881, 119881], "mapped", [118]], [[119882, 119882], "mapped", [119]], [[119883, 119883], "mapped", [120]], [[119884, 119884], "mapped", [121]], [[119885, 119885], "mapped", [122]], [[119886, 119886], "mapped", [97]], [[119887, 119887], "mapped", [98]], [[119888, 119888], "mapped", [99]], [[119889, 119889], "mapped", [100]], [[119890, 119890], "mapped", [101]], [[119891, 119891], "mapped", [102]], [[119892, 119892], "mapped", [103]], [[119893, 119893], "disallowed"], [[119894, 119894], "mapped", [105]], [[119895, 119895], "mapped", [106]], [[119896, 119896], "mapped", [107]], [[119897, 119897], "mapped", [108]], [[119898, 119898], "mapped", [109]], [[119899, 119899], "mapped", [110]], [[119900, 119900], "mapped", [111]], [[119901, 119901], "mapped", [112]], [[119902, 119902], "mapped", [113]], [[119903, 119903], "mapped", [114]], [[119904, 119904], "mapped", [115]], [[119905, 119905], "mapped", [116]], [[119906, 119906], "mapped", [117]], [[119907, 119907], "mapped", [118]], [[119908, 119908], "mapped", [119]], [[119909, 119909], "mapped", [120]], [[119910, 119910], "mapped", [121]], [[119911, 119911], "mapped", [122]], [[119912, 119912], "mapped", [97]], [[119913, 119913], "mapped", [98]], [[119914, 119914], "mapped", [99]], [[119915, 119915], "mapped", [100]], [[119916, 119916], "mapped", [101]], [[119917, 119917], "mapped", [102]], [[119918, 119918], "mapped", [103]], [[119919, 119919], "mapped", [104]], [[119920, 119920], "mapped", [105]], [[119921, 119921], "mapped", [106]], [[119922, 119922], "mapped", [107]], [[119923, 119923], "mapped", [108]], [[119924, 119924], "mapped", [109]], [[119925, 119925], "mapped", [110]], [[119926, 119926], "mapped", [111]], [[119927, 119927], "mapped", [112]], [[119928, 119928], "mapped", [113]], [[119929, 119929], "mapped", [114]], [[119930, 119930], "mapped", [115]], [[119931, 119931], "mapped", [116]], [[119932, 119932], "mapped", [117]], [[119933, 119933], "mapped", [118]], [[119934, 119934], "mapped", [119]], [[119935, 119935], "mapped", [120]], [[119936, 119936], "mapped", [121]], [[119937, 119937], "mapped", [122]], [[119938, 119938], "mapped", [97]], [[119939, 119939], "mapped", [98]], [[119940, 119940], "mapped", [99]], [[119941, 119941], "mapped", [100]], [[119942, 119942], "mapped", [101]], [[119943, 119943], "mapped", [102]], [[119944, 119944], "mapped", [103]], [[119945, 119945], "mapped", [104]], [[119946, 119946], "mapped", [105]], [[119947, 119947], "mapped", [106]], [[119948, 119948], "mapped", [107]], [[119949, 119949], "mapped", [108]], [[119950, 119950], "mapped", [109]], [[119951, 119951], "mapped", [110]], [[119952, 119952], "mapped", [111]], [[119953, 119953], "mapped", [112]], [[119954, 119954], "mapped", [113]], [[119955, 119955], "mapped", [114]], [[119956, 119956], "mapped", [115]], [[119957, 119957], "mapped", [116]], [[119958, 119958], "mapped", [117]], [[119959, 119959], "mapped", [118]], [[119960, 119960], "mapped", [119]], [[119961, 119961], "mapped", [120]], [[119962, 119962], "mapped", [121]], [[119963, 119963], "mapped", [122]], [[119964, 119964], "mapped", [97]], [[119965, 119965], "disallowed"], [[119966, 119966], "mapped", [99]], [[119967, 119967], "mapped", [100]], [[119968, 119969], "disallowed"], [[119970, 119970], "mapped", [103]], [[119971, 119972], "disallowed"], [[119973, 119973], "mapped", [106]], [[119974, 119974], "mapped", [107]], [[119975, 119976], "disallowed"], [[119977, 119977], "mapped", [110]], [[119978, 119978], "mapped", [111]], [[119979, 119979], "mapped", [112]], [[119980, 119980], "mapped", [113]], [[119981, 119981], "disallowed"], [[119982, 119982], "mapped", [115]], [[119983, 119983], "mapped", [116]], [[119984, 119984], "mapped", [117]], [[119985, 119985], "mapped", [118]], [[119986, 119986], "mapped", [119]], [[119987, 119987], "mapped", [120]], [[119988, 119988], "mapped", [121]], [[119989, 119989], "mapped", [122]], [[119990, 119990], "mapped", [97]], [[119991, 119991], "mapped", [98]], [[119992, 119992], "mapped", [99]], [[119993, 119993], "mapped", [100]], [[119994, 119994], "disallowed"], [[119995, 119995], "mapped", [102]], [[119996, 119996], "disallowed"], [[119997, 119997], "mapped", [104]], [[119998, 119998], "mapped", [105]], [[119999, 119999], "mapped", [106]], [[12e4, 12e4], "mapped", [107]], [[120001, 120001], "mapped", [108]], [[120002, 120002], "mapped", [109]], [[120003, 120003], "mapped", [110]], [[120004, 120004], "disallowed"], [[120005, 120005], "mapped", [112]], [[120006, 120006], "mapped", [113]], [[120007, 120007], "mapped", [114]], [[120008, 120008], "mapped", [115]], [[120009, 120009], "mapped", [116]], [[120010, 120010], "mapped", [117]], [[120011, 120011], "mapped", [118]], [[120012, 120012], "mapped", [119]], [[120013, 120013], "mapped", [120]], [[120014, 120014], "mapped", [121]], [[120015, 120015], "mapped", [122]], [[120016, 120016], "mapped", [97]], [[120017, 120017], "mapped", [98]], [[120018, 120018], "mapped", [99]], [[120019, 120019], "mapped", [100]], [[120020, 120020], "mapped", [101]], [[120021, 120021], "mapped", [102]], [[120022, 120022], "mapped", [103]], [[120023, 120023], "mapped", [104]], [[120024, 120024], "mapped", [105]], [[120025, 120025], "mapped", [106]], [[120026, 120026], "mapped", [107]], [[120027, 120027], "mapped", [108]], [[120028, 120028], "mapped", [109]], [[120029, 120029], "mapped", [110]], [[120030, 120030], "mapped", [111]], [[120031, 120031], "mapped", [112]], [[120032, 120032], "mapped", [113]], [[120033, 120033], "mapped", [114]], [[120034, 120034], "mapped", [115]], [[120035, 120035], "mapped", [116]], [[120036, 120036], "mapped", [117]], [[120037, 120037], "mapped", [118]], [[120038, 120038], "mapped", [119]], [[120039, 120039], "mapped", [120]], [[120040, 120040], "mapped", [121]], [[120041, 120041], "mapped", [122]], [[120042, 120042], "mapped", [97]], [[120043, 120043], "mapped", [98]], [[120044, 120044], "mapped", [99]], [[120045, 120045], "mapped", [100]], [[120046, 120046], "mapped", [101]], [[120047, 120047], "mapped", [102]], [[120048, 120048], "mapped", [103]], [[120049, 120049], "mapped", [104]], [[120050, 120050], "mapped", [105]], [[120051, 120051], "mapped", [106]], [[120052, 120052], "mapped", [107]], [[120053, 120053], "mapped", [108]], [[120054, 120054], "mapped", [109]], [[120055, 120055], "mapped", [110]], [[120056, 120056], "mapped", [111]], [[120057, 120057], "mapped", [112]], [[120058, 120058], "mapped", [113]], [[120059, 120059], "mapped", [114]], [[120060, 120060], "mapped", [115]], [[120061, 120061], "mapped", [116]], [[120062, 120062], "mapped", [117]], [[120063, 120063], "mapped", [118]], [[120064, 120064], "mapped", [119]], [[120065, 120065], "mapped", [120]], [[120066, 120066], "mapped", [121]], [[120067, 120067], "mapped", [122]], [[120068, 120068], "mapped", [97]], [[120069, 120069], "mapped", [98]], [[120070, 120070], "disallowed"], [[120071, 120071], "mapped", [100]], [[120072, 120072], "mapped", [101]], [[120073, 120073], "mapped", [102]], [[120074, 120074], "mapped", [103]], [[120075, 120076], "disallowed"], [[120077, 120077], "mapped", [106]], [[120078, 120078], "mapped", [107]], [[120079, 120079], "mapped", [108]], [[120080, 120080], "mapped", [109]], [[120081, 120081], "mapped", [110]], [[120082, 120082], "mapped", [111]], [[120083, 120083], "mapped", [112]], [[120084, 120084], "mapped", [113]], [[120085, 120085], "disallowed"], [[120086, 120086], "mapped", [115]], [[120087, 120087], "mapped", [116]], [[120088, 120088], "mapped", [117]], [[120089, 120089], "mapped", [118]], [[120090, 120090], "mapped", [119]], [[120091, 120091], "mapped", [120]], [[120092, 120092], "mapped", [121]], [[120093, 120093], "disallowed"], [[120094, 120094], "mapped", [97]], [[120095, 120095], "mapped", [98]], [[120096, 120096], "mapped", [99]], [[120097, 120097], "mapped", [100]], [[120098, 120098], "mapped", [101]], [[120099, 120099], "mapped", [102]], [[120100, 120100], "mapped", [103]], [[120101, 120101], "mapped", [104]], [[120102, 120102], "mapped", [105]], [[120103, 120103], "mapped", [106]], [[120104, 120104], "mapped", [107]], [[120105, 120105], "mapped", [108]], [[120106, 120106], "mapped", [109]], [[120107, 120107], "mapped", [110]], [[120108, 120108], "mapped", [111]], [[120109, 120109], "mapped", [112]], [[120110, 120110], "mapped", [113]], [[120111, 120111], "mapped", [114]], [[120112, 120112], "mapped", [115]], [[120113, 120113], "mapped", [116]], [[120114, 120114], "mapped", [117]], [[120115, 120115], "mapped", [118]], [[120116, 120116], "mapped", [119]], [[120117, 120117], "mapped", [120]], [[120118, 120118], "mapped", [121]], [[120119, 120119], "mapped", [122]], [[120120, 120120], "mapped", [97]], [[120121, 120121], "mapped", [98]], [[120122, 120122], "disallowed"], [[120123, 120123], "mapped", [100]], [[120124, 120124], "mapped", [101]], [[120125, 120125], "mapped", [102]], [[120126, 120126], "mapped", [103]], [[120127, 120127], "disallowed"], [[120128, 120128], "mapped", [105]], [[120129, 120129], "mapped", [106]], [[120130, 120130], "mapped", [107]], [[120131, 120131], "mapped", [108]], [[120132, 120132], "mapped", [109]], [[120133, 120133], "disallowed"], [[120134, 120134], "mapped", [111]], [[120135, 120137], "disallowed"], [[120138, 120138], "mapped", [115]], [[120139, 120139], "mapped", [116]], [[120140, 120140], "mapped", [117]], [[120141, 120141], "mapped", [118]], [[120142, 120142], "mapped", [119]], [[120143, 120143], "mapped", [120]], [[120144, 120144], "mapped", [121]], [[120145, 120145], "disallowed"], [[120146, 120146], "mapped", [97]], [[120147, 120147], "mapped", [98]], [[120148, 120148], "mapped", [99]], [[120149, 120149], "mapped", [100]], [[120150, 120150], "mapped", [101]], [[120151, 120151], "mapped", [102]], [[120152, 120152], "mapped", [103]], [[120153, 120153], "mapped", [104]], [[120154, 120154], "mapped", [105]], [[120155, 120155], "mapped", [106]], [[120156, 120156], "mapped", [107]], [[120157, 120157], "mapped", [108]], [[120158, 120158], "mapped", [109]], [[120159, 120159], "mapped", [110]], [[120160, 120160], "mapped", [111]], [[120161, 120161], "mapped", [112]], [[120162, 120162], "mapped", [113]], [[120163, 120163], "mapped", [114]], [[120164, 120164], "mapped", [115]], [[120165, 120165], "mapped", [116]], [[120166, 120166], "mapped", [117]], [[120167, 120167], "mapped", [118]], [[120168, 120168], "mapped", [119]], [[120169, 120169], "mapped", [120]], [[120170, 120170], "mapped", [121]], [[120171, 120171], "mapped", [122]], [[120172, 120172], "mapped", [97]], [[120173, 120173], "mapped", [98]], [[120174, 120174], "mapped", [99]], [[120175, 120175], "mapped", [100]], [[120176, 120176], "mapped", [101]], [[120177, 120177], "mapped", [102]], [[120178, 120178], "mapped", [103]], [[120179, 120179], "mapped", [104]], [[120180, 120180], "mapped", [105]], [[120181, 120181], "mapped", [106]], [[120182, 120182], "mapped", [107]], [[120183, 120183], "mapped", [108]], [[120184, 120184], "mapped", [109]], [[120185, 120185], "mapped", [110]], [[120186, 120186], "mapped", [111]], [[120187, 120187], "mapped", [112]], [[120188, 120188], "mapped", [113]], [[120189, 120189], "mapped", [114]], [[120190, 120190], "mapped", [115]], [[120191, 120191], "mapped", [116]], [[120192, 120192], "mapped", [117]], [[120193, 120193], "mapped", [118]], [[120194, 120194], "mapped", [119]], [[120195, 120195], "mapped", [120]], [[120196, 120196], "mapped", [121]], [[120197, 120197], "mapped", [122]], [[120198, 120198], "mapped", [97]], [[120199, 120199], "mapped", [98]], [[120200, 120200], "mapped", [99]], [[120201, 120201], "mapped", [100]], [[120202, 120202], "mapped", [101]], [[120203, 120203], "mapped", [102]], [[120204, 120204], "mapped", [103]], [[120205, 120205], "mapped", [104]], [[120206, 120206], "mapped", [105]], [[120207, 120207], "mapped", [106]], [[120208, 120208], "mapped", [107]], [[120209, 120209], "mapped", [108]], [[120210, 120210], "mapped", [109]], [[120211, 120211], "mapped", [110]], [[120212, 120212], "mapped", [111]], [[120213, 120213], "mapped", [112]], [[120214, 120214], "mapped", [113]], [[120215, 120215], "mapped", [114]], [[120216, 120216], "mapped", [115]], [[120217, 120217], "mapped", [116]], [[120218, 120218], "mapped", [117]], [[120219, 120219], "mapped", [118]], [[120220, 120220], "mapped", [119]], [[120221, 120221], "mapped", [120]], [[120222, 120222], "mapped", [121]], [[120223, 120223], "mapped", [122]], [[120224, 120224], "mapped", [97]], [[120225, 120225], "mapped", [98]], [[120226, 120226], "mapped", [99]], [[120227, 120227], "mapped", [100]], [[120228, 120228], "mapped", [101]], [[120229, 120229], "mapped", [102]], [[120230, 120230], "mapped", [103]], [[120231, 120231], "mapped", [104]], [[120232, 120232], "mapped", [105]], [[120233, 120233], "mapped", [106]], [[120234, 120234], "mapped", [107]], [[120235, 120235], "mapped", [108]], [[120236, 120236], "mapped", [109]], [[120237, 120237], "mapped", [110]], [[120238, 120238], "mapped", [111]], [[120239, 120239], "mapped", [112]], [[120240, 120240], "mapped", [113]], [[120241, 120241], "mapped", [114]], [[120242, 120242], "mapped", [115]], [[120243, 120243], "mapped", [116]], [[120244, 120244], "mapped", [117]], [[120245, 120245], "mapped", [118]], [[120246, 120246], "mapped", [119]], [[120247, 120247], "mapped", [120]], [[120248, 120248], "mapped", [121]], [[120249, 120249], "mapped", [122]], [[120250, 120250], "mapped", [97]], [[120251, 120251], "mapped", [98]], [[120252, 120252], "mapped", [99]], [[120253, 120253], "mapped", [100]], [[120254, 120254], "mapped", [101]], [[120255, 120255], "mapped", [102]], [[120256, 120256], "mapped", [103]], [[120257, 120257], "mapped", [104]], [[120258, 120258], "mapped", [105]], [[120259, 120259], "mapped", [106]], [[120260, 120260], "mapped", [107]], [[120261, 120261], "mapped", [108]], [[120262, 120262], "mapped", [109]], [[120263, 120263], "mapped", [110]], [[120264, 120264], "mapped", [111]], [[120265, 120265], "mapped", [112]], [[120266, 120266], "mapped", [113]], [[120267, 120267], "mapped", [114]], [[120268, 120268], "mapped", [115]], [[120269, 120269], "mapped", [116]], [[120270, 120270], "mapped", [117]], [[120271, 120271], "mapped", [118]], [[120272, 120272], "mapped", [119]], [[120273, 120273], "mapped", [120]], [[120274, 120274], "mapped", [121]], [[120275, 120275], "mapped", [122]], [[120276, 120276], "mapped", [97]], [[120277, 120277], "mapped", [98]], [[120278, 120278], "mapped", [99]], [[120279, 120279], "mapped", [100]], [[120280, 120280], "mapped", [101]], [[120281, 120281], "mapped", [102]], [[120282, 120282], "mapped", [103]], [[120283, 120283], "mapped", [104]], [[120284, 120284], "mapped", [105]], [[120285, 120285], "mapped", [106]], [[120286, 120286], "mapped", [107]], [[120287, 120287], "mapped", [108]], [[120288, 120288], "mapped", [109]], [[120289, 120289], "mapped", [110]], [[120290, 120290], "mapped", [111]], [[120291, 120291], "mapped", [112]], [[120292, 120292], "mapped", [113]], [[120293, 120293], "mapped", [114]], [[120294, 120294], "mapped", [115]], [[120295, 120295], "mapped", [116]], [[120296, 120296], "mapped", [117]], [[120297, 120297], "mapped", [118]], [[120298, 120298], "mapped", [119]], [[120299, 120299], "mapped", [120]], [[120300, 120300], "mapped", [121]], [[120301, 120301], "mapped", [122]], [[120302, 120302], "mapped", [97]], [[120303, 120303], "mapped", [98]], [[120304, 120304], "mapped", [99]], [[120305, 120305], "mapped", [100]], [[120306, 120306], "mapped", [101]], [[120307, 120307], "mapped", [102]], [[120308, 120308], "mapped", [103]], [[120309, 120309], "mapped", [104]], [[120310, 120310], "mapped", [105]], [[120311, 120311], "mapped", [106]], [[120312, 120312], "mapped", [107]], [[120313, 120313], "mapped", [108]], [[120314, 120314], "mapped", [109]], [[120315, 120315], "mapped", [110]], [[120316, 120316], "mapped", [111]], [[120317, 120317], "mapped", [112]], [[120318, 120318], "mapped", [113]], [[120319, 120319], "mapped", [114]], [[120320, 120320], "mapped", [115]], [[120321, 120321], "mapped", [116]], [[120322, 120322], "mapped", [117]], [[120323, 120323], "mapped", [118]], [[120324, 120324], "mapped", [119]], [[120325, 120325], "mapped", [120]], [[120326, 120326], "mapped", [121]], [[120327, 120327], "mapped", [122]], [[120328, 120328], "mapped", [97]], [[120329, 120329], "mapped", [98]], [[120330, 120330], "mapped", [99]], [[120331, 120331], "mapped", [100]], [[120332, 120332], "mapped", [101]], [[120333, 120333], "mapped", [102]], [[120334, 120334], "mapped", [103]], [[120335, 120335], "mapped", [104]], [[120336, 120336], "mapped", [105]], [[120337, 120337], "mapped", [106]], [[120338, 120338], "mapped", [107]], [[120339, 120339], "mapped", [108]], [[120340, 120340], "mapped", [109]], [[120341, 120341], "mapped", [110]], [[120342, 120342], "mapped", [111]], [[120343, 120343], "mapped", [112]], [[120344, 120344], "mapped", [113]], [[120345, 120345], "mapped", [114]], [[120346, 120346], "mapped", [115]], [[120347, 120347], "mapped", [116]], [[120348, 120348], "mapped", [117]], [[120349, 120349], "mapped", [118]], [[120350, 120350], "mapped", [119]], [[120351, 120351], "mapped", [120]], [[120352, 120352], "mapped", [121]], [[120353, 120353], "mapped", [122]], [[120354, 120354], "mapped", [97]], [[120355, 120355], "mapped", [98]], [[120356, 120356], "mapped", [99]], [[120357, 120357], "mapped", [100]], [[120358, 120358], "mapped", [101]], [[120359, 120359], "mapped", [102]], [[120360, 120360], "mapped", [103]], [[120361, 120361], "mapped", [104]], [[120362, 120362], "mapped", [105]], [[120363, 120363], "mapped", [106]], [[120364, 120364], "mapped", [107]], [[120365, 120365], "mapped", [108]], [[120366, 120366], "mapped", [109]], [[120367, 120367], "mapped", [110]], [[120368, 120368], "mapped", [111]], [[120369, 120369], "mapped", [112]], [[120370, 120370], "mapped", [113]], [[120371, 120371], "mapped", [114]], [[120372, 120372], "mapped", [115]], [[120373, 120373], "mapped", [116]], [[120374, 120374], "mapped", [117]], [[120375, 120375], "mapped", [118]], [[120376, 120376], "mapped", [119]], [[120377, 120377], "mapped", [120]], [[120378, 120378], "mapped", [121]], [[120379, 120379], "mapped", [122]], [[120380, 120380], "mapped", [97]], [[120381, 120381], "mapped", [98]], [[120382, 120382], "mapped", [99]], [[120383, 120383], "mapped", [100]], [[120384, 120384], "mapped", [101]], [[120385, 120385], "mapped", [102]], [[120386, 120386], "mapped", [103]], [[120387, 120387], "mapped", [104]], [[120388, 120388], "mapped", [105]], [[120389, 120389], "mapped", [106]], [[120390, 120390], "mapped", [107]], [[120391, 120391], "mapped", [108]], [[120392, 120392], "mapped", [109]], [[120393, 120393], "mapped", [110]], [[120394, 120394], "mapped", [111]], [[120395, 120395], "mapped", [112]], [[120396, 120396], "mapped", [113]], [[120397, 120397], "mapped", [114]], [[120398, 120398], "mapped", [115]], [[120399, 120399], "mapped", [116]], [[120400, 120400], "mapped", [117]], [[120401, 120401], "mapped", [118]], [[120402, 120402], "mapped", [119]], [[120403, 120403], "mapped", [120]], [[120404, 120404], "mapped", [121]], [[120405, 120405], "mapped", [122]], [[120406, 120406], "mapped", [97]], [[120407, 120407], "mapped", [98]], [[120408, 120408], "mapped", [99]], [[120409, 120409], "mapped", [100]], [[120410, 120410], "mapped", [101]], [[120411, 120411], "mapped", [102]], [[120412, 120412], "mapped", [103]], [[120413, 120413], "mapped", [104]], [[120414, 120414], "mapped", [105]], [[120415, 120415], "mapped", [106]], [[120416, 120416], "mapped", [107]], [[120417, 120417], "mapped", [108]], [[120418, 120418], "mapped", [109]], [[120419, 120419], "mapped", [110]], [[120420, 120420], "mapped", [111]], [[120421, 120421], "mapped", [112]], [[120422, 120422], "mapped", [113]], [[120423, 120423], "mapped", [114]], [[120424, 120424], "mapped", [115]], [[120425, 120425], "mapped", [116]], [[120426, 120426], "mapped", [117]], [[120427, 120427], "mapped", [118]], [[120428, 120428], "mapped", [119]], [[120429, 120429], "mapped", [120]], [[120430, 120430], "mapped", [121]], [[120431, 120431], "mapped", [122]], [[120432, 120432], "mapped", [97]], [[120433, 120433], "mapped", [98]], [[120434, 120434], "mapped", [99]], [[120435, 120435], "mapped", [100]], [[120436, 120436], "mapped", [101]], [[120437, 120437], "mapped", [102]], [[120438, 120438], "mapped", [103]], [[120439, 120439], "mapped", [104]], [[120440, 120440], "mapped", [105]], [[120441, 120441], "mapped", [106]], [[120442, 120442], "mapped", [107]], [[120443, 120443], "mapped", [108]], [[120444, 120444], "mapped", [109]], [[120445, 120445], "mapped", [110]], [[120446, 120446], "mapped", [111]], [[120447, 120447], "mapped", [112]], [[120448, 120448], "mapped", [113]], [[120449, 120449], "mapped", [114]], [[120450, 120450], "mapped", [115]], [[120451, 120451], "mapped", [116]], [[120452, 120452], "mapped", [117]], [[120453, 120453], "mapped", [118]], [[120454, 120454], "mapped", [119]], [[120455, 120455], "mapped", [120]], [[120456, 120456], "mapped", [121]], [[120457, 120457], "mapped", [122]], [[120458, 120458], "mapped", [97]], [[120459, 120459], "mapped", [98]], [[120460, 120460], "mapped", [99]], [[120461, 120461], "mapped", [100]], [[120462, 120462], "mapped", [101]], [[120463, 120463], "mapped", [102]], [[120464, 120464], "mapped", [103]], [[120465, 120465], "mapped", [104]], [[120466, 120466], "mapped", [105]], [[120467, 120467], "mapped", [106]], [[120468, 120468], "mapped", [107]], [[120469, 120469], "mapped", [108]], [[120470, 120470], "mapped", [109]], [[120471, 120471], "mapped", [110]], [[120472, 120472], "mapped", [111]], [[120473, 120473], "mapped", [112]], [[120474, 120474], "mapped", [113]], [[120475, 120475], "mapped", [114]], [[120476, 120476], "mapped", [115]], [[120477, 120477], "mapped", [116]], [[120478, 120478], "mapped", [117]], [[120479, 120479], "mapped", [118]], [[120480, 120480], "mapped", [119]], [[120481, 120481], "mapped", [120]], [[120482, 120482], "mapped", [121]], [[120483, 120483], "mapped", [122]], [[120484, 120484], "mapped", [305]], [[120485, 120485], "mapped", [567]], [[120486, 120487], "disallowed"], [[120488, 120488], "mapped", [945]], [[120489, 120489], "mapped", [946]], [[120490, 120490], "mapped", [947]], [[120491, 120491], "mapped", [948]], [[120492, 120492], "mapped", [949]], [[120493, 120493], "mapped", [950]], [[120494, 120494], "mapped", [951]], [[120495, 120495], "mapped", [952]], [[120496, 120496], "mapped", [953]], [[120497, 120497], "mapped", [954]], [[120498, 120498], "mapped", [955]], [[120499, 120499], "mapped", [956]], [[120500, 120500], "mapped", [957]], [[120501, 120501], "mapped", [958]], [[120502, 120502], "mapped", [959]], [[120503, 120503], "mapped", [960]], [[120504, 120504], "mapped", [961]], [[120505, 120505], "mapped", [952]], [[120506, 120506], "mapped", [963]], [[120507, 120507], "mapped", [964]], [[120508, 120508], "mapped", [965]], [[120509, 120509], "mapped", [966]], [[120510, 120510], "mapped", [967]], [[120511, 120511], "mapped", [968]], [[120512, 120512], "mapped", [969]], [[120513, 120513], "mapped", [8711]], [[120514, 120514], "mapped", [945]], [[120515, 120515], "mapped", [946]], [[120516, 120516], "mapped", [947]], [[120517, 120517], "mapped", [948]], [[120518, 120518], "mapped", [949]], [[120519, 120519], "mapped", [950]], [[120520, 120520], "mapped", [951]], [[120521, 120521], "mapped", [952]], [[120522, 120522], "mapped", [953]], [[120523, 120523], "mapped", [954]], [[120524, 120524], "mapped", [955]], [[120525, 120525], "mapped", [956]], [[120526, 120526], "mapped", [957]], [[120527, 120527], "mapped", [958]], [[120528, 120528], "mapped", [959]], [[120529, 120529], "mapped", [960]], [[120530, 120530], "mapped", [961]], [[120531, 120532], "mapped", [963]], [[120533, 120533], "mapped", [964]], [[120534, 120534], "mapped", [965]], [[120535, 120535], "mapped", [966]], [[120536, 120536], "mapped", [967]], [[120537, 120537], "mapped", [968]], [[120538, 120538], "mapped", [969]], [[120539, 120539], "mapped", [8706]], [[120540, 120540], "mapped", [949]], [[120541, 120541], "mapped", [952]], [[120542, 120542], "mapped", [954]], [[120543, 120543], "mapped", [966]], [[120544, 120544], "mapped", [961]], [[120545, 120545], "mapped", [960]], [[120546, 120546], "mapped", [945]], [[120547, 120547], "mapped", [946]], [[120548, 120548], "mapped", [947]], [[120549, 120549], "mapped", [948]], [[120550, 120550], "mapped", [949]], [[120551, 120551], "mapped", [950]], [[120552, 120552], "mapped", [951]], [[120553, 120553], "mapped", [952]], [[120554, 120554], "mapped", [953]], [[120555, 120555], "mapped", [954]], [[120556, 120556], "mapped", [955]], [[120557, 120557], "mapped", [956]], [[120558, 120558], "mapped", [957]], [[120559, 120559], "mapped", [958]], [[120560, 120560], "mapped", [959]], [[120561, 120561], "mapped", [960]], [[120562, 120562], "mapped", [961]], [[120563, 120563], "mapped", [952]], [[120564, 120564], "mapped", [963]], [[120565, 120565], "mapped", [964]], [[120566, 120566], "mapped", [965]], [[120567, 120567], "mapped", [966]], [[120568, 120568], "mapped", [967]], [[120569, 120569], "mapped", [968]], [[120570, 120570], "mapped", [969]], [[120571, 120571], "mapped", [8711]], [[120572, 120572], "mapped", [945]], [[120573, 120573], "mapped", [946]], [[120574, 120574], "mapped", [947]], [[120575, 120575], "mapped", [948]], [[120576, 120576], "mapped", [949]], [[120577, 120577], "mapped", [950]], [[120578, 120578], "mapped", [951]], [[120579, 120579], "mapped", [952]], [[120580, 120580], "mapped", [953]], [[120581, 120581], "mapped", [954]], [[120582, 120582], "mapped", [955]], [[120583, 120583], "mapped", [956]], [[120584, 120584], "mapped", [957]], [[120585, 120585], "mapped", [958]], [[120586, 120586], "mapped", [959]], [[120587, 120587], "mapped", [960]], [[120588, 120588], "mapped", [961]], [[120589, 120590], "mapped", [963]], [[120591, 120591], "mapped", [964]], [[120592, 120592], "mapped", [965]], [[120593, 120593], "mapped", [966]], [[120594, 120594], "mapped", [967]], [[120595, 120595], "mapped", [968]], [[120596, 120596], "mapped", [969]], [[120597, 120597], "mapped", [8706]], [[120598, 120598], "mapped", [949]], [[120599, 120599], "mapped", [952]], [[120600, 120600], "mapped", [954]], [[120601, 120601], "mapped", [966]], [[120602, 120602], "mapped", [961]], [[120603, 120603], "mapped", [960]], [[120604, 120604], "mapped", [945]], [[120605, 120605], "mapped", [946]], [[120606, 120606], "mapped", [947]], [[120607, 120607], "mapped", [948]], [[120608, 120608], "mapped", [949]], [[120609, 120609], "mapped", [950]], [[120610, 120610], "mapped", [951]], [[120611, 120611], "mapped", [952]], [[120612, 120612], "mapped", [953]], [[120613, 120613], "mapped", [954]], [[120614, 120614], "mapped", [955]], [[120615, 120615], "mapped", [956]], [[120616, 120616], "mapped", [957]], [[120617, 120617], "mapped", [958]], [[120618, 120618], "mapped", [959]], [[120619, 120619], "mapped", [960]], [[120620, 120620], "mapped", [961]], [[120621, 120621], "mapped", [952]], [[120622, 120622], "mapped", [963]], [[120623, 120623], "mapped", [964]], [[120624, 120624], "mapped", [965]], [[120625, 120625], "mapped", [966]], [[120626, 120626], "mapped", [967]], [[120627, 120627], "mapped", [968]], [[120628, 120628], "mapped", [969]], [[120629, 120629], "mapped", [8711]], [[120630, 120630], "mapped", [945]], [[120631, 120631], "mapped", [946]], [[120632, 120632], "mapped", [947]], [[120633, 120633], "mapped", [948]], [[120634, 120634], "mapped", [949]], [[120635, 120635], "mapped", [950]], [[120636, 120636], "mapped", [951]], [[120637, 120637], "mapped", [952]], [[120638, 120638], "mapped", [953]], [[120639, 120639], "mapped", [954]], [[120640, 120640], "mapped", [955]], [[120641, 120641], "mapped", [956]], [[120642, 120642], "mapped", [957]], [[120643, 120643], "mapped", [958]], [[120644, 120644], "mapped", [959]], [[120645, 120645], "mapped", [960]], [[120646, 120646], "mapped", [961]], [[120647, 120648], "mapped", [963]], [[120649, 120649], "mapped", [964]], [[120650, 120650], "mapped", [965]], [[120651, 120651], "mapped", [966]], [[120652, 120652], "mapped", [967]], [[120653, 120653], "mapped", [968]], [[120654, 120654], "mapped", [969]], [[120655, 120655], "mapped", [8706]], [[120656, 120656], "mapped", [949]], [[120657, 120657], "mapped", [952]], [[120658, 120658], "mapped", [954]], [[120659, 120659], "mapped", [966]], [[120660, 120660], "mapped", [961]], [[120661, 120661], "mapped", [960]], [[120662, 120662], "mapped", [945]], [[120663, 120663], "mapped", [946]], [[120664, 120664], "mapped", [947]], [[120665, 120665], "mapped", [948]], [[120666, 120666], "mapped", [949]], [[120667, 120667], "mapped", [950]], [[120668, 120668], "mapped", [951]], [[120669, 120669], "mapped", [952]], [[120670, 120670], "mapped", [953]], [[120671, 120671], "mapped", [954]], [[120672, 120672], "mapped", [955]], [[120673, 120673], "mapped", [956]], [[120674, 120674], "mapped", [957]], [[120675, 120675], "mapped", [958]], [[120676, 120676], "mapped", [959]], [[120677, 120677], "mapped", [960]], [[120678, 120678], "mapped", [961]], [[120679, 120679], "mapped", [952]], [[120680, 120680], "mapped", [963]], [[120681, 120681], "mapped", [964]], [[120682, 120682], "mapped", [965]], [[120683, 120683], "mapped", [966]], [[120684, 120684], "mapped", [967]], [[120685, 120685], "mapped", [968]], [[120686, 120686], "mapped", [969]], [[120687, 120687], "mapped", [8711]], [[120688, 120688], "mapped", [945]], [[120689, 120689], "mapped", [946]], [[120690, 120690], "mapped", [947]], [[120691, 120691], "mapped", [948]], [[120692, 120692], "mapped", [949]], [[120693, 120693], "mapped", [950]], [[120694, 120694], "mapped", [951]], [[120695, 120695], "mapped", [952]], [[120696, 120696], "mapped", [953]], [[120697, 120697], "mapped", [954]], [[120698, 120698], "mapped", [955]], [[120699, 120699], "mapped", [956]], [[120700, 120700], "mapped", [957]], [[120701, 120701], "mapped", [958]], [[120702, 120702], "mapped", [959]], [[120703, 120703], "mapped", [960]], [[120704, 120704], "mapped", [961]], [[120705, 120706], "mapped", [963]], [[120707, 120707], "mapped", [964]], [[120708, 120708], "mapped", [965]], [[120709, 120709], "mapped", [966]], [[120710, 120710], "mapped", [967]], [[120711, 120711], "mapped", [968]], [[120712, 120712], "mapped", [969]], [[120713, 120713], "mapped", [8706]], [[120714, 120714], "mapped", [949]], [[120715, 120715], "mapped", [952]], [[120716, 120716], "mapped", [954]], [[120717, 120717], "mapped", [966]], [[120718, 120718], "mapped", [961]], [[120719, 120719], "mapped", [960]], [[120720, 120720], "mapped", [945]], [[120721, 120721], "mapped", [946]], [[120722, 120722], "mapped", [947]], [[120723, 120723], "mapped", [948]], [[120724, 120724], "mapped", [949]], [[120725, 120725], "mapped", [950]], [[120726, 120726], "mapped", [951]], [[120727, 120727], "mapped", [952]], [[120728, 120728], "mapped", [953]], [[120729, 120729], "mapped", [954]], [[120730, 120730], "mapped", [955]], [[120731, 120731], "mapped", [956]], [[120732, 120732], "mapped", [957]], [[120733, 120733], "mapped", [958]], [[120734, 120734], "mapped", [959]], [[120735, 120735], "mapped", [960]], [[120736, 120736], "mapped", [961]], [[120737, 120737], "mapped", [952]], [[120738, 120738], "mapped", [963]], [[120739, 120739], "mapped", [964]], [[120740, 120740], "mapped", [965]], [[120741, 120741], "mapped", [966]], [[120742, 120742], "mapped", [967]], [[120743, 120743], "mapped", [968]], [[120744, 120744], "mapped", [969]], [[120745, 120745], "mapped", [8711]], [[120746, 120746], "mapped", [945]], [[120747, 120747], "mapped", [946]], [[120748, 120748], "mapped", [947]], [[120749, 120749], "mapped", [948]], [[120750, 120750], "mapped", [949]], [[120751, 120751], "mapped", [950]], [[120752, 120752], "mapped", [951]], [[120753, 120753], "mapped", [952]], [[120754, 120754], "mapped", [953]], [[120755, 120755], "mapped", [954]], [[120756, 120756], "mapped", [955]], [[120757, 120757], "mapped", [956]], [[120758, 120758], "mapped", [957]], [[120759, 120759], "mapped", [958]], [[120760, 120760], "mapped", [959]], [[120761, 120761], "mapped", [960]], [[120762, 120762], "mapped", [961]], [[120763, 120764], "mapped", [963]], [[120765, 120765], "mapped", [964]], [[120766, 120766], "mapped", [965]], [[120767, 120767], "mapped", [966]], [[120768, 120768], "mapped", [967]], [[120769, 120769], "mapped", [968]], [[120770, 120770], "mapped", [969]], [[120771, 120771], "mapped", [8706]], [[120772, 120772], "mapped", [949]], [[120773, 120773], "mapped", [952]], [[120774, 120774], "mapped", [954]], [[120775, 120775], "mapped", [966]], [[120776, 120776], "mapped", [961]], [[120777, 120777], "mapped", [960]], [[120778, 120779], "mapped", [989]], [[120780, 120781], "disallowed"], [[120782, 120782], "mapped", [48]], [[120783, 120783], "mapped", [49]], [[120784, 120784], "mapped", [50]], [[120785, 120785], "mapped", [51]], [[120786, 120786], "mapped", [52]], [[120787, 120787], "mapped", [53]], [[120788, 120788], "mapped", [54]], [[120789, 120789], "mapped", [55]], [[120790, 120790], "mapped", [56]], [[120791, 120791], "mapped", [57]], [[120792, 120792], "mapped", [48]], [[120793, 120793], "mapped", [49]], [[120794, 120794], "mapped", [50]], [[120795, 120795], "mapped", [51]], [[120796, 120796], "mapped", [52]], [[120797, 120797], "mapped", [53]], [[120798, 120798], "mapped", [54]], [[120799, 120799], "mapped", [55]], [[120800, 120800], "mapped", [56]], [[120801, 120801], "mapped", [57]], [[120802, 120802], "mapped", [48]], [[120803, 120803], "mapped", [49]], [[120804, 120804], "mapped", [50]], [[120805, 120805], "mapped", [51]], [[120806, 120806], "mapped", [52]], [[120807, 120807], "mapped", [53]], [[120808, 120808], "mapped", [54]], [[120809, 120809], "mapped", [55]], [[120810, 120810], "mapped", [56]], [[120811, 120811], "mapped", [57]], [[120812, 120812], "mapped", [48]], [[120813, 120813], "mapped", [49]], [[120814, 120814], "mapped", [50]], [[120815, 120815], "mapped", [51]], [[120816, 120816], "mapped", [52]], [[120817, 120817], "mapped", [53]], [[120818, 120818], "mapped", [54]], [[120819, 120819], "mapped", [55]], [[120820, 120820], "mapped", [56]], [[120821, 120821], "mapped", [57]], [[120822, 120822], "mapped", [48]], [[120823, 120823], "mapped", [49]], [[120824, 120824], "mapped", [50]], [[120825, 120825], "mapped", [51]], [[120826, 120826], "mapped", [52]], [[120827, 120827], "mapped", [53]], [[120828, 120828], "mapped", [54]], [[120829, 120829], "mapped", [55]], [[120830, 120830], "mapped", [56]], [[120831, 120831], "mapped", [57]], [[120832, 121343], "valid", [], "NV8"], [[121344, 121398], "valid"], [[121399, 121402], "valid", [], "NV8"], [[121403, 121452], "valid"], [[121453, 121460], "valid", [], "NV8"], [[121461, 121461], "valid"], [[121462, 121475], "valid", [], "NV8"], [[121476, 121476], "valid"], [[121477, 121483], "valid", [], "NV8"], [[121484, 121498], "disallowed"], [[121499, 121503], "valid"], [[121504, 121504], "disallowed"], [[121505, 121519], "valid"], [[121520, 124927], "disallowed"], [[124928, 125124], "valid"], [[125125, 125126], "disallowed"], [[125127, 125135], "valid", [], "NV8"], [[125136, 125142], "valid"], [[125143, 126463], "disallowed"], [[126464, 126464], "mapped", [1575]], [[126465, 126465], "mapped", [1576]], [[126466, 126466], "mapped", [1580]], [[126467, 126467], "mapped", [1583]], [[126468, 126468], "disallowed"], [[126469, 126469], "mapped", [1608]], [[126470, 126470], "mapped", [1586]], [[126471, 126471], "mapped", [1581]], [[126472, 126472], "mapped", [1591]], [[126473, 126473], "mapped", [1610]], [[126474, 126474], "mapped", [1603]], [[126475, 126475], "mapped", [1604]], [[126476, 126476], "mapped", [1605]], [[126477, 126477], "mapped", [1606]], [[126478, 126478], "mapped", [1587]], [[126479, 126479], "mapped", [1593]], [[126480, 126480], "mapped", [1601]], [[126481, 126481], "mapped", [1589]], [[126482, 126482], "mapped", [1602]], [[126483, 126483], "mapped", [1585]], [[126484, 126484], "mapped", [1588]], [[126485, 126485], "mapped", [1578]], [[126486, 126486], "mapped", [1579]], [[126487, 126487], "mapped", [1582]], [[126488, 126488], "mapped", [1584]], [[126489, 126489], "mapped", [1590]], [[126490, 126490], "mapped", [1592]], [[126491, 126491], "mapped", [1594]], [[126492, 126492], "mapped", [1646]], [[126493, 126493], "mapped", [1722]], [[126494, 126494], "mapped", [1697]], [[126495, 126495], "mapped", [1647]], [[126496, 126496], "disallowed"], [[126497, 126497], "mapped", [1576]], [[126498, 126498], "mapped", [1580]], [[126499, 126499], "disallowed"], [[126500, 126500], "mapped", [1607]], [[126501, 126502], "disallowed"], [[126503, 126503], "mapped", [1581]], [[126504, 126504], "disallowed"], [[126505, 126505], "mapped", [1610]], [[126506, 126506], "mapped", [1603]], [[126507, 126507], "mapped", [1604]], [[126508, 126508], "mapped", [1605]], [[126509, 126509], "mapped", [1606]], [[126510, 126510], "mapped", [1587]], [[126511, 126511], "mapped", [1593]], [[126512, 126512], "mapped", [1601]], [[126513, 126513], "mapped", [1589]], [[126514, 126514], "mapped", [1602]], [[126515, 126515], "disallowed"], [[126516, 126516], "mapped", [1588]], [[126517, 126517], "mapped", [1578]], [[126518, 126518], "mapped", [1579]], [[126519, 126519], "mapped", [1582]], [[126520, 126520], "disallowed"], [[126521, 126521], "mapped", [1590]], [[126522, 126522], "disallowed"], [[126523, 126523], "mapped", [1594]], [[126524, 126529], "disallowed"], [[126530, 126530], "mapped", [1580]], [[126531, 126534], "disallowed"], [[126535, 126535], "mapped", [1581]], [[126536, 126536], "disallowed"], [[126537, 126537], "mapped", [1610]], [[126538, 126538], "disallowed"], [[126539, 126539], "mapped", [1604]], [[126540, 126540], "disallowed"], [[126541, 126541], "mapped", [1606]], [[126542, 126542], "mapped", [1587]], [[126543, 126543], "mapped", [1593]], [[126544, 126544], "disallowed"], [[126545, 126545], "mapped", [1589]], [[126546, 126546], "mapped", [1602]], [[126547, 126547], "disallowed"], [[126548, 126548], "mapped", [1588]], [[126549, 126550], "disallowed"], [[126551, 126551], "mapped", [1582]], [[126552, 126552], "disallowed"], [[126553, 126553], "mapped", [1590]], [[126554, 126554], "disallowed"], [[126555, 126555], "mapped", [1594]], [[126556, 126556], "disallowed"], [[126557, 126557], "mapped", [1722]], [[126558, 126558], "disallowed"], [[126559, 126559], "mapped", [1647]], [[126560, 126560], "disallowed"], [[126561, 126561], "mapped", [1576]], [[126562, 126562], "mapped", [1580]], [[126563, 126563], "disallowed"], [[126564, 126564], "mapped", [1607]], [[126565, 126566], "disallowed"], [[126567, 126567], "mapped", [1581]], [[126568, 126568], "mapped", [1591]], [[126569, 126569], "mapped", [1610]], [[126570, 126570], "mapped", [1603]], [[126571, 126571], "disallowed"], [[126572, 126572], "mapped", [1605]], [[126573, 126573], "mapped", [1606]], [[126574, 126574], "mapped", [1587]], [[126575, 126575], "mapped", [1593]], [[126576, 126576], "mapped", [1601]], [[126577, 126577], "mapped", [1589]], [[126578, 126578], "mapped", [1602]], [[126579, 126579], "disallowed"], [[126580, 126580], "mapped", [1588]], [[126581, 126581], "mapped", [1578]], [[126582, 126582], "mapped", [1579]], [[126583, 126583], "mapped", [1582]], [[126584, 126584], "disallowed"], [[126585, 126585], "mapped", [1590]], [[126586, 126586], "mapped", [1592]], [[126587, 126587], "mapped", [1594]], [[126588, 126588], "mapped", [1646]], [[126589, 126589], "disallowed"], [[126590, 126590], "mapped", [1697]], [[126591, 126591], "disallowed"], [[126592, 126592], "mapped", [1575]], [[126593, 126593], "mapped", [1576]], [[126594, 126594], "mapped", [1580]], [[126595, 126595], "mapped", [1583]], [[126596, 126596], "mapped", [1607]], [[126597, 126597], "mapped", [1608]], [[126598, 126598], "mapped", [1586]], [[126599, 126599], "mapped", [1581]], [[126600, 126600], "mapped", [1591]], [[126601, 126601], "mapped", [1610]], [[126602, 126602], "disallowed"], [[126603, 126603], "mapped", [1604]], [[126604, 126604], "mapped", [1605]], [[126605, 126605], "mapped", [1606]], [[126606, 126606], "mapped", [1587]], [[126607, 126607], "mapped", [1593]], [[126608, 126608], "mapped", [1601]], [[126609, 126609], "mapped", [1589]], [[126610, 126610], "mapped", [1602]], [[126611, 126611], "mapped", [1585]], [[126612, 126612], "mapped", [1588]], [[126613, 126613], "mapped", [1578]], [[126614, 126614], "mapped", [1579]], [[126615, 126615], "mapped", [1582]], [[126616, 126616], "mapped", [1584]], [[126617, 126617], "mapped", [1590]], [[126618, 126618], "mapped", [1592]], [[126619, 126619], "mapped", [1594]], [[126620, 126624], "disallowed"], [[126625, 126625], "mapped", [1576]], [[126626, 126626], "mapped", [1580]], [[126627, 126627], "mapped", [1583]], [[126628, 126628], "disallowed"], [[126629, 126629], "mapped", [1608]], [[126630, 126630], "mapped", [1586]], [[126631, 126631], "mapped", [1581]], [[126632, 126632], "mapped", [1591]], [[126633, 126633], "mapped", [1610]], [[126634, 126634], "disallowed"], [[126635, 126635], "mapped", [1604]], [[126636, 126636], "mapped", [1605]], [[126637, 126637], "mapped", [1606]], [[126638, 126638], "mapped", [1587]], [[126639, 126639], "mapped", [1593]], [[126640, 126640], "mapped", [1601]], [[126641, 126641], "mapped", [1589]], [[126642, 126642], "mapped", [1602]], [[126643, 126643], "mapped", [1585]], [[126644, 126644], "mapped", [1588]], [[126645, 126645], "mapped", [1578]], [[126646, 126646], "mapped", [1579]], [[126647, 126647], "mapped", [1582]], [[126648, 126648], "mapped", [1584]], [[126649, 126649], "mapped", [1590]], [[126650, 126650], "mapped", [1592]], [[126651, 126651], "mapped", [1594]], [[126652, 126703], "disallowed"], [[126704, 126705], "valid", [], "NV8"], [[126706, 126975], "disallowed"], [[126976, 127019], "valid", [], "NV8"], [[127020, 127023], "disallowed"], [[127024, 127123], "valid", [], "NV8"], [[127124, 127135], "disallowed"], [[127136, 127150], "valid", [], "NV8"], [[127151, 127152], "disallowed"], [[127153, 127166], "valid", [], "NV8"], [[127167, 127167], "valid", [], "NV8"], [[127168, 127168], "disallowed"], [[127169, 127183], "valid", [], "NV8"], [[127184, 127184], "disallowed"], [[127185, 127199], "valid", [], "NV8"], [[127200, 127221], "valid", [], "NV8"], [[127222, 127231], "disallowed"], [[127232, 127232], "disallowed"], [[127233, 127233], "disallowed_STD3_mapped", [48, 44]], [[127234, 127234], "disallowed_STD3_mapped", [49, 44]], [[127235, 127235], "disallowed_STD3_mapped", [50, 44]], [[127236, 127236], "disallowed_STD3_mapped", [51, 44]], [[127237, 127237], "disallowed_STD3_mapped", [52, 44]], [[127238, 127238], "disallowed_STD3_mapped", [53, 44]], [[127239, 127239], "disallowed_STD3_mapped", [54, 44]], [[127240, 127240], "disallowed_STD3_mapped", [55, 44]], [[127241, 127241], "disallowed_STD3_mapped", [56, 44]], [[127242, 127242], "disallowed_STD3_mapped", [57, 44]], [[127243, 127244], "valid", [], "NV8"], [[127245, 127247], "disallowed"], [[127248, 127248], "disallowed_STD3_mapped", [40, 97, 41]], [[127249, 127249], "disallowed_STD3_mapped", [40, 98, 41]], [[127250, 127250], "disallowed_STD3_mapped", [40, 99, 41]], [[127251, 127251], "disallowed_STD3_mapped", [40, 100, 41]], [[127252, 127252], "disallowed_STD3_mapped", [40, 101, 41]], [[127253, 127253], "disallowed_STD3_mapped", [40, 102, 41]], [[127254, 127254], "disallowed_STD3_mapped", [40, 103, 41]], [[127255, 127255], "disallowed_STD3_mapped", [40, 104, 41]], [[127256, 127256], "disallowed_STD3_mapped", [40, 105, 41]], [[127257, 127257], "disallowed_STD3_mapped", [40, 106, 41]], [[127258, 127258], "disallowed_STD3_mapped", [40, 107, 41]], [[127259, 127259], "disallowed_STD3_mapped", [40, 108, 41]], [[127260, 127260], "disallowed_STD3_mapped", [40, 109, 41]], [[127261, 127261], "disallowed_STD3_mapped", [40, 110, 41]], [[127262, 127262], "disallowed_STD3_mapped", [40, 111, 41]], [[127263, 127263], "disallowed_STD3_mapped", [40, 112, 41]], [[127264, 127264], "disallowed_STD3_mapped", [40, 113, 41]], [[127265, 127265], "disallowed_STD3_mapped", [40, 114, 41]], [[127266, 127266], "disallowed_STD3_mapped", [40, 115, 41]], [[127267, 127267], "disallowed_STD3_mapped", [40, 116, 41]], [[127268, 127268], "disallowed_STD3_mapped", [40, 117, 41]], [[127269, 127269], "disallowed_STD3_mapped", [40, 118, 41]], [[127270, 127270], "disallowed_STD3_mapped", [40, 119, 41]], [[127271, 127271], "disallowed_STD3_mapped", [40, 120, 41]], [[127272, 127272], "disallowed_STD3_mapped", [40, 121, 41]], [[127273, 127273], "disallowed_STD3_mapped", [40, 122, 41]], [[127274, 127274], "mapped", [12308, 115, 12309]], [[127275, 127275], "mapped", [99]], [[127276, 127276], "mapped", [114]], [[127277, 127277], "mapped", [99, 100]], [[127278, 127278], "mapped", [119, 122]], [[127279, 127279], "disallowed"], [[127280, 127280], "mapped", [97]], [[127281, 127281], "mapped", [98]], [[127282, 127282], "mapped", [99]], [[127283, 127283], "mapped", [100]], [[127284, 127284], "mapped", [101]], [[127285, 127285], "mapped", [102]], [[127286, 127286], "mapped", [103]], [[127287, 127287], "mapped", [104]], [[127288, 127288], "mapped", [105]], [[127289, 127289], "mapped", [106]], [[127290, 127290], "mapped", [107]], [[127291, 127291], "mapped", [108]], [[127292, 127292], "mapped", [109]], [[127293, 127293], "mapped", [110]], [[127294, 127294], "mapped", [111]], [[127295, 127295], "mapped", [112]], [[127296, 127296], "mapped", [113]], [[127297, 127297], "mapped", [114]], [[127298, 127298], "mapped", [115]], [[127299, 127299], "mapped", [116]], [[127300, 127300], "mapped", [117]], [[127301, 127301], "mapped", [118]], [[127302, 127302], "mapped", [119]], [[127303, 127303], "mapped", [120]], [[127304, 127304], "mapped", [121]], [[127305, 127305], "mapped", [122]], [[127306, 127306], "mapped", [104, 118]], [[127307, 127307], "mapped", [109, 118]], [[127308, 127308], "mapped", [115, 100]], [[127309, 127309], "mapped", [115, 115]], [[127310, 127310], "mapped", [112, 112, 118]], [[127311, 127311], "mapped", [119, 99]], [[127312, 127318], "valid", [], "NV8"], [[127319, 127319], "valid", [], "NV8"], [[127320, 127326], "valid", [], "NV8"], [[127327, 127327], "valid", [], "NV8"], [[127328, 127337], "valid", [], "NV8"], [[127338, 127338], "mapped", [109, 99]], [[127339, 127339], "mapped", [109, 100]], [[127340, 127343], "disallowed"], [[127344, 127352], "valid", [], "NV8"], [[127353, 127353], "valid", [], "NV8"], [[127354, 127354], "valid", [], "NV8"], [[127355, 127356], "valid", [], "NV8"], [[127357, 127358], "valid", [], "NV8"], [[127359, 127359], "valid", [], "NV8"], [[127360, 127369], "valid", [], "NV8"], [[127370, 127373], "valid", [], "NV8"], [[127374, 127375], "valid", [], "NV8"], [[127376, 127376], "mapped", [100, 106]], [[127377, 127386], "valid", [], "NV8"], [[127387, 127461], "disallowed"], [[127462, 127487], "valid", [], "NV8"], [[127488, 127488], "mapped", [12411, 12363]], [[127489, 127489], "mapped", [12467, 12467]], [[127490, 127490], "mapped", [12469]], [[127491, 127503], "disallowed"], [[127504, 127504], "mapped", [25163]], [[127505, 127505], "mapped", [23383]], [[127506, 127506], "mapped", [21452]], [[127507, 127507], "mapped", [12487]], [[127508, 127508], "mapped", [20108]], [[127509, 127509], "mapped", [22810]], [[127510, 127510], "mapped", [35299]], [[127511, 127511], "mapped", [22825]], [[127512, 127512], "mapped", [20132]], [[127513, 127513], "mapped", [26144]], [[127514, 127514], "mapped", [28961]], [[127515, 127515], "mapped", [26009]], [[127516, 127516], "mapped", [21069]], [[127517, 127517], "mapped", [24460]], [[127518, 127518], "mapped", [20877]], [[127519, 127519], "mapped", [26032]], [[127520, 127520], "mapped", [21021]], [[127521, 127521], "mapped", [32066]], [[127522, 127522], "mapped", [29983]], [[127523, 127523], "mapped", [36009]], [[127524, 127524], "mapped", [22768]], [[127525, 127525], "mapped", [21561]], [[127526, 127526], "mapped", [28436]], [[127527, 127527], "mapped", [25237]], [[127528, 127528], "mapped", [25429]], [[127529, 127529], "mapped", [19968]], [[127530, 127530], "mapped", [19977]], [[127531, 127531], "mapped", [36938]], [[127532, 127532], "mapped", [24038]], [[127533, 127533], "mapped", [20013]], [[127534, 127534], "mapped", [21491]], [[127535, 127535], "mapped", [25351]], [[127536, 127536], "mapped", [36208]], [[127537, 127537], "mapped", [25171]], [[127538, 127538], "mapped", [31105]], [[127539, 127539], "mapped", [31354]], [[127540, 127540], "mapped", [21512]], [[127541, 127541], "mapped", [28288]], [[127542, 127542], "mapped", [26377]], [[127543, 127543], "mapped", [26376]], [[127544, 127544], "mapped", [30003]], [[127545, 127545], "mapped", [21106]], [[127546, 127546], "mapped", [21942]], [[127547, 127551], "disallowed"], [[127552, 127552], "mapped", [12308, 26412, 12309]], [[127553, 127553], "mapped", [12308, 19977, 12309]], [[127554, 127554], "mapped", [12308, 20108, 12309]], [[127555, 127555], "mapped", [12308, 23433, 12309]], [[127556, 127556], "mapped", [12308, 28857, 12309]], [[127557, 127557], "mapped", [12308, 25171, 12309]], [[127558, 127558], "mapped", [12308, 30423, 12309]], [[127559, 127559], "mapped", [12308, 21213, 12309]], [[127560, 127560], "mapped", [12308, 25943, 12309]], [[127561, 127567], "disallowed"], [[127568, 127568], "mapped", [24471]], [[127569, 127569], "mapped", [21487]], [[127570, 127743], "disallowed"], [[127744, 127776], "valid", [], "NV8"], [[127777, 127788], "valid", [], "NV8"], [[127789, 127791], "valid", [], "NV8"], [[127792, 127797], "valid", [], "NV8"], [[127798, 127798], "valid", [], "NV8"], [[127799, 127868], "valid", [], "NV8"], [[127869, 127869], "valid", [], "NV8"], [[127870, 127871], "valid", [], "NV8"], [[127872, 127891], "valid", [], "NV8"], [[127892, 127903], "valid", [], "NV8"], [[127904, 127940], "valid", [], "NV8"], [[127941, 127941], "valid", [], "NV8"], [[127942, 127946], "valid", [], "NV8"], [[127947, 127950], "valid", [], "NV8"], [[127951, 127955], "valid", [], "NV8"], [[127956, 127967], "valid", [], "NV8"], [[127968, 127984], "valid", [], "NV8"], [[127985, 127991], "valid", [], "NV8"], [[127992, 127999], "valid", [], "NV8"], [[128e3, 128062], "valid", [], "NV8"], [[128063, 128063], "valid", [], "NV8"], [[128064, 128064], "valid", [], "NV8"], [[128065, 128065], "valid", [], "NV8"], [[128066, 128247], "valid", [], "NV8"], [[128248, 128248], "valid", [], "NV8"], [[128249, 128252], "valid", [], "NV8"], [[128253, 128254], "valid", [], "NV8"], [[128255, 128255], "valid", [], "NV8"], [[128256, 128317], "valid", [], "NV8"], [[128318, 128319], "valid", [], "NV8"], [[128320, 128323], "valid", [], "NV8"], [[128324, 128330], "valid", [], "NV8"], [[128331, 128335], "valid", [], "NV8"], [[128336, 128359], "valid", [], "NV8"], [[128360, 128377], "valid", [], "NV8"], [[128378, 128378], "disallowed"], [[128379, 128419], "valid", [], "NV8"], [[128420, 128420], "disallowed"], [[128421, 128506], "valid", [], "NV8"], [[128507, 128511], "valid", [], "NV8"], [[128512, 128512], "valid", [], "NV8"], [[128513, 128528], "valid", [], "NV8"], [[128529, 128529], "valid", [], "NV8"], [[128530, 128532], "valid", [], "NV8"], [[128533, 128533], "valid", [], "NV8"], [[128534, 128534], "valid", [], "NV8"], [[128535, 128535], "valid", [], "NV8"], [[128536, 128536], "valid", [], "NV8"], [[128537, 128537], "valid", [], "NV8"], [[128538, 128538], "valid", [], "NV8"], [[128539, 128539], "valid", [], "NV8"], [[128540, 128542], "valid", [], "NV8"], [[128543, 128543], "valid", [], "NV8"], [[128544, 128549], "valid", [], "NV8"], [[128550, 128551], "valid", [], "NV8"], [[128552, 128555], "valid", [], "NV8"], [[128556, 128556], "valid", [], "NV8"], [[128557, 128557], "valid", [], "NV8"], [[128558, 128559], "valid", [], "NV8"], [[128560, 128563], "valid", [], "NV8"], [[128564, 128564], "valid", [], "NV8"], [[128565, 128576], "valid", [], "NV8"], [[128577, 128578], "valid", [], "NV8"], [[128579, 128580], "valid", [], "NV8"], [[128581, 128591], "valid", [], "NV8"], [[128592, 128639], "valid", [], "NV8"], [[128640, 128709], "valid", [], "NV8"], [[128710, 128719], "valid", [], "NV8"], [[128720, 128720], "valid", [], "NV8"], [[128721, 128735], "disallowed"], [[128736, 128748], "valid", [], "NV8"], [[128749, 128751], "disallowed"], [[128752, 128755], "valid", [], "NV8"], [[128756, 128767], "disallowed"], [[128768, 128883], "valid", [], "NV8"], [[128884, 128895], "disallowed"], [[128896, 128980], "valid", [], "NV8"], [[128981, 129023], "disallowed"], [[129024, 129035], "valid", [], "NV8"], [[129036, 129039], "disallowed"], [[129040, 129095], "valid", [], "NV8"], [[129096, 129103], "disallowed"], [[129104, 129113], "valid", [], "NV8"], [[129114, 129119], "disallowed"], [[129120, 129159], "valid", [], "NV8"], [[129160, 129167], "disallowed"], [[129168, 129197], "valid", [], "NV8"], [[129198, 129295], "disallowed"], [[129296, 129304], "valid", [], "NV8"], [[129305, 129407], "disallowed"], [[129408, 129412], "valid", [], "NV8"], [[129413, 129471], "disallowed"], [[129472, 129472], "valid", [], "NV8"], [[129473, 131069], "disallowed"], [[131070, 131071], "disallowed"], [[131072, 173782], "valid"], [[173783, 173823], "disallowed"], [[173824, 177972], "valid"], [[177973, 177983], "disallowed"], [[177984, 178205], "valid"], [[178206, 178207], "disallowed"], [[178208, 183969], "valid"], [[183970, 194559], "disallowed"], [[194560, 194560], "mapped", [20029]], [[194561, 194561], "mapped", [20024]], [[194562, 194562], "mapped", [20033]], [[194563, 194563], "mapped", [131362]], [[194564, 194564], "mapped", [20320]], [[194565, 194565], "mapped", [20398]], [[194566, 194566], "mapped", [20411]], [[194567, 194567], "mapped", [20482]], [[194568, 194568], "mapped", [20602]], [[194569, 194569], "mapped", [20633]], [[194570, 194570], "mapped", [20711]], [[194571, 194571], "mapped", [20687]], [[194572, 194572], "mapped", [13470]], [[194573, 194573], "mapped", [132666]], [[194574, 194574], "mapped", [20813]], [[194575, 194575], "mapped", [20820]], [[194576, 194576], "mapped", [20836]], [[194577, 194577], "mapped", [20855]], [[194578, 194578], "mapped", [132380]], [[194579, 194579], "mapped", [13497]], [[194580, 194580], "mapped", [20839]], [[194581, 194581], "mapped", [20877]], [[194582, 194582], "mapped", [132427]], [[194583, 194583], "mapped", [20887]], [[194584, 194584], "mapped", [20900]], [[194585, 194585], "mapped", [20172]], [[194586, 194586], "mapped", [20908]], [[194587, 194587], "mapped", [20917]], [[194588, 194588], "mapped", [168415]], [[194589, 194589], "mapped", [20981]], [[194590, 194590], "mapped", [20995]], [[194591, 194591], "mapped", [13535]], [[194592, 194592], "mapped", [21051]], [[194593, 194593], "mapped", [21062]], [[194594, 194594], "mapped", [21106]], [[194595, 194595], "mapped", [21111]], [[194596, 194596], "mapped", [13589]], [[194597, 194597], "mapped", [21191]], [[194598, 194598], "mapped", [21193]], [[194599, 194599], "mapped", [21220]], [[194600, 194600], "mapped", [21242]], [[194601, 194601], "mapped", [21253]], [[194602, 194602], "mapped", [21254]], [[194603, 194603], "mapped", [21271]], [[194604, 194604], "mapped", [21321]], [[194605, 194605], "mapped", [21329]], [[194606, 194606], "mapped", [21338]], [[194607, 194607], "mapped", [21363]], [[194608, 194608], "mapped", [21373]], [[194609, 194611], "mapped", [21375]], [[194612, 194612], "mapped", [133676]], [[194613, 194613], "mapped", [28784]], [[194614, 194614], "mapped", [21450]], [[194615, 194615], "mapped", [21471]], [[194616, 194616], "mapped", [133987]], [[194617, 194617], "mapped", [21483]], [[194618, 194618], "mapped", [21489]], [[194619, 194619], "mapped", [21510]], [[194620, 194620], "mapped", [21662]], [[194621, 194621], "mapped", [21560]], [[194622, 194622], "mapped", [21576]], [[194623, 194623], "mapped", [21608]], [[194624, 194624], "mapped", [21666]], [[194625, 194625], "mapped", [21750]], [[194626, 194626], "mapped", [21776]], [[194627, 194627], "mapped", [21843]], [[194628, 194628], "mapped", [21859]], [[194629, 194630], "mapped", [21892]], [[194631, 194631], "mapped", [21913]], [[194632, 194632], "mapped", [21931]], [[194633, 194633], "mapped", [21939]], [[194634, 194634], "mapped", [21954]], [[194635, 194635], "mapped", [22294]], [[194636, 194636], "mapped", [22022]], [[194637, 194637], "mapped", [22295]], [[194638, 194638], "mapped", [22097]], [[194639, 194639], "mapped", [22132]], [[194640, 194640], "mapped", [20999]], [[194641, 194641], "mapped", [22766]], [[194642, 194642], "mapped", [22478]], [[194643, 194643], "mapped", [22516]], [[194644, 194644], "mapped", [22541]], [[194645, 194645], "mapped", [22411]], [[194646, 194646], "mapped", [22578]], [[194647, 194647], "mapped", [22577]], [[194648, 194648], "mapped", [22700]], [[194649, 194649], "mapped", [136420]], [[194650, 194650], "mapped", [22770]], [[194651, 194651], "mapped", [22775]], [[194652, 194652], "mapped", [22790]], [[194653, 194653], "mapped", [22810]], [[194654, 194654], "mapped", [22818]], [[194655, 194655], "mapped", [22882]], [[194656, 194656], "mapped", [136872]], [[194657, 194657], "mapped", [136938]], [[194658, 194658], "mapped", [23020]], [[194659, 194659], "mapped", [23067]], [[194660, 194660], "mapped", [23079]], [[194661, 194661], "mapped", [23e3]], [[194662, 194662], "mapped", [23142]], [[194663, 194663], "mapped", [14062]], [[194664, 194664], "disallowed"], [[194665, 194665], "mapped", [23304]], [[194666, 194667], "mapped", [23358]], [[194668, 194668], "mapped", [137672]], [[194669, 194669], "mapped", [23491]], [[194670, 194670], "mapped", [23512]], [[194671, 194671], "mapped", [23527]], [[194672, 194672], "mapped", [23539]], [[194673, 194673], "mapped", [138008]], [[194674, 194674], "mapped", [23551]], [[194675, 194675], "mapped", [23558]], [[194676, 194676], "disallowed"], [[194677, 194677], "mapped", [23586]], [[194678, 194678], "mapped", [14209]], [[194679, 194679], "mapped", [23648]], [[194680, 194680], "mapped", [23662]], [[194681, 194681], "mapped", [23744]], [[194682, 194682], "mapped", [23693]], [[194683, 194683], "mapped", [138724]], [[194684, 194684], "mapped", [23875]], [[194685, 194685], "mapped", [138726]], [[194686, 194686], "mapped", [23918]], [[194687, 194687], "mapped", [23915]], [[194688, 194688], "mapped", [23932]], [[194689, 194689], "mapped", [24033]], [[194690, 194690], "mapped", [24034]], [[194691, 194691], "mapped", [14383]], [[194692, 194692], "mapped", [24061]], [[194693, 194693], "mapped", [24104]], [[194694, 194694], "mapped", [24125]], [[194695, 194695], "mapped", [24169]], [[194696, 194696], "mapped", [14434]], [[194697, 194697], "mapped", [139651]], [[194698, 194698], "mapped", [14460]], [[194699, 194699], "mapped", [24240]], [[194700, 194700], "mapped", [24243]], [[194701, 194701], "mapped", [24246]], [[194702, 194702], "mapped", [24266]], [[194703, 194703], "mapped", [172946]], [[194704, 194704], "mapped", [24318]], [[194705, 194706], "mapped", [140081]], [[194707, 194707], "mapped", [33281]], [[194708, 194709], "mapped", [24354]], [[194710, 194710], "mapped", [14535]], [[194711, 194711], "mapped", [144056]], [[194712, 194712], "mapped", [156122]], [[194713, 194713], "mapped", [24418]], [[194714, 194714], "mapped", [24427]], [[194715, 194715], "mapped", [14563]], [[194716, 194716], "mapped", [24474]], [[194717, 194717], "mapped", [24525]], [[194718, 194718], "mapped", [24535]], [[194719, 194719], "mapped", [24569]], [[194720, 194720], "mapped", [24705]], [[194721, 194721], "mapped", [14650]], [[194722, 194722], "mapped", [14620]], [[194723, 194723], "mapped", [24724]], [[194724, 194724], "mapped", [141012]], [[194725, 194725], "mapped", [24775]], [[194726, 194726], "mapped", [24904]], [[194727, 194727], "mapped", [24908]], [[194728, 194728], "mapped", [24910]], [[194729, 194729], "mapped", [24908]], [[194730, 194730], "mapped", [24954]], [[194731, 194731], "mapped", [24974]], [[194732, 194732], "mapped", [25010]], [[194733, 194733], "mapped", [24996]], [[194734, 194734], "mapped", [25007]], [[194735, 194735], "mapped", [25054]], [[194736, 194736], "mapped", [25074]], [[194737, 194737], "mapped", [25078]], [[194738, 194738], "mapped", [25104]], [[194739, 194739], "mapped", [25115]], [[194740, 194740], "mapped", [25181]], [[194741, 194741], "mapped", [25265]], [[194742, 194742], "mapped", [25300]], [[194743, 194743], "mapped", [25424]], [[194744, 194744], "mapped", [142092]], [[194745, 194745], "mapped", [25405]], [[194746, 194746], "mapped", [25340]], [[194747, 194747], "mapped", [25448]], [[194748, 194748], "mapped", [25475]], [[194749, 194749], "mapped", [25572]], [[194750, 194750], "mapped", [142321]], [[194751, 194751], "mapped", [25634]], [[194752, 194752], "mapped", [25541]], [[194753, 194753], "mapped", [25513]], [[194754, 194754], "mapped", [14894]], [[194755, 194755], "mapped", [25705]], [[194756, 194756], "mapped", [25726]], [[194757, 194757], "mapped", [25757]], [[194758, 194758], "mapped", [25719]], [[194759, 194759], "mapped", [14956]], [[194760, 194760], "mapped", [25935]], [[194761, 194761], "mapped", [25964]], [[194762, 194762], "mapped", [143370]], [[194763, 194763], "mapped", [26083]], [[194764, 194764], "mapped", [26360]], [[194765, 194765], "mapped", [26185]], [[194766, 194766], "mapped", [15129]], [[194767, 194767], "mapped", [26257]], [[194768, 194768], "mapped", [15112]], [[194769, 194769], "mapped", [15076]], [[194770, 194770], "mapped", [20882]], [[194771, 194771], "mapped", [20885]], [[194772, 194772], "mapped", [26368]], [[194773, 194773], "mapped", [26268]], [[194774, 194774], "mapped", [32941]], [[194775, 194775], "mapped", [17369]], [[194776, 194776], "mapped", [26391]], [[194777, 194777], "mapped", [26395]], [[194778, 194778], "mapped", [26401]], [[194779, 194779], "mapped", [26462]], [[194780, 194780], "mapped", [26451]], [[194781, 194781], "mapped", [144323]], [[194782, 194782], "mapped", [15177]], [[194783, 194783], "mapped", [26618]], [[194784, 194784], "mapped", [26501]], [[194785, 194785], "mapped", [26706]], [[194786, 194786], "mapped", [26757]], [[194787, 194787], "mapped", [144493]], [[194788, 194788], "mapped", [26766]], [[194789, 194789], "mapped", [26655]], [[194790, 194790], "mapped", [26900]], [[194791, 194791], "mapped", [15261]], [[194792, 194792], "mapped", [26946]], [[194793, 194793], "mapped", [27043]], [[194794, 194794], "mapped", [27114]], [[194795, 194795], "mapped", [27304]], [[194796, 194796], "mapped", [145059]], [[194797, 194797], "mapped", [27355]], [[194798, 194798], "mapped", [15384]], [[194799, 194799], "mapped", [27425]], [[194800, 194800], "mapped", [145575]], [[194801, 194801], "mapped", [27476]], [[194802, 194802], "mapped", [15438]], [[194803, 194803], "mapped", [27506]], [[194804, 194804], "mapped", [27551]], [[194805, 194805], "mapped", [27578]], [[194806, 194806], "mapped", [27579]], [[194807, 194807], "mapped", [146061]], [[194808, 194808], "mapped", [138507]], [[194809, 194809], "mapped", [146170]], [[194810, 194810], "mapped", [27726]], [[194811, 194811], "mapped", [146620]], [[194812, 194812], "mapped", [27839]], [[194813, 194813], "mapped", [27853]], [[194814, 194814], "mapped", [27751]], [[194815, 194815], "mapped", [27926]], [[194816, 194816], "mapped", [27966]], [[194817, 194817], "mapped", [28023]], [[194818, 194818], "mapped", [27969]], [[194819, 194819], "mapped", [28009]], [[194820, 194820], "mapped", [28024]], [[194821, 194821], "mapped", [28037]], [[194822, 194822], "mapped", [146718]], [[194823, 194823], "mapped", [27956]], [[194824, 194824], "mapped", [28207]], [[194825, 194825], "mapped", [28270]], [[194826, 194826], "mapped", [15667]], [[194827, 194827], "mapped", [28363]], [[194828, 194828], "mapped", [28359]], [[194829, 194829], "mapped", [147153]], [[194830, 194830], "mapped", [28153]], [[194831, 194831], "mapped", [28526]], [[194832, 194832], "mapped", [147294]], [[194833, 194833], "mapped", [147342]], [[194834, 194834], "mapped", [28614]], [[194835, 194835], "mapped", [28729]], [[194836, 194836], "mapped", [28702]], [[194837, 194837], "mapped", [28699]], [[194838, 194838], "mapped", [15766]], [[194839, 194839], "mapped", [28746]], [[194840, 194840], "mapped", [28797]], [[194841, 194841], "mapped", [28791]], [[194842, 194842], "mapped", [28845]], [[194843, 194843], "mapped", [132389]], [[194844, 194844], "mapped", [28997]], [[194845, 194845], "mapped", [148067]], [[194846, 194846], "mapped", [29084]], [[194847, 194847], "disallowed"], [[194848, 194848], "mapped", [29224]], [[194849, 194849], "mapped", [29237]], [[194850, 194850], "mapped", [29264]], [[194851, 194851], "mapped", [149e3]], [[194852, 194852], "mapped", [29312]], [[194853, 194853], "mapped", [29333]], [[194854, 194854], "mapped", [149301]], [[194855, 194855], "mapped", [149524]], [[194856, 194856], "mapped", [29562]], [[194857, 194857], "mapped", [29579]], [[194858, 194858], "mapped", [16044]], [[194859, 194859], "mapped", [29605]], [[194860, 194861], "mapped", [16056]], [[194862, 194862], "mapped", [29767]], [[194863, 194863], "mapped", [29788]], [[194864, 194864], "mapped", [29809]], [[194865, 194865], "mapped", [29829]], [[194866, 194866], "mapped", [29898]], [[194867, 194867], "mapped", [16155]], [[194868, 194868], "mapped", [29988]], [[194869, 194869], "mapped", [150582]], [[194870, 194870], "mapped", [30014]], [[194871, 194871], "mapped", [150674]], [[194872, 194872], "mapped", [30064]], [[194873, 194873], "mapped", [139679]], [[194874, 194874], "mapped", [30224]], [[194875, 194875], "mapped", [151457]], [[194876, 194876], "mapped", [151480]], [[194877, 194877], "mapped", [151620]], [[194878, 194878], "mapped", [16380]], [[194879, 194879], "mapped", [16392]], [[194880, 194880], "mapped", [30452]], [[194881, 194881], "mapped", [151795]], [[194882, 194882], "mapped", [151794]], [[194883, 194883], "mapped", [151833]], [[194884, 194884], "mapped", [151859]], [[194885, 194885], "mapped", [30494]], [[194886, 194887], "mapped", [30495]], [[194888, 194888], "mapped", [30538]], [[194889, 194889], "mapped", [16441]], [[194890, 194890], "mapped", [30603]], [[194891, 194891], "mapped", [16454]], [[194892, 194892], "mapped", [16534]], [[194893, 194893], "mapped", [152605]], [[194894, 194894], "mapped", [30798]], [[194895, 194895], "mapped", [30860]], [[194896, 194896], "mapped", [30924]], [[194897, 194897], "mapped", [16611]], [[194898, 194898], "mapped", [153126]], [[194899, 194899], "mapped", [31062]], [[194900, 194900], "mapped", [153242]], [[194901, 194901], "mapped", [153285]], [[194902, 194902], "mapped", [31119]], [[194903, 194903], "mapped", [31211]], [[194904, 194904], "mapped", [16687]], [[194905, 194905], "mapped", [31296]], [[194906, 194906], "mapped", [31306]], [[194907, 194907], "mapped", [31311]], [[194908, 194908], "mapped", [153980]], [[194909, 194910], "mapped", [154279]], [[194911, 194911], "disallowed"], [[194912, 194912], "mapped", [16898]], [[194913, 194913], "mapped", [154539]], [[194914, 194914], "mapped", [31686]], [[194915, 194915], "mapped", [31689]], [[194916, 194916], "mapped", [16935]], [[194917, 194917], "mapped", [154752]], [[194918, 194918], "mapped", [31954]], [[194919, 194919], "mapped", [17056]], [[194920, 194920], "mapped", [31976]], [[194921, 194921], "mapped", [31971]], [[194922, 194922], "mapped", [32e3]], [[194923, 194923], "mapped", [155526]], [[194924, 194924], "mapped", [32099]], [[194925, 194925], "mapped", [17153]], [[194926, 194926], "mapped", [32199]], [[194927, 194927], "mapped", [32258]], [[194928, 194928], "mapped", [32325]], [[194929, 194929], "mapped", [17204]], [[194930, 194930], "mapped", [156200]], [[194931, 194931], "mapped", [156231]], [[194932, 194932], "mapped", [17241]], [[194933, 194933], "mapped", [156377]], [[194934, 194934], "mapped", [32634]], [[194935, 194935], "mapped", [156478]], [[194936, 194936], "mapped", [32661]], [[194937, 194937], "mapped", [32762]], [[194938, 194938], "mapped", [32773]], [[194939, 194939], "mapped", [156890]], [[194940, 194940], "mapped", [156963]], [[194941, 194941], "mapped", [32864]], [[194942, 194942], "mapped", [157096]], [[194943, 194943], "mapped", [32880]], [[194944, 194944], "mapped", [144223]], [[194945, 194945], "mapped", [17365]], [[194946, 194946], "mapped", [32946]], [[194947, 194947], "mapped", [33027]], [[194948, 194948], "mapped", [17419]], [[194949, 194949], "mapped", [33086]], [[194950, 194950], "mapped", [23221]], [[194951, 194951], "mapped", [157607]], [[194952, 194952], "mapped", [157621]], [[194953, 194953], "mapped", [144275]], [[194954, 194954], "mapped", [144284]], [[194955, 194955], "mapped", [33281]], [[194956, 194956], "mapped", [33284]], [[194957, 194957], "mapped", [36766]], [[194958, 194958], "mapped", [17515]], [[194959, 194959], "mapped", [33425]], [[194960, 194960], "mapped", [33419]], [[194961, 194961], "mapped", [33437]], [[194962, 194962], "mapped", [21171]], [[194963, 194963], "mapped", [33457]], [[194964, 194964], "mapped", [33459]], [[194965, 194965], "mapped", [33469]], [[194966, 194966], "mapped", [33510]], [[194967, 194967], "mapped", [158524]], [[194968, 194968], "mapped", [33509]], [[194969, 194969], "mapped", [33565]], [[194970, 194970], "mapped", [33635]], [[194971, 194971], "mapped", [33709]], [[194972, 194972], "mapped", [33571]], [[194973, 194973], "mapped", [33725]], [[194974, 194974], "mapped", [33767]], [[194975, 194975], "mapped", [33879]], [[194976, 194976], "mapped", [33619]], [[194977, 194977], "mapped", [33738]], [[194978, 194978], "mapped", [33740]], [[194979, 194979], "mapped", [33756]], [[194980, 194980], "mapped", [158774]], [[194981, 194981], "mapped", [159083]], [[194982, 194982], "mapped", [158933]], [[194983, 194983], "mapped", [17707]], [[194984, 194984], "mapped", [34033]], [[194985, 194985], "mapped", [34035]], [[194986, 194986], "mapped", [34070]], [[194987, 194987], "mapped", [160714]], [[194988, 194988], "mapped", [34148]], [[194989, 194989], "mapped", [159532]], [[194990, 194990], "mapped", [17757]], [[194991, 194991], "mapped", [17761]], [[194992, 194992], "mapped", [159665]], [[194993, 194993], "mapped", [159954]], [[194994, 194994], "mapped", [17771]], [[194995, 194995], "mapped", [34384]], [[194996, 194996], "mapped", [34396]], [[194997, 194997], "mapped", [34407]], [[194998, 194998], "mapped", [34409]], [[194999, 194999], "mapped", [34473]], [[195e3, 195e3], "mapped", [34440]], [[195001, 195001], "mapped", [34574]], [[195002, 195002], "mapped", [34530]], [[195003, 195003], "mapped", [34681]], [[195004, 195004], "mapped", [34600]], [[195005, 195005], "mapped", [34667]], [[195006, 195006], "mapped", [34694]], [[195007, 195007], "disallowed"], [[195008, 195008], "mapped", [34785]], [[195009, 195009], "mapped", [34817]], [[195010, 195010], "mapped", [17913]], [[195011, 195011], "mapped", [34912]], [[195012, 195012], "mapped", [34915]], [[195013, 195013], "mapped", [161383]], [[195014, 195014], "mapped", [35031]], [[195015, 195015], "mapped", [35038]], [[195016, 195016], "mapped", [17973]], [[195017, 195017], "mapped", [35066]], [[195018, 195018], "mapped", [13499]], [[195019, 195019], "mapped", [161966]], [[195020, 195020], "mapped", [162150]], [[195021, 195021], "mapped", [18110]], [[195022, 195022], "mapped", [18119]], [[195023, 195023], "mapped", [35488]], [[195024, 195024], "mapped", [35565]], [[195025, 195025], "mapped", [35722]], [[195026, 195026], "mapped", [35925]], [[195027, 195027], "mapped", [162984]], [[195028, 195028], "mapped", [36011]], [[195029, 195029], "mapped", [36033]], [[195030, 195030], "mapped", [36123]], [[195031, 195031], "mapped", [36215]], [[195032, 195032], "mapped", [163631]], [[195033, 195033], "mapped", [133124]], [[195034, 195034], "mapped", [36299]], [[195035, 195035], "mapped", [36284]], [[195036, 195036], "mapped", [36336]], [[195037, 195037], "mapped", [133342]], [[195038, 195038], "mapped", [36564]], [[195039, 195039], "mapped", [36664]], [[195040, 195040], "mapped", [165330]], [[195041, 195041], "mapped", [165357]], [[195042, 195042], "mapped", [37012]], [[195043, 195043], "mapped", [37105]], [[195044, 195044], "mapped", [37137]], [[195045, 195045], "mapped", [165678]], [[195046, 195046], "mapped", [37147]], [[195047, 195047], "mapped", [37432]], [[195048, 195048], "mapped", [37591]], [[195049, 195049], "mapped", [37592]], [[195050, 195050], "mapped", [37500]], [[195051, 195051], "mapped", [37881]], [[195052, 195052], "mapped", [37909]], [[195053, 195053], "mapped", [166906]], [[195054, 195054], "mapped", [38283]], [[195055, 195055], "mapped", [18837]], [[195056, 195056], "mapped", [38327]], [[195057, 195057], "mapped", [167287]], [[195058, 195058], "mapped", [18918]], [[195059, 195059], "mapped", [38595]], [[195060, 195060], "mapped", [23986]], [[195061, 195061], "mapped", [38691]], [[195062, 195062], "mapped", [168261]], [[195063, 195063], "mapped", [168474]], [[195064, 195064], "mapped", [19054]], [[195065, 195065], "mapped", [19062]], [[195066, 195066], "mapped", [38880]], [[195067, 195067], "mapped", [168970]], [[195068, 195068], "mapped", [19122]], [[195069, 195069], "mapped", [169110]], [[195070, 195071], "mapped", [38923]], [[195072, 195072], "mapped", [38953]], [[195073, 195073], "mapped", [169398]], [[195074, 195074], "mapped", [39138]], [[195075, 195075], "mapped", [19251]], [[195076, 195076], "mapped", [39209]], [[195077, 195077], "mapped", [39335]], [[195078, 195078], "mapped", [39362]], [[195079, 195079], "mapped", [39422]], [[195080, 195080], "mapped", [19406]], [[195081, 195081], "mapped", [170800]], [[195082, 195082], "mapped", [39698]], [[195083, 195083], "mapped", [4e4]], [[195084, 195084], "mapped", [40189]], [[195085, 195085], "mapped", [19662]], [[195086, 195086], "mapped", [19693]], [[195087, 195087], "mapped", [40295]], [[195088, 195088], "mapped", [172238]], [[195089, 195089], "mapped", [19704]], [[195090, 195090], "mapped", [172293]], [[195091, 195091], "mapped", [172558]], [[195092, 195092], "mapped", [172689]], [[195093, 195093], "mapped", [40635]], [[195094, 195094], "mapped", [19798]], [[195095, 195095], "mapped", [40697]], [[195096, 195096], "mapped", [40702]], [[195097, 195097], "mapped", [40709]], [[195098, 195098], "mapped", [40719]], [[195099, 195099], "mapped", [40726]], [[195100, 195100], "mapped", [40763]], [[195101, 195101], "mapped", [173568]], [[195102, 196605], "disallowed"], [[196606, 196607], "disallowed"], [[196608, 262141], "disallowed"], [[262142, 262143], "disallowed"], [[262144, 327677], "disallowed"], [[327678, 327679], "disallowed"], [[327680, 393213], "disallowed"], [[393214, 393215], "disallowed"], [[393216, 458749], "disallowed"], [[458750, 458751], "disallowed"], [[458752, 524285], "disallowed"], [[524286, 524287], "disallowed"], [[524288, 589821], "disallowed"], [[589822, 589823], "disallowed"], [[589824, 655357], "disallowed"], [[655358, 655359], "disallowed"], [[655360, 720893], "disallowed"], [[720894, 720895], "disallowed"], [[720896, 786429], "disallowed"], [[786430, 786431], "disallowed"], [[786432, 851965], "disallowed"], [[851966, 851967], "disallowed"], [[851968, 917501], "disallowed"], [[917502, 917503], "disallowed"], [[917504, 917504], "disallowed"], [[917505, 917505], "disallowed"], [[917506, 917535], "disallowed"], [[917536, 917631], "disallowed"], [[917632, 917759], "disallowed"], [[917760, 917999], "ignored"], [[918e3, 983037], "disallowed"], [[983038, 983039], "disallowed"], [[983040, 1048573], "disallowed"], [[1048574, 1048575], "disallowed"], [[1048576, 1114109], "disallowed"], [[1114110, 1114111], "disallowed"]]; } }); // ../../node_modules/.pnpm/tr46@0.0.3/node_modules/tr46/index.js var require_tr46 = __commonJS2({ "../../node_modules/.pnpm/tr46@0.0.3/node_modules/tr46/index.js"(exports2, module2) { "use strict"; var punycode = __require("punycode"); var mappingTable = require_mappingTable(); var PROCESSING_OPTIONS = { TRANSITIONAL: 0, NONTRANSITIONAL: 1 }; function normalize4(str) { return str.split("\0").map(function(s) { return s.normalize("NFC"); }).join("\0"); } function findStatus(val) { var start = 0; var end = mappingTable.length - 1; while (start <= end) { var mid = Math.floor((start + end) / 2); var target = mappingTable[mid]; if (target[0][0] <= val && target[0][1] >= val) { return target; } else if (target[0][0] > val) { end = mid - 1; } else { start = mid + 1; } } return null; } var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; function countSymbols(string) { return string.replace(regexAstralSymbols, "_").length; } function mapChars(domain_name, useSTD3, processing_option) { var hasError = false; var processed = ""; var len = countSymbols(domain_name); for (var i = 0; i < len; ++i) { var codePoint = domain_name.codePointAt(i); var status3 = findStatus(codePoint); switch (status3[1]) { case "disallowed": hasError = true; processed += String.fromCodePoint(codePoint); break; case "ignored": break; case "mapped": processed += String.fromCodePoint.apply(String, status3[2]); break; case "deviation": if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { processed += String.fromCodePoint.apply(String, status3[2]); } else { processed += String.fromCodePoint(codePoint); } break; case "valid": processed += String.fromCodePoint(codePoint); break; case "disallowed_STD3_mapped": if (useSTD3) { hasError = true; processed += String.fromCodePoint(codePoint); } else { processed += String.fromCodePoint.apply(String, status3[2]); } break; case "disallowed_STD3_valid": if (useSTD3) { hasError = true; } processed += String.fromCodePoint(codePoint); break; } } return { string: processed, error: hasError }; } var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; function validateLabel(label, processing_option) { if (label.substr(0, 4) === "xn--") { label = punycode.toUnicode(label); processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; } var error3 = false; if (normalize4(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) { error3 = true; } var len = countSymbols(label); for (var i = 0; i < len; ++i) { var status3 = findStatus(label.codePointAt(i)); if (processing === PROCESSING_OPTIONS.TRANSITIONAL && status3[1] !== "valid" || processing === PROCESSING_OPTIONS.NONTRANSITIONAL && status3[1] !== "valid" && status3[1] !== "deviation") { error3 = true; break; } } return { label, error: error3 }; } function processing(domain_name, useSTD3, processing_option) { var result = mapChars(domain_name, useSTD3, processing_option); result.string = normalize4(result.string); var labels = result.string.split("."); for (var i = 0; i < labels.length; ++i) { try { var validation = validateLabel(labels[i]); labels[i] = validation.label; result.error = result.error || validation.error; } catch (e2) { result.error = true; } } return { string: labels.join("."), error: result.error }; } module2.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { var result = processing(domain_name, useSTD3, processing_option); var labels = result.string.split("."); labels = labels.map(function(l) { try { return punycode.toASCII(l); } catch (e2) { result.error = true; return l; } }); if (verifyDnsLength) { var total = labels.slice(0, labels.length - 1).join(".").length; if (total.length > 253 || total.length === 0) { result.error = true; } for (var i = 0; i < labels.length; ++i) { if (labels.length > 63 || labels.length === 0) { result.error = true; break; } } } if (result.error) return null; return labels.join("."); }; module2.exports.toUnicode = function(domain_name, useSTD3) { var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); return { domain: result.string, error: result.error }; }; module2.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; } }); // ../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/url-state-machine.js var require_url_state_machine = __commonJS2({ "../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/url-state-machine.js"(exports2, module2) { "use strict"; var punycode = __require("punycode"); var tr46 = require_tr46(); var specialSchemes = { ftp: 21, file: null, gopher: 70, http: 80, https: 443, ws: 80, wss: 443 }; var failure = Symbol("failure"); function countSymbols(str) { return punycode.ucs2.decode(str).length; } function at(input, idx) { const c = input[idx]; return isNaN(c) ? void 0 : String.fromCodePoint(c); } function isASCIIDigit(c) { return c >= 48 && c <= 57; } function isASCIIAlpha(c) { return c >= 65 && c <= 90 || c >= 97 && c <= 122; } function isASCIIAlphanumeric(c) { return isASCIIAlpha(c) || isASCIIDigit(c); } function isASCIIHex(c) { return isASCIIDigit(c) || c >= 65 && c <= 70 || c >= 97 && c <= 102; } function isSingleDot(buffer) { return buffer === "." || buffer.toLowerCase() === "%2e"; } function isDoubleDot(buffer) { buffer = buffer.toLowerCase(); return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; } function isWindowsDriveLetterCodePoints(cp1, cp2) { return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); } function isWindowsDriveLetterString(string) { return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); } function isNormalizedWindowsDriveLetterString(string) { return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; } function containsForbiddenHostCodePoint(string) { return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; } function containsForbiddenHostCodePointExcludingPercent(string) { return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; } function isSpecialScheme(scheme) { return specialSchemes[scheme] !== void 0; } function isSpecial(url3) { return isSpecialScheme(url3.scheme); } function defaultPort(scheme) { return specialSchemes[scheme]; } function percentEncode(c) { let hex = c.toString(16).toUpperCase(); if (hex.length === 1) { hex = "0" + hex; } return "%" + hex; } function utf8PercentEncode(c) { const buf = new Buffer(c); let str = ""; for (let i = 0; i < buf.length; ++i) { str += percentEncode(buf[i]); } return str; } function utf8PercentDecode(str) { const input = new Buffer(str); const output2 = []; for (let i = 0; i < input.length; ++i) { if (input[i] !== 37) { output2.push(input[i]); } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { output2.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); i += 2; } else { output2.push(input[i]); } } return new Buffer(output2).toString(); } function isC0ControlPercentEncode(c) { return c <= 31 || c > 126; } var extraPathPercentEncodeSet = /* @__PURE__ */ new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); function isPathPercentEncode(c) { return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); } var extraUserinfoPercentEncodeSet = /* @__PURE__ */ new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); function isUserinfoPercentEncode(c) { return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); } function percentEncodeChar(c, encodeSetPredicate) { const cStr = String.fromCodePoint(c); if (encodeSetPredicate(c)) { return utf8PercentEncode(cStr); } return cStr; } function parseIPv4Number(input) { let R = 10; if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { input = input.substring(2); R = 16; } else if (input.length >= 2 && input.charAt(0) === "0") { input = input.substring(1); R = 8; } if (input === "") { return 0; } const regex = R === 10 ? /[^0-9]/ : R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/; if (regex.test(input)) { return failure; } return parseInt(input, R); } function parseIPv4(input) { const parts = input.split("."); if (parts[parts.length - 1] === "") { if (parts.length > 1) { parts.pop(); } } if (parts.length > 4) { return input; } const numbers = []; for (const part of parts) { if (part === "") { return input; } const n = parseIPv4Number(part); if (n === failure) { return input; } numbers.push(n); } for (let i = 0; i < numbers.length - 1; ++i) { if (numbers[i] > 255) { return failure; } } if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { return failure; } let ipv4 = numbers.pop(); let counter = 0; for (const n of numbers) { ipv4 += n * Math.pow(256, 3 - counter); ++counter; } return ipv4; } function serializeIPv4(address) { let output2 = ""; let n = address; for (let i = 1; i <= 4; ++i) { output2 = String(n % 256) + output2; if (i !== 4) { output2 = "." + output2; } n = Math.floor(n / 256); } return output2; } function parseIPv6(input) { const address = [0, 0, 0, 0, 0, 0, 0, 0]; let pieceIndex = 0; let compress = null; let pointer = 0; input = punycode.ucs2.decode(input); if (input[pointer] === 58) { if (input[pointer + 1] !== 58) { return failure; } pointer += 2; ++pieceIndex; compress = pieceIndex; } while (pointer < input.length) { if (pieceIndex === 8) { return failure; } if (input[pointer] === 58) { if (compress !== null) { return failure; } ++pointer; ++pieceIndex; compress = pieceIndex; continue; } let value = 0; let length = 0; while (length < 4 && isASCIIHex(input[pointer])) { value = value * 16 + parseInt(at(input, pointer), 16); ++pointer; ++length; } if (input[pointer] === 46) { if (length === 0) { return failure; } pointer -= length; if (pieceIndex > 6) { return failure; } let numbersSeen = 0; while (input[pointer] !== void 0) { let ipv4Piece = null; if (numbersSeen > 0) { if (input[pointer] === 46 && numbersSeen < 4) { ++pointer; } else { return failure; } } if (!isASCIIDigit(input[pointer])) { return failure; } while (isASCIIDigit(input[pointer])) { const number = parseInt(at(input, pointer)); if (ipv4Piece === null) { ipv4Piece = number; } else if (ipv4Piece === 0) { return failure; } else { ipv4Piece = ipv4Piece * 10 + number; } if (ipv4Piece > 255) { return failure; } ++pointer; } address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; ++numbersSeen; if (numbersSeen === 2 || numbersSeen === 4) { ++pieceIndex; } } if (numbersSeen !== 4) { return failure; } break; } else if (input[pointer] === 58) { ++pointer; if (input[pointer] === void 0) { return failure; } } else if (input[pointer] !== void 0) { return failure; } address[pieceIndex] = value; ++pieceIndex; } if (compress !== null) { let swaps = pieceIndex - compress; pieceIndex = 7; while (pieceIndex !== 0 && swaps > 0) { const temp = address[compress + swaps - 1]; address[compress + swaps - 1] = address[pieceIndex]; address[pieceIndex] = temp; --pieceIndex; --swaps; } } else if (compress === null && pieceIndex !== 8) { return failure; } return address; } function serializeIPv6(address) { let output2 = ""; const seqResult = findLongestZeroSequence(address); const compress = seqResult.idx; let ignore0 = false; for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { if (ignore0 && address[pieceIndex] === 0) { continue; } else if (ignore0) { ignore0 = false; } if (compress === pieceIndex) { const separator = pieceIndex === 0 ? "::" : ":"; output2 += separator; ignore0 = true; continue; } output2 += address[pieceIndex].toString(16); if (pieceIndex !== 7) { output2 += ":"; } } return output2; } function parseHost(input, isSpecialArg) { if (input[0] === "[") { if (input[input.length - 1] !== "]") { return failure; } return parseIPv6(input.substring(1, input.length - 1)); } if (!isSpecialArg) { return parseOpaqueHost(input); } const domain = utf8PercentDecode(input); const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); if (asciiDomain === null) { return failure; } if (containsForbiddenHostCodePoint(asciiDomain)) { return failure; } const ipv4Host = parseIPv4(asciiDomain); if (typeof ipv4Host === "number" || ipv4Host === failure) { return ipv4Host; } return asciiDomain; } function parseOpaqueHost(input) { if (containsForbiddenHostCodePointExcludingPercent(input)) { return failure; } let output2 = ""; const decoded = punycode.ucs2.decode(input); for (let i = 0; i < decoded.length; ++i) { output2 += percentEncodeChar(decoded[i], isC0ControlPercentEncode); } return output2; } function findLongestZeroSequence(arr) { let maxIdx = null; let maxLen = 1; let currStart = null; let currLen = 0; for (let i = 0; i < arr.length; ++i) { if (arr[i] !== 0) { if (currLen > maxLen) { maxIdx = currStart; maxLen = currLen; } currStart = null; currLen = 0; } else { if (currStart === null) { currStart = i; } ++currLen; } } if (currLen > maxLen) { maxIdx = currStart; maxLen = currLen; } return { idx: maxIdx, len: maxLen }; } function serializeHost(host) { if (typeof host === "number") { return serializeIPv4(host); } if (host instanceof Array) { return "[" + serializeIPv6(host) + "]"; } return host; } function trimControlChars(url3) { return url3.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); } function trimTabAndNewline(url3) { return url3.replace(/\u0009|\u000A|\u000D/g, ""); } function shortenPath(url3) { const path11 = url3.path; if (path11.length === 0) { return; } if (url3.scheme === "file" && path11.length === 1 && isNormalizedWindowsDriveLetter(path11[0])) { return; } path11.pop(); } function includesCredentials(url3) { return url3.username !== "" || url3.password !== ""; } function cannotHaveAUsernamePasswordPort(url3) { return url3.host === null || url3.host === "" || url3.cannotBeABaseURL || url3.scheme === "file"; } function isNormalizedWindowsDriveLetter(string) { return /^[A-Za-z]:$/.test(string); } function URLStateMachine(input, base, encodingOverride, url3, stateOverride) { this.pointer = 0; this.input = input; this.base = base || null; this.encodingOverride = encodingOverride || "utf-8"; this.stateOverride = stateOverride; this.url = url3; this.failure = false; this.parseError = false; if (!this.url) { this.url = { scheme: "", username: "", password: "", host: null, port: null, path: [], query: null, fragment: null, cannotBeABaseURL: false }; const res2 = trimControlChars(this.input); if (res2 !== this.input) { this.parseError = true; } this.input = res2; } const res = trimTabAndNewline(this.input); if (res !== this.input) { this.parseError = true; } this.input = res; this.state = stateOverride || "scheme start"; this.buffer = ""; this.atFlag = false; this.arrFlag = false; this.passwordTokenSeenFlag = false; this.input = punycode.ucs2.decode(this.input); for (; this.pointer <= this.input.length; ++this.pointer) { const c = this.input[this.pointer]; const cStr = isNaN(c) ? void 0 : String.fromCodePoint(c); const ret = this["parse " + this.state](c, cStr); if (!ret) { break; } else if (ret === failure) { this.failure = true; break; } } } URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { if (isASCIIAlpha(c)) { this.buffer += cStr.toLowerCase(); this.state = "scheme"; } else if (!this.stateOverride) { this.state = "no scheme"; --this.pointer; } else { this.parseError = true; return failure; } return true; }; URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { this.buffer += cStr.toLowerCase(); } else if (c === 58) { if (this.stateOverride) { if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { return false; } if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { return false; } if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { return false; } if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { return false; } } this.url.scheme = this.buffer; this.buffer = ""; if (this.stateOverride) { return false; } if (this.url.scheme === "file") { if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { this.parseError = true; } this.state = "file"; } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { this.state = "special relative or authority"; } else if (isSpecial(this.url)) { this.state = "special authority slashes"; } else if (this.input[this.pointer + 1] === 47) { this.state = "path or authority"; ++this.pointer; } else { this.url.cannotBeABaseURL = true; this.url.path.push(""); this.state = "cannot-be-a-base-URL path"; } } else if (!this.stateOverride) { this.buffer = ""; this.state = "no scheme"; this.pointer = -1; } else { this.parseError = true; return failure; } return true; }; URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { if (this.base === null || this.base.cannotBeABaseURL && c !== 35) { return failure; } else if (this.base.cannotBeABaseURL && c === 35) { this.url.scheme = this.base.scheme; this.url.path = this.base.path.slice(); this.url.query = this.base.query; this.url.fragment = ""; this.url.cannotBeABaseURL = true; this.state = "fragment"; } else if (this.base.scheme === "file") { this.state = "file"; --this.pointer; } else { this.state = "relative"; --this.pointer; } return true; }; URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { if (c === 47 && this.input[this.pointer + 1] === 47) { this.state = "special authority ignore slashes"; ++this.pointer; } else { this.parseError = true; this.state = "relative"; --this.pointer; } return true; }; URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { if (c === 47) { this.state = "authority"; } else { this.state = "path"; --this.pointer; } return true; }; URLStateMachine.prototype["parse relative"] = function parseRelative(c) { this.url.scheme = this.base.scheme; if (isNaN(c)) { this.url.username = this.base.username; this.url.password = this.base.password; this.url.host = this.base.host; this.url.port = this.base.port; this.url.path = this.base.path.slice(); this.url.query = this.base.query; } else if (c === 47) { this.state = "relative slash"; } else if (c === 63) { this.url.username = this.base.username; this.url.password = this.base.password; this.url.host = this.base.host; this.url.port = this.base.port; this.url.path = this.base.path.slice(); this.url.query = ""; this.state = "query"; } else if (c === 35) { this.url.username = this.base.username; this.url.password = this.base.password; this.url.host = this.base.host; this.url.port = this.base.port; this.url.path = this.base.path.slice(); this.url.query = this.base.query; this.url.fragment = ""; this.state = "fragment"; } else if (isSpecial(this.url) && c === 92) { this.parseError = true; this.state = "relative slash"; } else { this.url.username = this.base.username; this.url.password = this.base.password; this.url.host = this.base.host; this.url.port = this.base.port; this.url.path = this.base.path.slice(0, this.base.path.length - 1); this.state = "path"; --this.pointer; } return true; }; URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { if (isSpecial(this.url) && (c === 47 || c === 92)) { if (c === 92) { this.parseError = true; } this.state = "special authority ignore slashes"; } else if (c === 47) { this.state = "authority"; } else { this.url.username = this.base.username; this.url.password = this.base.password; this.url.host = this.base.host; this.url.port = this.base.port; this.state = "path"; --this.pointer; } return true; }; URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { if (c === 47 && this.input[this.pointer + 1] === 47) { this.state = "special authority ignore slashes"; ++this.pointer; } else { this.parseError = true; this.state = "special authority ignore slashes"; --this.pointer; } return true; }; URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { if (c !== 47 && c !== 92) { this.state = "authority"; --this.pointer; } else { this.parseError = true; } return true; }; URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { if (c === 64) { this.parseError = true; if (this.atFlag) { this.buffer = "%40" + this.buffer; } this.atFlag = true; const len = countSymbols(this.buffer); for (let pointer = 0; pointer < len; ++pointer) { const codePoint = this.buffer.codePointAt(pointer); if (codePoint === 58 && !this.passwordTokenSeenFlag) { this.passwordTokenSeenFlag = true; continue; } const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); if (this.passwordTokenSeenFlag) { this.url.password += encodedCodePoints; } else { this.url.username += encodedCodePoints; } } this.buffer = ""; } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) { if (this.atFlag && this.buffer === "") { this.parseError = true; return failure; } this.pointer -= countSymbols(this.buffer) + 1; this.buffer = ""; this.state = "host"; } else { this.buffer += cStr; } return true; }; URLStateMachine.prototype["parse hostname"] = URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { if (this.stateOverride && this.url.scheme === "file") { --this.pointer; this.state = "file host"; } else if (c === 58 && !this.arrFlag) { if (this.buffer === "") { this.parseError = true; return failure; } const host = parseHost(this.buffer, isSpecial(this.url)); if (host === failure) { return failure; } this.url.host = host; this.buffer = ""; this.state = "port"; if (this.stateOverride === "hostname") { return false; } } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) { --this.pointer; if (isSpecial(this.url) && this.buffer === "") { this.parseError = true; return failure; } else if (this.stateOverride && this.buffer === "" && (includesCredentials(this.url) || this.url.port !== null)) { this.parseError = true; return false; } const host = parseHost(this.buffer, isSpecial(this.url)); if (host === failure) { return failure; } this.url.host = host; this.buffer = ""; this.state = "path start"; if (this.stateOverride) { return false; } } else { if (c === 91) { this.arrFlag = true; } else if (c === 93) { this.arrFlag = false; } this.buffer += cStr; } return true; }; URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { if (isASCIIDigit(c)) { this.buffer += cStr; } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92 || this.stateOverride) { if (this.buffer !== "") { const port = parseInt(this.buffer); if (port > Math.pow(2, 16) - 1) { this.parseError = true; return failure; } this.url.port = port === defaultPort(this.url.scheme) ? null : port; this.buffer = ""; } if (this.stateOverride) { return false; } this.state = "path start"; --this.pointer; } else { this.parseError = true; return failure; } return true; }; var fileOtherwiseCodePoints = /* @__PURE__ */ new Set([47, 92, 63, 35]); URLStateMachine.prototype["parse file"] = function parseFile(c) { this.url.scheme = "file"; if (c === 47 || c === 92) { if (c === 92) { this.parseError = true; } this.state = "file slash"; } else if (this.base !== null && this.base.scheme === "file") { if (isNaN(c)) { this.url.host = this.base.host; this.url.path = this.base.path.slice(); this.url.query = this.base.query; } else if (c === 63) { this.url.host = this.base.host; this.url.path = this.base.path.slice(); this.url.query = ""; this.state = "query"; } else if (c === 35) { this.url.host = this.base.host; this.url.path = this.base.path.slice(); this.url.query = this.base.query; this.url.fragment = ""; this.state = "fragment"; } else { if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points !fileOtherwiseCodePoints.has(this.input[this.pointer + 2])) { this.url.host = this.base.host; this.url.path = this.base.path.slice(); shortenPath(this.url); } else { this.parseError = true; } this.state = "path"; --this.pointer; } } else { this.state = "path"; --this.pointer; } return true; }; URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { if (c === 47 || c === 92) { if (c === 92) { this.parseError = true; } this.state = "file host"; } else { if (this.base !== null && this.base.scheme === "file") { if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { this.url.path.push(this.base.path[0]); } else { this.url.host = this.base.host; } } this.state = "path"; --this.pointer; } return true; }; URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { --this.pointer; if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { this.parseError = true; this.state = "path"; } else if (this.buffer === "") { this.url.host = ""; if (this.stateOverride) { return false; } this.state = "path start"; } else { let host = parseHost(this.buffer, isSpecial(this.url)); if (host === failure) { return failure; } if (host === "localhost") { host = ""; } this.url.host = host; if (this.stateOverride) { return false; } this.buffer = ""; this.state = "path start"; } } else { this.buffer += cStr; } return true; }; URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { if (isSpecial(this.url)) { if (c === 92) { this.parseError = true; } this.state = "path"; if (c !== 47 && c !== 92) { --this.pointer; } } else if (!this.stateOverride && c === 63) { this.url.query = ""; this.state = "query"; } else if (!this.stateOverride && c === 35) { this.url.fragment = ""; this.state = "fragment"; } else if (c !== void 0) { this.state = "path"; if (c !== 47) { --this.pointer; } } return true; }; URLStateMachine.prototype["parse path"] = function parsePath2(c) { if (isNaN(c) || c === 47 || isSpecial(this.url) && c === 92 || !this.stateOverride && (c === 63 || c === 35)) { if (isSpecial(this.url) && c === 92) { this.parseError = true; } if (isDoubleDot(this.buffer)) { shortenPath(this.url); if (c !== 47 && !(isSpecial(this.url) && c === 92)) { this.url.path.push(""); } } else if (isSingleDot(this.buffer) && c !== 47 && !(isSpecial(this.url) && c === 92)) { this.url.path.push(""); } else if (!isSingleDot(this.buffer)) { if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { if (this.url.host !== "" && this.url.host !== null) { this.parseError = true; this.url.host = ""; } this.buffer = this.buffer[0] + ":"; } this.url.path.push(this.buffer); } this.buffer = ""; if (this.url.scheme === "file" && (c === void 0 || c === 63 || c === 35)) { while (this.url.path.length > 1 && this.url.path[0] === "") { this.parseError = true; this.url.path.shift(); } } if (c === 63) { this.url.query = ""; this.state = "query"; } if (c === 35) { this.url.fragment = ""; this.state = "fragment"; } } else { if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { this.parseError = true; } this.buffer += percentEncodeChar(c, isPathPercentEncode); } return true; }; URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { if (c === 63) { this.url.query = ""; this.state = "query"; } else if (c === 35) { this.url.fragment = ""; this.state = "fragment"; } else { if (!isNaN(c) && c !== 37) { this.parseError = true; } if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { this.parseError = true; } if (!isNaN(c)) { this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); } } return true; }; URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { if (isNaN(c) || !this.stateOverride && c === 35) { if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { this.encodingOverride = "utf-8"; } const buffer = new Buffer(this.buffer); for (let i = 0; i < buffer.length; ++i) { if (buffer[i] < 33 || buffer[i] > 126 || buffer[i] === 34 || buffer[i] === 35 || buffer[i] === 60 || buffer[i] === 62) { this.url.query += percentEncode(buffer[i]); } else { this.url.query += String.fromCodePoint(buffer[i]); } } this.buffer = ""; if (c === 35) { this.url.fragment = ""; this.state = "fragment"; } } else { if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { this.parseError = true; } this.buffer += cStr; } return true; }; URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { if (isNaN(c)) { } else if (c === 0) { this.parseError = true; } else { if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { this.parseError = true; } this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); } return true; }; function serializeURL(url3, excludeFragment) { let output2 = url3.scheme + ":"; if (url3.host !== null) { output2 += "//"; if (url3.username !== "" || url3.password !== "") { output2 += url3.username; if (url3.password !== "") { output2 += ":" + url3.password; } output2 += "@"; } output2 += serializeHost(url3.host); if (url3.port !== null) { output2 += ":" + url3.port; } } else if (url3.host === null && url3.scheme === "file") { output2 += "//"; } if (url3.cannotBeABaseURL) { output2 += url3.path[0]; } else { for (const string of url3.path) { output2 += "/" + string; } } if (url3.query !== null) { output2 += "?" + url3.query; } if (!excludeFragment && url3.fragment !== null) { output2 += "#" + url3.fragment; } return output2; } function serializeOrigin(tuple) { let result = tuple.scheme + "://"; result += serializeHost(tuple.host); if (tuple.port !== null) { result += ":" + tuple.port; } return result; } module2.exports.serializeURL = serializeURL; module2.exports.serializeURLOrigin = function(url3) { switch (url3.scheme) { case "blob": try { return module2.exports.serializeURLOrigin(module2.exports.parseURL(url3.path[0])); } catch (e2) { return "null"; } case "ftp": case "gopher": case "http": case "https": case "ws": case "wss": return serializeOrigin({ scheme: url3.scheme, host: url3.host, port: url3.port }); case "file": return "file://"; default: return "null"; } }; module2.exports.basicURLParse = function(input, options) { if (options === void 0) { options = {}; } const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); if (usm.failure) { return "failure"; } return usm.url; }; module2.exports.setTheUsername = function(url3, username) { url3.username = ""; const decoded = punycode.ucs2.decode(username); for (let i = 0; i < decoded.length; ++i) { url3.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); } }; module2.exports.setThePassword = function(url3, password) { url3.password = ""; const decoded = punycode.ucs2.decode(password); for (let i = 0; i < decoded.length; ++i) { url3.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); } }; module2.exports.serializeHost = serializeHost; module2.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; module2.exports.serializeInteger = function(integer) { return String(integer); }; module2.exports.parseURL = function(input, options) { if (options === void 0) { options = {}; } return module2.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); }; } }); // ../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/URL-impl.js var require_URL_impl = __commonJS2({ "../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/URL-impl.js"(exports2) { "use strict"; var usm = require_url_state_machine(); exports2.implementation = class URLImpl { constructor(constructorArgs) { const url3 = constructorArgs[0]; const base = constructorArgs[1]; let parsedBase = null; if (base !== void 0) { parsedBase = usm.basicURLParse(base); if (parsedBase === "failure") { throw new TypeError("Invalid base URL"); } } const parsedURL = usm.basicURLParse(url3, { baseURL: parsedBase }); if (parsedURL === "failure") { throw new TypeError("Invalid URL"); } this._url = parsedURL; } get href() { return usm.serializeURL(this._url); } set href(v) { const parsedURL = usm.basicURLParse(v); if (parsedURL === "failure") { throw new TypeError("Invalid URL"); } this._url = parsedURL; } get origin() { return usm.serializeURLOrigin(this._url); } get protocol() { return this._url.scheme + ":"; } set protocol(v) { usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); } get username() { return this._url.username; } set username(v) { if (usm.cannotHaveAUsernamePasswordPort(this._url)) { return; } usm.setTheUsername(this._url, v); } get password() { return this._url.password; } set password(v) { if (usm.cannotHaveAUsernamePasswordPort(this._url)) { return; } usm.setThePassword(this._url, v); } get host() { const url3 = this._url; if (url3.host === null) { return ""; } if (url3.port === null) { return usm.serializeHost(url3.host); } return usm.serializeHost(url3.host) + ":" + usm.serializeInteger(url3.port); } set host(v) { if (this._url.cannotBeABaseURL) { return; } usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); } get hostname() { if (this._url.host === null) { return ""; } return usm.serializeHost(this._url.host); } set hostname(v) { if (this._url.cannotBeABaseURL) { return; } usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); } get port() { if (this._url.port === null) { return ""; } return usm.serializeInteger(this._url.port); } set port(v) { if (usm.cannotHaveAUsernamePasswordPort(this._url)) { return; } if (v === "") { this._url.port = null; } else { usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); } } get pathname() { if (this._url.cannotBeABaseURL) { return this._url.path[0]; } if (this._url.path.length === 0) { return ""; } return "/" + this._url.path.join("/"); } set pathname(v) { if (this._url.cannotBeABaseURL) { return; } this._url.path = []; usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); } get search() { if (this._url.query === null || this._url.query === "") { return ""; } return "?" + this._url.query; } set search(v) { const url3 = this._url; if (v === "") { url3.query = null; return; } const input = v[0] === "?" ? v.substring(1) : v; url3.query = ""; usm.basicURLParse(input, { url: url3, stateOverride: "query" }); } get hash() { if (this._url.fragment === null || this._url.fragment === "") { return ""; } return "#" + this._url.fragment; } set hash(v) { if (v === "") { this._url.fragment = null; return; } const input = v[0] === "#" ? v.substring(1) : v; this._url.fragment = ""; usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); } toJSON() { return this.href; } }; } }); // ../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/URL.js var require_URL = __commonJS2({ "../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/URL.js"(exports2, module2) { "use strict"; var conversions = require_lib6(); var utils = require_utils7(); var Impl = require_URL_impl(); var impl = utils.implSymbol; function URL11(url3) { if (!this || this[impl] || !(this instanceof URL11)) { throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); } if (arguments.length < 1) { throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); } const args2 = []; for (let i = 0; i < arguments.length && i < 2; ++i) { args2[i] = arguments[i]; } args2[0] = conversions["USVString"](args2[0]); if (args2[1] !== void 0) { args2[1] = conversions["USVString"](args2[1]); } module2.exports.setup(this, args2); } URL11.prototype.toJSON = function toJSON() { if (!this || !module2.exports.is(this)) { throw new TypeError("Illegal invocation"); } const args2 = []; for (let i = 0; i < arguments.length && i < 0; ++i) { args2[i] = arguments[i]; } return this[impl].toJSON.apply(this[impl], args2); }; Object.defineProperty(URL11.prototype, "href", { get() { return this[impl].href; }, set(V) { V = conversions["USVString"](V); this[impl].href = V; }, enumerable: true, configurable: true }); URL11.prototype.toString = function() { if (!this || !module2.exports.is(this)) { throw new TypeError("Illegal invocation"); } return this.href; }; Object.defineProperty(URL11.prototype, "origin", { get() { return this[impl].origin; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "protocol", { get() { return this[impl].protocol; }, set(V) { V = conversions["USVString"](V); this[impl].protocol = V; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "username", { get() { return this[impl].username; }, set(V) { V = conversions["USVString"](V); this[impl].username = V; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "password", { get() { return this[impl].password; }, set(V) { V = conversions["USVString"](V); this[impl].password = V; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "host", { get() { return this[impl].host; }, set(V) { V = conversions["USVString"](V); this[impl].host = V; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "hostname", { get() { return this[impl].hostname; }, set(V) { V = conversions["USVString"](V); this[impl].hostname = V; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "port", { get() { return this[impl].port; }, set(V) { V = conversions["USVString"](V); this[impl].port = V; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "pathname", { get() { return this[impl].pathname; }, set(V) { V = conversions["USVString"](V); this[impl].pathname = V; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "search", { get() { return this[impl].search; }, set(V) { V = conversions["USVString"](V); this[impl].search = V; }, enumerable: true, configurable: true }); Object.defineProperty(URL11.prototype, "hash", { get() { return this[impl].hash; }, set(V) { V = conversions["USVString"](V); this[impl].hash = V; }, enumerable: true, configurable: true }); module2.exports = { is(obj) { return !!obj && obj[impl] instanceof Impl.implementation; }, create(constructorArgs, privateData) { let obj = Object.create(URL11.prototype); this.setup(obj, constructorArgs, privateData); return obj; }, setup(obj, constructorArgs, privateData) { if (!privateData) privateData = {}; privateData.wrapper = obj; obj[impl] = new Impl.implementation(constructorArgs, privateData); obj[impl][utils.wrapperSymbol] = obj; }, interface: URL11, expose: { Window: { URL: URL11 }, Worker: { URL: URL11 } } }; } }); // ../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/public-api.js var require_public_api = __commonJS2({ "../../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/public-api.js"(exports2) { "use strict"; exports2.URL = require_URL().interface; exports2.serializeURL = require_url_state_machine().serializeURL; exports2.serializeURLOrigin = require_url_state_machine().serializeURLOrigin; exports2.basicURLParse = require_url_state_machine().basicURLParse; exports2.setTheUsername = require_url_state_machine().setTheUsername; exports2.setThePassword = require_url_state_machine().setThePassword; exports2.serializeHost = require_url_state_machine().serializeHost; exports2.serializeInteger = require_url_state_machine().serializeInteger; exports2.parseURL = require_url_state_machine().parseURL; } }); // ../../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js var require_lib7 = __commonJS2({ "../../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function _interopDefault(ex) { return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex; } var Stream = _interopDefault(__require("stream")); var http3 = _interopDefault(__require("http")); var Url = _interopDefault(__require("url")); var whatwgUrl = _interopDefault(require_public_api()); var https = _interopDefault(__require("https")); var zlib = _interopDefault(__require("zlib")); var Readable = Stream.Readable; var BUFFER = Symbol("buffer"); var TYPE = Symbol("type"); var Blob2 = class _Blob { constructor() { this[TYPE] = ""; const blobParts = arguments[0]; const options = arguments[1]; const buffers = []; let size = 0; if (blobParts) { const a = blobParts; const length = Number(a.length); for (let i = 0; i < length; i++) { const element = a[i]; let buffer; if (element instanceof Buffer) { buffer = element; } else if (ArrayBuffer.isView(element)) { buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); } else if (element instanceof ArrayBuffer) { buffer = Buffer.from(element); } else if (element instanceof _Blob) { buffer = element[BUFFER]; } else { buffer = Buffer.from(typeof element === "string" ? element : String(element)); } size += buffer.length; buffers.push(buffer); } } this[BUFFER] = Buffer.concat(buffers); let type = options && options.type !== void 0 && String(options.type).toLowerCase(); if (type && !/[^\u0020-\u007E]/.test(type)) { this[TYPE] = type; } } get size() { return this[BUFFER].length; } get type() { return this[TYPE]; } text() { return Promise.resolve(this[BUFFER].toString()); } arrayBuffer() { const buf = this[BUFFER]; const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); return Promise.resolve(ab); } stream() { const readable = new Readable(); readable._read = function() { }; readable.push(this[BUFFER]); readable.push(null); return readable; } toString() { return "[object Blob]"; } slice() { const size = this.size; const start = arguments[0]; const end = arguments[1]; let relativeStart, relativeEnd; if (start === void 0) { relativeStart = 0; } else if (start < 0) { relativeStart = Math.max(size + start, 0); } else { relativeStart = Math.min(start, size); } if (end === void 0) { relativeEnd = size; } else if (end < 0) { relativeEnd = Math.max(size + end, 0); } else { relativeEnd = Math.min(end, size); } const span = Math.max(relativeEnd - relativeStart, 0); const buffer = this[BUFFER]; const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); const blob5 = new _Blob([], { type: arguments[2] }); blob5[BUFFER] = slicedBuffer; return blob5; } }; Object.defineProperties(Blob2.prototype, { size: { enumerable: true }, type: { enumerable: true }, slice: { enumerable: true } }); Object.defineProperty(Blob2.prototype, Symbol.toStringTag, { value: "Blob", writable: false, enumerable: false, configurable: true }); function FetchError(message2, type, systemError) { Error.call(this, message2); this.message = message2; this.type = type; if (systemError) { this.code = this.errno = systemError.code; } Error.captureStackTrace(this, this.constructor); } FetchError.prototype = Object.create(Error.prototype); FetchError.prototype.constructor = FetchError; FetchError.prototype.name = "FetchError"; var convert; try { convert = __require("encoding").convert; } catch (e2) { } var INTERNALS = Symbol("Body internals"); var PassThrough = Stream.PassThrough; function Body(body) { var _this = this; var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$size = _ref.size; let size = _ref$size === void 0 ? 0 : _ref$size; var _ref$timeout = _ref.timeout; let timeout = _ref$timeout === void 0 ? 0 : _ref$timeout; if (body == null) { body = null; } else if (isURLSearchParams(body)) { body = Buffer.from(body.toString()); } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === "[object ArrayBuffer]") { body = Buffer.from(body); } else if (ArrayBuffer.isView(body)) { body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); } else if (body instanceof Stream) ; else { body = Buffer.from(String(body)); } this[INTERNALS] = { body, disturbed: false, error: null }; this.size = size; this.timeout = timeout; if (body instanceof Stream) { body.on("error", function(err) { const error3 = err.name === "AbortError" ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, "system", err); _this[INTERNALS].error = error3; }); } } Body.prototype = { get body() { return this[INTERNALS].body; }, get bodyUsed() { return this[INTERNALS].disturbed; }, /** * Decode response as ArrayBuffer * * @return Promise */ arrayBuffer() { return consumeBody.call(this).then(function(buf) { return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); }); }, /** * Return raw response as Blob * * @return Promise */ blob() { let ct = this.headers && this.headers.get("content-type") || ""; return consumeBody.call(this).then(function(buf) { return Object.assign( // Prevent copying new Blob2([], { type: ct.toLowerCase() }), { [BUFFER]: buf } ); }); }, /** * Decode response as json * * @return Promise */ json() { var _this2 = this; return consumeBody.call(this).then(function(buffer) { try { return JSON.parse(buffer.toString()); } catch (err) { return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, "invalid-json")); } }); }, /** * Decode response as text * * @return Promise */ text() { return consumeBody.call(this).then(function(buffer) { return buffer.toString(); }); }, /** * Decode response as buffer (non-spec api) * * @return Promise */ buffer() { return consumeBody.call(this); }, /** * Decode response as text, while automatically detecting the encoding and * trying to decode to UTF-8 (non-spec api) * * @return Promise */ textConverted() { var _this3 = this; return consumeBody.call(this).then(function(buffer) { return convertBody(buffer, _this3.headers); }); } }; Object.defineProperties(Body.prototype, { body: { enumerable: true }, bodyUsed: { enumerable: true }, arrayBuffer: { enumerable: true }, blob: { enumerable: true }, json: { enumerable: true }, text: { enumerable: true } }); Body.mixIn = function(proto) { for (const name of Object.getOwnPropertyNames(Body.prototype)) { if (!(name in proto)) { const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); Object.defineProperty(proto, name, desc); } } }; function consumeBody() { var _this4 = this; if (this[INTERNALS].disturbed) { return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); } this[INTERNALS].disturbed = true; if (this[INTERNALS].error) { return Body.Promise.reject(this[INTERNALS].error); } let body = this.body; if (body === null) { return Body.Promise.resolve(Buffer.alloc(0)); } if (isBlob(body)) { body = body.stream(); } if (Buffer.isBuffer(body)) { return Body.Promise.resolve(body); } if (!(body instanceof Stream)) { return Body.Promise.resolve(Buffer.alloc(0)); } let accum = []; let accumBytes = 0; let abort = false; return new Body.Promise(function(resolve14, reject) { let resTimeout; if (_this4.timeout) { resTimeout = setTimeout(function() { abort = true; reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, "body-timeout")); }, _this4.timeout); } body.on("error", function(err) { if (err.name === "AbortError") { abort = true; reject(err); } else { reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, "system", err)); } }); body.on("data", function(chunk) { if (abort || chunk === null) { return; } if (_this4.size && accumBytes + chunk.length > _this4.size) { abort = true; reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, "max-size")); return; } accumBytes += chunk.length; accum.push(chunk); }); body.on("end", function() { if (abort) { return; } clearTimeout(resTimeout); try { resolve14(Buffer.concat(accum, accumBytes)); } catch (err) { reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, "system", err)); } }); }); } function convertBody(buffer, headers) { if (typeof convert !== "function") { throw new Error("The package `encoding` must be installed to use the textConverted() function"); } const ct = headers.get("content-type"); let charset = "utf-8"; let res, str; if (ct) { res = /charset=([^;]*)/i.exec(ct); } str = buffer.slice(0, 1024).toString(); if (!res && str) { res = / 0 && arguments[0] !== void 0 ? arguments[0] : void 0; this[MAP] = /* @__PURE__ */ Object.create(null); if (init2 instanceof _Headers) { const rawHeaders = init2.raw(); const headerNames = Object.keys(rawHeaders); for (const headerName of headerNames) { for (const value of rawHeaders[headerName]) { this.append(headerName, value); } } return; } if (init2 == null) ; else if (typeof init2 === "object") { const method = init2[Symbol.iterator]; if (method != null) { if (typeof method !== "function") { throw new TypeError("Header pairs must be iterable"); } const pairs = []; for (const pair of init2) { if (typeof pair !== "object" || typeof pair[Symbol.iterator] !== "function") { throw new TypeError("Each header pair must be iterable"); } pairs.push(Array.from(pair)); } for (const pair of pairs) { if (pair.length !== 2) { throw new TypeError("Each header pair must be a name/value tuple"); } this.append(pair[0], pair[1]); } } else { for (const key of Object.keys(init2)) { const value = init2[key]; this.append(key, value); } } } else { throw new TypeError("Provided initializer must be an object"); } } /** * Return combined header value given name * * @param String name Header name * @return Mixed */ get(name) { name = `${name}`; validateName2(name); const key = find(this[MAP], name); if (key === void 0) { return null; } return this[MAP][key].join(", "); } /** * Iterate over all headers * * @param Function callback Executed for each item with parameters (value, name, thisArg) * @param Boolean thisArg `this` context for callback function * @return Void */ forEach(callback) { let thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0; let pairs = getHeaders(this); let i = 0; while (i < pairs.length) { var _pairs$i = pairs[i]; const name = _pairs$i[0], value = _pairs$i[1]; callback.call(thisArg, value, name, this); pairs = getHeaders(this); i++; } } /** * Overwrite header values given name * * @param String name Header name * @param String value Header value * @return Void */ set(name, value) { name = `${name}`; value = `${value}`; validateName2(name); validateValue(value); const key = find(this[MAP], name); this[MAP][key !== void 0 ? key : name] = [value]; } /** * Append a value onto existing header * * @param String name Header name * @param String value Header value * @return Void */ append(name, value) { name = `${name}`; value = `${value}`; validateName2(name); validateValue(value); const key = find(this[MAP], name); if (key !== void 0) { this[MAP][key].push(value); } else { this[MAP][name] = [value]; } } /** * Check for header name existence * * @param String name Header name * @return Boolean */ has(name) { name = `${name}`; validateName2(name); return find(this[MAP], name) !== void 0; } /** * Delete all header values given name * * @param String name Header name * @return Void */ delete(name) { name = `${name}`; validateName2(name); const key = find(this[MAP], name); if (key !== void 0) { delete this[MAP][key]; } } /** * Return raw headers (non-spec api) * * @return Object */ raw() { return this[MAP]; } /** * Get an iterator on keys. * * @return Iterator */ keys() { return createHeadersIterator(this, "key"); } /** * Get an iterator on values. * * @return Iterator */ values() { return createHeadersIterator(this, "value"); } /** * Get an iterator on entries. * * This is the default iterator of the Headers object. * * @return Iterator */ [Symbol.iterator]() { return createHeadersIterator(this, "key+value"); } }; Headers6.prototype.entries = Headers6.prototype[Symbol.iterator]; Object.defineProperty(Headers6.prototype, Symbol.toStringTag, { value: "Headers", writable: false, enumerable: false, configurable: true }); Object.defineProperties(Headers6.prototype, { get: { enumerable: true }, forEach: { enumerable: true }, set: { enumerable: true }, append: { enumerable: true }, has: { enumerable: true }, delete: { enumerable: true }, keys: { enumerable: true }, values: { enumerable: true }, entries: { enumerable: true } }); function getHeaders(headers) { let kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "key+value"; const keys = Object.keys(headers[MAP]).sort(); return keys.map(kind === "key" ? function(k) { return k.toLowerCase(); } : kind === "value" ? function(k) { return headers[MAP][k].join(", "); } : function(k) { return [k.toLowerCase(), headers[MAP][k].join(", ")]; }); } var INTERNAL = Symbol("internal"); function createHeadersIterator(target, kind) { const iterator = Object.create(HeadersIteratorPrototype); iterator[INTERNAL] = { target, kind, index: 0 }; return iterator; } var HeadersIteratorPrototype = Object.setPrototypeOf({ next() { if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { throw new TypeError("Value of `this` is not a HeadersIterator"); } var _INTERNAL = this[INTERNAL]; const target = _INTERNAL.target, kind = _INTERNAL.kind, index = _INTERNAL.index; const values = getHeaders(target, kind); const len = values.length; if (index >= len) { return { value: void 0, done: true }; } this[INTERNAL].index = index + 1; return { value: values[index], done: false }; } }, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { value: "HeadersIterator", writable: false, enumerable: false, configurable: true }); function exportNodeCompatibleHeaders(headers) { const obj = Object.assign({ __proto__: null }, headers[MAP]); const hostHeaderKey = find(headers[MAP], "Host"); if (hostHeaderKey !== void 0) { obj[hostHeaderKey] = obj[hostHeaderKey][0]; } return obj; } function createHeadersLenient(obj) { const headers = new Headers6(); for (const name of Object.keys(obj)) { if (invalidTokenRegex.test(name)) { continue; } if (Array.isArray(obj[name])) { for (const val of obj[name]) { if (invalidHeaderCharRegex.test(val)) { continue; } if (headers[MAP][name] === void 0) { headers[MAP][name] = [val]; } else { headers[MAP][name].push(val); } } } else if (!invalidHeaderCharRegex.test(obj[name])) { headers[MAP][name] = [obj[name]]; } } return headers; } var INTERNALS$1 = Symbol("Response internals"); var STATUS_CODES = http3.STATUS_CODES; var Response2 = class _Response { constructor() { let body = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; Body.call(this, body, opts); const status3 = opts.status || 200; const headers = new Headers6(opts.headers); if (body != null && !headers.has("Content-Type")) { const contentType2 = extractContentType(body); if (contentType2) { headers.append("Content-Type", contentType2); } } this[INTERNALS$1] = { url: opts.url, status: status3, statusText: opts.statusText || STATUS_CODES[status3], headers, counter: opts.counter }; } get url() { return this[INTERNALS$1].url || ""; } get status() { return this[INTERNALS$1].status; } /** * Convenience property representing if the request ended normally */ get ok() { return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; } get redirected() { return this[INTERNALS$1].counter > 0; } get statusText() { return this[INTERNALS$1].statusText; } get headers() { return this[INTERNALS$1].headers; } /** * Clone this response * * @return Response */ clone() { return new _Response(clone(this), { url: this.url, status: this.status, statusText: this.statusText, headers: this.headers, ok: this.ok, redirected: this.redirected }); } }; Body.mixIn(Response2.prototype); Object.defineProperties(Response2.prototype, { url: { enumerable: true }, status: { enumerable: true }, ok: { enumerable: true }, redirected: { enumerable: true }, statusText: { enumerable: true }, headers: { enumerable: true }, clone: { enumerable: true } }); Object.defineProperty(Response2.prototype, Symbol.toStringTag, { value: "Response", writable: false, enumerable: false, configurable: true }); var INTERNALS$2 = Symbol("Request internals"); var URL11 = Url.URL || whatwgUrl.URL; var parse_url = Url.parse; var format_url = Url.format; function parseURL(urlStr) { if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { urlStr = new URL11(urlStr).toString(); } return parse_url(urlStr); } var streamDestructionSupported = "destroy" in Stream.Readable.prototype; function isRequest(input) { return typeof input === "object" && typeof input[INTERNALS$2] === "object"; } function isAbortSignal(signal) { const proto = signal && typeof signal === "object" && Object.getPrototypeOf(signal); return !!(proto && proto.constructor.name === "AbortSignal"); } var Request2 = class _Request { constructor(input) { let init2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; let parsedURL; if (!isRequest(input)) { if (input && input.href) { parsedURL = parseURL(input.href); } else { parsedURL = parseURL(`${input}`); } input = {}; } else { parsedURL = parseURL(input.url); } let method = init2.method || input.method || "GET"; method = method.toUpperCase(); if ((init2.body != null || isRequest(input) && input.body !== null) && (method === "GET" || method === "HEAD")) { throw new TypeError("Request with GET/HEAD method cannot have body"); } let inputBody = init2.body != null ? init2.body : isRequest(input) && input.body !== null ? clone(input) : null; Body.call(this, inputBody, { timeout: init2.timeout || input.timeout || 0, size: init2.size || input.size || 0 }); const headers = new Headers6(init2.headers || input.headers || {}); if (inputBody != null && !headers.has("Content-Type")) { const contentType2 = extractContentType(inputBody); if (contentType2) { headers.append("Content-Type", contentType2); } } let signal = isRequest(input) ? input.signal : null; if ("signal" in init2) signal = init2.signal; if (signal != null && !isAbortSignal(signal)) { throw new TypeError("Expected signal to be an instanceof AbortSignal"); } this[INTERNALS$2] = { method, redirect: init2.redirect || input.redirect || "follow", headers, parsedURL, signal }; this.follow = init2.follow !== void 0 ? init2.follow : input.follow !== void 0 ? input.follow : 20; this.compress = init2.compress !== void 0 ? init2.compress : input.compress !== void 0 ? input.compress : true; this.counter = init2.counter || input.counter || 0; this.agent = init2.agent || input.agent; } get method() { return this[INTERNALS$2].method; } get url() { return format_url(this[INTERNALS$2].parsedURL); } get headers() { return this[INTERNALS$2].headers; } get redirect() { return this[INTERNALS$2].redirect; } get signal() { return this[INTERNALS$2].signal; } /** * Clone this request * * @return Request */ clone() { return new _Request(this); } }; Body.mixIn(Request2.prototype); Object.defineProperty(Request2.prototype, Symbol.toStringTag, { value: "Request", writable: false, enumerable: false, configurable: true }); Object.defineProperties(Request2.prototype, { method: { enumerable: true }, url: { enumerable: true }, headers: { enumerable: true }, redirect: { enumerable: true }, clone: { enumerable: true }, signal: { enumerable: true } }); function getNodeRequestOptions(request) { const parsedURL = request[INTERNALS$2].parsedURL; const headers = new Headers6(request[INTERNALS$2].headers); if (!headers.has("Accept")) { headers.set("Accept", "*/*"); } if (!parsedURL.protocol || !parsedURL.hostname) { throw new TypeError("Only absolute URLs are supported"); } if (!/^https?:$/.test(parsedURL.protocol)) { throw new TypeError("Only HTTP(S) protocols are supported"); } if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8"); } let contentLengthValue = null; if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { contentLengthValue = "0"; } if (request.body != null) { const totalBytes = getTotalBytes(request); if (typeof totalBytes === "number") { contentLengthValue = String(totalBytes); } } if (contentLengthValue) { headers.set("Content-Length", contentLengthValue); } if (!headers.has("User-Agent")) { headers.set("User-Agent", "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"); } if (request.compress && !headers.has("Accept-Encoding")) { headers.set("Accept-Encoding", "gzip,deflate"); } let agent = request.agent; if (typeof agent === "function") { agent = agent(parsedURL); } if (!headers.has("Connection") && !agent) { headers.set("Connection", "close"); } return Object.assign({}, parsedURL, { method: request.method, headers: exportNodeCompatibleHeaders(headers), agent }); } function AbortError(message2) { Error.call(this, message2); this.type = "aborted"; this.message = message2; Error.captureStackTrace(this, this.constructor); } AbortError.prototype = Object.create(Error.prototype); AbortError.prototype.constructor = AbortError; AbortError.prototype.name = "AbortError"; var URL$1 = Url.URL || whatwgUrl.URL; var PassThrough$1 = Stream.PassThrough; var isDomainOrSubdomain = function isDomainOrSubdomain2(destination, original) { const orig = new URL$1(original).hostname; const dest = new URL$1(destination).hostname; return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest); }; function fetch6(url3, opts) { if (!fetch6.Promise) { throw new Error("native promise missing, set fetch.Promise to your favorite alternative"); } Body.Promise = fetch6.Promise; return new fetch6.Promise(function(resolve14, reject) { const request = new Request2(url3, opts); const options = getNodeRequestOptions(request); const send = (options.protocol === "https:" ? https : http3).request; const signal = request.signal; let response = null; const abort = function abort2() { let error3 = new AbortError("The user aborted a request."); reject(error3); if (request.body && request.body instanceof Stream.Readable) { request.body.destroy(error3); } if (!response || !response.body) return; response.body.emit("error", error3); }; if (signal && signal.aborted) { abort(); return; } const abortAndFinalize = function abortAndFinalize2() { abort(); finalize(); }; const req = send(options); let reqTimeout; if (signal) { signal.addEventListener("abort", abortAndFinalize); } function finalize() { req.abort(); if (signal) signal.removeEventListener("abort", abortAndFinalize); clearTimeout(reqTimeout); } if (request.timeout) { req.once("socket", function(socket) { reqTimeout = setTimeout(function() { reject(new FetchError(`network timeout at: ${request.url}`, "request-timeout")); finalize(); }, request.timeout); }); } req.on("error", function(err) { reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, "system", err)); finalize(); }); req.on("response", function(res) { clearTimeout(reqTimeout); const headers = createHeadersLenient(res.headers); if (fetch6.isRedirect(res.statusCode)) { const location = headers.get("Location"); let locationURL = null; try { locationURL = location === null ? null : new URL$1(location, request.url).toString(); } catch (err) { if (request.redirect !== "manual") { reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, "invalid-redirect")); finalize(); return; } } switch (request.redirect) { case "error": reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, "no-redirect")); finalize(); return; case "manual": if (locationURL !== null) { try { headers.set("Location", locationURL); } catch (err) { reject(err); } } break; case "follow": if (locationURL === null) { break; } if (request.counter >= request.follow) { reject(new FetchError(`maximum redirect reached at: ${request.url}`, "max-redirect")); finalize(); return; } const requestOpts = { headers: new Headers6(request.headers), follow: request.follow, counter: request.counter + 1, agent: request.agent, compress: request.compress, method: request.method, body: request.body, signal: request.signal, timeout: request.timeout, size: request.size }; if (!isDomainOrSubdomain(request.url, locationURL)) { for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) { requestOpts.headers.delete(name); } } if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { reject(new FetchError("Cannot follow redirect with body being a readable stream", "unsupported-redirect")); finalize(); return; } if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === "POST") { requestOpts.method = "GET"; requestOpts.body = void 0; requestOpts.headers.delete("content-length"); } resolve14(fetch6(new Request2(locationURL, requestOpts))); finalize(); return; } } res.once("end", function() { if (signal) signal.removeEventListener("abort", abortAndFinalize); }); let body = res.pipe(new PassThrough$1()); const response_options = { url: request.url, status: res.statusCode, statusText: res.statusMessage, headers, size: request.size, timeout: request.timeout, counter: request.counter }; const codings = headers.get("Content-Encoding"); if (!request.compress || request.method === "HEAD" || codings === null || res.statusCode === 204 || res.statusCode === 304) { response = new Response2(body, response_options); resolve14(response); return; } const zlibOptions = { flush: zlib.Z_SYNC_FLUSH, finishFlush: zlib.Z_SYNC_FLUSH }; if (codings == "gzip" || codings == "x-gzip") { body = body.pipe(zlib.createGunzip(zlibOptions)); response = new Response2(body, response_options); resolve14(response); return; } if (codings == "deflate" || codings == "x-deflate") { const raw = res.pipe(new PassThrough$1()); raw.once("data", function(chunk) { if ((chunk[0] & 15) === 8) { body = body.pipe(zlib.createInflate()); } else { body = body.pipe(zlib.createInflateRaw()); } response = new Response2(body, response_options); resolve14(response); }); return; } if (codings == "br" && typeof zlib.createBrotliDecompress === "function") { body = body.pipe(zlib.createBrotliDecompress()); response = new Response2(body, response_options); resolve14(response); return; } response = new Response2(body, response_options); resolve14(response); }); writeToStream(req, request); }); } fetch6.isRedirect = function(code2) { return code2 === 301 || code2 === 302 || code2 === 303 || code2 === 307 || code2 === 308; }; fetch6.Promise = global.Promise; module2.exports = exports2 = fetch6; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.default = exports2; exports2.Headers = Headers6; exports2.Request = Request2; exports2.Response = Response2; exports2.FetchError = FetchError; } }); // src/util/ua.ts import os from "os"; var ua_default; var init_ua = __esm({ "src/util/ua.ts"() { "use strict"; init_pkg(); ua_default = `${pkg_default.name} ${pkg_default.version} node-${process.version} ${os.platform()} (${os.arch()})`; } }); // src/util/response-error.ts async function responseError(res, fallbackMessage = null, parsedBody = {}) { let bodyError; if (!res.ok) { let body; try { body = await res.json(); } catch (err) { body = parsedBody; } bodyError = body.error || body.err || body; } const msg = bodyError?.message || fallbackMessage || "Response Error"; return new APIError(msg, res, bodyError); } var init_response_error = __esm({ "src/util/response-error.ts"() { "use strict"; init_errors_ts(); } }); // src/util/print-indications.ts function printIndications(res) { const indications = /* @__PURE__ */ new Set(["warning", "notice", "tip"]); const regex = /^x-(?:vercel|now)-(warning|notice|tip)-(.*)$/; for (const [name, payload] of res.headers) { const match = name.match(regex); if (match) { const [, type, identifier] = match; const action = res.headers.get(`x-vercel-action-${identifier}`); const link4 = res.headers.get(`x-vercel-link-${identifier}`); if (indications.has(type)) { const newline = "\n"; const message2 = prependEmoji(import_chalk14.default.dim(payload), emoji(type)) + newline; let finalLink = ""; if (link4) { finalLink = import_chalk14.default.dim(`${action || "Learn More"}: ${link_default(link4)}`) + newline; } output_manager_default.print(message2 + finalLink); } } } } var import_chalk14; var init_print_indications = __esm({ "src/util/print-indications.ts"() { "use strict"; import_chalk14 = __toESM3(require_source(), 1); init_link(); init_emoji(); init_output_manager(); } }); // ../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/debug.js var require_debug2 = __commonJS2({ "../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/debug.js"(exports2, module2) { var messages = []; var level = 0; var debug2 = (msg, min) => { if (level >= min) { messages.push(msg); } }; debug2.WARN = 1; debug2.INFO = 2; debug2.DEBUG = 3; debug2.reset = () => { messages = []; }; debug2.setDebugLevel = (v) => { level = v; }; debug2.warn = (msg) => debug2(msg, debug2.WARN); debug2.info = (msg) => debug2(msg, debug2.INFO); debug2.debug = (msg) => debug2(msg, debug2.DEBUG); debug2.debugMessages = () => messages; module2.exports = debug2; } }); // ../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/utils.js var require_utils8 = __commonJS2({ "../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/utils.js"(exports2, module2) { var stringWidth = require_string_width(); function codeRegex(capture) { return capture ? /\u001b\[((?:\d*;){0,5}\d*)m/g : /\u001b\[(?:\d*;){0,5}\d*m/g; } function strlen2(str) { let code2 = codeRegex(); let stripped = ("" + str).replace(code2, ""); let split4 = stripped.split("\n"); return split4.reduce(function(memo, s) { return stringWidth(s) > memo ? stringWidth(s) : memo; }, 0); } function repeat2(str, times) { return Array(times + 1).join(str); } function pad(str, len, pad2, dir) { let length = strlen2(str); if (len + 1 >= length) { let padlen = len - length; switch (dir) { case "right": { str = repeat2(pad2, padlen) + str; break; } case "center": { let right = Math.ceil(padlen / 2); let left = padlen - right; str = repeat2(pad2, left) + str + repeat2(pad2, right); break; } default: { str = str + repeat2(pad2, padlen); break; } } } return str; } var codeCache = {}; function addToCodeCache(name, on, off) { on = "\x1B[" + on + "m"; off = "\x1B[" + off + "m"; codeCache[on] = { set: name, to: true }; codeCache[off] = { set: name, to: false }; codeCache[name] = { on, off }; } addToCodeCache("bold", 1, 22); addToCodeCache("italics", 3, 23); addToCodeCache("underline", 4, 24); addToCodeCache("inverse", 7, 27); addToCodeCache("strikethrough", 9, 29); function updateState(state, controlChars) { let controlCode = controlChars[1] ? parseInt(controlChars[1].split(";")[0]) : 0; if (controlCode >= 30 && controlCode <= 39 || controlCode >= 90 && controlCode <= 97) { state.lastForegroundAdded = controlChars[0]; return; } if (controlCode >= 40 && controlCode <= 49 || controlCode >= 100 && controlCode <= 107) { state.lastBackgroundAdded = controlChars[0]; return; } if (controlCode === 0) { for (let i in state) { if (Object.prototype.hasOwnProperty.call(state, i)) { delete state[i]; } } return; } let info = codeCache[controlChars[0]]; if (info) { state[info.set] = info.to; } } function readState(line) { let code2 = codeRegex(true); let controlChars = code2.exec(line); let state = {}; while (controlChars !== null) { updateState(state, controlChars); controlChars = code2.exec(line); } return state; } function unwindState(state, ret) { let lastBackgroundAdded = state.lastBackgroundAdded; let lastForegroundAdded = state.lastForegroundAdded; delete state.lastBackgroundAdded; delete state.lastForegroundAdded; Object.keys(state).forEach(function(key) { if (state[key]) { ret += codeCache[key].off; } }); if (lastBackgroundAdded && lastBackgroundAdded != "\x1B[49m") { ret += "\x1B[49m"; } if (lastForegroundAdded && lastForegroundAdded != "\x1B[39m") { ret += "\x1B[39m"; } return ret; } function rewindState(state, ret) { let lastBackgroundAdded = state.lastBackgroundAdded; let lastForegroundAdded = state.lastForegroundAdded; delete state.lastBackgroundAdded; delete state.lastForegroundAdded; Object.keys(state).forEach(function(key) { if (state[key]) { ret = codeCache[key].on + ret; } }); if (lastBackgroundAdded && lastBackgroundAdded != "\x1B[49m") { ret = lastBackgroundAdded + ret; } if (lastForegroundAdded && lastForegroundAdded != "\x1B[39m") { ret = lastForegroundAdded + ret; } return ret; } function truncateWidth(str, desiredLength) { if (str.length === strlen2(str)) { return str.substr(0, desiredLength); } while (strlen2(str) > desiredLength) { str = str.slice(0, -1); } return str; } function truncateWidthWithAnsi(str, desiredLength) { let code2 = codeRegex(true); let split4 = str.split(codeRegex()); let splitIndex = 0; let retLen = 0; let ret = ""; let myArray; let state = {}; while (retLen < desiredLength) { myArray = code2.exec(str); let toAdd = split4[splitIndex]; splitIndex++; if (retLen + strlen2(toAdd) > desiredLength) { toAdd = truncateWidth(toAdd, desiredLength - retLen); } ret += toAdd; retLen += strlen2(toAdd); if (retLen < desiredLength) { if (!myArray) { break; } ret += myArray[0]; updateState(state, myArray); } } return unwindState(state, ret); } function truncate(str, desiredLength, truncateChar) { truncateChar = truncateChar || "\u2026"; let lengthOfStr = strlen2(str); if (lengthOfStr <= desiredLength) { return str; } desiredLength -= strlen2(truncateChar); let ret = truncateWidthWithAnsi(str, desiredLength); return ret + truncateChar; } function defaultOptions() { return { chars: { top: "\u2500", "top-mid": "\u252C", "top-left": "\u250C", "top-right": "\u2510", bottom: "\u2500", "bottom-mid": "\u2534", "bottom-left": "\u2514", "bottom-right": "\u2518", left: "\u2502", "left-mid": "\u251C", mid: "\u2500", "mid-mid": "\u253C", right: "\u2502", "right-mid": "\u2524", middle: "\u2502" }, truncate: "\u2026", colWidths: [], rowHeights: [], colAligns: [], rowAligns: [], style: { "padding-left": 1, "padding-right": 1, head: ["red"], border: ["grey"], compact: false }, head: [] }; } function mergeOptions(options, defaults) { options = options || {}; defaults = defaults || defaultOptions(); let ret = Object.assign({}, defaults, options); ret.chars = Object.assign({}, defaults.chars, options.chars); ret.style = Object.assign({}, defaults.style, options.style); return ret; } function wordWrap2(maxLength, input) { let lines3 = []; let split4 = input.split(/(\s+)/g); let line = []; let lineLength = 0; let whitespace; for (let i = 0; i < split4.length; i += 2) { let word = split4[i]; let newLength = lineLength + strlen2(word); if (lineLength > 0 && whitespace) { newLength += whitespace.length; } if (newLength > maxLength) { if (lineLength !== 0) { lines3.push(line.join("")); } line = [word]; lineLength = strlen2(word); } else { line.push(whitespace || "", word); lineLength = newLength; } whitespace = split4[i + 1]; } if (lineLength) { lines3.push(line.join("")); } return lines3; } function textWrap(maxLength, input) { let lines3 = []; let line = ""; function pushLine(str, ws) { if (line.length && ws) line += ws; line += str; while (line.length > maxLength) { lines3.push(line.slice(0, maxLength)); line = line.slice(maxLength); } } let split4 = input.split(/(\s+)/g); for (let i = 0; i < split4.length; i += 2) { pushLine(split4[i], i && split4[i - 1]); } if (line.length) lines3.push(line); return lines3; } function multiLineWordWrap(maxLength, input, wrapOnWordBoundary = true) { let output2 = []; input = input.split("\n"); const handler = wrapOnWordBoundary ? wordWrap2 : textWrap; for (let i = 0; i < input.length; i++) { output2.push.apply(output2, handler(maxLength, input[i])); } return output2; } function colorizeLines(input) { let state = {}; let output2 = []; for (let i = 0; i < input.length; i++) { let line = rewindState(state, input[i]); state = readState(line); let temp = Object.assign({}, state); output2.push(unwindState(temp, line)); } return output2; } function hyperlink(url3, text) { const OSC = "\x1B]"; const BEL = "\x07"; const SEP = ";"; return [OSC, "8", SEP, SEP, url3 || text, BEL, text, OSC, "8", SEP, SEP, BEL].join(""); } module2.exports = { strlen: strlen2, repeat: repeat2, pad, truncate, mergeOptions, wordWrap: multiLineWordWrap, colorizeLines, hyperlink }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/styles.js var require_styles = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/styles.js"(exports2, module2) { var styles = {}; module2["exports"] = styles; var codes = { reset: [0, 0], bold: [1, 22], dim: [2, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], hidden: [8, 28], strikethrough: [9, 29], black: [30, 39], red: [31, 39], green: [32, 39], yellow: [33, 39], blue: [34, 39], magenta: [35, 39], cyan: [36, 39], white: [37, 39], gray: [90, 39], grey: [90, 39], brightRed: [91, 39], brightGreen: [92, 39], brightYellow: [93, 39], brightBlue: [94, 39], brightMagenta: [95, 39], brightCyan: [96, 39], brightWhite: [97, 39], bgBlack: [40, 49], bgRed: [41, 49], bgGreen: [42, 49], bgYellow: [43, 49], bgBlue: [44, 49], bgMagenta: [45, 49], bgCyan: [46, 49], bgWhite: [47, 49], bgGray: [100, 49], bgGrey: [100, 49], bgBrightRed: [101, 49], bgBrightGreen: [102, 49], bgBrightYellow: [103, 49], bgBrightBlue: [104, 49], bgBrightMagenta: [105, 49], bgBrightCyan: [106, 49], bgBrightWhite: [107, 49], // legacy styles for colors pre v1.0.0 blackBG: [40, 49], redBG: [41, 49], greenBG: [42, 49], yellowBG: [43, 49], blueBG: [44, 49], magentaBG: [45, 49], cyanBG: [46, 49], whiteBG: [47, 49] }; Object.keys(codes).forEach(function(key) { var val = codes[key]; var style = styles[key] = []; style.open = "\x1B[" + val[0] + "m"; style.close = "\x1B[" + val[1] + "m"; }); } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/system/has-flag.js var require_has_flag3 = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/system/has-flag.js"(exports2, module2) { "use strict"; module2.exports = function(flag, argv) { argv = argv || process.argv; var terminatorPos = argv.indexOf("--"); var prefix = /^-{1,2}/.test(flag) ? "" : "--"; var pos = argv.indexOf(prefix + flag); return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/system/supports-colors.js var require_supports_colors = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/system/supports-colors.js"(exports2, module2) { "use strict"; var os4 = __require("os"); var hasFlag = require_has_flag3(); var env = process.env; var forceColor = void 0; if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) { forceColor = false; } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { forceColor = true; } if ("FORCE_COLOR" in env) { forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; } function translateLevel(level) { if (level === 0) { return false; } return { level, hasBasic: true, has256: level >= 2, has16m: level >= 3 }; } function supportsColor(stream) { if (forceColor === false) { return 0; } if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { return 3; } if (hasFlag("color=256")) { return 2; } if (stream && !stream.isTTY && forceColor !== true) { return 0; } var min = forceColor ? 1 : 0; if (process.platform === "win32") { var osRelease = os4.release().split("."); if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { return Number(osRelease[2]) >= 14931 ? 3 : 2; } return 1; } if ("CI" in env) { if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some(function(sign) { return sign in env; }) || env.CI_NAME === "codeship") { return 1; } return min; } if ("TEAMCITY_VERSION" in env) { return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; } if ("TERM_PROGRAM" in env) { var version2 = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); switch (env.TERM_PROGRAM) { case "iTerm.app": return version2 >= 3 ? 3 : 2; case "Hyper": return 3; case "Apple_Terminal": return 2; } } if (/-256(color)?$/i.test(env.TERM)) { return 2; } if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { return 1; } if ("COLORTERM" in env) { return 1; } if (env.TERM === "dumb") { return min; } return min; } function getSupportLevel(stream) { var level = supportsColor(stream); return translateLevel(level); } module2.exports = { supportsColor: getSupportLevel, stdout: getSupportLevel(process.stdout), stderr: getSupportLevel(process.stderr) }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/custom/trap.js var require_trap = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/custom/trap.js"(exports2, module2) { module2["exports"] = function runTheTrap(text, options) { var result = ""; text = text || "Run the trap, drop the bass"; text = text.split(""); var trap = { a: ["@", "\u0104", "\u023A", "\u0245", "\u0394", "\u039B", "\u0414"], b: ["\xDF", "\u0181", "\u0243", "\u026E", "\u03B2", "\u0E3F"], c: ["\xA9", "\u023B", "\u03FE"], d: ["\xD0", "\u018A", "\u0500", "\u0501", "\u0502", "\u0503"], e: [ "\xCB", "\u0115", "\u018E", "\u0258", "\u03A3", "\u03BE", "\u04BC", "\u0A6C" ], f: ["\u04FA"], g: ["\u0262"], h: ["\u0126", "\u0195", "\u04A2", "\u04BA", "\u04C7", "\u050A"], i: ["\u0F0F"], j: ["\u0134"], k: ["\u0138", "\u04A0", "\u04C3", "\u051E"], l: ["\u0139"], m: ["\u028D", "\u04CD", "\u04CE", "\u0520", "\u0521", "\u0D69"], n: ["\xD1", "\u014B", "\u019D", "\u0376", "\u03A0", "\u048A"], o: [ "\xD8", "\xF5", "\xF8", "\u01FE", "\u0298", "\u047A", "\u05DD", "\u06DD", "\u0E4F" ], p: ["\u01F7", "\u048E"], q: ["\u09CD"], r: ["\xAE", "\u01A6", "\u0210", "\u024C", "\u0280", "\u042F"], s: ["\xA7", "\u03DE", "\u03DF", "\u03E8"], t: ["\u0141", "\u0166", "\u0373"], u: ["\u01B1", "\u054D"], v: ["\u05D8"], w: ["\u0428", "\u0460", "\u047C", "\u0D70"], x: ["\u04B2", "\u04FE", "\u04FC", "\u04FD"], y: ["\xA5", "\u04B0", "\u04CB"], z: ["\u01B5", "\u0240"] }; text.forEach(function(c) { c = c.toLowerCase(); var chars2 = trap[c] || [" "]; var rand = Math.floor(Math.random() * chars2.length); if (typeof trap[c] !== "undefined") { result += trap[c][rand]; } else { result += c; } }); return result; }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/custom/zalgo.js var require_zalgo = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/custom/zalgo.js"(exports2, module2) { module2["exports"] = function zalgo(text, options) { text = text || " he is here "; var soul = { "up": [ "\u030D", "\u030E", "\u0304", "\u0305", "\u033F", "\u0311", "\u0306", "\u0310", "\u0352", "\u0357", "\u0351", "\u0307", "\u0308", "\u030A", "\u0342", "\u0313", "\u0308", "\u034A", "\u034B", "\u034C", "\u0303", "\u0302", "\u030C", "\u0350", "\u0300", "\u0301", "\u030B", "\u030F", "\u0312", "\u0313", "\u0314", "\u033D", "\u0309", "\u0363", "\u0364", "\u0365", "\u0366", "\u0367", "\u0368", "\u0369", "\u036A", "\u036B", "\u036C", "\u036D", "\u036E", "\u036F", "\u033E", "\u035B", "\u0346", "\u031A" ], "down": [ "\u0316", "\u0317", "\u0318", "\u0319", "\u031C", "\u031D", "\u031E", "\u031F", "\u0320", "\u0324", "\u0325", "\u0326", "\u0329", "\u032A", "\u032B", "\u032C", "\u032D", "\u032E", "\u032F", "\u0330", "\u0331", "\u0332", "\u0333", "\u0339", "\u033A", "\u033B", "\u033C", "\u0345", "\u0347", "\u0348", "\u0349", "\u034D", "\u034E", "\u0353", "\u0354", "\u0355", "\u0356", "\u0359", "\u035A", "\u0323" ], "mid": [ "\u0315", "\u031B", "\u0300", "\u0301", "\u0358", "\u0321", "\u0322", "\u0327", "\u0328", "\u0334", "\u0335", "\u0336", "\u035C", "\u035D", "\u035E", "\u035F", "\u0360", "\u0362", "\u0338", "\u0337", "\u0361", " \u0489" ] }; var all = [].concat(soul.up, soul.down, soul.mid); function randomNumber(range) { var r = Math.floor(Math.random() * range); return r; } function isChar(character) { var bool = false; all.filter(function(i) { bool = i === character; }); return bool; } function heComes(text2, options2) { var result = ""; var counts; var l; options2 = options2 || {}; options2["up"] = typeof options2["up"] !== "undefined" ? options2["up"] : true; options2["mid"] = typeof options2["mid"] !== "undefined" ? options2["mid"] : true; options2["down"] = typeof options2["down"] !== "undefined" ? options2["down"] : true; options2["size"] = typeof options2["size"] !== "undefined" ? options2["size"] : "maxi"; text2 = text2.split(""); for (l in text2) { if (isChar(l)) { continue; } result = result + text2[l]; counts = { "up": 0, "down": 0, "mid": 0 }; switch (options2.size) { case "mini": counts.up = randomNumber(8); counts.mid = randomNumber(2); counts.down = randomNumber(8); break; case "maxi": counts.up = randomNumber(16) + 3; counts.mid = randomNumber(4) + 1; counts.down = randomNumber(64) + 3; break; default: counts.up = randomNumber(8) + 1; counts.mid = randomNumber(6) / 2; counts.down = randomNumber(8) + 1; break; } var arr = ["up", "mid", "down"]; for (var d in arr) { var index = arr[d]; for (var i = 0; i <= counts[index]; i++) { if (options2[index]) { result = result + soul[index][randomNumber(soul[index].length)]; } } } } return result; } return heComes(text, options); }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/maps/america.js var require_america = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/maps/america.js"(exports2, module2) { module2["exports"] = function(colors4) { return function(letter, i, exploded) { if (letter === " ") return letter; switch (i % 3) { case 0: return colors4.red(letter); case 1: return colors4.white(letter); case 2: return colors4.blue(letter); } }; }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/maps/zebra.js var require_zebra = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/maps/zebra.js"(exports2, module2) { module2["exports"] = function(colors4) { return function(letter, i, exploded) { return i % 2 === 0 ? letter : colors4.inverse(letter); }; }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/maps/rainbow.js var require_rainbow = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/maps/rainbow.js"(exports2, module2) { module2["exports"] = function(colors4) { var rainbowColors = ["red", "yellow", "green", "blue", "magenta"]; return function(letter, i, exploded) { if (letter === " ") { return letter; } else { return colors4[rainbowColors[i++ % rainbowColors.length]](letter); } }; }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/maps/random.js var require_random = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/maps/random.js"(exports2, module2) { module2["exports"] = function(colors4) { var available = [ "underline", "inverse", "grey", "yellow", "red", "green", "blue", "white", "cyan", "magenta", "brightYellow", "brightRed", "brightGreen", "brightBlue", "brightWhite", "brightCyan", "brightMagenta" ]; return function(letter, i, exploded) { return letter === " " ? letter : colors4[available[Math.round(Math.random() * (available.length - 2))]](letter); }; }; } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/colors.js var require_colors = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/lib/colors.js"(exports2, module2) { var colors4 = {}; module2["exports"] = colors4; colors4.themes = {}; var util = __require("util"); var ansiStyles = colors4.styles = require_styles(); var defineProps = Object.defineProperties; var newLineRegex = new RegExp(/[\r\n]+/g); colors4.supportsColor = require_supports_colors().supportsColor; if (typeof colors4.enabled === "undefined") { colors4.enabled = colors4.supportsColor() !== false; } colors4.enable = function() { colors4.enabled = true; }; colors4.disable = function() { colors4.enabled = false; }; colors4.stripColors = colors4.strip = function(str) { return ("" + str).replace(/\x1B\[\d+m/g, ""); }; var stylize = colors4.stylize = function stylize2(str, style) { if (!colors4.enabled) { return str + ""; } var styleMap = ansiStyles[style]; if (!styleMap && style in colors4) { return colors4[style](str); } return styleMap.open + str + styleMap.close; }; var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; var escapeStringRegexp = function(str) { if (typeof str !== "string") { throw new TypeError("Expected a string"); } return str.replace(matchOperatorsRe, "\\$&"); }; function build2(_styles) { var builder = function builder2() { return applyStyle.apply(builder2, arguments); }; builder._styles = _styles; builder.__proto__ = proto; return builder; } var styles = function() { var ret = {}; ansiStyles.grey = ansiStyles.gray; Object.keys(ansiStyles).forEach(function(key) { ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), "g"); ret[key] = { get: function() { return build2(this._styles.concat(key)); } }; }); return ret; }(); var proto = defineProps(function colors5() { }, styles); function applyStyle() { var args2 = Array.prototype.slice.call(arguments); var str = args2.map(function(arg2) { if (arg2 != null && arg2.constructor === String) { return arg2; } else { return util.inspect(arg2); } }).join(" "); if (!colors4.enabled || !str) { return str; } var newLinesPresent = str.indexOf("\n") != -1; var nestedStyles = this._styles; var i = nestedStyles.length; while (i--) { var code2 = ansiStyles[nestedStyles[i]]; str = code2.open + str.replace(code2.closeRe, code2.open) + code2.close; if (newLinesPresent) { str = str.replace(newLineRegex, function(match) { return code2.close + match + code2.open; }); } } return str; } colors4.setTheme = function(theme) { if (typeof theme === "string") { console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));"); return; } for (var style in theme) { (function(style2) { colors4[style2] = function(str) { if (typeof theme[style2] === "object") { var out = str; for (var i in theme[style2]) { out = colors4[theme[style2][i]](out); } return out; } return colors4[theme[style2]](str); }; })(style); } }; function init2() { var ret = {}; Object.keys(styles).forEach(function(name) { ret[name] = { get: function() { return build2([name]); } }; }); return ret; } var sequencer = function sequencer2(map2, str) { var exploded = str.split(""); exploded = exploded.map(map2); return exploded.join(""); }; colors4.trap = require_trap(); colors4.zalgo = require_zalgo(); colors4.maps = {}; colors4.maps.america = require_america()(colors4); colors4.maps.zebra = require_zebra()(colors4); colors4.maps.rainbow = require_rainbow()(colors4); colors4.maps.random = require_random()(colors4); for (map in colors4.maps) { (function(map2) { colors4[map2] = function(str) { return sequencer(colors4.maps[map2], str); }; })(map); } var map; defineProps(colors4, init2()); } }); // ../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/safe.js var require_safe = __commonJS2({ "../../node_modules/.pnpm/@colors+colors@1.5.0/node_modules/@colors/colors/safe.js"(exports2, module2) { var colors4 = require_colors(); module2["exports"] = colors4; } }); // ../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/cell.js var require_cell = __commonJS2({ "../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/cell.js"(exports2, module2) { var { info, debug: debug2 } = require_debug2(); var utils = require_utils8(); var Cell = class _Cell { /** * A representation of a cell within the table. * Implementations must have `init` and `draw` methods, * as well as `colSpan`, `rowSpan`, `desiredHeight` and `desiredWidth` properties. * @param options * @constructor */ constructor(options) { this.setOptions(options); this.x = null; this.y = null; } setOptions(options) { if (["boolean", "number", "string"].indexOf(typeof options) !== -1) { options = { content: "" + options }; } options = options || {}; this.options = options; let content = options.content; if (["boolean", "number", "string"].indexOf(typeof content) !== -1) { this.content = String(content); } else if (!content) { this.content = this.options.href || ""; } else { throw new Error("Content needs to be a primitive, got: " + typeof content); } this.colSpan = options.colSpan || 1; this.rowSpan = options.rowSpan || 1; if (this.options.href) { Object.defineProperty(this, "href", { get() { return this.options.href; } }); } } mergeTableOptions(tableOptions2, cells) { this.cells = cells; let optionsChars = this.options.chars || {}; let tableChars = tableOptions2.chars; let chars2 = this.chars = {}; CHAR_NAMES.forEach(function(name) { setOption(optionsChars, tableChars, name, chars2); }); this.truncate = this.options.truncate || tableOptions2.truncate; let style = this.options.style = this.options.style || {}; let tableStyle = tableOptions2.style; setOption(style, tableStyle, "padding-left", this); setOption(style, tableStyle, "padding-right", this); this.head = style.head || tableStyle.head; this.border = style.border || tableStyle.border; this.fixedWidth = tableOptions2.colWidths[this.x]; this.lines = this.computeLines(tableOptions2); this.desiredWidth = utils.strlen(this.content) + this.paddingLeft + this.paddingRight; this.desiredHeight = this.lines.length; } computeLines(tableOptions2) { const tableWordWrap = tableOptions2.wordWrap || tableOptions2.textWrap; const { wordWrap: wordWrap2 = tableWordWrap } = this.options; if (this.fixedWidth && wordWrap2) { this.fixedWidth -= this.paddingLeft + this.paddingRight; if (this.colSpan) { let i = 1; while (i < this.colSpan) { this.fixedWidth += tableOptions2.colWidths[this.x + i]; i++; } } const { wrapOnWordBoundary: tableWrapOnWordBoundary = true } = tableOptions2; const { wrapOnWordBoundary = tableWrapOnWordBoundary } = this.options; return this.wrapLines(utils.wordWrap(this.fixedWidth, this.content, wrapOnWordBoundary)); } return this.wrapLines(this.content.split("\n")); } wrapLines(computedLines) { const lines3 = utils.colorizeLines(computedLines); if (this.href) { return lines3.map((line) => utils.hyperlink(this.href, line)); } return lines3; } /** * Initializes the Cells data structure. * * @param tableOptions - A fully populated set of tableOptions. * In addition to the standard default values, tableOptions must have fully populated the * `colWidths` and `rowWidths` arrays. Those arrays must have lengths equal to the number * of columns or rows (respectively) in this table, and each array item must be a Number. * */ init(tableOptions2) { let x = this.x; let y = this.y; this.widths = tableOptions2.colWidths.slice(x, x + this.colSpan); this.heights = tableOptions2.rowHeights.slice(y, y + this.rowSpan); this.width = this.widths.reduce(sumPlusOne, -1); this.height = this.heights.reduce(sumPlusOne, -1); this.hAlign = this.options.hAlign || tableOptions2.colAligns[x]; this.vAlign = this.options.vAlign || tableOptions2.rowAligns[y]; this.drawRight = x + this.colSpan == tableOptions2.colWidths.length; } /** * Draws the given line of the cell. * This default implementation defers to methods `drawTop`, `drawBottom`, `drawLine` and `drawEmpty`. * @param lineNum - can be `top`, `bottom` or a numerical line number. * @param spanningCell - will be a number if being called from a RowSpanCell, and will represent how * many rows below it's being called from. Otherwise it's undefined. * @returns {String} The representation of this line. */ draw(lineNum, spanningCell) { if (lineNum == "top") return this.drawTop(this.drawRight); if (lineNum == "bottom") return this.drawBottom(this.drawRight); let content = utils.truncate(this.content, 10, this.truncate); if (!lineNum) { info(`${this.y}-${this.x}: ${this.rowSpan - lineNum}x${this.colSpan} Cell ${content}`); } else { } let padLen = Math.max(this.height - this.lines.length, 0); let padTop; switch (this.vAlign) { case "center": padTop = Math.ceil(padLen / 2); break; case "bottom": padTop = padLen; break; default: padTop = 0; } if (lineNum < padTop || lineNum >= padTop + this.lines.length) { return this.drawEmpty(this.drawRight, spanningCell); } let forceTruncation = this.lines.length > this.height && lineNum + 1 >= this.height; return this.drawLine(lineNum - padTop, this.drawRight, forceTruncation, spanningCell); } /** * Renders the top line of the cell. * @param drawRight - true if this method should render the right edge of the cell. * @returns {String} */ drawTop(drawRight) { let content = []; if (this.cells) { this.widths.forEach(function(width, index) { content.push(this._topLeftChar(index)); content.push(utils.repeat(this.chars[this.y == 0 ? "top" : "mid"], width)); }, this); } else { content.push(this._topLeftChar(0)); content.push(utils.repeat(this.chars[this.y == 0 ? "top" : "mid"], this.width)); } if (drawRight) { content.push(this.chars[this.y == 0 ? "topRight" : "rightMid"]); } return this.wrapWithStyleColors("border", content.join("")); } _topLeftChar(offset) { let x = this.x + offset; let leftChar; if (this.y == 0) { leftChar = x == 0 ? "topLeft" : offset == 0 ? "topMid" : "top"; } else { if (x == 0) { leftChar = "leftMid"; } else { leftChar = offset == 0 ? "midMid" : "bottomMid"; if (this.cells) { let spanAbove = this.cells[this.y - 1][x] instanceof _Cell.ColSpanCell; if (spanAbove) { leftChar = offset == 0 ? "topMid" : "mid"; } if (offset == 0) { let i = 1; while (this.cells[this.y][x - i] instanceof _Cell.ColSpanCell) { i++; } if (this.cells[this.y][x - i] instanceof _Cell.RowSpanCell) { leftChar = "leftMid"; } } } } } return this.chars[leftChar]; } wrapWithStyleColors(styleProperty, content) { if (this[styleProperty] && this[styleProperty].length) { try { let colors4 = require_safe(); for (let i = this[styleProperty].length - 1; i >= 0; i--) { colors4 = colors4[this[styleProperty][i]]; } return colors4(content); } catch (e2) { return content; } } else { return content; } } /** * Renders a line of text. * @param lineNum - Which line of text to render. This is not necessarily the line within the cell. * There may be top-padding above the first line of text. * @param drawRight - true if this method should render the right edge of the cell. * @param forceTruncationSymbol - `true` if the rendered text should end with the truncation symbol even * if the text fits. This is used when the cell is vertically truncated. If `false` the text should * only include the truncation symbol if the text will not fit horizontally within the cell width. * @param spanningCell - a number of if being called from a RowSpanCell. (how many rows below). otherwise undefined. * @returns {String} */ drawLine(lineNum, drawRight, forceTruncationSymbol, spanningCell) { let left = this.chars[this.x == 0 ? "left" : "middle"]; if (this.x && spanningCell && this.cells) { let cellLeft = this.cells[this.y + spanningCell][this.x - 1]; while (cellLeft instanceof ColSpanCell) { cellLeft = this.cells[cellLeft.y][cellLeft.x - 1]; } if (!(cellLeft instanceof RowSpanCell)) { left = this.chars["rightMid"]; } } let leftPadding = utils.repeat(" ", this.paddingLeft); let right = drawRight ? this.chars["right"] : ""; let rightPadding = utils.repeat(" ", this.paddingRight); let line = this.lines[lineNum]; let len = this.width - (this.paddingLeft + this.paddingRight); if (forceTruncationSymbol) line += this.truncate || "\u2026"; let content = utils.truncate(line, len, this.truncate); content = utils.pad(content, len, " ", this.hAlign); content = leftPadding + content + rightPadding; return this.stylizeLine(left, content, right); } stylizeLine(left, content, right) { left = this.wrapWithStyleColors("border", left); right = this.wrapWithStyleColors("border", right); if (this.y === 0) { content = this.wrapWithStyleColors("head", content); } return left + content + right; } /** * Renders the bottom line of the cell. * @param drawRight - true if this method should render the right edge of the cell. * @returns {String} */ drawBottom(drawRight) { let left = this.chars[this.x == 0 ? "bottomLeft" : "bottomMid"]; let content = utils.repeat(this.chars.bottom, this.width); let right = drawRight ? this.chars["bottomRight"] : ""; return this.wrapWithStyleColors("border", left + content + right); } /** * Renders a blank line of text within the cell. Used for top and/or bottom padding. * @param drawRight - true if this method should render the right edge of the cell. * @param spanningCell - a number of if being called from a RowSpanCell. (how many rows below). otherwise undefined. * @returns {String} */ drawEmpty(drawRight, spanningCell) { let left = this.chars[this.x == 0 ? "left" : "middle"]; if (this.x && spanningCell && this.cells) { let cellLeft = this.cells[this.y + spanningCell][this.x - 1]; while (cellLeft instanceof ColSpanCell) { cellLeft = this.cells[cellLeft.y][cellLeft.x - 1]; } if (!(cellLeft instanceof RowSpanCell)) { left = this.chars["rightMid"]; } } let right = drawRight ? this.chars["right"] : ""; let content = utils.repeat(" ", this.width); return this.stylizeLine(left, content, right); } }; var ColSpanCell = class { /** * A Cell that doesn't do anything. It just draws empty lines. * Used as a placeholder in column spanning. * @constructor */ constructor() { } draw(lineNum) { if (typeof lineNum === "number") { debug2(`${this.y}-${this.x}: 1x1 ColSpanCell`); } return ""; } init() { } mergeTableOptions() { } }; var RowSpanCell = class { /** * A placeholder Cell for a Cell that spans multiple rows. * It delegates rendering to the original cell, but adds the appropriate offset. * @param originalCell * @constructor */ constructor(originalCell) { this.originalCell = originalCell; } init(tableOptions2) { let y = this.y; let originalY = this.originalCell.y; this.cellOffset = y - originalY; this.offset = findDimension(tableOptions2.rowHeights, originalY, this.cellOffset); } draw(lineNum) { if (lineNum == "top") { return this.originalCell.draw(this.offset, this.cellOffset); } if (lineNum == "bottom") { return this.originalCell.draw("bottom"); } debug2(`${this.y}-${this.x}: 1x${this.colSpan} RowSpanCell for ${this.originalCell.content}`); return this.originalCell.draw(this.offset + 1 + lineNum); } mergeTableOptions() { } }; function firstDefined(...args2) { return args2.filter((v) => v !== void 0 && v !== null).shift(); } function setOption(objA, objB, nameB, targetObj) { let nameA = nameB.split("-"); if (nameA.length > 1) { nameA[1] = nameA[1].charAt(0).toUpperCase() + nameA[1].substr(1); nameA = nameA.join(""); targetObj[nameA] = firstDefined(objA[nameA], objA[nameB], objB[nameA], objB[nameB]); } else { targetObj[nameB] = firstDefined(objA[nameB], objB[nameB]); } } function findDimension(dimensionTable, startingIndex, span) { let ret = dimensionTable[startingIndex]; for (let i = 1; i < span; i++) { ret += 1 + dimensionTable[startingIndex + i]; } return ret; } function sumPlusOne(a, b) { return a + b + 1; } var CHAR_NAMES = [ "top", "top-mid", "top-left", "top-right", "bottom", "bottom-mid", "bottom-left", "bottom-right", "left", "left-mid", "mid", "mid-mid", "right", "right-mid", "middle" ]; module2.exports = Cell; module2.exports.ColSpanCell = ColSpanCell; module2.exports.RowSpanCell = RowSpanCell; } }); // ../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/layout-manager.js var require_layout_manager = __commonJS2({ "../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/layout-manager.js"(exports2, module2) { var { warn, debug: debug2 } = require_debug2(); var Cell = require_cell(); var { ColSpanCell, RowSpanCell } = Cell; (function() { function next(alloc, col) { if (alloc[col] > 0) { return next(alloc, col + 1); } return col; } function layoutTable(table2) { let alloc = {}; table2.forEach(function(row, rowIndex) { let col = 0; row.forEach(function(cell) { cell.y = rowIndex; cell.x = rowIndex ? next(alloc, col) : col; const rowSpan = cell.rowSpan || 1; const colSpan = cell.colSpan || 1; if (rowSpan > 1) { for (let cs = 0; cs < colSpan; cs++) { alloc[cell.x + cs] = rowSpan; } } col = cell.x + colSpan; }); Object.keys(alloc).forEach((idx) => { alloc[idx]--; if (alloc[idx] < 1) delete alloc[idx]; }); }); } function maxWidth(table2) { let mw = 0; table2.forEach(function(row) { row.forEach(function(cell) { mw = Math.max(mw, cell.x + (cell.colSpan || 1)); }); }); return mw; } function maxHeight(table2) { return table2.length; } function cellsConflict(cell1, cell2) { let yMin1 = cell1.y; let yMax1 = cell1.y - 1 + (cell1.rowSpan || 1); let yMin2 = cell2.y; let yMax2 = cell2.y - 1 + (cell2.rowSpan || 1); let yConflict = !(yMin1 > yMax2 || yMin2 > yMax1); let xMin1 = cell1.x; let xMax1 = cell1.x - 1 + (cell1.colSpan || 1); let xMin2 = cell2.x; let xMax2 = cell2.x - 1 + (cell2.colSpan || 1); let xConflict = !(xMin1 > xMax2 || xMin2 > xMax1); return yConflict && xConflict; } function conflictExists(rows, x, y) { let i_max = Math.min(rows.length - 1, y); let cell = { x, y }; for (let i = 0; i <= i_max; i++) { let row = rows[i]; for (let j = 0; j < row.length; j++) { if (cellsConflict(cell, row[j])) { return true; } } } return false; } function allBlank(rows, y, xMin, xMax) { for (let x = xMin; x < xMax; x++) { if (conflictExists(rows, x, y)) { return false; } } return true; } function addRowSpanCells(table2) { table2.forEach(function(row, rowIndex) { row.forEach(function(cell) { for (let i = 1; i < cell.rowSpan; i++) { let rowSpanCell = new RowSpanCell(cell); rowSpanCell.x = cell.x; rowSpanCell.y = cell.y + i; rowSpanCell.colSpan = cell.colSpan; insertCell(rowSpanCell, table2[rowIndex + i]); } }); }); } function addColSpanCells(cellRows) { for (let rowIndex = cellRows.length - 1; rowIndex >= 0; rowIndex--) { let cellColumns = cellRows[rowIndex]; for (let columnIndex = 0; columnIndex < cellColumns.length; columnIndex++) { let cell = cellColumns[columnIndex]; for (let k = 1; k < cell.colSpan; k++) { let colSpanCell = new ColSpanCell(); colSpanCell.x = cell.x + k; colSpanCell.y = cell.y; cellColumns.splice(columnIndex + 1, 0, colSpanCell); } } } } function insertCell(cell, row) { let x = 0; while (x < row.length && row[x].x < cell.x) { x++; } row.splice(x, 0, cell); } function fillInTable(table2) { let h_max = maxHeight(table2); let w_max = maxWidth(table2); debug2(`Max rows: ${h_max}; Max cols: ${w_max}`); for (let y = 0; y < h_max; y++) { for (let x = 0; x < w_max; x++) { if (!conflictExists(table2, x, y)) { let opts = { x, y, colSpan: 1, rowSpan: 1 }; x++; while (x < w_max && !conflictExists(table2, x, y)) { opts.colSpan++; x++; } let y2 = y + 1; while (y2 < h_max && allBlank(table2, y2, opts.x, opts.x + opts.colSpan)) { opts.rowSpan++; y2++; } let cell = new Cell(opts); cell.x = opts.x; cell.y = opts.y; warn(`Missing cell at ${cell.y}-${cell.x}.`); insertCell(cell, table2[y]); } } } } function generateCells(rows) { return rows.map(function(row) { if (!Array.isArray(row)) { let key = Object.keys(row)[0]; row = row[key]; if (Array.isArray(row)) { row = row.slice(); row.unshift(key); } else { row = [key, row]; } } return row.map(function(cell) { return new Cell(cell); }); }); } function makeTableLayout(rows) { let cellRows = generateCells(rows); layoutTable(cellRows); fillInTable(cellRows); addRowSpanCells(cellRows); addColSpanCells(cellRows); return cellRows; } module2.exports = { makeTableLayout, layoutTable, addRowSpanCells, maxWidth, fillInTable, computeWidths: makeComputeWidths("colSpan", "desiredWidth", "x", 1), computeHeights: makeComputeWidths("rowSpan", "desiredHeight", "y", 1) }; })(); function makeComputeWidths(colSpan, desiredWidth, x, forcedMin) { return function(vals, table2) { let result = []; let spanners = []; let auto = {}; table2.forEach(function(row) { row.forEach(function(cell) { if ((cell[colSpan] || 1) > 1) { spanners.push(cell); } else { result[cell[x]] = Math.max(result[cell[x]] || 0, cell[desiredWidth] || 0, forcedMin); } }); }); vals.forEach(function(val, index) { if (typeof val === "number") { result[index] = val; } }); for (let k = spanners.length - 1; k >= 0; k--) { let cell = spanners[k]; let span = cell[colSpan]; let col = cell[x]; let existingWidth = result[col]; let editableCols = typeof vals[col] === "number" ? 0 : 1; if (typeof existingWidth === "number") { for (let i = 1; i < span; i++) { existingWidth += 1 + result[col + i]; if (typeof vals[col + i] !== "number") { editableCols++; } } } else { existingWidth = desiredWidth === "desiredWidth" ? cell.desiredWidth - 1 : 1; if (!auto[col] || auto[col] < existingWidth) { auto[col] = existingWidth; } } if (cell[desiredWidth] > existingWidth) { let i = 0; while (editableCols > 0 && cell[desiredWidth] > existingWidth) { if (typeof vals[col + i] !== "number") { let dif = Math.round((cell[desiredWidth] - existingWidth) / editableCols); existingWidth += dif; result[col + i] += dif; editableCols--; } i++; } } } Object.assign(vals, result, auto); for (let j = 0; j < vals.length; j++) { vals[j] = Math.max(forcedMin, vals[j] || 0); } }; } } }); // ../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/table.js var require_table = __commonJS2({ "../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/src/table.js"(exports2, module2) { var debug2 = require_debug2(); var utils = require_utils8(); var tableLayout = require_layout_manager(); var Table4 = class extends Array { constructor(opts) { super(); const options = utils.mergeOptions(opts); Object.defineProperty(this, "options", { value: options, enumerable: options.debug }); if (options.debug) { switch (typeof options.debug) { case "boolean": debug2.setDebugLevel(debug2.WARN); break; case "number": debug2.setDebugLevel(options.debug); break; case "string": debug2.setDebugLevel(parseInt(options.debug, 10)); break; default: debug2.setDebugLevel(debug2.WARN); debug2.warn(`Debug option is expected to be boolean, number, or string. Received a ${typeof options.debug}`); } Object.defineProperty(this, "messages", { get() { return debug2.debugMessages(); } }); } } toString() { let array = this; let headersPresent = this.options.head && this.options.head.length; if (headersPresent) { array = [this.options.head]; if (this.length) { array.push.apply(array, this); } } else { this.options.style.head = []; } let cells = tableLayout.makeTableLayout(array); cells.forEach(function(row) { row.forEach(function(cell) { cell.mergeTableOptions(this.options, cells); }, this); }, this); tableLayout.computeWidths(this.options.colWidths, cells); tableLayout.computeHeights(this.options.rowHeights, cells); cells.forEach(function(row) { row.forEach(function(cell) { cell.init(this.options); }, this); }, this); let result = []; for (let rowIndex = 0; rowIndex < cells.length; rowIndex++) { let row = cells[rowIndex]; let heightOfRow = this.options.rowHeights[rowIndex]; if (rowIndex === 0 || !this.options.style.compact || rowIndex == 1 && headersPresent) { doDraw(row, "top", result); } for (let lineNum = 0; lineNum < heightOfRow; lineNum++) { doDraw(row, lineNum, result); } if (rowIndex + 1 == cells.length) { doDraw(row, "bottom", result); } } return result.join("\n"); } get width() { let str = this.toString().split("\n"); return str[0].length; } }; Table4.reset = () => debug2.reset(); function doDraw(row, lineNum, result) { let line = []; row.forEach(function(cell) { line.push(cell.draw(lineNum)); }); let str = line.join(""); if (str.length) result.push(str); } module2.exports = Table4; } }); // ../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/index.js var require_cli_table3 = __commonJS2({ "../../node_modules/.pnpm/cli-table3@0.6.3/node_modules/cli-table3/index.js"(exports2, module2) { module2.exports = require_table(); } }); // src/util/output/table.ts function table(rows, opts) { const table2 = new import_cli_table3.default({ style: { ...defaultStyle, "padding-right": opts?.hsep ?? defaultStyle["padding-right"] }, chars: noBorderChars }); table2.push( ...rows.map( (row) => row.map((cell, i) => ({ content: cell, hAlign: alignMap[opts?.align?.[i] ?? "l"] })) ) ); return table2.toString(); } var import_cli_table3, defaultStyle, noBorderChars, alignMap; var init_table = __esm({ "src/util/output/table.ts"() { "use strict"; import_cli_table3 = __toESM3(require_cli_table3(), 1); defaultStyle = { "padding-left": 0, "padding-right": 2 }; noBorderChars = { top: "", "top-mid": "", "top-left": "", "top-right": "", bottom: "", "bottom-mid": "", "bottom-left": "", "bottom-right": "", left: "", "left-mid": "", mid: "", "mid-mid": "", right: "", "right-mid": "", middle: "" }; alignMap = { l: "left", c: "center", r: "right" }; } }); // src/commands/help.ts function wordWrap(text, maxWidth) { const _tableOptions = Object.assign({}, tableOptions, { colWidths: [maxWidth], style: { "padding-left": INDENT.length } }); const table2 = new import_cli_table32.default(_tableOptions); table2.push([ { content: text, wordWrap: true } ]); return table2.toString(); } function lineToString(line) { let string = ""; for (let i = 0; i < line.length; i++) { if (i === line.length - 1) { string += line[i]; } else { const curr = line[i]; const next = line[i + 1]; string += curr; if (curr.trim() !== "" && next.trim() !== "") { string += " "; } } } return string; } function outputArrayToString(outputArray) { return outputArray.filter((line) => line !== null).join(NEWLINE); } function buildCommandSynopsisLine(command, parent) { const line = [INDENT, import_constants2.LOGO, import_chalk15.default.bold(import_constants2.NAME)]; if (parent) { line.push(import_chalk15.default.bold(parent.name)); } line.push(import_chalk15.default.bold(command.name)); const args2 = command.arguments.slice(0); if (args2.length === 0 && command.subcommands && command.subcommands.length > 0) { args2.push({ name: "command", required: !command.subcommands.some((subcommand) => subcommand.default) }); } if (args2.length > 0) { for (const argument of args2) { let { name } = argument; if (argument.multiple) { name += " ..."; } line.push(argument.required ? name : `[${name}]`); } } if (command.options.length > 0) { line.push("[options]"); } line.push(NEWLINE); return lineToString(line); } function buildCommandOptionLines(commandOptions, options, sectionTitle) { const filteredCommandOptions = commandOptions.filter( (option) => !option.deprecated && option.description !== void 0 ); if (filteredCommandOptions.length === 0) { return null; } filteredCommandOptions.sort( (a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0 ); let maxWidthOfUnwrappedColumns = 0; const rows = []; for (const option of filteredCommandOptions) { const shorthandCell = option.shorthand ? `${INDENT}-${option.shorthand},` : ""; let longhandCell = `${INDENT}--${option.name}`; if (option.argument) { longhandCell += ` <${option.argument}>`; } longhandCell += INDENT; const widthOfUnwrappedColumns = shorthandCell.length + longhandCell.length; maxWidthOfUnwrappedColumns = Math.max( widthOfUnwrappedColumns, maxWidthOfUnwrappedColumns ); rows.push([ shorthandCell, longhandCell, { content: option.description, wordWrap: true } ]); } const finalColumnWidth = options.columns - maxWidthOfUnwrappedColumns; const table2 = new import_cli_table32.default( Object.assign({}, tableOptions, { colWidths: [null, null, finalColumnWidth] }) ); table2.push(...rows); return [ `${INDENT}${import_chalk15.default.dim(sectionTitle)}:`, NEWLINE, NEWLINE, table2.toString(), NEWLINE, NEWLINE ].join(""); } function buildSubcommandLines(subcommands, options) { if (!subcommands) { return null; } let maxWidthOfUnwrappedColumns = 0; const rows = []; for (const command of subcommands) { if (command.hidden) { continue; } const nameCell = `${INDENT}${command.name}`; let argsCell = INDENT; argsCell += command.arguments.map((arg2) => { return arg2.required ? arg2.name : `[${arg2.name}]`; }).join(" "); argsCell += INDENT; const widthOfUnwrappedColumns = nameCell.length + argsCell.length; maxWidthOfUnwrappedColumns = Math.max( widthOfUnwrappedColumns, maxWidthOfUnwrappedColumns ); rows.push([ nameCell, argsCell, { content: command.description, wordWrap: true } ]); } const rightMargin = INDENT.repeat(4).length; const finalColumnWidth = options.columns - maxWidthOfUnwrappedColumns - rightMargin; const table2 = new import_cli_table32.default( Object.assign({}, tableOptions, { colWidths: [null, null, finalColumnWidth] }) ); table2.push(...rows); return [ `${INDENT}${import_chalk15.default.dim("Commands")}:`, NEWLINE, NEWLINE, table2.toString(), NEWLINE, NEWLINE ].join(""); } function buildCommandExampleLines(command) { if (!command.examples?.length) { return null; } const outputArray = [`${INDENT}${import_chalk15.default.dim("Examples:")}`, ""]; for (const example of command.examples) { const nameLine = [INDENT]; nameLine.push(import_chalk15.default.gray("-")); nameLine.push(example.name); outputArray.push(lineToString(nameLine)); outputArray.push(""); const buildValueLine = (value) => { return lineToString([INDENT, INDENT, import_chalk15.default.cyan(`$ ${value}`)]); }; if (Array.isArray(example.value)) { for (const line of example.value) { outputArray.push(buildValueLine(line)); } } else { outputArray.push(buildValueLine(example.value)); } outputArray.push(""); } return outputArrayToString(outputArray); } function buildDescriptionLine(command, options) { const wrappingText = wordWrap(command.description, options.columns); return `${wrappingText}${NEWLINE}`; } function buildHelpOutput(command, options) { const outputArray = [ "", buildCommandSynopsisLine(command, options.parent), buildDescriptionLine(command, options), buildSubcommandLines(command.subcommands, options), buildCommandOptionLines(command.options, options, "Options"), buildCommandOptionLines(globalCommandOptions, options, "Global Options"), buildCommandExampleLines(command), "" ]; return outputArrayToString(outputArray); } function help(command, options) { return buildHelpOutput(command, { ...options, columns: options.columns ?? 80 }); } var import_chalk15, import_constants2, import_cli_table32, INDENT, NEWLINE, tableOptions; var init_help = __esm({ "src/commands/help.ts"() { "use strict"; import_chalk15 = __toESM3(require_source(), 1); import_constants2 = __toESM3(require_dist4(), 1); import_cli_table32 = __toESM3(require_cli_table3(), 1); init_table(); init_arg_common(); INDENT = " ".repeat(2); NEWLINE = "\n"; tableOptions = { chars: noBorderChars, style: { "padding-left": 0, "padding-right": 0 } }; } }); // src/util/output/error.ts function error(...input) { let messages = input; if (typeof input[0] === "object") { const { slug, message: message2, link: link4, action = "Learn More" } = input[0]; messages = [message2]; const details = slug ? `https://err.sh/vercel/${slug}` : link4; if (details) { messages.push(`${import_chalk16.default.bold(action)}: ${link_default(details)}`); } } return `${import_chalk16.default.red("Error:")} ${messages.join("\n")}`; } var import_chalk16; var init_error = __esm({ "src/util/output/error.ts"() { "use strict"; import_chalk16 = __toESM3(require_source(), 1); init_link(); } }); // src/util/error.ts async function responseError2(res, fallbackMessage = null, parsedBody = {}) { let message2 = ""; let bodyError; if (res.status >= 400 && res.status < 500) { let body; try { body = await res.json(); } catch (err2) { body = parsedBody; } bodyError = body.error || body.err || {}; message2 = bodyError.message; } if (!message2) { message2 = fallbackMessage === null ? "Response Error" : fallbackMessage; } const err = new Error(`${message2} (${res.status})`); err.status = res.status; err.serverMessage = message2; if (bodyError) { for (const field of Object.keys(bodyError)) { if (field !== "message") { err[field] = bodyError[field]; } } } if (res.status === 429 || res.status === 503) { const parsed = parseRetryAfterHeaderAsMillis( res.headers.get("Retry-After") ); err.retryAfterMs = parsed ?? (res.status === 429 ? 0 : void 0); } return err; } function toEnumerableError(err) { const enumerable = {}; enumerable.name = err.name; for (const key of Object.getOwnPropertyNames(err)) { enumerable[key] = err[key]; } return enumerable; } function printError(error3) { if (typeof error3 === "string") { error3 = new Error(error3); } const apiError = error3; const { message: message2, stack: stack2, status: status3, code: code2, sizeLimit } = apiError; output_manager_default.debug(`handling error: ${stack2}`); if (message2 === "User force closed the prompt with 0 null") { return; } if (status3 === 403) { output_manager_default.error( message2 || `Authentication error. Run ${getCommandName("login")} to log-in again.` ); } else if (status3 === 429) { output_manager_default.error(message2); } else if (code2 === "size_limit_exceeded") { output_manager_default.error(`File size limit exceeded (${(0, import_bytes2.default)(sizeLimit)})`); } else if (message2) { output_manager_default.prettyError(apiError); } else if (status3 === 500) { output_manager_default.error("Unexpected server error. Please retry."); } else if (code2 === "USER_ABORT") { output_manager_default.log("Canceled"); } else { output_manager_default.error(`Unexpected error. Please try again later. (${message2})`); } } var import_bytes2; var init_error2 = __esm({ "src/util/error.ts"() { "use strict"; init_error(); import_bytes2 = __toESM3(require_bytes(), 1); init_errors_ts(); init_pkg_name(); init_output_manager(); } }); // src/util/telemetry/index.ts import { randomUUID } from "crypto"; import os2 from "os"; import { spawn as spawn2 } from "child_process"; import { cloneEnv } from "@vercel/build-utils"; var import_constants3, LogLabel, TelemetryClient, TelemetryEventStore; var init_telemetry = __esm({ "src/util/telemetry/index.ts"() { "use strict"; init_output_manager(); import_constants3 = __toESM3(require_dist4(), 1); LogLabel = `['telemetry']:`; TelemetryClient = class { constructor({ opts }) { this.redactedValue = "[REDACTED]"; this.noValueToTriggerPrompt = "[TRIGGER_PROMPT]"; this.redactedArgumentsLength = (args2) => { if (args2 && args2.length === 1) { return "ONE"; } if (args2.length > 1) { return "MANY"; } return "NONE"; }; this.redactedTargetName = (target) => { if (import_constants3.PROJECT_ENV_TARGET.includes(target)) { return target; } return this.redactedValue; }; this.isDebug = opts.isDebug || false; this.store = opts.store; } track(eventData) { if (this.isDebug) { output_manager_default.debug(`${LogLabel} ${eventData.key}:${eventData.value}`); } const event = { id: randomUUID(), eventTime: Date.now(), ...eventData }; this.store.add(event); } trackCliCommand(eventData) { this.track({ key: `command:${eventData.command}`, value: eventData.value }); } trackCliSubcommand(eventData) { this.track({ key: `subcommand:${eventData.subcommand}`, value: eventData.value }); } trackCliArgument(eventData) { if (eventData.value) { this.track({ key: `argument:${eventData.arg}`, value: eventData.value }); } } trackCliOption(eventData) { this.track({ key: `option:${eventData.option}`, value: eventData.value }); } trackCliFlag(flag) { this.track({ key: `flag:${flag}`, value: "TRUE" }); } trackOidcTokenRefresh(count) { this.track({ key: "oidc-token-refresh", value: `${count}` }); } trackCPUs() { this.track({ key: "cpu_count", value: String(os2.cpus().length) }); } trackAgenticUse(agent) { if (agent) { this.track({ key: "agent", value: agent }); } } trackPlatform() { this.track({ key: "platform", value: os2.platform() }); } trackArch() { this.track({ key: "arch", value: os2.arch() }); } trackCI(ciVendorName) { if (ciVendorName) { this.track({ key: "ci", value: ciVendorName }); } } trackVersion(version2) { if (version2) { this.track({ key: "version", value: version2 }); } } trackDefaultDeploy() { this.track({ key: "default-deploy", value: "TRUE" }); } trackExtension() { this.track({ key: "extension", value: this.redactedValue }); } trackLoginState(state) { if (state === "started") this.loginAttempt = randomUUID(); if (this.loginAttempt) { this.track({ key: `login:attempt:${this.loginAttempt}`, value: state }); } if (state !== "started") this.loginAttempt = void 0; } trackCliFlagHelp(command, subcommands) { let subcommand; if (subcommands) { subcommand = Array.isArray(subcommands) ? subcommands[0] : subcommands; } this.track({ key: "flag:help", value: subcommand ? `${command}:${subcommand}` : command }); } /** * Tracks the --format option for JSON output. * This is a common option across many commands, so it's defined in the base class. */ trackCliOptionFormat(format8) { if (format8) { const allowedFormat = ["json"].includes(format8) ? format8 : this.redactedValue; this.trackCliOption({ option: "format", value: allowedFormat }); } } }; TelemetryEventStore = class { constructor(opts) { this.teamId = "NO_TEAM_ID"; this.isDebug = opts?.isDebug || false; this.sessionId = randomUUID(); this.events = []; this.config = opts?.config; } add(event) { event.sessionId = this.sessionId; event.teamId = this.teamId; this.events.push(event); } updateTeamId(teamId) { if (teamId) { this.teamId = teamId; } } get readonlyEvents() { return Array.from(this.events); } reset() { this.events = []; } get enabled() { if (process.env.VERCEL_TELEMETRY_DISABLED) { return false; } return this.config?.enabled ?? true; } async save() { if (this.isDebug) { output_manager_default.log(`${LogLabel} Flushing Events`); for (const event of this.events) { event.teamId = this.teamId; output_manager_default.log(JSON.stringify(event)); } return; } if (this.enabled) { const sessionId = this.events[0].sessionId; if (!sessionId) { output_manager_default.debug("Unable to send metrics: no session ID"); return; } const events = this.events.map((event) => { delete event.sessionId; delete event.teamId; const { eventTime, ...rest } = event; return { event_time: eventTime, team_id: this.teamId, ...rest }; }); const payload = { headers: { "Client-id": "vercel-cli", "x-vercel-cli-topic-id": "generic", "x-vercel-cli-session-id": sessionId }, body: events }; await this.sendToSubprocess(payload, output_manager_default.debugEnabled); } } /** * Send the telemetry events to a subprocess, this invokes the `telemetry flush` command * and passes a stringified payload to the subprocess, there's a risk that if the event payload * increases in size, it may exceed the maximum buffer size for the subprocess, in which case the * child process will error and not send anything. * FIXME: handle max buffer size */ async sendToSubprocess(payload, outputDebugEnabled) { const args2 = [process.execPath, process.argv[0], process.argv[1]]; if (args2[0] === args2[1]) { args2.shift(); } const nodeBinaryPath = args2[0]; const script = [ ...args2.slice(1), "telemetry", "flush", JSON.stringify(payload) ]; const env = cloneEnv(process.env, { VERCEL_TELEMETRY_DISABLED: "1" }); if (outputDebugEnabled) { return new Promise((resolve14) => { const childProcess = spawn2(nodeBinaryPath, script, { env, stdio: ["ignore", "pipe", "pipe"] }); childProcess.stderr.on("data", (data) => output_manager_default.debug(data.toString())); childProcess.stdout.on("data", (data) => output_manager_default.debug(data.toString())); childProcess.on("error", (d) => { output_manager_default.debug(d); }); const timeout = setTimeout(() => { output_manager_default.debug("Telemetry subprocess killed due to timeout"); childProcess.kill(); }, 2e3); childProcess.on("exit", (code2) => { output_manager_default.debug(`Telemetry subprocess exited with code ${code2}`); childProcess.unref(); timeout.unref(); resolve14(); }); }); } else { const childProcess = spawn2(nodeBinaryPath, script, { stdio: "ignore", env, windowsHide: true, detached: true }); childProcess.unref(); } } }; } }); // src/util/telemetry/commands/login/index.ts var LoginTelemetryClient; var init_login = __esm({ "src/util/telemetry/commands/login/index.ts"() { "use strict"; init_telemetry(); LoginTelemetryClient = class extends TelemetryClient { /** * Tracks the state of the login process. * - `started` when the user initiates the login process. * - `canceled` when the user cancels the login process. * - `error` when the user encounters an error during the login process. * - `success` when the user successfully logs in. */ trackState(...args2) { this.trackLoginState(...args2); } }; } }); // ../../node_modules/.pnpm/is-docker@2.2.1/node_modules/is-docker/index.js var require_is_docker = __commonJS2({ "../../node_modules/.pnpm/is-docker@2.2.1/node_modules/is-docker/index.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var isDocker; function hasDockerEnv() { try { fs15.statSync("/.dockerenv"); return true; } catch (_) { return false; } } function hasDockerCGroup() { try { return fs15.readFileSync("/proc/self/cgroup", "utf8").includes("docker"); } catch (_) { return false; } } module2.exports = () => { if (isDocker === void 0) { isDocker = hasDockerEnv() || hasDockerCGroup(); } return isDocker; }; } }); // ../../node_modules/.pnpm/is-wsl@2.2.0/node_modules/is-wsl/index.js var require_is_wsl = __commonJS2({ "../../node_modules/.pnpm/is-wsl@2.2.0/node_modules/is-wsl/index.js"(exports2, module2) { "use strict"; var os4 = __require("os"); var fs15 = __require("fs"); var isDocker = require_is_docker(); var isWsl = () => { if (process.platform !== "linux") { return false; } if (os4.release().toLowerCase().includes("microsoft")) { if (isDocker()) { return false; } return true; } try { return fs15.readFileSync("/proc/version", "utf8").toLowerCase().includes("microsoft") ? !isDocker() : false; } catch (_) { return false; } }; if (process.env.__IS_WSL_TEST__) { module2.exports = isWsl; } else { module2.exports = isWsl(); } } }); // ../../node_modules/.pnpm/define-lazy-prop@2.0.0/node_modules/define-lazy-prop/index.js var require_define_lazy_prop = __commonJS2({ "../../node_modules/.pnpm/define-lazy-prop@2.0.0/node_modules/define-lazy-prop/index.js"(exports2, module2) { "use strict"; module2.exports = (object, propertyName, fn2) => { const define2 = (value) => Object.defineProperty(object, propertyName, { value, enumerable: true, writable: true }); Object.defineProperty(object, propertyName, { configurable: true, enumerable: true, get() { const result = fn2(); define2(result); return result; }, set(value) { define2(value); } }); return object; }; } }); // ../../node_modules/.pnpm/open@8.4.0/node_modules/open/index.js var require_open = __commonJS2({ "../../node_modules/.pnpm/open@8.4.0/node_modules/open/index.js"(exports2, module2) { var path11 = __require("path"); var childProcess = __require("child_process"); var { promises: fs15, constants: fsConstants } = __require("fs"); var isWsl = require_is_wsl(); var isDocker = require_is_docker(); var defineLazyProperty = require_define_lazy_prop(); var localXdgOpenPath = path11.join(__dirname, "xdg-open"); var { platform, arch } = process; var getWslDrivesMountPoint = (() => { const defaultMountPoint = "/mnt/"; let mountPoint; return async function() { if (mountPoint) { return mountPoint; } const configFilePath = "/etc/wsl.conf"; let isConfigFileExists = false; try { await fs15.access(configFilePath, fsConstants.F_OK); isConfigFileExists = true; } catch { } if (!isConfigFileExists) { return defaultMountPoint; } const configContent = await fs15.readFile(configFilePath, { encoding: "utf8" }); const configMountPoint = /(?.*)/g.exec(configContent); if (!configMountPoint) { return defaultMountPoint; } mountPoint = configMountPoint.groups.mountPoint.trim(); mountPoint = mountPoint.endsWith("/") ? mountPoint : `${mountPoint}/`; return mountPoint; }; })(); var pTryEach = async (array, mapper) => { let latestError; for (const item of array) { try { return await mapper(item); } catch (error3) { latestError = error3; } } throw latestError; }; var baseOpen = async (options) => { options = { wait: false, background: false, newInstance: false, allowNonzeroExitCode: false, ...options }; if (Array.isArray(options.app)) { return pTryEach(options.app, (singleApp) => baseOpen({ ...options, app: singleApp })); } let { name: app, arguments: appArguments = [] } = options.app || {}; appArguments = [...appArguments]; if (Array.isArray(app)) { return pTryEach(app, (appName) => baseOpen({ ...options, app: { name: appName, arguments: appArguments } })); } let command; const cliArguments = []; const childProcessOptions = {}; if (platform === "darwin") { command = "open"; if (options.wait) { cliArguments.push("--wait-apps"); } if (options.background) { cliArguments.push("--background"); } if (options.newInstance) { cliArguments.push("--new"); } if (app) { cliArguments.push("-a", app); } } else if (platform === "win32" || isWsl && !isDocker()) { const mountPoint = await getWslDrivesMountPoint(); command = isWsl ? `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe` : `${process.env.SYSTEMROOT}\\System32\\WindowsPowerShell\\v1.0\\powershell`; cliArguments.push( "-NoProfile", "-NonInteractive", "\u2013ExecutionPolicy", "Bypass", "-EncodedCommand" ); if (!isWsl) { childProcessOptions.windowsVerbatimArguments = true; } const encodedArguments = ["Start"]; if (options.wait) { encodedArguments.push("-Wait"); } if (app) { encodedArguments.push(`"\`"${app}\`""`, "-ArgumentList"); if (options.target) { appArguments.unshift(options.target); } } else if (options.target) { encodedArguments.push(`"${options.target}"`); } if (appArguments.length > 0) { appArguments = appArguments.map((arg2) => `"\`"${arg2}\`""`); encodedArguments.push(appArguments.join(",")); } options.target = Buffer.from(encodedArguments.join(" "), "utf16le").toString("base64"); } else { if (app) { command = app; } else { const isBundled = !__dirname || __dirname === "/"; let exeLocalXdgOpen = false; try { await fs15.access(localXdgOpenPath, fsConstants.X_OK); exeLocalXdgOpen = true; } catch { } const useSystemXdgOpen = process.versions.electron || platform === "android" || isBundled || !exeLocalXdgOpen; command = useSystemXdgOpen ? "xdg-open" : localXdgOpenPath; } if (appArguments.length > 0) { cliArguments.push(...appArguments); } if (!options.wait) { childProcessOptions.stdio = "ignore"; childProcessOptions.detached = true; } } if (options.target) { cliArguments.push(options.target); } if (platform === "darwin" && appArguments.length > 0) { cliArguments.push("--args", ...appArguments); } const subprocess = childProcess.spawn(command, cliArguments, childProcessOptions); if (options.wait) { return new Promise((resolve14, reject) => { subprocess.once("error", reject); subprocess.once("close", (exitCode2) => { if (options.allowNonzeroExitCode && exitCode2 > 0) { reject(new Error(`Exited with code ${exitCode2}`)); return; } resolve14(subprocess); }); }); } subprocess.unref(); return subprocess; }; var open10 = (target, options) => { if (typeof target !== "string") { throw new TypeError("Expected a `target`"); } return baseOpen({ ...options, target }); }; var openApp = (name, options) => { if (typeof name !== "string") { throw new TypeError("Expected a `name`"); } const { arguments: appArguments = [] } = options || {}; if (appArguments !== void 0 && appArguments !== null && !Array.isArray(appArguments)) { throw new TypeError("Expected `appArguments` as Array type"); } return baseOpen({ ...options, app: { name, arguments: appArguments } }); }; function detectArchBinary(binary) { if (typeof binary === "string" || Array.isArray(binary)) { return binary; } const { [arch]: archBinary } = binary; if (!archBinary) { throw new Error(`${arch} is not supported`); } return archBinary; } function detectPlatformBinary({ [platform]: platformBinary }, { wsl }) { if (wsl && isWsl) { return detectArchBinary(wsl); } if (!platformBinary) { throw new Error(`${platform} is not supported`); } return detectArchBinary(platformBinary); } var apps = {}; defineLazyProperty(apps, "chrome", () => detectPlatformBinary({ darwin: "google chrome", win32: "chrome", linux: ["google-chrome", "google-chrome-stable", "chromium"] }, { wsl: { ia32: "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe", x64: ["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe", "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"] } })); defineLazyProperty(apps, "firefox", () => detectPlatformBinary({ darwin: "firefox", win32: "C:\\Program Files\\Mozilla Firefox\\firefox.exe", linux: "firefox" }, { wsl: "/mnt/c/Program Files/Mozilla Firefox/firefox.exe" })); defineLazyProperty(apps, "edge", () => detectPlatformBinary({ darwin: "microsoft edge", win32: "msedge", linux: ["microsoft-edge", "microsoft-edge-dev"] }, { wsl: "/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" })); open10.apps = apps; open10.openApp = openApp; module2.exports = open10; } }); // src/util/login/update-current-team-after-login.ts async function updateCurrentTeamAfterLogin(client2, ssoTeamId) { if (ssoTeamId) { client2.config.currentTeam = ssoTeamId; } else { let user = null; try { user = await getUser(client2); } catch (err) { output_manager_default.error("Failed to fetch the logged in user. Please try again."); return 1; } if (user.version === "northstar" && user.defaultTeamId) { client2.config.currentTeam = user.defaultTeamId; } else { delete client2.config.currentTeam; } } } var init_update_current_team_after_login = __esm({ "src/util/login/update-current-team-after-login.ts"() { "use strict"; init_get_user(); init_output_manager(); } }); // src/util/config/global-path.ts import { homedir as homedir2 } from "os"; import fs from "fs"; import path from "path"; var import_xdg_app_paths2, isDirectory, getGlobalPathConfig, global_path_default; var init_global_path = __esm({ "src/util/config/global-path.ts"() { "use strict"; import_xdg_app_paths2 = __toESM3(require_xdg_app_paths(), 1); init_get_args(); isDirectory = (path11) => { try { return fs.lstatSync(path11).isDirectory(); } catch (_) { return false; } }; getGlobalPathConfig = () => { const argv = getArgs(process.argv.slice(2), {}, { permissive: true }); const customPath = argv["--global-config"]; const vercelDirectories = (0, import_xdg_app_paths2.default)("com.vercel.cli").dataDirs(); const possibleConfigPaths = [ ...vercelDirectories, // latest vercel directory path.join(homedir2(), ".now"), // legacy config in user's home directory ...(0, import_xdg_app_paths2.default)("now").dataDirs() // legacy XDG directory ]; return customPath && path.resolve(customPath) || possibleConfigPaths.find((configPath) => isDirectory(configPath)) || vercelDirectories[0]; }; global_path_default = getGlobalPathConfig; } }); // src/util/oauth.ts import { hostname } from "os"; async function as() { if (!_as) { const discoveryResponse = await discoveryEndpointRequest(VERCEL_ISSUER); const [discoveryResponseError, as2] = await processDiscoveryEndpointResponse(discoveryResponse); if (discoveryResponseError) { throw discoveryResponseError; } _as = as2; } return _as; } async function discoveryEndpointRequest(issuer) { return await (0, import_node_fetch.default)(new URL(".well-known/openid-configuration", issuer), { headers: { "Content-Type": "application/json", "user-agent": userAgent } }); } async function processDiscoveryEndpointResponse(response) { const json = await response.json(); if (!response.ok) { return [new Error("Discovery endpoint request failed")]; } if (typeof json !== "object" || json === null || !canParseURL(json.issuer) || !canParseURL(json.device_authorization_endpoint) || !canParseURL(json.token_endpoint) || !canParseURL(json.revocation_endpoint) || !canParseURL(json.jwks_uri) || !canParseURL(json.introspection_endpoint)) { return [new TypeError("Invalid discovery response")]; } const issuer = new URL(json.issuer); if (issuer.href !== VERCEL_ISSUER.href) { return [new Error("Issuer mismatch")]; } return [ null, { issuer, device_authorization_endpoint: new URL( json.device_authorization_endpoint ), token_endpoint: new URL(json.token_endpoint), revocation_endpoint: new URL(json.revocation_endpoint), jwks_uri: new URL(json.jwks_uri), introspection_endpoint: new URL(json.introspection_endpoint) } ]; } async function deviceAuthorizationRequest() { return await (0, import_node_fetch.default)((await as()).device_authorization_endpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", "user-agent": userAgent }, body: new URLSearchParams({ client_id: VERCEL_CLI_CLIENT_ID, scope: "openid offline_access" }) }); } async function processDeviceAuthorizationResponse(response) { const json = await response.json(); if (!response.ok) { return [new OAuthError("Device authorization request failed", json)]; } if (typeof json !== "object" || json === null) return [new TypeError("Expected response to be an object")]; if (!("device_code" in json) || typeof json.device_code !== "string") return [new TypeError("Expected `device_code` to be a string")]; if (!("user_code" in json) || typeof json.user_code !== "string") return [new TypeError("Expected `user_code` to be a string")]; if (!("verification_uri" in json) || typeof json.verification_uri !== "string" || !canParseURL(json.verification_uri)) { return [new TypeError("Expected `verification_uri` to be a string")]; } if (!("verification_uri_complete" in json) || typeof json.verification_uri_complete !== "string" || !canParseURL(json.verification_uri_complete)) { return [ new TypeError("Expected `verification_uri_complete` to be a string") ]; } if (!("expires_in" in json) || typeof json.expires_in !== "number") return [new TypeError("Expected `expires_in` to be a number")]; if (!("interval" in json) || typeof json.interval !== "number") return [new TypeError("Expected `interval` to be a number")]; return [ null, { device_code: json.device_code, user_code: json.user_code, verification_uri: json.verification_uri, verification_uri_complete: json.verification_uri_complete, expiresAt: Date.now() + json.expires_in * 1e3, interval: json.interval } ]; } async function deviceAccessTokenRequest(options) { try { return [ null, await (0, import_node_fetch.default)((await as()).token_endpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", "user-agent": userAgent }, body: new URLSearchParams({ client_id: VERCEL_CLI_CLIENT_ID, grant_type: "urn:ietf:params:oauth:grant-type:device_code", ...options }), // TODO: Drop `node-fetch` and just use `signal` timeout: 10 * 1e3, // @ts-expect-error: Signal is part of `fetch` spec, should drop `node-fetch` signal: AbortSignal.timeout(10 * 1e3) }) ]; } catch (error3) { if (error3 instanceof Error) return [error3]; return [ new Error("An unknown error occurred. See the logs for details.", { cause: error3 }) ]; } } async function processTokenResponse(response) { const json = await response.json(); if (!response.ok) { return [new OAuthError("Device access token request failed", json)]; } if (typeof json !== "object" || json === null) return [new TypeError("Expected response to be an object")]; if (!("access_token" in json) || typeof json.access_token !== "string") return [new TypeError("Expected `access_token` to be a string")]; if (!("token_type" in json) || json.token_type !== "Bearer") return [new TypeError('Expected `token_type` to be "Bearer"')]; if (!("expires_in" in json) || typeof json.expires_in !== "number") return [new TypeError("Expected `expires_in` to be a number")]; if ("refresh_token" in json && (typeof json.refresh_token !== "string" || !json.refresh_token)) return [new TypeError("Expected `refresh_token` to be a string")]; if ("scope" in json && typeof json.scope !== "string") return [new TypeError("Expected `scope` to be a string")]; return [null, json]; } async function revocationRequest(options) { return await (0, import_node_fetch.default)((await as()).revocation_endpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", "user-agent": userAgent }, body: new URLSearchParams({ ...options, client_id: VERCEL_CLI_CLIENT_ID }) }); } async function processRevocationResponse(response) { if (response.ok) return [null, null]; const json = await response.json(); return [new OAuthError("Revocation request failed", json)]; } async function refreshTokenRequest(options) { return await (0, import_node_fetch.default)((await as()).token_endpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", "user-agent": userAgent }, body: new URLSearchParams({ client_id: VERCEL_CLI_CLIENT_ID, grant_type: "refresh_token", ...options }) }); } function processOAuthErrorResponse(json) { if (typeof json !== "object" || json === null) return new TypeError("Expected response to be an object"); if (!("error" in json) || typeof json.error !== "string") return new TypeError("Expected `error` to be a string"); if ("error_description" in json && typeof json.error_description !== "string") return new TypeError("Expected `error_description` to be a string"); if ("error_uri" in json && typeof json.error_uri !== "string") return new TypeError("Expected `error_uri` to be a string"); return json; } function isOAuthError(error3) { return error3 instanceof OAuthError; } function canParseURL(url3) { try { return !!new URL(url3); } catch { return false; } } async function inspectTokenRequest(token) { return (0, import_node_fetch.default)((await as()).introspection_endpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", "user-agent": userAgent }, body: new URLSearchParams({ token }) }); } async function processInspectTokenResponse(response) { try { const token = await response.json(); if (!token || typeof token !== "object" || !("active" in token)) { throw new IntrospectionError("Invalid token introspection response"); } return [null, token]; } catch (cause) { return [new IntrospectionError("Could not introspect token.", { cause })]; } } var import_node_fetch, VERCEL_ISSUER, VERCEL_CLI_CLIENT_ID, userAgent, _as, OAuthError, IntrospectionError; var init_oauth = __esm({ "src/util/oauth.ts"() { "use strict"; import_node_fetch = __toESM3(require_lib7(), 1); init_ua(); VERCEL_ISSUER = new URL("https://vercel.com"); VERCEL_CLI_CLIENT_ID = "cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp"; userAgent = `${hostname()} @ ${ua_default}`; OAuthError = class extends Error { constructor(message2, response) { var __super = (...args) => { super(...args); }; const error3 = processOAuthErrorResponse(response); if (error3 instanceof TypeError) { const message3 = `Unexpected server response: ${JSON.stringify(response)}`; __super(message3); this.cause = new Error(message3, { cause: error3 }); this.code = "server_error"; return; } let cause = error3.error; if (error3.error_description) cause += `: ${error3.error_description}`; if (error3.error_uri) cause += ` (${error3.error_uri})`; __super(message2, { cause }); this.cause = new Error(cause); this.code = error3.error; } }; IntrospectionError = class extends Error { constructor() { super(...arguments); this.name = "IntrospectionError"; } }; } }); // src/commands/login/future.ts import readline5 from "readline"; async function login(client2, telemetry2) { const deviceAuthorizationResponse = await deviceAuthorizationRequest(); output_manager_default.debug( `'Device Authorization response:', ${await deviceAuthorizationResponse.clone().text()}` ); const [deviceAuthorizationError, deviceAuthorization] = await processDeviceAuthorizationResponse(deviceAuthorizationResponse); if (deviceAuthorizationError) { printError(deviceAuthorizationError); telemetry2.trackState("error"); return 1; } const { device_code, user_code, verification_uri, verification_uri_complete, expiresAt, interval } = deviceAuthorization; let rlClosed = false; const rl = readline5.createInterface({ input: process.stdin, output: process.stdout }).on("SIGINT", () => { telemetry2.trackState("canceled"); process.exit(0); }); rl.question( ` Visit ${import_chalk17.default.bold( output_manager_default.link( verification_uri.replace("https://", ""), verification_uri_complete, { color: false, fallback: () => verification_uri_complete } ) )}${output_manager_default.supportsHyperlink ? ` and enter ${import_chalk17.default.bold(user_code)}` : ""} ${import_chalk17.default.grey("Press [ENTER] to open the browser")} `, () => { open.default(verification_uri_complete); output_manager_default.print((0, import_ansi_escapes7.eraseLines)(2)); output_manager_default.spinner("Waiting for authentication..."); rl.close(); rlClosed = true; } ); output_manager_default.spinner("Waiting for authentication..."); let intervalMs = interval * 1e3; let error3 = new Error( "Timed out waiting for authentication. Please try again." ); async function pollForToken() { while (Date.now() < expiresAt) { const [tokenResponseError, tokenResponse] = await deviceAccessTokenRequest({ device_code }); if (tokenResponseError) { if (tokenResponseError.message.includes("timeout")) { intervalMs *= 2; output_manager_default.debug( `Connection timeout. Slowing down, polling every ${intervalMs / 1e3}s...` ); await wait2(intervalMs); continue; } return tokenResponseError; } output_manager_default.debug( `'Device Access Token response:', ${await tokenResponse.clone().text()}` ); const [tokensError, tokens] = await processTokenResponse(tokenResponse); if (isOAuthError(tokensError)) { const { code: code2 } = tokensError; switch (code2) { case "authorization_pending": await wait2(intervalMs); continue; case "slow_down": intervalMs += 5 * 1e3; output_manager_default.debug( `Authorization server requests to slow down. Polling every ${intervalMs / 1e3}s...` ); await wait2(intervalMs); continue; default: return tokensError.cause; } } if (tokensError) return tokensError; error3 = void 0; output_manager_default.print((0, import_ansi_escapes7.eraseLines)(2)); const isInitialLogin = !client2.authConfig.token; client2.updateAuthConfig({ token: tokens.access_token, expiresAt: Math.floor(Date.now() / 1e3) + tokens.expires_in, refreshToken: tokens.refresh_token }); client2.updateConfig({ currentTeam: void 0 }); if (isInitialLogin) { await updateCurrentTeamAfterLogin(client2); } client2.writeToAuthConfigFile(); client2.writeToConfigFile(); output_manager_default.debug(`Saved credentials in "${humanizePath(global_path_default())}"`); output_manager_default.print(` ${import_chalk17.default.cyan("Congratulations!")} You are now signed in. To deploy something, run ${getCommandName()}. ${emoji("tip")} To deploy every commit automatically, connect a Git Repository (${import_chalk17.default.bold(output_manager_default.link("vercel.link/git", "https://vercel.link/git", { color: false }))}). `); return; } } error3 = await pollForToken(); output_manager_default.stopSpinner(); if (!rlClosed) { rl.close(); } if (!error3) { telemetry2.trackState("success"); return 0; } printError(error3); telemetry2.trackState("error"); return 1; } async function wait2(intervalMs) { await new Promise((resolve14) => setTimeout(resolve14, intervalMs)); } var import_chalk17, open, import_ansi_escapes7; var init_future = __esm({ "src/commands/login/future.ts"() { "use strict"; import_chalk17 = __toESM3(require_source(), 1); open = __toESM3(require_open(), 1); import_ansi_escapes7 = __toESM3(require_ansi_escapes(), 1); init_error2(); init_update_current_team_after_login(); init_global_path(); init_pkg_name(); init_emoji(); init_humanize_path(); init_oauth(); init_output_manager(); } }); // src/commands/login/index.ts var login_exports = {}; __export3(login_exports, { default: () => login2 }); async function login2(client2, options) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(loginCommand.options); const telemetry2 = new LoginTelemetryClient({ opts: { store: client2.telemetryEventStore } }); try { if (options.shouldParseArgs) { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } } catch (error3) { printError(error3); return 1; } if (parsedArgs?.flags["--help"]) { telemetry2.trackCliFlagHelp("login"); output_manager_default.print(help(loginCommand, { columns: client2.stderr.columns })); return 0; } if (parsedArgs?.flags["--token"]) { output_manager_default.error('`--token` may not be used with the "login" command'); return 2; } if (options.shouldParseArgs && parsedArgs) { const obsoleteFlags = Object.keys(parsedArgs.flags).filter((flag) => { const flagKey = flag.replace("--", ""); const option = loginCommand.options.find((o) => o.name === flagKey); if (!option || typeof option === "number") return; return "deprecated" in option && option.deprecated; }); if (obsoleteFlags.length) { const flags = obsoleteFlags.map((f) => import_chalk18.default.bold(f)).join(", "); output_manager_default.warn(`The following flags are deprecated: ${flags}`); } const obsoleteArguments = parsedArgs.args.slice(1); if (obsoleteArguments.length) { const args2 = obsoleteArguments.map((a) => import_chalk18.default.bold(a)).join(", "); output_manager_default.warn(`The following arguments are deprecated: ${args2}`); } if (obsoleteArguments.length || obsoleteFlags.length) { output_manager_default.print( `Read more in our ${output_manager_default.link("changelog", "https://vercel.com/changelog/new-vercel-cli-login-flow")}. ` ); } } telemetry2.trackState("started"); return await login(client2, telemetry2); } var import_chalk18; var init_login2 = __esm({ "src/commands/login/index.ts"() { "use strict"; import_chalk18 = __toESM3(require_source(), 1); init_get_args(); init_help(); init_command23(); init_get_flags_specification(); init_error2(); init_output_manager(); init_login(); init_future(); } }); // ../../node_modules/.pnpm/async-listen@3.0.0/node_modules/async-listen/dist/index.js var require_dist6 = __commonJS2({ "../../node_modules/.pnpm/async-listen@3.0.0/node_modules/async-listen/dist/index.js"(exports2) { "use strict"; var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve14) { resolve14(value); }); } return new (P || (P = Promise))(function(resolve14, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e2) { reject(e2); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e2) { reject(e2); } } function step(result) { result.done ? resolve14(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.listen = void 0; var http3 = __require("http"); var https = __require("https"); var path_1 = __require("path"); var events_1 = __require("events"); var getProtocol = (server) => { if (typeof server.protocol === "string") return server.protocol; if (server instanceof http3.Server) return "http"; if (server instanceof https.Server) return "https"; }; function listen4(server, ...args2) { return __awaiter2(this, void 0, void 0, function* () { server.listen(...args2, () => { }); yield (0, events_1.once)(server, "listening"); const addressInfo = server.address(); if (!addressInfo) { throw new Error("Server not listening"); } let host; let protocol = getProtocol(server); if (typeof addressInfo === "string") { host = encodeURIComponent((0, path_1.resolve)(addressInfo)); if (protocol) { protocol += "+unix"; } else { protocol = "unix"; } } else { const { address, port, family } = addressInfo; host = family === "IPv6" ? `[${address}]` : address; host += `:${port}`; if (!protocol) { protocol = "tcp"; } } return new URL(`${protocol}://${host}`); }); } exports2.listen = listen4; exports2.default = listen4; } }); // src/util/login/prompt.ts async function prompt(client2, error3, ssoUserId) { if (error3) { const slug = error3?.scope || error3?.teamId || await readInput(client2, "Enter your Team slug:"); return await doSamlLogin(client2, slug, ssoUserId); } return await login2(client2, { shouldParseArgs: false }); } async function readInput(client2, message2) { let input; while (!input) { try { input = await client2.input.text({ message: message2 }); } catch (err) { output_manager_default.print("\n"); if (err.isTtyError) { throw new Error( error( `Interactive mode not supported \u2013 please run ${getCommandName( `login you@domain.com` )}` ) ); } } } return input; } var init_prompt = __esm({ "src/util/login/prompt.ts"() { "use strict"; init_error(); init_pkg_name(); init_saml(); init_output_manager(); init_login2(); } }); // src/util/login/verify.ts import { URL as URL2 } from "url"; import { hostname as hostname2 } from "os"; function verify(client2, verificationToken, email2, provider, ssoUserId) { const url3 = new URL2("/registration/verify", client2.apiUrl); url3.searchParams.set("token", verificationToken); if (email2) { url3.searchParams.set("email", email2); } if (!client2.authConfig.token) { const hyphens = new RegExp("-", "g"); const host = hostname2().replace(hyphens, " ").replace(".local", ""); const tokenName = `${getTitleName()} CLI on ${host} via ${provider}`; url3.searchParams.set("tokenName", tokenName); } if (ssoUserId) { url3.searchParams.set("ssoUserId", ssoUserId); } return client2.fetch(url3.href, { useCurrentTeam: false }); } var init_verify = __esm({ "src/util/login/verify.ts"() { "use strict"; init_pkg_name(); } }); // src/util/login/oauth.ts import http from "http"; import { URL as URL3 } from "url"; async function doOauthLogin(client2, url3, provider, ssoUserId) { url3.searchParams.set("mode", "login"); let result = await getVerificationToken(client2, url3, provider); if (typeof result === "number") { return result; } if ("verificationToken" in result) { output_manager_default.spinner("Verifying authentication token"); result = await verify( client2, result.verificationToken, void 0, provider, ssoUserId ); output_manager_default.success( `${provider} authentication complete for ${highlight(result.email)}` ); } return result; } async function getVerificationToken(client2, url3, provider) { const server = http.createServer(); const { port } = await (0, import_async_listen.listen)(server, 0, "127.0.0.1"); url3.searchParams.set("next", `http://localhost:${port}`); output_manager_default.log(`Please visit the following URL in your web browser:`); output_manager_default.log(link_default(url3.href)); output_manager_default.spinner(`Waiting for ${provider} authentication to be completed`); try { const [query] = await Promise.all([ new Promise((resolve14, reject) => { server.once("request", (req, res) => { res.setHeader("connection", "close"); const query2 = new URL3(req.url || "/", "http://localhost").searchParams; resolve14(query2); const location = new URL3( "https://vercel.com/notifications/cli-login-" ); const loginError2 = query2.get("loginError"); const ssoEmail = query2.get("ssoEmail"); if (loginError2) { location.pathname += "failed"; location.searchParams.set("loginError", loginError2); } else if (ssoEmail) { location.pathname += "incomplete"; location.searchParams.set("ssoEmail", ssoEmail); const teamName = query2.get("teamName"); const ssoType = query2.get("ssoType"); if (teamName) { location.searchParams.set("teamName", teamName); } if (ssoType) { location.searchParams.set("ssoType", ssoType); } } else { location.pathname += "success"; const email2 = query2.get("email"); if (email2) { location.searchParams.set("email", email2); } } res.statusCode = 302; res.setHeader("location", location.href); res.end(); }); server.once("error", reject); }), (0, import_open.default)(url3.href) ]); output_manager_default.stopSpinner(); output_manager_default.print(eraseLines(3)); const loginError = query.get("loginError"); if (loginError) { const err = JSON.parse(loginError); output_manager_default.prettyError(err); return 1; } const ssoUserIdParam = query.get("ssoUserId"); if (ssoUserIdParam) { output_manager_default.log( "Please log in to your Vercel account to complete SAML connection." ); return prompt(client2, void 0, ssoUserIdParam); } const verificationToken = query.get("token"); if (!verificationToken) { output_manager_default.error( "Verification token was not provided. Please contact support." ); return 1; } return { verificationToken }; } finally { server.close(); } } var import_open, import_async_listen; var init_oauth2 = __esm({ "src/util/login/oauth.ts"() { "use strict"; import_open = __toESM3(require_open(), 1); import_async_listen = __toESM3(require_dist6(), 1); init_prompt(); init_verify(); init_highlight(); init_link(); init_erase_lines(); init_output_manager(); } }); // src/util/login/saml.ts import { URL as URL4 } from "url"; async function doSamlLogin(client2, teamIdOrSlug, ssoUserId) { if (!client2.authConfig.refreshToken) { output_manager_default.log("Token is outdated, please log in again."); const exitCode2 = await login2(client2, { shouldParseArgs: false }); if (exitCode2 !== 0) return exitCode2; } const { session_id, client_id } = await decodeToken(client2); const params2 = { session_id, client_id }; const url3 = new URL4( `https://vercel.com/sso/${teamIdOrSlug}?${new URLSearchParams(params2).toString()}` ); return doOauthLogin(client2, url3, "SAML Single Sign-On", ssoUserId); } async function decodeToken(client2) { const { token } = client2.authConfig; if (!token) { throw new Error( `No existing credentials found. Please run \`vercel login\`.` ); } const inspectResponse = await inspectTokenRequest(token); const [inspectError, inspectResult] = await processInspectTokenResponse(inspectResponse); if (inspectError) throw inspectError; if (!inspectResult.active || !inspectResult.session_id || !inspectResult.client_id) { throw new Error( `Invalid token type. Run \`vercel login\` to log-in and try again.` ); } return { session_id: inspectResult.session_id, client_id: inspectResult.client_id }; } var init_saml = __esm({ "src/util/login/saml.ts"() { "use strict"; init_login2(); init_output_manager(); init_oauth(); init_oauth2(); } }); // src/util/login/reauthenticate.ts async function reauthenticate(client2, error3) { if (error3.teamId && error3.enforced) { output_manager_default.log( `You must re-authenticate with SAML to use ${(0, import_chalk19.bold)(error3.scope)} scope.` ); if (await client2.input.confirm(`Log in with SAML?`, true)) { return doSamlLogin(client2, error3.scope ?? error3.teamId); } } else { output_manager_default.log(`You must re-authenticate to use ${(0, import_chalk19.bold)(error3.scope)} scope.`); return prompt(client2, error3); } return 1; } var import_chalk19; var init_reauthenticate = __esm({ "src/util/login/reauthenticate.ts"() { "use strict"; import_chalk19 = __toESM3(require_source(), 1); init_saml(); init_prompt(); init_output_manager(); } }); // ../../node_modules/.pnpm/strip-bom@3.0.0/node_modules/strip-bom/index.js var require_strip_bom = __commonJS2({ "../../node_modules/.pnpm/strip-bom@3.0.0/node_modules/strip-bom/index.js"(exports2, module2) { "use strict"; module2.exports = (x) => { if (typeof x !== "string") { throw new TypeError("Expected a string, got " + typeof x); } if (x.charCodeAt(0) === 65279) { return x.slice(1); } return x; }; } }); // ../../node_modules/.pnpm/is-arrayish@0.2.1/node_modules/is-arrayish/index.js var require_is_arrayish = __commonJS2({ "../../node_modules/.pnpm/is-arrayish@0.2.1/node_modules/is-arrayish/index.js"(exports2, module2) { "use strict"; module2.exports = function isArrayish(obj) { if (!obj) { return false; } return obj instanceof Array || Array.isArray(obj) || obj.length >= 0 && obj.splice instanceof Function; }; } }); // ../../node_modules/.pnpm/error-ex@1.3.2/node_modules/error-ex/index.js var require_error_ex = __commonJS2({ "../../node_modules/.pnpm/error-ex@1.3.2/node_modules/error-ex/index.js"(exports2, module2) { "use strict"; var util = __require("util"); var isArrayish = require_is_arrayish(); var errorEx = function errorEx2(name, properties) { if (!name || name.constructor !== String) { properties = name || {}; name = Error.name; } var errorExError = function ErrorEXError(message2) { if (!this) { return new ErrorEXError(message2); } message2 = message2 instanceof Error ? message2.message : message2 || this.message; Error.call(this, message2); Error.captureStackTrace(this, errorExError); this.name = name; Object.defineProperty(this, "message", { configurable: true, enumerable: false, get: function() { var newMessage = message2.split(/\r?\n/g); for (var key in properties) { if (!properties.hasOwnProperty(key)) { continue; } var modifier = properties[key]; if ("message" in modifier) { newMessage = modifier.message(this[key], newMessage) || newMessage; if (!isArrayish(newMessage)) { newMessage = [newMessage]; } } } return newMessage.join("\n"); }, set: function(v) { message2 = v; } }); var overwrittenStack = null; var stackDescriptor = Object.getOwnPropertyDescriptor(this, "stack"); var stackGetter = stackDescriptor.get; var stackValue = stackDescriptor.value; delete stackDescriptor.value; delete stackDescriptor.writable; stackDescriptor.set = function(newstack) { overwrittenStack = newstack; }; stackDescriptor.get = function() { var stack2 = (overwrittenStack || (stackGetter ? stackGetter.call(this) : stackValue)).split(/\r?\n+/g); if (!overwrittenStack) { stack2[0] = this.name + ": " + this.message; } var lineCount = 1; for (var key in properties) { if (!properties.hasOwnProperty(key)) { continue; } var modifier = properties[key]; if ("line" in modifier) { var line = modifier.line(this[key]); if (line) { stack2.splice(lineCount++, 0, " " + line); } } if ("stack" in modifier) { modifier.stack(this[key], stack2); } } return stack2.join("\n"); }; Object.defineProperty(this, "stack", stackDescriptor); }; if (Object.setPrototypeOf) { Object.setPrototypeOf(errorExError.prototype, Error.prototype); Object.setPrototypeOf(errorExError, Error); } else { util.inherits(errorExError, Error); } return errorExError; }; errorEx.append = function(str, def) { return { message: function(v, message2) { v = v || def; if (v) { message2[0] += " " + str.replace("%s", v.toString()); } return message2; } }; }; errorEx.line = function(str, def) { return { line: function(v) { v = v || def; if (v) { return str.replace("%s", v.toString()); } return null; } }; }; module2.exports = errorEx; } }); // ../../node_modules/.pnpm/parse-json@3.0.0/node_modules/parse-json/vendor/unicode.js var require_unicode = __commonJS2({ "../../node_modules/.pnpm/parse-json@3.0.0/node_modules/parse-json/vendor/unicode.js"(exports2, module2) { var Uni = module2.exports; module2.exports.isWhiteSpace = function isWhiteSpace2(x) { return x === " " || x === "\xA0" || x === "\uFEFF" || x >= " " && x <= "\r" || x === "\u1680" || x === "\u180E" || x >= "\u2000" && x <= "\u200A" || x === "\u2028" || x === "\u2029" || x === "\u202F" || x === "\u205F" || x === "\u3000"; }; module2.exports.isWhiteSpaceJSON = function isWhiteSpaceJSON(x) { return x === " " || x === " " || x === "\n" || x === "\r"; }; module2.exports.isLineTerminator = function isLineTerminator(x) { return x === "\n" || x === "\r" || x === "\u2028" || x === "\u2029"; }; module2.exports.isLineTerminatorJSON = function isLineTerminatorJSON(x) { return x === "\n" || x === "\r"; }; module2.exports.isIdentifierStart = function isIdentifierStart(x) { return x === "$" || x === "_" || x >= "A" && x <= "Z" || x >= "a" && x <= "z" || x >= "\x80" && Uni.NonAsciiIdentifierStart.test(x); }; module2.exports.isIdentifierPart = function isIdentifierPart(x) { return x === "$" || x === "_" || x >= "A" && x <= "Z" || x >= "a" && x <= "z" || x >= "0" && x <= "9" || x >= "\x80" && Uni.NonAsciiIdentifierPart.test(x); }; module2.exports.NonAsciiIdentifierStart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/; module2.exports.NonAsciiIdentifierPart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/; } }); // ../../node_modules/.pnpm/parse-json@3.0.0/node_modules/parse-json/vendor/parse.js var require_parse = __commonJS2({ "../../node_modules/.pnpm/parse-json@3.0.0/node_modules/parse-json/vendor/parse.js"(exports2, module2) { var Uni = require_unicode(); function isHexDigit(x) { return x >= "0" && x <= "9" || x >= "A" && x <= "F" || x >= "a" && x <= "f"; } function isOctDigit(x) { return x >= "0" && x <= "7"; } function isDecDigit(x) { return x >= "0" && x <= "9"; } var unescapeMap = { "'": "'", '"': '"', "\\": "\\", "b": "\b", "f": "\f", "n": "\n", "r": "\r", "t": " ", "v": "\v", "/": "/" }; function formatError(input, msg, position, lineno, column, json5) { var result = msg + " at " + (lineno + 1) + ":" + (column + 1), tmppos = position - column - 1, srcline = "", underline = ""; var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON; if (tmppos < position - 70) { tmppos = position - 70; } while (1) { var chr = input[++tmppos]; if (isLineTerminator(chr) || tmppos === input.length) { if (position >= tmppos) { underline += "^"; } break; } srcline += chr; if (position === tmppos) { underline += "^"; } else if (position > tmppos) { underline += input[tmppos] === " " ? " " : " "; } if (srcline.length > 78) break; } return result + "\n" + srcline + "\n" + underline; } function parse11(input, options) { var json5 = !(options.mode === "json" || options.legacy); var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON; var isWhiteSpace2 = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON; var length = input.length, lineno = 0, linestart = 0, position = 0, stack2 = []; var tokenStart = function() { }; var tokenEnd = function(v) { return v; }; if (options._tokenize) { ; (function() { var start = null; tokenStart = function() { if (start !== null) throw Error("internal error, token overlap"); start = position; }; tokenEnd = function(v, type) { if (start != position) { var hash = { raw: input.substr(start, position - start), type, stack: stack2.slice(0) }; if (v !== void 0) hash.value = v; options._tokenize.call(null, hash); } start = null; return v; }; })(); } function fail(msg) { var column = position - linestart; if (!msg) { if (position < length) { var token = "'" + JSON.stringify(input[position]).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; if (!msg) msg = "Unexpected token " + token; } else { if (!msg) msg = "Unexpected end of input"; } } var error3 = SyntaxError(formatError(input, msg, position, lineno, column, json5)); error3.row = lineno + 1; error3.column = column + 1; throw error3; } function newline(chr) { if (chr === "\r" && input[position] === "\n") position++; linestart = position; lineno++; } function parseGeneric() { var result; while (position < length) { tokenStart(); var chr = input[position++]; if (chr === '"' || chr === "'" && json5) { return tokenEnd(parseString(chr), "literal"); } else if (chr === "{") { tokenEnd(void 0, "separator"); return parseObject(); } else if (chr === "[") { tokenEnd(void 0, "separator"); return parseArray(); } else if (chr === "-" || chr === "." || isDecDigit(chr) || json5 && (chr === "+" || chr === "I" || chr === "N")) { return tokenEnd(parseNumber(), "literal"); } else if (chr === "n") { parseKeyword("null"); return tokenEnd(null, "literal"); } else if (chr === "t") { parseKeyword("true"); return tokenEnd(true, "literal"); } else if (chr === "f") { parseKeyword("false"); return tokenEnd(false, "literal"); } else { position--; return tokenEnd(void 0); } } } function parseKey() { var result; while (position < length) { tokenStart(); var chr = input[position++]; if (chr === '"' || chr === "'" && json5) { return tokenEnd(parseString(chr), "key"); } else if (chr === "{") { tokenEnd(void 0, "separator"); return parseObject(); } else if (chr === "[") { tokenEnd(void 0, "separator"); return parseArray(); } else if (chr === "." || isDecDigit(chr)) { return tokenEnd(parseNumber(true), "key"); } else if (json5 && Uni.isIdentifierStart(chr) || chr === "\\" && input[position] === "u") { var rollback = position - 1; var result = parseIdentifier(); if (result === void 0) { position = rollback; return tokenEnd(void 0); } else { return tokenEnd(result, "key"); } } else { position--; return tokenEnd(void 0); } } } function skipWhiteSpace() { tokenStart(); while (position < length) { var chr = input[position++]; if (isLineTerminator(chr)) { position--; tokenEnd(void 0, "whitespace"); tokenStart(); position++; newline(chr); tokenEnd(void 0, "newline"); tokenStart(); } else if (isWhiteSpace2(chr)) { } else if (chr === "/" && json5 && (input[position] === "/" || input[position] === "*")) { position--; tokenEnd(void 0, "whitespace"); tokenStart(); position++; skipComment(input[position++] === "*"); tokenEnd(void 0, "comment"); tokenStart(); } else { position--; break; } } return tokenEnd(void 0, "whitespace"); } function skipComment(multi) { while (position < length) { var chr = input[position++]; if (isLineTerminator(chr)) { if (!multi) { position--; return; } newline(chr); } else if (chr === "*" && multi) { if (input[position] === "/") { position++; return; } } else { } } if (multi) { fail("Unclosed multiline comment"); } } function parseKeyword(keyword) { var _pos = position; var len = keyword.length; for (var i = 1; i < len; i++) { if (position >= length || keyword[i] != input[position]) { position = _pos - 1; fail(); } position++; } } function parseObject() { var result = options.null_prototype ? /* @__PURE__ */ Object.create(null) : {}, empty_object = {}, is_non_empty = false; while (position < length) { skipWhiteSpace(); var item1 = parseKey(); skipWhiteSpace(); tokenStart(); var chr = input[position++]; tokenEnd(void 0, "separator"); if (chr === "}" && item1 === void 0) { if (!json5 && is_non_empty) { position--; fail("Trailing comma in object"); } return result; } else if (chr === ":" && item1 !== void 0) { skipWhiteSpace(); stack2.push(item1); var item2 = parseGeneric(); stack2.pop(); if (item2 === void 0) fail("No value found for key " + item1); if (typeof item1 !== "string") { if (!json5 || typeof item1 !== "number") { fail("Wrong key type: " + item1); } } if ((item1 in empty_object || empty_object[item1] != null) && options.reserved_keys !== "replace") { if (options.reserved_keys === "throw") { fail("Reserved key: " + item1); } else { } } else { if (typeof options.reviver === "function") { item2 = options.reviver.call(null, item1, item2); } if (item2 !== void 0) { is_non_empty = true; Object.defineProperty(result, item1, { value: item2, enumerable: true, configurable: true, writable: true }); } } skipWhiteSpace(); tokenStart(); var chr = input[position++]; tokenEnd(void 0, "separator"); if (chr === ",") { continue; } else if (chr === "}") { return result; } else { fail(); } } else { position--; fail(); } } fail(); } function parseArray() { var result = []; while (position < length) { skipWhiteSpace(); stack2.push(result.length); var item = parseGeneric(); stack2.pop(); skipWhiteSpace(); tokenStart(); var chr = input[position++]; tokenEnd(void 0, "separator"); if (item !== void 0) { if (typeof options.reviver === "function") { item = options.reviver.call(null, String(result.length), item); } if (item === void 0) { result.length++; item = true; } else { result.push(item); } } if (chr === ",") { if (item === void 0) { fail("Elisions are not supported"); } } else if (chr === "]") { if (!json5 && item === void 0 && result.length) { position--; fail("Trailing comma in array"); } return result; } else { position--; fail(); } } } function parseNumber() { position--; var start = position, chr = input[position++], t; var to_num = function(is_octal2) { var str = input.substr(start, position - start); if (is_octal2) { var result = parseInt(str.replace(/^0o?/, ""), 8); } else { var result = Number(str); } if (Number.isNaN(result)) { position--; fail('Bad numeric literal - "' + input.substr(start, position - start + 1) + '"'); } else if (!json5 && !str.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) { position--; fail('Non-json numeric literal - "' + input.substr(start, position - start + 1) + '"'); } else { return result; } }; if (chr === "-" || chr === "+" && json5) chr = input[position++]; if (chr === "N" && json5) { parseKeyword("NaN"); return NaN; } if (chr === "I" && json5) { parseKeyword("Infinity"); return to_num(); } if (chr >= "1" && chr <= "9") { while (position < length && isDecDigit(input[position])) position++; chr = input[position++]; } if (chr === "0") { chr = input[position++]; var is_octal = chr === "o" || chr === "O" || isOctDigit(chr); var is_hex = chr === "x" || chr === "X"; if (json5 && (is_octal || is_hex)) { while (position < length && (is_hex ? isHexDigit : isOctDigit)(input[position])) position++; var sign = 1; if (input[start] === "-") { sign = -1; start++; } else if (input[start] === "+") { start++; } return sign * to_num(is_octal); } } if (chr === ".") { while (position < length && isDecDigit(input[position])) position++; chr = input[position++]; } if (chr === "e" || chr === "E") { chr = input[position++]; if (chr === "-" || chr === "+") position++; while (position < length && isDecDigit(input[position])) position++; chr = input[position++]; } position--; return to_num(); } function parseIdentifier() { position--; var result = ""; while (position < length) { var chr = input[position++]; if (chr === "\\" && input[position] === "u" && isHexDigit(input[position + 1]) && isHexDigit(input[position + 2]) && isHexDigit(input[position + 3]) && isHexDigit(input[position + 4])) { chr = String.fromCharCode(parseInt(input.substr(position + 1, 4), 16)); position += 5; } if (result.length) { if (Uni.isIdentifierPart(chr)) { result += chr; } else { position--; return result; } } else { if (Uni.isIdentifierStart(chr)) { result += chr; } else { return void 0; } } } fail(); } function parseString(endChar) { var result = ""; while (position < length) { var chr = input[position++]; if (chr === endChar) { return result; } else if (chr === "\\") { if (position >= length) fail(); chr = input[position++]; if (unescapeMap[chr] && (json5 || chr != "v" && chr != "'")) { result += unescapeMap[chr]; } else if (json5 && isLineTerminator(chr)) { newline(chr); } else if (chr === "u" || chr === "x" && json5) { var off = chr === "u" ? 4 : 2; for (var i = 0; i < off; i++) { if (position >= length) fail(); if (!isHexDigit(input[position])) fail("Bad escape sequence"); position++; } result += String.fromCharCode(parseInt(input.substr(position - off, off), 16)); } else if (json5 && isOctDigit(chr)) { if (chr < "4" && isOctDigit(input[position]) && isOctDigit(input[position + 1])) { var digits = 3; } else if (isOctDigit(input[position])) { var digits = 2; } else { var digits = 1; } position += digits - 1; result += String.fromCharCode(parseInt(input.substr(position - digits, digits), 8)); } else if (json5) { result += chr; } else { position--; fail(); } } else if (isLineTerminator(chr)) { fail(); } else { if (!json5 && chr.charCodeAt(0) < 32) { position--; fail("Unexpected control character"); } result += chr; } } fail(); } skipWhiteSpace(); var return_value = parseGeneric(); if (return_value !== void 0 || position < length) { skipWhiteSpace(); if (position >= length) { if (typeof options.reviver === "function") { return_value = options.reviver.call(null, "", return_value); } return return_value; } else { fail(); } } else { if (position) { fail("No data, only a whitespace"); } else { fail("No data, empty input"); } } } module2.exports.parse = function parseJSON(input, options) { if (typeof options === "function") { options = { reviver: options }; } if (input === void 0) { return void 0; } if (typeof input !== "string") input = String(input); if (options == null) options = {}; if (options.reserved_keys == null) options.reserved_keys = "ignore"; if (options.reserved_keys === "throw" || options.reserved_keys === "ignore") { if (options.null_prototype == null) { options.null_prototype = true; } } try { return parse11(input, options); } catch (err) { if (err instanceof SyntaxError && err.row != null && err.column != null) { var old_err = err; err = SyntaxError(old_err.message); err.column = old_err.column; err.row = old_err.row; } throw err; } }; module2.exports.tokenize = function tokenizeJSON(input, options) { if (options == null) options = {}; options._tokenize = function(smth) { if (options._addstack) smth.stack.unshift.apply(smth.stack, options._addstack); tokens.push(smth); }; var tokens = []; tokens.data = module2.exports.parse(input, options); return tokens; }; } }); // ../../node_modules/.pnpm/parse-json@3.0.0/node_modules/parse-json/index.js var require_parse_json = __commonJS2({ "../../node_modules/.pnpm/parse-json@3.0.0/node_modules/parse-json/index.js"(exports2, module2) { "use strict"; var errorEx = require_error_ex(); var fallback = require_parse(); function appendPosition(message2) { const posRe = / at (\d+:\d+) in/; const numbers = posRe.exec(message2); return message2.replace(posRe, " in") + ":" + numbers[1]; } var JSONError = errorEx("JSONError", { fileName: errorEx.append("in %s"), appendPosition: { message: (shouldAppend, original) => { if (shouldAppend) { original[0] = appendPosition(original[0]); } return original; } } }); module2.exports = (input, reviver, filename) => { if (typeof reviver === "string") { filename = reviver; reviver = null; } try { try { return JSON.parse(input, reviver); } catch (err) { fallback.parse(input, { mode: "json", reviver }); throw err; } } catch (err) { const jsonErr = new JSONError(err); if (filename) { jsonErr.fileName = filename; jsonErr.appendPosition = true; } throw jsonErr; } }; } }); // ../../node_modules/.pnpm/pify@2.3.0/node_modules/pify/index.js var require_pify = __commonJS2({ "../../node_modules/.pnpm/pify@2.3.0/node_modules/pify/index.js"(exports2, module2) { "use strict"; var processFn = function(fn2, P, opts) { return function() { var that = this; var args2 = new Array(arguments.length); for (var i = 0; i < arguments.length; i++) { args2[i] = arguments[i]; } return new P(function(resolve14, reject) { args2.push(function(err, result) { if (err) { reject(err); } else if (opts.multiArgs) { var results = new Array(arguments.length - 1); for (var i2 = 1; i2 < arguments.length; i2++) { results[i2 - 1] = arguments[i2]; } resolve14(results); } else { resolve14(result); } }); fn2.apply(that, args2); }); }; }; var pify = module2.exports = function(obj, P, opts) { if (typeof P !== "function") { opts = P; P = Promise; } opts = opts || {}; opts.exclude = opts.exclude || [/.+Sync$/]; var filter = function(key) { var match = function(pattern) { return typeof pattern === "string" ? key === pattern : pattern.test(key); }; return opts.include ? opts.include.some(match) : !opts.exclude.some(match); }; var ret = typeof obj === "function" ? function() { if (opts.excludeMain) { return obj.apply(this, arguments); } return processFn(obj, P, opts).apply(this, arguments); } : {}; return Object.keys(obj).reduce(function(ret2, key) { var x = obj[key]; ret2[key] = typeof x === "function" && filter(key) ? processFn(x, P, opts) : x; return ret2; }, ret); }; pify.all = pify; } }); // ../../node_modules/.pnpm/load-json-file@3.0.0/node_modules/load-json-file/index.js var require_load_json_file = __commonJS2({ "../../node_modules/.pnpm/load-json-file@3.0.0/node_modules/load-json-file/index.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var fs15 = require_graceful_fs(); var stripBom = require_strip_bom(); var parseJson = require_parse_json(); var pify = require_pify(); var parse11 = (data, fp) => parseJson(stripBom(data), path11.relative(".", fp)); module2.exports = (fp) => pify(fs15.readFile)(fp, "utf8").then((data) => parse11(data, fp)); module2.exports.sync = (fp) => parse11(fs15.readFileSync(fp, "utf8"), fp); } }); // ../../node_modules/.pnpm/imurmurhash@0.1.4/node_modules/imurmurhash/imurmurhash.js var require_imurmurhash = __commonJS2({ "../../node_modules/.pnpm/imurmurhash@0.1.4/node_modules/imurmurhash/imurmurhash.js"(exports2, module2) { (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/.pnpm/write-file-atomic@2.4.3/node_modules/write-file-atomic/index.js var require_write_file_atomic = __commonJS2({ "../../node_modules/.pnpm/write-file-atomic@2.4.3/node_modules/write-file-atomic/index.js"(exports2, module2) { "use strict"; module2.exports = writeFile6; module2.exports.sync = writeFileSync; module2.exports._getTmpname = getTmpname; module2.exports._cleanupOnExit = cleanupOnExit; var fs15 = require_graceful_fs(); var MurmurHash3 = require_imurmurhash(); var onExit2 = require_signal_exit(); var path11 = __require("path"); var activeFiles = {}; var threadId = function getId() { try { var workerThreads = __require("worker_threads"); return workerThreads.threadId; } catch (e2) { return 0; } }(); var invocations = 0; function getTmpname(filename) { return filename + "." + MurmurHash3(__filename).hash(String(process.pid)).hash(String(threadId)).hash(String(++invocations)).result(); } function cleanupOnExit(tmpfile) { return function() { try { fs15.unlinkSync(typeof tmpfile === "function" ? tmpfile() : tmpfile); } catch (_) { } }; } function writeFile6(filename, data, options, callback) { if (options) { if (options instanceof Function) { callback = options; options = {}; } else if (typeof options === "string") { options = { encoding: options }; } } else { options = {}; } var Promise2 = options.Promise || global.Promise; var truename; var fd; var tmpfile; var removeOnExitHandler = onExit2(cleanupOnExit(() => tmpfile)); var absoluteName = path11.resolve(filename); new Promise2(function serializeSameFile(resolve14) { if (!activeFiles[absoluteName]) activeFiles[absoluteName] = []; activeFiles[absoluteName].push(resolve14); if (activeFiles[absoluteName].length === 1) resolve14(); }).then(function getRealPath() { return new Promise2(function(resolve14) { fs15.realpath(filename, function(_, realname) { truename = realname || filename; tmpfile = getTmpname(truename); resolve14(); }); }); }).then(function stat2() { return new Promise2(function stat3(resolve14) { if (options.mode && options.chown) resolve14(); else { fs15.stat(truename, function(err, stats) { if (err || !stats) resolve14(); else { options = Object.assign({}, options); if (options.mode == null) { options.mode = stats.mode; } if (options.chown == null && process.getuid) { options.chown = { uid: stats.uid, gid: stats.gid }; } resolve14(); } }); } }); }).then(function thenWriteFile() { return new Promise2(function(resolve14, reject) { fs15.open(tmpfile, "w", options.mode, function(err, _fd) { fd = _fd; if (err) reject(err); else resolve14(); }); }); }).then(function write() { return new Promise2(function(resolve14, reject) { if (Buffer.isBuffer(data)) { fs15.write(fd, data, 0, data.length, 0, function(err) { if (err) reject(err); else resolve14(); }); } else if (data != null) { fs15.write(fd, String(data), 0, String(options.encoding || "utf8"), function(err) { if (err) reject(err); else resolve14(); }); } else resolve14(); }); }).then(function syncAndClose() { return new Promise2(function(resolve14, reject) { if (options.fsync !== false) { fs15.fsync(fd, function(err) { if (err) fs15.close(fd, () => reject(err)); else fs15.close(fd, resolve14); }); } else { fs15.close(fd, resolve14); } }); }).then(function chown() { fd = null; if (options.chown) { return new Promise2(function(resolve14, reject) { fs15.chown(tmpfile, options.chown.uid, options.chown.gid, function(err) { if (err) reject(err); else resolve14(); }); }); } }).then(function chmod() { if (options.mode) { return new Promise2(function(resolve14, reject) { fs15.chmod(tmpfile, options.mode, function(err) { if (err) reject(err); else resolve14(); }); }); } }).then(function rename() { return new Promise2(function(resolve14, reject) { fs15.rename(tmpfile, truename, function(err) { if (err) reject(err); else resolve14(); }); }); }).then(function success() { removeOnExitHandler(); callback(); }, function fail(err) { return new Promise2((resolve14) => { return fd ? fs15.close(fd, resolve14) : resolve14(); }).then(() => { removeOnExitHandler(); fs15.unlink(tmpfile, function() { callback(err); }); }); }).then(function checkQueue() { activeFiles[absoluteName].shift(); if (activeFiles[absoluteName].length > 0) { activeFiles[absoluteName][0](); } else delete activeFiles[absoluteName]; }); } function writeFileSync(filename, data, options) { if (typeof options === "string") options = { encoding: options }; else if (!options) options = {}; try { filename = fs15.realpathSync(filename); } catch (ex) { } var tmpfile = getTmpname(filename); if (!options.mode || !options.chown) { try { var stats = fs15.statSync(filename); options = Object.assign({}, 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; var cleanup = cleanupOnExit(tmpfile); var removeOnExitHandler = onExit2(cleanup); try { fd = fs15.openSync(tmpfile, "w", options.mode); if (Buffer.isBuffer(data)) { fs15.writeSync(fd, data, 0, data.length, 0); } else if (data != null) { fs15.writeSync(fd, String(data), 0, String(options.encoding || "utf8")); } if (options.fsync !== false) { fs15.fsyncSync(fd); } fs15.closeSync(fd); if (options.chown) fs15.chownSync(tmpfile, options.chown.uid, options.chown.gid); if (options.mode) fs15.chmodSync(tmpfile, options.mode); fs15.renameSync(tmpfile, filename); removeOnExitHandler(); } catch (err) { if (fd) { try { fs15.closeSync(fd); } catch (ex) { } } removeOnExitHandler(); cleanup(); throw err; } } } }); // ../../node_modules/.pnpm/is-plain-obj@1.1.0/node_modules/is-plain-obj/index.js var require_is_plain_obj = __commonJS2({ "../../node_modules/.pnpm/is-plain-obj@1.1.0/node_modules/is-plain-obj/index.js"(exports2, module2) { "use strict"; var toString2 = Object.prototype.toString; module2.exports = function(x) { var prototype; return toString2.call(x) === "[object Object]" && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({})); }; } }); // ../../node_modules/.pnpm/sort-keys@1.1.2/node_modules/sort-keys/index.js var require_sort_keys = __commonJS2({ "../../node_modules/.pnpm/sort-keys@1.1.2/node_modules/sort-keys/index.js"(exports2, module2) { "use strict"; var isPlainObj = require_is_plain_obj(); module2.exports = function(obj, opts) { if (!isPlainObj(obj)) { throw new TypeError("Expected a plain object"); } opts = opts || {}; if (typeof opts === "function") { opts = { compare: opts }; } var deep = opts.deep; var seenInput = []; var seenOutput = []; var sortKeys = function(x) { var seenIndex = seenInput.indexOf(x); if (seenIndex !== -1) { return seenOutput[seenIndex]; } var ret = {}; var keys = Object.keys(x).sort(opts.compare); seenInput.push(x); seenOutput.push(ret); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var val = x[key]; ret[key] = deep && isPlainObj(val) ? sortKeys(val) : val; } return ret; }; return sortKeys(obj); }; } }); // ../../node_modules/.pnpm/pify@3.0.0/node_modules/pify/index.js var require_pify2 = __commonJS2({ "../../node_modules/.pnpm/pify@3.0.0/node_modules/pify/index.js"(exports2, module2) { "use strict"; var processFn = (fn2, opts) => function() { const P = opts.promiseModule; const args2 = new Array(arguments.length); for (let i = 0; i < arguments.length; i++) { args2[i] = arguments[i]; } return new P((resolve14, reject) => { if (opts.errorFirst) { args2.push(function(err, result) { if (opts.multiArgs) { const results = new Array(arguments.length - 1); for (let i = 1; i < arguments.length; i++) { results[i - 1] = arguments[i]; } if (err) { results.unshift(err); reject(results); } else { resolve14(results); } } else if (err) { reject(err); } else { resolve14(result); } }); } else { args2.push(function(result) { if (opts.multiArgs) { const results = new Array(arguments.length - 1); for (let i = 0; i < arguments.length; i++) { results[i] = arguments[i]; } resolve14(results); } else { resolve14(result); } }); } fn2.apply(this, args2); }); }; module2.exports = (obj, opts) => { opts = Object.assign({ exclude: [/.+(Sync|Stream)$/], errorFirst: true, promiseModule: Promise }, opts); const filter = (key) => { const match = (pattern) => typeof pattern === "string" ? key === pattern : pattern.test(key); return opts.include ? opts.include.some(match) : !opts.exclude.some(match); }; let ret; if (typeof obj === "function") { ret = function() { if (opts.excludeMain) { return obj.apply(this, arguments); } return processFn(obj, opts).apply(this, arguments); }; } else { ret = Object.create(Object.getPrototypeOf(obj)); } for (const key in obj) { const x = obj[key]; ret[key] = typeof x === "function" && filter(key) ? processFn(x, opts) : x; } return ret; }; } }); // ../../node_modules/.pnpm/make-dir@1.3.0/node_modules/make-dir/index.js var require_make_dir2 = __commonJS2({ "../../node_modules/.pnpm/make-dir@1.3.0/node_modules/make-dir/index.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var path11 = __require("path"); var pify = require_pify2(); var defaults = { mode: 511 & ~process.umask(), fs: fs15 }; var checkPath = (pth) => { if (process.platform === "win32") { const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path11.parse(pth).root, "")); if (pathHasInvalidWinCharacters) { const err = new Error(`Path contains invalid characters: ${pth}`); err.code = "EINVAL"; throw err; } } }; module2.exports = (input, opts) => Promise.resolve().then(() => { checkPath(input); opts = Object.assign({}, defaults, opts); const mkdir5 = pify(opts.fs.mkdir); const stat2 = pify(opts.fs.stat); const make = (pth) => { return mkdir5(pth, opts.mode).then(() => pth).catch((err) => { if (err.code === "ENOENT") { if (err.message.includes("null bytes") || path11.dirname(pth) === pth) { throw err; } return make(path11.dirname(pth)).then(() => make(pth)); } return stat2(pth).then((stats) => stats.isDirectory() ? pth : Promise.reject()).catch(() => { throw err; }); }); }; return make(path11.resolve(input)); }); module2.exports.sync = (input, opts) => { checkPath(input); opts = Object.assign({}, defaults, opts); const make = (pth) => { try { opts.fs.mkdirSync(pth, opts.mode); } catch (err) { if (err.code === "ENOENT") { if (err.message.includes("null bytes") || path11.dirname(pth) === pth) { throw err; } make(path11.dirname(pth)); return make(pth); } try { if (!opts.fs.statSync(pth).isDirectory()) { throw new Error("The path is not a directory"); } } catch (_) { throw err; } } return pth; }; return make(path11.resolve(input)); }; } }); // ../../node_modules/.pnpm/detect-indent@5.0.0/node_modules/detect-indent/index.js var require_detect_indent = __commonJS2({ "../../node_modules/.pnpm/detect-indent@5.0.0/node_modules/detect-indent/index.js"(exports2, module2) { "use strict"; var INDENT_RE = /^(?:( )+|\t+)/; function getMostUsed(indents) { let result = 0; let maxUsed = 0; let maxWeight = 0; for (const entry of indents) { const key = entry[0]; const val = entry[1]; const u = val[0]; const w = val[1]; if (u > maxUsed || u === maxUsed && w > maxWeight) { maxUsed = u; maxWeight = w; result = Number(key); } } return result; } module2.exports = (str) => { if (typeof str !== "string") { throw new TypeError("Expected a string"); } let tabs = 0; let spaces = 0; let prev = 0; const indents = /* @__PURE__ */ new Map(); let current; let isIndent; for (const line of str.split(/\n/g)) { if (!line) { continue; } let indent2; const matches = line.match(INDENT_RE); if (matches) { indent2 = matches[0].length; if (matches[1]) { spaces++; } else { tabs++; } } else { indent2 = 0; } const diff = indent2 - prev; prev = indent2; if (diff) { isIndent = diff > 0; current = indents.get(isIndent ? diff : -diff); if (current) { current[0]++; } else { current = [1, 0]; indents.set(diff, current); } } else if (current) { current[1] += Number(isIndent); } } const amount = getMostUsed(indents); let type; let indent; if (!amount) { type = null; indent = ""; } else if (spaces >= tabs) { type = "space"; indent = " ".repeat(amount); } else { type = "tab"; indent = " ".repeat(amount); } return { amount, type, indent }; }; } }); // ../../node_modules/.pnpm/write-json-file@2.2.0/node_modules/write-json-file/index.js var require_write_json_file = __commonJS2({ "../../node_modules/.pnpm/write-json-file@2.2.0/node_modules/write-json-file/index.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var fs15 = require_graceful_fs(); var writeFileAtomic = require_write_file_atomic(); var sortKeys = require_sort_keys(); var makeDir = require_make_dir2(); var pify = require_pify(); var detectIndent = require_detect_indent(); var init2 = (fn2, fp, data, opts) => { if (!fp) { throw new TypeError("Expected a filepath"); } if (data === void 0) { throw new TypeError("Expected data to stringify"); } opts = Object.assign({ indent: " ", sortKeys: false }, opts); if (opts.sortKeys) { data = sortKeys(data, { deep: true, compare: typeof opts.sortKeys === "function" && opts.sortKeys }); } return fn2(fp, data, opts); }; var readFile8 = (fp) => pify(fs15.readFile)(fp, "utf8").catch(() => { }); var main19 = (fp, data, opts) => { return (opts.detectIndent ? readFile8(fp) : Promise.resolve()).then((str) => { const indent = str ? detectIndent(str).indent : opts.indent; const json = JSON.stringify(data, opts.replacer, indent); return pify(writeFileAtomic)(fp, `${json} `, { mode: opts.mode }); }); }; var mainSync = (fp, data, opts) => { let indent = opts.indent; if (opts.detectIndent) { try { const file = fs15.readFileSync(fp, "utf8"); indent = detectIndent(file).indent; } catch (err) { if (err.code !== "ENOENT") { throw err; } } } const json = JSON.stringify(data, opts.replacer, indent); return writeFileAtomic.sync(fp, `${json} `, { mode: opts.mode }); }; module2.exports = (fp, data, opts) => { return makeDir(path11.dirname(fp), { fs: fs15 }).then(() => init2(main19, fp, data, opts)); }; module2.exports.sync = (fp, data, opts) => { makeDir.sync(path11.dirname(fp), { fs: fs15 }); init2(mainSync, fp, data, opts); }; } }); // ../../node_modules/.pnpm/universalify@0.1.2/node_modules/universalify/index.js var require_universalify2 = __commonJS2({ "../../node_modules/.pnpm/universalify@0.1.2/node_modules/universalify/index.js"(exports2) { "use strict"; exports2.fromCallback = function(fn2) { return Object.defineProperty(function() { if (typeof arguments[arguments.length - 1] === "function") fn2.apply(this, arguments); else { return new Promise((resolve14, reject) => { arguments[arguments.length] = (err, res) => { if (err) return reject(err); resolve14(res); }; arguments.length++; fn2.apply(this, arguments); }); } }, "name", { value: fn2.name }); }; exports2.fromPromise = function(fn2) { return Object.defineProperty(function() { const cb = arguments[arguments.length - 1]; if (typeof cb !== "function") return fn2.apply(this, arguments); else fn2.apply(this, arguments).then((r) => cb(null, r), cb); }, "name", { value: fn2.name }); }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/fs/index.js var require_fs2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/fs/index.js"(exports2) { "use strict"; var u = require_universalify2().fromCallback; var fs15 = require_graceful_fs(); var api2 = [ "access", "appendFile", "chmod", "chown", "close", "copyFile", "fchmod", "fchown", "fdatasync", "fstat", "fsync", "ftruncate", "futimes", "lchown", "lchmod", "link", "lstat", "mkdir", "mkdtemp", "open", "readFile", "readdir", "readlink", "realpath", "rename", "rmdir", "stat", "symlink", "truncate", "unlink", "utimes", "writeFile" ].filter((key) => { return typeof fs15[key] === "function"; }); Object.keys(fs15).forEach((key) => { if (key === "promises") { return; } exports2[key] = fs15[key]; }); api2.forEach((method) => { exports2[method] = u(fs15[method]); }); exports2.exists = function(filename, callback) { if (typeof callback === "function") { return fs15.exists(filename, callback); } return new Promise((resolve14) => { return fs15.exists(filename, resolve14); }); }; exports2.read = function(fd, buffer, offset, length, position, callback) { if (typeof callback === "function") { return fs15.read(fd, buffer, offset, length, position, callback); } return new Promise((resolve14, reject) => { fs15.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => { if (err) return reject(err); resolve14({ bytesRead, buffer: buffer2 }); }); }); }; exports2.write = function(fd, buffer, ...args2) { if (typeof args2[args2.length - 1] === "function") { return fs15.write(fd, buffer, ...args2); } return new Promise((resolve14, reject) => { fs15.write(fd, buffer, ...args2, (err, bytesWritten, buffer2) => { if (err) return reject(err); resolve14({ bytesWritten, buffer: buffer2 }); }); }); }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/mkdirs/win32.js var require_win32 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/mkdirs/win32.js"(exports2, module2) { "use strict"; var path11 = __require("path"); function getRootPath(p) { p = path11.normalize(path11.resolve(p)).split(path11.sep); if (p.length > 0) return p[0]; return null; } var INVALID_PATH_CHARS = /[<>:"|?*]/; function invalidWin32Path(p) { const rp = getRootPath(p); p = p.replace(rp, ""); return INVALID_PATH_CHARS.test(p); } module2.exports = { getRootPath, invalidWin32Path }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/mkdirs/mkdirs.js var require_mkdirs2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/mkdirs/mkdirs.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var invalidWin32Path = require_win32().invalidWin32Path; var o777 = parseInt("0777", 8); function mkdirs(p, opts, callback, made) { if (typeof opts === "function") { callback = opts; opts = {}; } else if (!opts || typeof opts !== "object") { opts = { mode: opts }; } if (process.platform === "win32" && invalidWin32Path(p)) { const errInval = new Error(p + " contains invalid WIN32 path characters."); errInval.code = "EINVAL"; return callback(errInval); } let mode = opts.mode; const xfs = opts.fs || fs15; if (mode === void 0) { mode = o777 & ~process.umask(); } if (!made) made = null; callback = callback || function() { }; p = path11.resolve(p); xfs.mkdir(p, mode, (er) => { if (!er) { made = made || p; return callback(null, made); } switch (er.code) { case "ENOENT": if (path11.dirname(p) === p) return callback(er); mkdirs(path11.dirname(p), opts, (er2, made2) => { if (er2) callback(er2, made2); else mkdirs(p, opts, callback, made2); }); break; default: xfs.stat(p, (er2, stat2) => { if (er2 || !stat2.isDirectory()) callback(er, made); else callback(null, made); }); break; } }); } module2.exports = mkdirs; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js var require_mkdirs_sync = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var invalidWin32Path = require_win32().invalidWin32Path; var o777 = parseInt("0777", 8); function mkdirsSync(p, opts, made) { if (!opts || typeof opts !== "object") { opts = { mode: opts }; } let mode = opts.mode; const xfs = opts.fs || fs15; if (process.platform === "win32" && invalidWin32Path(p)) { const errInval = new Error(p + " contains invalid WIN32 path characters."); errInval.code = "EINVAL"; throw errInval; } if (mode === void 0) { mode = o777 & ~process.umask(); } if (!made) made = null; p = path11.resolve(p); try { xfs.mkdirSync(p, mode); made = made || p; } catch (err0) { if (err0.code === "ENOENT") { if (path11.dirname(p) === p) throw err0; made = mkdirsSync(path11.dirname(p), opts, made); mkdirsSync(p, opts, made); } else { let stat2; try { stat2 = xfs.statSync(p); } catch (err1) { throw err0; } if (!stat2.isDirectory()) throw err0; } } return made; } module2.exports = mkdirsSync; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/mkdirs/index.js var require_mkdirs3 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/mkdirs/index.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var mkdirs = u(require_mkdirs2()); var mkdirsSync = require_mkdirs_sync(); module2.exports = { mkdirs, mkdirsSync, // alias mkdirp: mkdirs, mkdirpSync: mkdirsSync, ensureDir: mkdirs, ensureDirSync: mkdirsSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/util/utimes.js var require_utimes2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/util/utimes.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var os4 = __require("os"); var path11 = __require("path"); function hasMillisResSync() { let tmpfile = path11.join("millis-test-sync" + Date.now().toString() + Math.random().toString().slice(2)); tmpfile = path11.join(os4.tmpdir(), tmpfile); const d = /* @__PURE__ */ new Date(1435410243862); fs15.writeFileSync(tmpfile, "https://github.com/jprichardson/node-fs-extra/pull/141"); const fd = fs15.openSync(tmpfile, "r+"); fs15.futimesSync(fd, d, d); fs15.closeSync(fd); return fs15.statSync(tmpfile).mtime > 1435410243e3; } function hasMillisRes(callback) { let tmpfile = path11.join("millis-test" + Date.now().toString() + Math.random().toString().slice(2)); tmpfile = path11.join(os4.tmpdir(), tmpfile); const d = /* @__PURE__ */ new Date(1435410243862); fs15.writeFile(tmpfile, "https://github.com/jprichardson/node-fs-extra/pull/141", (err) => { if (err) return callback(err); fs15.open(tmpfile, "r+", (err2, fd) => { if (err2) return callback(err2); fs15.futimes(fd, d, d, (err3) => { if (err3) return callback(err3); fs15.close(fd, (err4) => { if (err4) return callback(err4); fs15.stat(tmpfile, (err5, stats) => { if (err5) return callback(err5); callback(null, stats.mtime > 1435410243e3); }); }); }); }); }); } function timeRemoveMillis(timestamp) { if (typeof timestamp === "number") { return Math.floor(timestamp / 1e3) * 1e3; } else if (timestamp instanceof Date) { return new Date(Math.floor(timestamp.getTime() / 1e3) * 1e3); } else { throw new Error("fs-extra: timeRemoveMillis() unknown parameter type"); } } function utimesMillis(path12, atime, mtime, callback) { fs15.open(path12, "r+", (err, fd) => { if (err) return callback(err); fs15.futimes(fd, atime, mtime, (futimesErr) => { fs15.close(fd, (closeErr) => { if (callback) callback(futimesErr || closeErr); }); }); }); } function utimesMillisSync(path12, atime, mtime) { const fd = fs15.openSync(path12, "r+"); fs15.futimesSync(fd, atime, mtime); return fs15.closeSync(fd); } module2.exports = { hasMillisRes, hasMillisResSync, timeRemoveMillis, utimesMillis, utimesMillisSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/util/stat.js var require_stat2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/util/stat.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var path11 = __require("path"); var NODE_VERSION_MAJOR_WITH_BIGINT = 10; var NODE_VERSION_MINOR_WITH_BIGINT = 5; var NODE_VERSION_PATCH_WITH_BIGINT = 0; var nodeVersion = process.versions.node.split("."); var nodeVersionMajor = Number.parseInt(nodeVersion[0], 10); var nodeVersionMinor = Number.parseInt(nodeVersion[1], 10); var nodeVersionPatch = Number.parseInt(nodeVersion[2], 10); function nodeSupportsBigInt() { if (nodeVersionMajor > NODE_VERSION_MAJOR_WITH_BIGINT) { return true; } else if (nodeVersionMajor === NODE_VERSION_MAJOR_WITH_BIGINT) { if (nodeVersionMinor > NODE_VERSION_MINOR_WITH_BIGINT) { return true; } else if (nodeVersionMinor === NODE_VERSION_MINOR_WITH_BIGINT) { if (nodeVersionPatch >= NODE_VERSION_PATCH_WITH_BIGINT) { return true; } } } return false; } function getStats(src, dest, cb) { if (nodeSupportsBigInt()) { fs15.stat(src, { bigint: true }, (err, srcStat) => { if (err) return cb(err); fs15.stat(dest, { bigint: true }, (err2, destStat) => { if (err2) { if (err2.code === "ENOENT") return cb(null, { srcStat, destStat: null }); return cb(err2); } return cb(null, { srcStat, destStat }); }); }); } else { fs15.stat(src, (err, srcStat) => { if (err) return cb(err); fs15.stat(dest, (err2, destStat) => { if (err2) { if (err2.code === "ENOENT") return cb(null, { srcStat, destStat: null }); return cb(err2); } return cb(null, { srcStat, destStat }); }); }); } } function getStatsSync(src, dest) { let srcStat, destStat; if (nodeSupportsBigInt()) { srcStat = fs15.statSync(src, { bigint: true }); } else { srcStat = fs15.statSync(src); } try { if (nodeSupportsBigInt()) { destStat = fs15.statSync(dest, { bigint: true }); } else { destStat = fs15.statSync(dest); } } catch (err) { if (err.code === "ENOENT") return { srcStat, destStat: null }; throw err; } return { srcStat, destStat }; } function checkPaths(src, dest, funcName, cb) { getStats(src, dest, (err, stats) => { if (err) return cb(err); const { srcStat, destStat } = stats; if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { return cb(new Error("Source and destination must not be the same.")); } if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { return cb(new Error(errMsg(src, dest, funcName))); } return cb(null, { srcStat, destStat }); }); } function checkPathsSync(src, dest, funcName) { const { srcStat, destStat } = getStatsSync(src, dest); if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { throw new Error("Source and destination must not be the same."); } if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { throw new Error(errMsg(src, dest, funcName)); } return { srcStat, destStat }; } function checkParentPaths(src, srcStat, dest, funcName, cb) { const srcParent = path11.resolve(path11.dirname(src)); const destParent = path11.resolve(path11.dirname(dest)); if (destParent === srcParent || destParent === path11.parse(destParent).root) return cb(); if (nodeSupportsBigInt()) { fs15.stat(destParent, { bigint: true }, (err, destStat) => { if (err) { if (err.code === "ENOENT") return cb(); return cb(err); } if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { return cb(new Error(errMsg(src, dest, funcName))); } return checkParentPaths(src, srcStat, destParent, funcName, cb); }); } else { fs15.stat(destParent, (err, destStat) => { if (err) { if (err.code === "ENOENT") return cb(); return cb(err); } if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { return cb(new Error(errMsg(src, dest, funcName))); } return checkParentPaths(src, srcStat, destParent, funcName, cb); }); } } function checkParentPathsSync(src, srcStat, dest, funcName) { const srcParent = path11.resolve(path11.dirname(src)); const destParent = path11.resolve(path11.dirname(dest)); if (destParent === srcParent || destParent === path11.parse(destParent).root) return; let destStat; try { if (nodeSupportsBigInt()) { destStat = fs15.statSync(destParent, { bigint: true }); } else { destStat = fs15.statSync(destParent); } } catch (err) { if (err.code === "ENOENT") return; throw err; } if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) { throw new Error(errMsg(src, dest, funcName)); } return checkParentPathsSync(src, srcStat, destParent, funcName); } function isSrcSubdir(src, dest) { const srcArr = path11.resolve(src).split(path11.sep).filter((i) => i); const destArr = path11.resolve(dest).split(path11.sep).filter((i) => i); return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true); } function errMsg(src, dest, funcName) { return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`; } module2.exports = { checkPaths, checkPathsSync, checkParentPaths, checkParentPathsSync, isSrcSubdir }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/util/buffer.js var require_buffer = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/util/buffer.js"(exports2, module2) { "use strict"; module2.exports = function(size) { if (typeof Buffer.allocUnsafe === "function") { try { return Buffer.allocUnsafe(size); } catch (e2) { return new Buffer(size); } } return new Buffer(size); }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/copy-sync/copy-sync.js var require_copy_sync3 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/copy-sync/copy-sync.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var path11 = __require("path"); var mkdirpSync = require_mkdirs3().mkdirsSync; var utimesSync = require_utimes2().utimesMillisSync; var stat2 = require_stat2(); function copySync(src, dest, opts) { if (typeof opts === "function") { opts = { filter: opts }; } opts = opts || {}; opts.clobber = "clobber" in opts ? !!opts.clobber : true; opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber; if (opts.preserveTimestamps && process.arch === "ia32") { console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended; see https://github.com/jprichardson/node-fs-extra/issues/269`); } const { srcStat, destStat } = stat2.checkPathsSync(src, dest, "copy"); stat2.checkParentPathsSync(src, srcStat, dest, "copy"); return handleFilterAndCopy(destStat, src, dest, opts); } function handleFilterAndCopy(destStat, src, dest, opts) { if (opts.filter && !opts.filter(src, dest)) return; const destParent = path11.dirname(dest); if (!fs15.existsSync(destParent)) mkdirpSync(destParent); return startCopy(destStat, src, dest, opts); } function startCopy(destStat, src, dest, opts) { if (opts.filter && !opts.filter(src, dest)) return; return getStats(destStat, src, dest, opts); } function getStats(destStat, src, dest, opts) { const statSync3 = opts.dereference ? fs15.statSync : fs15.lstatSync; const srcStat = statSync3(src); if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts); else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts); else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts); } function onFile(srcStat, destStat, src, dest, opts) { if (!destStat) return copyFile(srcStat, src, dest, opts); return mayCopyFile(srcStat, src, dest, opts); } function mayCopyFile(srcStat, src, dest, opts) { if (opts.overwrite) { fs15.unlinkSync(dest); return copyFile(srcStat, src, dest, opts); } else if (opts.errorOnExist) { throw new Error(`'${dest}' already exists`); } } function copyFile(srcStat, src, dest, opts) { if (typeof fs15.copyFileSync === "function") { fs15.copyFileSync(src, dest); fs15.chmodSync(dest, srcStat.mode); if (opts.preserveTimestamps) { return utimesSync(dest, srcStat.atime, srcStat.mtime); } return; } return copyFileFallback(srcStat, src, dest, opts); } function copyFileFallback(srcStat, src, dest, opts) { const BUF_LENGTH = 64 * 1024; const _buff = require_buffer()(BUF_LENGTH); const fdr = fs15.openSync(src, "r"); const fdw = fs15.openSync(dest, "w", srcStat.mode); let pos = 0; while (pos < srcStat.size) { const bytesRead = fs15.readSync(fdr, _buff, 0, BUF_LENGTH, pos); fs15.writeSync(fdw, _buff, 0, bytesRead); pos += bytesRead; } if (opts.preserveTimestamps) fs15.futimesSync(fdw, srcStat.atime, srcStat.mtime); fs15.closeSync(fdr); fs15.closeSync(fdw); } function onDir(srcStat, destStat, src, dest, opts) { if (!destStat) return mkDirAndCopy(srcStat, src, dest, opts); if (destStat && !destStat.isDirectory()) { throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`); } return copyDir(src, dest, opts); } function mkDirAndCopy(srcStat, src, dest, opts) { fs15.mkdirSync(dest); copyDir(src, dest, opts); return fs15.chmodSync(dest, srcStat.mode); } function copyDir(src, dest, opts) { fs15.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts)); } function copyDirItem(item, src, dest, opts) { const srcItem = path11.join(src, item); const destItem = path11.join(dest, item); const { destStat } = stat2.checkPathsSync(srcItem, destItem, "copy"); return startCopy(destStat, srcItem, destItem, opts); } function onLink(destStat, src, dest, opts) { let resolvedSrc = fs15.readlinkSync(src); if (opts.dereference) { resolvedSrc = path11.resolve(process.cwd(), resolvedSrc); } if (!destStat) { return fs15.symlinkSync(resolvedSrc, dest); } else { let resolvedDest; try { resolvedDest = fs15.readlinkSync(dest); } catch (err) { if (err.code === "EINVAL" || err.code === "UNKNOWN") return fs15.symlinkSync(resolvedSrc, dest); throw err; } if (opts.dereference) { resolvedDest = path11.resolve(process.cwd(), resolvedDest); } if (stat2.isSrcSubdir(resolvedSrc, resolvedDest)) { throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`); } if (fs15.statSync(dest).isDirectory() && stat2.isSrcSubdir(resolvedDest, resolvedSrc)) { throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`); } return copyLink(resolvedSrc, dest); } } function copyLink(resolvedSrc, dest) { fs15.unlinkSync(dest); return fs15.symlinkSync(resolvedSrc, dest); } module2.exports = copySync; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/copy-sync/index.js var require_copy_sync4 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/copy-sync/index.js"(exports2, module2) { "use strict"; module2.exports = { copySync: require_copy_sync3() }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/path-exists/index.js var require_path_exists2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/path-exists/index.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromPromise; var fs15 = require_fs2(); function pathExists(path11) { return fs15.access(path11).then(() => true).catch(() => false); } module2.exports = { pathExists: u(pathExists), pathExistsSync: fs15.existsSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/copy/copy.js var require_copy3 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/copy/copy.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var path11 = __require("path"); var mkdirp4 = require_mkdirs3().mkdirs; var pathExists = require_path_exists2().pathExists; var utimes = require_utimes2().utimesMillis; var stat2 = require_stat2(); function copy3(src, dest, opts, cb) { if (typeof opts === "function" && !cb) { cb = opts; opts = {}; } else if (typeof opts === "function") { opts = { filter: opts }; } cb = cb || function() { }; opts = opts || {}; opts.clobber = "clobber" in opts ? !!opts.clobber : true; opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber; if (opts.preserveTimestamps && process.arch === "ia32") { console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended; see https://github.com/jprichardson/node-fs-extra/issues/269`); } stat2.checkPaths(src, dest, "copy", (err, stats) => { if (err) return cb(err); const { srcStat, destStat } = stats; stat2.checkParentPaths(src, srcStat, dest, "copy", (err2) => { if (err2) return cb(err2); if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb); return checkParentDir(destStat, src, dest, opts, cb); }); }); } function checkParentDir(destStat, src, dest, opts, cb) { const destParent = path11.dirname(dest); pathExists(destParent, (err, dirExists) => { if (err) return cb(err); if (dirExists) return startCopy(destStat, src, dest, opts, cb); mkdirp4(destParent, (err2) => { if (err2) return cb(err2); return startCopy(destStat, src, dest, opts, cb); }); }); } function handleFilter(onInclude, destStat, src, dest, opts, cb) { Promise.resolve(opts.filter(src, dest)).then((include) => { if (include) return onInclude(destStat, src, dest, opts, cb); return cb(); }, (error3) => cb(error3)); } function startCopy(destStat, src, dest, opts, cb) { if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb); return getStats(destStat, src, dest, opts, cb); } function getStats(destStat, src, dest, opts, cb) { const stat3 = opts.dereference ? fs15.stat : fs15.lstat; stat3(src, (err, srcStat) => { if (err) return cb(err); if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb); else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb); else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb); }); } function onFile(srcStat, destStat, src, dest, opts, cb) { if (!destStat) return copyFile(srcStat, src, dest, opts, cb); return mayCopyFile(srcStat, src, dest, opts, cb); } function mayCopyFile(srcStat, src, dest, opts, cb) { if (opts.overwrite) { fs15.unlink(dest, (err) => { if (err) return cb(err); return copyFile(srcStat, src, dest, opts, cb); }); } else if (opts.errorOnExist) { return cb(new Error(`'${dest}' already exists`)); } else return cb(); } function copyFile(srcStat, src, dest, opts, cb) { if (typeof fs15.copyFile === "function") { return fs15.copyFile(src, dest, (err) => { if (err) return cb(err); return setDestModeAndTimestamps(srcStat, dest, opts, cb); }); } return copyFileFallback(srcStat, src, dest, opts, cb); } function copyFileFallback(srcStat, src, dest, opts, cb) { const rs = fs15.createReadStream(src); rs.on("error", (err) => cb(err)).once("open", () => { const ws = fs15.createWriteStream(dest, { mode: srcStat.mode }); ws.on("error", (err) => cb(err)).on("open", () => rs.pipe(ws)).once("close", () => setDestModeAndTimestamps(srcStat, dest, opts, cb)); }); } function setDestModeAndTimestamps(srcStat, dest, opts, cb) { fs15.chmod(dest, srcStat.mode, (err) => { if (err) return cb(err); if (opts.preserveTimestamps) { return utimes(dest, srcStat.atime, srcStat.mtime, cb); } return cb(); }); } function onDir(srcStat, destStat, src, dest, opts, cb) { if (!destStat) return mkDirAndCopy(srcStat, src, dest, opts, cb); if (destStat && !destStat.isDirectory()) { return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)); } return copyDir(src, dest, opts, cb); } function mkDirAndCopy(srcStat, src, dest, opts, cb) { fs15.mkdir(dest, (err) => { if (err) return cb(err); copyDir(src, dest, opts, (err2) => { if (err2) return cb(err2); return fs15.chmod(dest, srcStat.mode, cb); }); }); } function copyDir(src, dest, opts, cb) { fs15.readdir(src, (err, items) => { if (err) return cb(err); return copyDirItems(items, src, dest, opts, cb); }); } function copyDirItems(items, src, dest, opts, cb) { const item = items.pop(); if (!item) return cb(); return copyDirItem(items, item, src, dest, opts, cb); } function copyDirItem(items, item, src, dest, opts, cb) { const srcItem = path11.join(src, item); const destItem = path11.join(dest, item); stat2.checkPaths(srcItem, destItem, "copy", (err, stats) => { if (err) return cb(err); const { destStat } = stats; startCopy(destStat, srcItem, destItem, opts, (err2) => { if (err2) return cb(err2); return copyDirItems(items, src, dest, opts, cb); }); }); } function onLink(destStat, src, dest, opts, cb) { fs15.readlink(src, (err, resolvedSrc) => { if (err) return cb(err); if (opts.dereference) { resolvedSrc = path11.resolve(process.cwd(), resolvedSrc); } if (!destStat) { return fs15.symlink(resolvedSrc, dest, cb); } else { fs15.readlink(dest, (err2, resolvedDest) => { if (err2) { if (err2.code === "EINVAL" || err2.code === "UNKNOWN") return fs15.symlink(resolvedSrc, dest, cb); return cb(err2); } if (opts.dereference) { resolvedDest = path11.resolve(process.cwd(), resolvedDest); } if (stat2.isSrcSubdir(resolvedSrc, resolvedDest)) { return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)); } if (destStat.isDirectory() && stat2.isSrcSubdir(resolvedDest, resolvedSrc)) { return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)); } return copyLink(resolvedSrc, dest, cb); }); } }); } function copyLink(resolvedSrc, dest, cb) { fs15.unlink(dest, (err) => { if (err) return cb(err); return fs15.symlink(resolvedSrc, dest, cb); }); } module2.exports = copy3; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/copy/index.js var require_copy4 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/copy/index.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; module2.exports = { copy: u(require_copy3()) }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/remove/rimraf.js var require_rimraf2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/remove/rimraf.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var assert = __require("assert"); var isWindows = process.platform === "win32"; function defaults(options) { const methods = [ "unlink", "chmod", "stat", "lstat", "rmdir", "readdir" ]; methods.forEach((m) => { options[m] = options[m] || fs15[m]; m = m + "Sync"; options[m] = options[m] || fs15[m]; }); options.maxBusyTries = options.maxBusyTries || 3; } function rimraf(p, options, cb) { let busyTries = 0; if (typeof options === "function") { cb = options; options = {}; } assert(p, "rimraf: missing path"); assert.strictEqual(typeof p, "string", "rimraf: path should be a string"); assert.strictEqual(typeof cb, "function", "rimraf: callback function required"); assert(options, "rimraf: invalid options argument provided"); assert.strictEqual(typeof options, "object", "rimraf: options should be object"); defaults(options); rimraf_(p, options, function CB(er) { if (er) { if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && busyTries < options.maxBusyTries) { busyTries++; const time = busyTries * 100; return setTimeout(() => rimraf_(p, options, CB), time); } if (er.code === "ENOENT") er = null; } cb(er); }); } function rimraf_(p, options, cb) { assert(p); assert(options); assert(typeof cb === "function"); options.lstat(p, (er, st) => { if (er && er.code === "ENOENT") { return cb(null); } if (er && er.code === "EPERM" && isWindows) { return fixWinEPERM(p, options, er, cb); } if (st && st.isDirectory()) { return rmdir2(p, options, er, cb); } options.unlink(p, (er2) => { if (er2) { if (er2.code === "ENOENT") { return cb(null); } if (er2.code === "EPERM") { return isWindows ? fixWinEPERM(p, options, er2, cb) : rmdir2(p, options, er2, cb); } if (er2.code === "EISDIR") { return rmdir2(p, options, er2, cb); } } return cb(er2); }); }); } function fixWinEPERM(p, options, er, cb) { assert(p); assert(options); assert(typeof cb === "function"); if (er) { assert(er instanceof Error); } options.chmod(p, 438, (er2) => { if (er2) { cb(er2.code === "ENOENT" ? null : er); } else { options.stat(p, (er3, stats) => { if (er3) { cb(er3.code === "ENOENT" ? null : er); } else if (stats.isDirectory()) { rmdir2(p, options, er, cb); } else { options.unlink(p, cb); } }); } }); } function fixWinEPERMSync(p, options, er) { let stats; assert(p); assert(options); if (er) { assert(er instanceof Error); } try { options.chmodSync(p, 438); } catch (er2) { if (er2.code === "ENOENT") { return; } else { throw er; } } try { stats = options.statSync(p); } catch (er3) { if (er3.code === "ENOENT") { return; } else { throw er; } } if (stats.isDirectory()) { rmdirSync(p, options, er); } else { options.unlinkSync(p); } } function rmdir2(p, options, originalEr, cb) { assert(p); assert(options); if (originalEr) { assert(originalEr instanceof Error); } assert(typeof cb === "function"); options.rmdir(p, (er) => { if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) { rmkids(p, options, cb); } else if (er && er.code === "ENOTDIR") { cb(originalEr); } else { cb(er); } }); } function rmkids(p, options, cb) { assert(p); assert(options); assert(typeof cb === "function"); options.readdir(p, (er, files) => { if (er) return cb(er); let n = files.length; let errState; if (n === 0) return options.rmdir(p, cb); files.forEach((f) => { rimraf(path11.join(p, f), options, (er2) => { if (errState) { return; } if (er2) return cb(errState = er2); if (--n === 0) { options.rmdir(p, cb); } }); }); }); } function rimrafSync(p, options) { let st; options = options || {}; defaults(options); assert(p, "rimraf: missing path"); assert.strictEqual(typeof p, "string", "rimraf: path should be a string"); assert(options, "rimraf: missing options"); assert.strictEqual(typeof options, "object", "rimraf: options should be object"); try { st = options.lstatSync(p); } catch (er) { if (er.code === "ENOENT") { return; } if (er.code === "EPERM" && isWindows) { fixWinEPERMSync(p, options, er); } } try { if (st && st.isDirectory()) { rmdirSync(p, options, null); } else { options.unlinkSync(p); } } catch (er) { if (er.code === "ENOENT") { return; } else if (er.code === "EPERM") { return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er); } else if (er.code !== "EISDIR") { throw er; } rmdirSync(p, options, er); } } function rmdirSync(p, options, originalEr) { assert(p); assert(options); if (originalEr) { assert(originalEr instanceof Error); } try { options.rmdirSync(p); } catch (er) { if (er.code === "ENOTDIR") { throw originalEr; } else if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") { rmkidsSync(p, options); } else if (er.code !== "ENOENT") { throw er; } } } function rmkidsSync(p, options) { assert(p); assert(options); options.readdirSync(p).forEach((f) => rimrafSync(path11.join(p, f), options)); if (isWindows) { const startTime = Date.now(); do { try { const ret = options.rmdirSync(p, options); return ret; } catch (er) { } } while (Date.now() - startTime < 500); } else { const ret = options.rmdirSync(p, options); return ret; } } module2.exports = rimraf; rimraf.sync = rimrafSync; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/remove/index.js var require_remove2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/remove/index.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var rimraf = require_rimraf2(); module2.exports = { remove: u(rimraf), removeSync: rimraf.sync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/empty/index.js var require_empty2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/empty/index.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var fs15 = __require("fs"); var path11 = __require("path"); var mkdir5 = require_mkdirs3(); var remove7 = require_remove2(); var emptyDir = u(function emptyDir2(dir, callback) { callback = callback || function() { }; fs15.readdir(dir, (err, items) => { if (err) return mkdir5.mkdirs(dir, callback); items = items.map((item) => path11.join(dir, item)); deleteItem(); function deleteItem() { const item = items.pop(); if (!item) return callback(); remove7.remove(item, (err2) => { if (err2) return callback(err2); deleteItem(); }); } }); }); function emptyDirSync(dir) { let items; try { items = fs15.readdirSync(dir); } catch (err) { return mkdir5.mkdirsSync(dir); } items.forEach((item) => { item = path11.join(dir, item); remove7.removeSync(item); }); } module2.exports = { emptyDirSync, emptydirSync: emptyDirSync, emptyDir, emptydir: emptyDir }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/file.js var require_file2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/file.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var path11 = __require("path"); var fs15 = require_graceful_fs(); var mkdir5 = require_mkdirs3(); var pathExists = require_path_exists2().pathExists; function createFile(file, callback) { function makeFile() { fs15.writeFile(file, "", (err) => { if (err) return callback(err); callback(); }); } fs15.stat(file, (err, stats) => { if (!err && stats.isFile()) return callback(); const dir = path11.dirname(file); pathExists(dir, (err2, dirExists) => { if (err2) return callback(err2); if (dirExists) return makeFile(); mkdir5.mkdirs(dir, (err3) => { if (err3) return callback(err3); makeFile(); }); }); }); } function createFileSync(file) { let stats; try { stats = fs15.statSync(file); } catch (e2) { } if (stats && stats.isFile()) return; const dir = path11.dirname(file); if (!fs15.existsSync(dir)) { mkdir5.mkdirsSync(dir); } fs15.writeFileSync(file, ""); } module2.exports = { createFile: u(createFile), createFileSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/link.js var require_link2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/link.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var path11 = __require("path"); var fs15 = require_graceful_fs(); var mkdir5 = require_mkdirs3(); var pathExists = require_path_exists2().pathExists; function createLink(srcpath, dstpath, callback) { function makeLink(srcpath2, dstpath2) { fs15.link(srcpath2, dstpath2, (err) => { if (err) return callback(err); callback(null); }); } pathExists(dstpath, (err, destinationExists) => { if (err) return callback(err); if (destinationExists) return callback(null); fs15.lstat(srcpath, (err2) => { if (err2) { err2.message = err2.message.replace("lstat", "ensureLink"); return callback(err2); } const dir = path11.dirname(dstpath); pathExists(dir, (err3, dirExists) => { if (err3) return callback(err3); if (dirExists) return makeLink(srcpath, dstpath); mkdir5.mkdirs(dir, (err4) => { if (err4) return callback(err4); makeLink(srcpath, dstpath); }); }); }); }); } function createLinkSync(srcpath, dstpath) { const destinationExists = fs15.existsSync(dstpath); if (destinationExists) return void 0; try { fs15.lstatSync(srcpath); } catch (err) { err.message = err.message.replace("lstat", "ensureLink"); throw err; } const dir = path11.dirname(dstpath); const dirExists = fs15.existsSync(dir); if (dirExists) return fs15.linkSync(srcpath, dstpath); mkdir5.mkdirsSync(dir); return fs15.linkSync(srcpath, dstpath); } module2.exports = { createLink: u(createLink), createLinkSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/symlink-paths.js var require_symlink_paths2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/symlink-paths.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var fs15 = require_graceful_fs(); var pathExists = require_path_exists2().pathExists; function symlinkPaths(srcpath, dstpath, callback) { if (path11.isAbsolute(srcpath)) { return fs15.lstat(srcpath, (err) => { if (err) { err.message = err.message.replace("lstat", "ensureSymlink"); return callback(err); } return callback(null, { "toCwd": srcpath, "toDst": srcpath }); }); } else { const dstdir = path11.dirname(dstpath); const relativeToDst = path11.join(dstdir, srcpath); return pathExists(relativeToDst, (err, exists) => { if (err) return callback(err); if (exists) { return callback(null, { "toCwd": relativeToDst, "toDst": srcpath }); } else { return fs15.lstat(srcpath, (err2) => { if (err2) { err2.message = err2.message.replace("lstat", "ensureSymlink"); return callback(err2); } return callback(null, { "toCwd": srcpath, "toDst": path11.relative(dstdir, srcpath) }); }); } }); } } function symlinkPathsSync(srcpath, dstpath) { let exists; if (path11.isAbsolute(srcpath)) { exists = fs15.existsSync(srcpath); if (!exists) throw new Error("absolute srcpath does not exist"); return { "toCwd": srcpath, "toDst": srcpath }; } else { const dstdir = path11.dirname(dstpath); const relativeToDst = path11.join(dstdir, srcpath); exists = fs15.existsSync(relativeToDst); if (exists) { return { "toCwd": relativeToDst, "toDst": srcpath }; } else { exists = fs15.existsSync(srcpath); if (!exists) throw new Error("relative srcpath does not exist"); return { "toCwd": srcpath, "toDst": path11.relative(dstdir, srcpath) }; } } } module2.exports = { symlinkPaths, symlinkPathsSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/symlink-type.js var require_symlink_type2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/symlink-type.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); function symlinkType(srcpath, type, callback) { callback = typeof type === "function" ? type : callback; type = typeof type === "function" ? false : type; if (type) return callback(null, type); fs15.lstat(srcpath, (err, stats) => { if (err) return callback(null, "file"); type = stats && stats.isDirectory() ? "dir" : "file"; callback(null, type); }); } function symlinkTypeSync(srcpath, type) { let stats; if (type) return type; try { stats = fs15.lstatSync(srcpath); } catch (e2) { return "file"; } return stats && stats.isDirectory() ? "dir" : "file"; } module2.exports = { symlinkType, symlinkTypeSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/symlink.js var require_symlink2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/symlink.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var path11 = __require("path"); var fs15 = require_graceful_fs(); var _mkdirs = require_mkdirs3(); var mkdirs = _mkdirs.mkdirs; var mkdirsSync = _mkdirs.mkdirsSync; var _symlinkPaths = require_symlink_paths2(); var symlinkPaths = _symlinkPaths.symlinkPaths; var symlinkPathsSync = _symlinkPaths.symlinkPathsSync; var _symlinkType = require_symlink_type2(); var symlinkType = _symlinkType.symlinkType; var symlinkTypeSync = _symlinkType.symlinkTypeSync; var pathExists = require_path_exists2().pathExists; function createSymlink(srcpath, dstpath, type, callback) { callback = typeof type === "function" ? type : callback; type = typeof type === "function" ? false : type; pathExists(dstpath, (err, destinationExists) => { if (err) return callback(err); if (destinationExists) return callback(null); symlinkPaths(srcpath, dstpath, (err2, relative8) => { if (err2) return callback(err2); srcpath = relative8.toDst; symlinkType(relative8.toCwd, type, (err3, type2) => { if (err3) return callback(err3); const dir = path11.dirname(dstpath); pathExists(dir, (err4, dirExists) => { if (err4) return callback(err4); if (dirExists) return fs15.symlink(srcpath, dstpath, type2, callback); mkdirs(dir, (err5) => { if (err5) return callback(err5); fs15.symlink(srcpath, dstpath, type2, callback); }); }); }); }); }); } function createSymlinkSync(srcpath, dstpath, type) { const destinationExists = fs15.existsSync(dstpath); if (destinationExists) return void 0; const relative8 = symlinkPathsSync(srcpath, dstpath); srcpath = relative8.toDst; type = symlinkTypeSync(relative8.toCwd, type); const dir = path11.dirname(dstpath); const exists = fs15.existsSync(dir); if (exists) return fs15.symlinkSync(srcpath, dstpath, type); mkdirsSync(dir); return fs15.symlinkSync(srcpath, dstpath, type); } module2.exports = { createSymlink: u(createSymlink), createSymlinkSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/index.js var require_ensure2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/ensure/index.js"(exports2, module2) { "use strict"; var file = require_file2(); var link4 = require_link2(); var symlink3 = require_symlink2(); module2.exports = { // file createFile: file.createFile, createFileSync: file.createFileSync, ensureFile: file.createFile, ensureFileSync: file.createFileSync, // link createLink: link4.createLink, createLinkSync: link4.createLinkSync, ensureLink: link4.createLink, ensureLinkSync: link4.createLinkSync, // symlink createSymlink: symlink3.createSymlink, createSymlinkSync: symlink3.createSymlinkSync, ensureSymlink: symlink3.createSymlink, ensureSymlinkSync: symlink3.createSymlinkSync }; } }); // ../../node_modules/.pnpm/jsonfile@4.0.0/node_modules/jsonfile/index.js var require_jsonfile3 = __commonJS2({ "../../node_modules/.pnpm/jsonfile@4.0.0/node_modules/jsonfile/index.js"(exports2, module2) { var _fs; try { _fs = require_graceful_fs(); } catch (_) { _fs = __require("fs"); } function readFile8(file, options, callback) { if (callback == null) { callback = options; options = {}; } if (typeof options === "string") { options = { encoding: options }; } options = options || {}; var fs15 = options.fs || _fs; var shouldThrow = true; if ("throws" in options) { shouldThrow = options.throws; } fs15.readFile(file, options, function(err, data) { if (err) return callback(err); data = stripBom(data); var obj; try { obj = JSON.parse(data, options ? options.reviver : null); } catch (err2) { if (shouldThrow) { err2.message = file + ": " + err2.message; return callback(err2); } else { return callback(null, null); } } callback(null, obj); }); } function readFileSync4(file, options) { options = options || {}; if (typeof options === "string") { options = { encoding: options }; } var fs15 = options.fs || _fs; var shouldThrow = true; if ("throws" in options) { shouldThrow = options.throws; } try { var content = fs15.readFileSync(file, options); content = stripBom(content); return JSON.parse(content, options.reviver); } catch (err) { if (shouldThrow) { err.message = file + ": " + err.message; throw err; } else { return null; } } } function stringify2(obj, options) { var spaces; var EOL = "\n"; if (typeof options === "object" && options !== null) { if (options.spaces) { spaces = options.spaces; } if (options.EOL) { EOL = options.EOL; } } var str = JSON.stringify(obj, options ? options.replacer : null, spaces); return str.replace(/\n/g, EOL) + EOL; } function writeFile6(file, obj, options, callback) { if (callback == null) { callback = options; options = {}; } options = options || {}; var fs15 = options.fs || _fs; var str = ""; try { str = stringify2(obj, options); } catch (err) { if (callback) callback(err, null); return; } fs15.writeFile(file, str, options, callback); } function writeFileSync(file, obj, options) { options = options || {}; var fs15 = options.fs || _fs; var str = stringify2(obj, options); return fs15.writeFileSync(file, str, options); } function stripBom(content) { if (Buffer.isBuffer(content)) content = content.toString("utf8"); content = content.replace(/^\uFEFF/, ""); return content; } var jsonfile = { readFile: readFile8, readFileSync: readFileSync4, writeFile: writeFile6, writeFileSync }; module2.exports = jsonfile; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/json/jsonfile.js var require_jsonfile4 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/json/jsonfile.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var jsonFile = require_jsonfile3(); module2.exports = { // jsonfile exports readJson: u(jsonFile.readFile), readJsonSync: jsonFile.readFileSync, writeJson: u(jsonFile.writeFile), writeJsonSync: jsonFile.writeFileSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/json/output-json.js var require_output_json2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/json/output-json.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var mkdir5 = require_mkdirs3(); var pathExists = require_path_exists2().pathExists; var jsonFile = require_jsonfile4(); function outputJson2(file, data, options, callback) { if (typeof options === "function") { callback = options; options = {}; } const dir = path11.dirname(file); pathExists(dir, (err, itDoes) => { if (err) return callback(err); if (itDoes) return jsonFile.writeJson(file, data, options, callback); mkdir5.mkdirs(dir, (err2) => { if (err2) return callback(err2); jsonFile.writeJson(file, data, options, callback); }); }); } module2.exports = outputJson2; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/json/output-json-sync.js var require_output_json_sync2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/json/output-json-sync.js"(exports2, module2) { "use strict"; var fs15 = require_graceful_fs(); var path11 = __require("path"); var mkdir5 = require_mkdirs3(); var jsonFile = require_jsonfile4(); function outputJsonSync(file, data, options) { const dir = path11.dirname(file); if (!fs15.existsSync(dir)) { mkdir5.mkdirsSync(dir); } jsonFile.writeJsonSync(file, data, options); } module2.exports = outputJsonSync; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/json/index.js var require_json2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/json/index.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var jsonFile = require_jsonfile4(); jsonFile.outputJson = u(require_output_json2()); jsonFile.outputJsonSync = require_output_json_sync2(); jsonFile.outputJSON = jsonFile.outputJson; jsonFile.outputJSONSync = jsonFile.outputJsonSync; jsonFile.writeJSON = jsonFile.writeJson; jsonFile.writeJSONSync = jsonFile.writeJsonSync; jsonFile.readJSON = jsonFile.readJson; jsonFile.readJSONSync = jsonFile.readJsonSync; module2.exports = jsonFile; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/move-sync/move-sync.js var require_move_sync3 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/move-sync/move-sync.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var path11 = __require("path"); var copySync = require_copy_sync4().copySync; var removeSync = require_remove2().removeSync; var mkdirpSync = require_mkdirs3().mkdirpSync; var stat2 = require_stat2(); function moveSync(src, dest, opts) { opts = opts || {}; const overwrite = opts.overwrite || opts.clobber || false; const { srcStat } = stat2.checkPathsSync(src, dest, "move"); stat2.checkParentPathsSync(src, srcStat, dest, "move"); mkdirpSync(path11.dirname(dest)); return doRename(src, dest, overwrite); } function doRename(src, dest, overwrite) { if (overwrite) { removeSync(dest); return rename(src, dest, overwrite); } if (fs15.existsSync(dest)) throw new Error("dest already exists."); return rename(src, dest, overwrite); } function rename(src, dest, overwrite) { try { fs15.renameSync(src, dest); } catch (err) { if (err.code !== "EXDEV") throw err; return moveAcrossDevice(src, dest, overwrite); } } function moveAcrossDevice(src, dest, overwrite) { const opts = { overwrite, errorOnExist: true }; copySync(src, dest, opts); return removeSync(src); } module2.exports = moveSync; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/move-sync/index.js var require_move_sync4 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/move-sync/index.js"(exports2, module2) { "use strict"; module2.exports = { moveSync: require_move_sync3() }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/move/move.js var require_move3 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/move/move.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var path11 = __require("path"); var copy3 = require_copy4().copy; var remove7 = require_remove2().remove; var mkdirp4 = require_mkdirs3().mkdirp; var pathExists = require_path_exists2().pathExists; var stat2 = require_stat2(); function move3(src, dest, opts, cb) { if (typeof opts === "function") { cb = opts; opts = {}; } const overwrite = opts.overwrite || opts.clobber || false; stat2.checkPaths(src, dest, "move", (err, stats) => { if (err) return cb(err); const { srcStat } = stats; stat2.checkParentPaths(src, srcStat, dest, "move", (err2) => { if (err2) return cb(err2); mkdirp4(path11.dirname(dest), (err3) => { if (err3) return cb(err3); return doRename(src, dest, overwrite, cb); }); }); }); } function doRename(src, dest, overwrite, cb) { if (overwrite) { return remove7(dest, (err) => { if (err) return cb(err); return rename(src, dest, overwrite, cb); }); } pathExists(dest, (err, destExists) => { if (err) return cb(err); if (destExists) return cb(new Error("dest already exists.")); return rename(src, dest, overwrite, cb); }); } function rename(src, dest, overwrite, cb) { fs15.rename(src, dest, (err) => { if (!err) return cb(); if (err.code !== "EXDEV") return cb(err); return moveAcrossDevice(src, dest, overwrite, cb); }); } function moveAcrossDevice(src, dest, overwrite, cb) { const opts = { overwrite, errorOnExist: true }; copy3(src, dest, opts, (err) => { if (err) return cb(err); return remove7(src, cb); }); } module2.exports = move3; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/move/index.js var require_move4 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/move/index.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; module2.exports = { move: u(require_move3()) }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/output/index.js var require_output2 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/output/index.js"(exports2, module2) { "use strict"; var u = require_universalify2().fromCallback; var fs15 = require_graceful_fs(); var path11 = __require("path"); var mkdir5 = require_mkdirs3(); var pathExists = require_path_exists2().pathExists; function outputFile2(file, data, encoding, callback) { if (typeof encoding === "function") { callback = encoding; encoding = "utf8"; } const dir = path11.dirname(file); pathExists(dir, (err, itDoes) => { if (err) return callback(err); if (itDoes) return fs15.writeFile(file, data, encoding, callback); mkdir5.mkdirs(dir, (err2) => { if (err2) return callback(err2); fs15.writeFile(file, data, encoding, callback); }); }); } function outputFileSync(file, ...args2) { const dir = path11.dirname(file); if (fs15.existsSync(dir)) { return fs15.writeFileSync(file, ...args2); } mkdir5.mkdirsSync(dir); fs15.writeFileSync(file, ...args2); } module2.exports = { outputFile: u(outputFile2), outputFileSync }; } }); // ../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/index.js var require_lib8 = __commonJS2({ "../../node_modules/.pnpm/fs-extra@8.0.1/node_modules/fs-extra/lib/index.js"(exports2, module2) { "use strict"; module2.exports = Object.assign( {}, // Export promiseified graceful-fs: require_fs2(), // Export extra methods: require_copy_sync4(), require_copy4(), require_empty2(), require_ensure2(), require_json2(), require_mkdirs3(), require_move_sync4(), require_move4(), require_output2(), require_path_exists2(), require_remove2() ); var fs15 = __require("fs"); if (Object.getOwnPropertyDescriptor(fs15, "promises")) { Object.defineProperty(module2.exports, "promises", { get() { return fs15.promises; } }); } } }); // ../../node_modules/.pnpm/async-sema@3.0.0/node_modules/async-sema/lib/index.js var require_lib9 = __commonJS2({ "../../node_modules/.pnpm/async-sema@3.0.0/node_modules/async-sema/lib/index.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); var events_1 = __importDefault2(__require("events")); function arrayMove(src, srcIndex, dst, dstIndex, len) { for (let j = 0; j < len; ++j) { dst[j + dstIndex] = src[j + srcIndex]; src[j + srcIndex] = void 0; } } function pow2AtLeast(n) { n = n >>> 0; n = n - 1; n = n | n >> 1; n = n | n >> 2; n = n | n >> 4; n = n | n >> 8; n = n | n >> 16; return n + 1; } function getCapacity(capacity) { return pow2AtLeast(Math.min(Math.max(16, capacity), 1073741824)); } var Deque = class { constructor(capacity) { this._capacity = getCapacity(capacity); this._length = 0; this._front = 0; this.arr = []; } push(item) { const length = this._length; this.checkCapacity(length + 1); const i = this._front + length & this._capacity - 1; this.arr[i] = item; this._length = length + 1; return length + 1; } pop() { const length = this._length; if (length === 0) { return void 0; } const i = this._front + length - 1 & this._capacity - 1; const ret = this.arr[i]; this.arr[i] = void 0; this._length = length - 1; return ret; } shift() { const length = this._length; if (length === 0) { return void 0; } const front = this._front; const ret = this.arr[front]; this.arr[front] = void 0; this._front = front + 1 & this._capacity - 1; this._length = length - 1; return ret; } get length() { return this._length; } checkCapacity(size) { if (this._capacity < size) { this.resizeTo(getCapacity(this._capacity * 1.5 + 16)); } } resizeTo(capacity) { const oldCapacity = this._capacity; this._capacity = capacity; const front = this._front; const length = this._length; if (front + length > oldCapacity) { const moveItemsCount = front + length & oldCapacity - 1; arrayMove(this.arr, 0, this.arr, oldCapacity, moveItemsCount); } } }; var ReleaseEmitter = class extends events_1.default { }; function isFn(x) { return typeof x === "function"; } function defaultInit() { return "1"; } var Sema = class { constructor(nr, { initFn = defaultInit, pauseFn, resumeFn, capacity = 10 } = {}) { if (isFn(pauseFn) !== isFn(resumeFn)) { throw new Error("pauseFn and resumeFn must be both set for pausing"); } this.nrTokens = nr; this.free = new Deque(nr); this.waiting = new Deque(capacity); this.releaseEmitter = new ReleaseEmitter(); this.noTokens = initFn === defaultInit; this.pauseFn = pauseFn; this.resumeFn = resumeFn; this.paused = false; this.releaseEmitter.on("release", (token) => { const p = this.waiting.shift(); if (p) { p.resolve(token); } else { if (this.resumeFn && this.paused) { this.paused = false; this.resumeFn(); } this.free.push(token); } }); for (let i = 0; i < nr; i++) { this.free.push(initFn()); } } async acquire() { let token = this.free.pop(); if (token !== void 0) { return token; } return new Promise((resolve14, reject) => { if (this.pauseFn && !this.paused) { this.paused = true; this.pauseFn(); } this.waiting.push({ resolve: resolve14, reject }); }); } release(token) { this.releaseEmitter.emit("release", this.noTokens ? "1" : token); } drain() { const a = new Array(this.nrTokens); for (let i = 0; i < this.nrTokens; i++) { a[i] = this.acquire(); } return Promise.all(a); } nrWaiting() { return this.waiting.length; } }; exports2.Sema = Sema; function RateLimit(rps, { timeUnit = 1e3, uniformDistribution = false } = {}) { const sema = new Sema(uniformDistribution ? 1 : rps); const delay = uniformDistribution ? timeUnit / rps : timeUnit; return async function rl() { await sema.acquire(); setTimeout(() => sema.release(), delay); }; } exports2.RateLimit = RateLimit; } }); // ../client/dist/utils/hashes.js var require_hashes = __commonJS2({ "../client/dist/utils/hashes.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var hashes_exports = {}; __export4(hashes_exports, { hash: () => hash, hashes: () => hashes, mapToObject: () => mapToObject }); module2.exports = __toCommonJS4(hashes_exports); var import_crypto3 = __require("crypto"); var import_fs_extra25 = __toESM4(require_lib8()); var import_async_sema = require_lib9(); function hash(buf) { return (0, import_crypto3.createHash)("sha1").update(buf).digest("hex"); } var mapToObject = (map) => { const obj = {}; for (const [key, value] of map) { if (typeof key === "undefined") continue; obj[key] = value; } return obj; }; async function hashes(files, map = /* @__PURE__ */ new Map()) { const semaphore = new import_async_sema.Sema(100); await Promise.all( files.map(async (name) => { await semaphore.acquire(); const stat2 = await import_fs_extra25.default.lstat(name); const mode = stat2.mode; let data; const isDirectory2 = stat2.isDirectory(); let h; if (!isDirectory2) { if (stat2.isSymbolicLink()) { const link4 = await import_fs_extra25.default.readlink(name); data = Buffer.from(link4, "utf8"); } else { data = await import_fs_extra25.default.readFile(name); } h = hash(data); } const entry = map.get(h); if (entry) { const names = new Set(entry.names); names.add(name); entry.names = [...names]; } else { map.set(h, { names: [name], data, mode }); } semaphore.release(); }) ); return map; } } }); // ../../node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry_operation.js var require_retry_operation2 = __commonJS2({ "../../node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry_operation.js"(exports2, module2) { function RetryOperation(timeouts, options) { if (typeof options === "boolean") { options = { forever: options }; } this._originalTimeouts = JSON.parse(JSON.stringify(timeouts)); this._timeouts = timeouts; this._options = options || {}; this._maxRetryTime = options && options.maxRetryTime || Infinity; this._fn = null; this._errors = []; this._attempts = 1; this._operationTimeout = null; this._operationTimeoutCb = null; this._timeout = null; this._operationStart = null; if (this._options.forever) { this._cachedTimeouts = this._timeouts.slice(0); } } module2.exports = RetryOperation; RetryOperation.prototype.reset = function() { this._attempts = 1; this._timeouts = this._originalTimeouts; }; RetryOperation.prototype.stop = function() { if (this._timeout) { clearTimeout(this._timeout); } this._timeouts = []; this._cachedTimeouts = null; }; RetryOperation.prototype.retry = function(err) { if (this._timeout) { clearTimeout(this._timeout); } if (!err) { return false; } var currentTime = (/* @__PURE__ */ new Date()).getTime(); if (err && currentTime - this._operationStart >= this._maxRetryTime) { this._errors.unshift(new Error("RetryOperation timeout occurred")); return false; } this._errors.push(err); var timeout = this._timeouts.shift(); if (timeout === void 0) { if (this._cachedTimeouts) { this._errors.splice(this._errors.length - 1, this._errors.length); this._timeouts = this._cachedTimeouts.slice(0); timeout = this._timeouts.shift(); } else { return false; } } var self2 = this; var timer = setTimeout(function() { self2._attempts++; if (self2._operationTimeoutCb) { self2._timeout = setTimeout(function() { self2._operationTimeoutCb(self2._attempts); }, self2._operationTimeout); if (self2._options.unref) { self2._timeout.unref(); } } self2._fn(self2._attempts); }, timeout); if (this._options.unref) { timer.unref(); } return true; }; RetryOperation.prototype.attempt = function(fn2, timeoutOps) { this._fn = fn2; if (timeoutOps) { if (timeoutOps.timeout) { this._operationTimeout = timeoutOps.timeout; } if (timeoutOps.cb) { this._operationTimeoutCb = timeoutOps.cb; } } var self2 = this; if (this._operationTimeoutCb) { this._timeout = setTimeout(function() { self2._operationTimeoutCb(); }, self2._operationTimeout); } this._operationStart = (/* @__PURE__ */ new Date()).getTime(); this._fn(this._attempts); }; RetryOperation.prototype.try = function(fn2) { console.log("Using RetryOperation.try() is deprecated"); this.attempt(fn2); }; RetryOperation.prototype.start = function(fn2) { console.log("Using RetryOperation.start() is deprecated"); this.attempt(fn2); }; RetryOperation.prototype.start = RetryOperation.prototype.try; RetryOperation.prototype.errors = function() { return this._errors; }; RetryOperation.prototype.attempts = function() { return this._attempts; }; RetryOperation.prototype.mainError = function() { if (this._errors.length === 0) { return null; } var counts = {}; var mainError = null; var mainErrorCount = 0; for (var i = 0; i < this._errors.length; i++) { var error3 = this._errors[i]; var message2 = error3.message; var count = (counts[message2] || 0) + 1; counts[message2] = count; if (count >= mainErrorCount) { mainError = error3; mainErrorCount = count; } } return mainError; }; } }); // ../../node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry.js var require_retry3 = __commonJS2({ "../../node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry.js"(exports2) { var RetryOperation = require_retry_operation2(); exports2.operation = function(options) { var timeouts = exports2.timeouts(options); return new RetryOperation(timeouts, { forever: options && options.forever, unref: options && options.unref, maxRetryTime: options && options.maxRetryTime }); }; exports2.timeouts = function(options) { if (options instanceof Array) { return [].concat(options); } var opts = { retries: 10, factor: 2, minTimeout: 1 * 1e3, maxTimeout: Infinity, randomize: false }; for (var key in options) { opts[key] = options[key]; } if (opts.minTimeout > opts.maxTimeout) { throw new Error("minTimeout is greater than maxTimeout"); } var timeouts = []; for (var i = 0; i < opts.retries; i++) { timeouts.push(this.createTimeout(i, opts)); } if (options && options.forever && !timeouts.length) { timeouts.push(this.createTimeout(i, opts)); } timeouts.sort(function(a, b) { return a - b; }); return timeouts; }; exports2.createTimeout = function(attempt, opts) { var random = opts.randomize ? Math.random() + 1 : 1; var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt)); timeout = Math.min(timeout, opts.maxTimeout); return timeout; }; exports2.wrap = function(obj, options, methods) { if (options instanceof Array) { methods = options; options = null; } if (!methods) { methods = []; for (var key in obj) { if (typeof obj[key] === "function") { methods.push(key); } } } for (var i = 0; i < methods.length; i++) { var method = methods[i]; var original = obj[method]; obj[method] = function retryWrapper(original2) { var op = exports2.operation(options); var args2 = Array.prototype.slice.call(arguments, 1); var callback = args2.pop(); args2.push(function(err) { if (op.retry(err)) { return; } if (err) { arguments[0] = op.mainError(); } callback.apply(this, arguments); }); op.attempt(function() { original2.apply(obj, args2); }); }.bind(obj, original); obj[method].options = options; } }; } }); // ../../node_modules/.pnpm/retry@0.12.0/node_modules/retry/index.js var require_retry4 = __commonJS2({ "../../node_modules/.pnpm/retry@0.12.0/node_modules/retry/index.js"(exports2, module2) { module2.exports = require_retry3(); } }); // ../../node_modules/.pnpm/async-retry@1.2.3/node_modules/async-retry/lib/index.js var require_lib10 = __commonJS2({ "../../node_modules/.pnpm/async-retry@1.2.3/node_modules/async-retry/lib/index.js"(exports2, module2) { var retrier = require_retry4(); function retry6(fn2, opts) { function run2(resolve14, reject) { var options = opts || {}; var op = retrier.operation(options); function bail(err) { reject(err || new Error("Aborted")); } function onError(err, num) { if (err.bail) { bail(err); return; } if (!op.retry(err)) { reject(op.mainError()); } else if (options.onRetry) { options.onRetry(err, num); } } function runAttempt(num) { var val; try { val = fn2(bail, num); } catch (err) { onError(err, num); return; } Promise.resolve(val).then(resolve14).catch(function catchIt(err) { onError(err, num); }); } op.attempt(runAttempt); } return new Promise(run2); } module2.exports = retry6; } }); // ../../node_modules/.pnpm/ignore@4.0.6/node_modules/ignore/index.js var require_ignore = __commonJS2({ "../../node_modules/.pnpm/ignore@4.0.6/node_modules/ignore/index.js"(exports2, module2) { function make_array(subject) { return Array.isArray(subject) ? subject : [subject]; } var REGEX_BLANK_LINE = /^\s+$/; var REGEX_LEADING_EXCAPED_EXCLAMATION = /^\\!/; var REGEX_LEADING_EXCAPED_HASH = /^\\#/; var SLASH = "/"; var KEY_IGNORE = typeof Symbol !== "undefined" ? Symbol.for("node-ignore") : "node-ignore"; var define2 = (object, key, value) => Object.defineProperty(object, key, { value }); var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g; var sanitizeRange = (range) => range.replace( REGEX_REGEXP_RANGE, (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) ? match : "" ); var DEFAULT_REPLACER_PREFIX = [ // > Trailing spaces are ignored unless they are quoted with backslash ("\") [ // (a\ ) -> (a ) // (a ) -> (a) // (a \ ) -> (a ) /\\?\s+$/, (match) => match.indexOf("\\") === 0 ? " " : "" ], // replace (\ ) with ' ' [ /\\\s/g, () => " " ], // Escape metacharacters // which is written down by users but means special for regular expressions. // > There are 12 characters with special meanings: // > - the backslash \, // > - the caret ^, // > - the dollar sign $, // > - the period or dot ., // > - the vertical bar or pipe symbol |, // > - the question mark ?, // > - the asterisk or star *, // > - the plus sign +, // > - the opening parenthesis (, // > - the closing parenthesis ), // > - and the opening square bracket [, // > - the opening curly brace {, // > These special characters are often called "metacharacters". [ /[\\^$.|*+(){]/g, (match) => `\\${match}` ], [ // > [abc] matches any character inside the brackets // > (in this case a, b, or c); /\[([^\]/]*)($|\])/g, (match, p1, p2) => p2 === "]" ? `[${sanitizeRange(p1)}]` : `\\${match}` ], [ // > a question mark (?) matches a single character /(?!\\)\?/g, () => "[^/]" ], // leading slash [ // > A leading slash matches the beginning of the pathname. // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". // A leading slash matches the beginning of the pathname /^\//, () => "^" ], // replace special metacharacter slash after the leading slash [ /\//g, () => "\\/" ], [ // > A leading "**" followed by a slash means match in all directories. // > For example, "**/foo" matches file or directory "foo" anywhere, // > the same as pattern "foo". // > "**/foo/bar" matches file or directory "bar" anywhere that is directly // > under directory "foo". // Notice that the '*'s have been replaced as '\\*' /^\^*\\\*\\\*\\\//, // '**/foo' <-> 'foo' () => "^(?:.*\\/)?" ] ]; var DEFAULT_REPLACER_SUFFIX = [ // starting [ // there will be no leading '/' // (which has been replaced by section "leading slash") // If starts with '**', adding a '^' to the regular expression also works /^(?=[^^])/, function startingReplacer() { return !/\/(?!$)/.test(this) ? "(?:^|\\/)" : "^"; } ], // two globstars [ // Use lookahead assertions so that we could match more than one `'/**'` /\\\/\\\*\\\*(?=\\\/|$)/g, // Zero, one or several directories // should not use '*', or it will be replaced by the next replacer // Check if it is not the last `'/**'` (match, index, str) => index + 6 < str.length ? "(?:\\/[^\\/]+)*" : "\\/.+" ], // intermediate wildcards [ // Never replace escaped '*' // ignore rule '\*' will match the path '*' // 'abc.*/' -> go // 'abc.*' -> skip this rule /(^|[^\\]+)\\\*(?=.+)/g, // '*.js' matches '.js' // '*.js' doesn't match 'abc' (match, p1) => `${p1}[^\\/]*` ], // trailing wildcard [ /(\^|\\\/)?\\\*$/, (match, p1) => { const prefix = p1 ? `${p1}[^/]+` : "[^/]*"; return `${prefix}(?=$|\\/$)`; } ], [ // unescape /\\\\\\/g, () => "\\" ] ]; var POSITIVE_REPLACERS = [ ...DEFAULT_REPLACER_PREFIX, // 'f' // matches // - /f(end) // - /f/ // - (start)f(end) // - (start)f/ // doesn't match // - oof // - foo // pseudo: // -> (^|/)f(/|$) // ending [ // 'js' will not match 'js.' // 'ab' will not match 'abc' /(?:[^*/])$/, // 'js*' will not match 'a.js' // 'js/' will not match 'a.js' // 'js' will match 'a.js' and 'a.js/' (match) => `${match}(?=$|\\/)` ], ...DEFAULT_REPLACER_SUFFIX ]; var NEGATIVE_REPLACERS = [ ...DEFAULT_REPLACER_PREFIX, // #24, #38 // The MISSING rule of [gitignore docs](https://git-scm.com/docs/gitignore) // A negative pattern without a trailing wildcard should not // re-include the things inside that directory. // eg: // ['node_modules/*', '!node_modules'] // should ignore `node_modules/a.js` [ /(?:[^*])$/, (match) => `${match}(?=$|\\/$)` ], ...DEFAULT_REPLACER_SUFFIX ]; var cache = /* @__PURE__ */ Object.create(null); var make_regex = (pattern, negative, ignorecase) => { const r = cache[pattern]; if (r) { return r; } const replacers = negative ? NEGATIVE_REPLACERS : POSITIVE_REPLACERS; const source = replacers.reduce( (prev, current) => prev.replace(current[0], current[1].bind(pattern)), pattern ); return cache[pattern] = ignorecase ? new RegExp(source, "i") : new RegExp(source); }; var checkPattern = (pattern) => pattern && typeof pattern === "string" && !REGEX_BLANK_LINE.test(pattern) && pattern.indexOf("#") !== 0; var createRule = (pattern, ignorecase) => { const origin = pattern; let negative = false; if (pattern.indexOf("!") === 0) { negative = true; pattern = pattern.substr(1); } pattern = pattern.replace(REGEX_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_LEADING_EXCAPED_HASH, "#"); const regex = make_regex(pattern, negative, ignorecase); return { origin, pattern, negative, regex }; }; var IgnoreBase = class { constructor({ ignorecase = true } = {}) { this._rules = []; this._ignorecase = ignorecase; define2(this, KEY_IGNORE, true); this._initCache(); } _initCache() { this._cache = /* @__PURE__ */ Object.create(null); } // @param {Array.|string|Ignore} pattern add(pattern) { this._added = false; if (typeof pattern === "string") { pattern = pattern.split(/\r?\n/g); } make_array(pattern).forEach(this._addPattern, this); if (this._added) { this._initCache(); } return this; } // legacy addPattern(pattern) { return this.add(pattern); } _addPattern(pattern) { if (pattern && pattern[KEY_IGNORE]) { this._rules = this._rules.concat(pattern._rules); this._added = true; return; } if (checkPattern(pattern)) { const rule = createRule(pattern, this._ignorecase); this._added = true; this._rules.push(rule); } } filter(paths) { return make_array(paths).filter((path11) => this._filter(path11)); } createFilter() { return (path11) => this._filter(path11); } ignores(path11) { return !this._filter(path11); } // @returns `Boolean` true if the `path` is NOT ignored _filter(path11, slices) { if (!path11) { return false; } if (path11 in this._cache) { return this._cache[path11]; } if (!slices) { slices = path11.split(SLASH); } slices.pop(); return this._cache[path11] = slices.length ? this._filter(slices.join(SLASH) + SLASH, slices) && this._test(path11) : this._test(path11); } // @returns {Boolean} true if a file is NOT ignored _test(path11) { let matched = 0; this._rules.forEach((rule) => { if (!(matched ^ rule.negative)) { matched = rule.negative ^ rule.regex.test(path11); } }); return !matched; } }; if ( // Detect `process` so that it can run in browsers. typeof process !== "undefined" && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === "win32") ) { const filter = IgnoreBase.prototype._filter; const make_posix = (str) => /^\\\\\?\\/.test(str) || /[^\x00-\x80]+/.test(str) ? str : str.replace(/\\/g, "/"); IgnoreBase.prototype._filter = function filterWin32(path11, slices) { path11 = make_posix(path11); return filter.call(this, path11, slices); }; } module2.exports = (options) => new IgnoreBase(options); } }); // ../client/package.json var require_package = __commonJS2({ "../client/package.json"(exports2, module2) { module2.exports = { name: "@vercel/client", version: "17.2.31", main: "dist/index.js", typings: "dist/index.d.ts", homepage: "https://vercel.com", license: "Apache-2.0", files: [ "dist" ], repository: { type: "git", url: "https://github.com/vercel/vercel.git", directory: "packages/client" }, scripts: { build: "node ../../utils/build.mjs", test: "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "vitest-run": "vitest -c ./vitest.config.mts", "vitest-unit": "glob --absolute 'tests/unit.*.test.ts'", "vitest-e2e": "glob --absolute 'tests/integration-*.test.ts'", "type-check": "tsc --noEmit" }, engines: { node: ">= 20" }, devDependencies: { "@types/async-retry": "1.4.5", "@types/fs-extra": "7.0.0", "@types/jest": "27.4.1", "@types/minimatch": "3.0.5", "@types/ms": "0.7.30", "@types/node": "20.11.0", "@types/node-fetch": "2.5.4", "@types/recursive-readdir": "2.2.0", "@types/tar-fs": "1.16.1", "jest-junit": "16.0.0", typescript: "4.9.5", vitest: "2.0.1" }, dependencies: { "@vercel/build-utils": "workspace:*", "@vercel/error-utils": "workspace:*", "@vercel/microfrontends": "1.2.2", "@vercel/routing-utils": "workspace:*", "async-retry": "1.2.3", "async-sema": "3.0.0", "fs-extra": "8.0.1", ignore: "4.0.6", minimatch: "5.0.1", ms: "2.1.2", "node-fetch": "2.6.7", querystring: "^0.2.0", "sleep-promise": "8.0.1", "tar-fs": "1.16.3" } }; } }); // ../client/dist/pkg.js var require_pkg = __commonJS2({ "../client/dist/pkg.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var pkg_exports2 = {}; __export4(pkg_exports2, { pkgVersion: () => pkgVersion }); module2.exports = __toCommonJS4(pkg_exports2); var pkg = require_package(); var pkgVersion = pkg.version; } }); // ../../node_modules/.pnpm/minimatch@5.0.1/node_modules/minimatch/lib/path.js var require_path2 = __commonJS2({ "../../node_modules/.pnpm/minimatch@5.0.1/node_modules/minimatch/lib/path.js"(exports2, module2) { var isWindows = typeof process === "object" && process && process.platform === "win32"; module2.exports = isWindows ? { sep: "\\" } : { sep: "/" }; } }); // ../../node_modules/.pnpm/balanced-match@1.0.2/node_modules/balanced-match/index.js var require_balanced_match = __commonJS2({ "../../node_modules/.pnpm/balanced-match@1.0.2/node_modules/balanced-match/index.js"(exports2, module2) { "use strict"; module2.exports = balanced; function balanced(a, b, str) { if (a instanceof RegExp) a = maybeMatch(a, str); if (b instanceof RegExp) b = maybeMatch(b, str); var r = range(a, b, str); return r && { start: r[0], end: r[1], pre: str.slice(0, r[0]), body: str.slice(r[0] + a.length, r[1]), post: str.slice(r[1] + b.length) }; } function maybeMatch(reg, str) { var m = str.match(reg); return m ? m[0] : null; } balanced.range = range; function range(a, b, str) { var begs, beg, left, right, result; var ai = str.indexOf(a); var bi = str.indexOf(b, ai + 1); var i = ai; if (ai >= 0 && bi > 0) { if (a === b) { return [ai, bi]; } begs = []; left = str.length; while (i >= 0 && !result) { if (i == ai) { begs.push(i); ai = str.indexOf(a, i + 1); } else if (begs.length == 1) { result = [begs.pop(), bi]; } else { beg = begs.pop(); if (beg < left) { left = beg; right = bi; } bi = str.indexOf(b, i + 1); } i = ai < bi && ai >= 0 ? ai : bi; } if (begs.length) { result = [left, right]; } } return result; } } }); // ../../node_modules/.pnpm/brace-expansion@2.0.1/node_modules/brace-expansion/index.js var require_brace_expansion = __commonJS2({ "../../node_modules/.pnpm/brace-expansion@2.0.1/node_modules/brace-expansion/index.js"(exports2, module2) { var balanced = require_balanced_match(); module2.exports = expandTop; var escSlash = "\0SLASH" + Math.random() + "\0"; var escOpen = "\0OPEN" + Math.random() + "\0"; var escClose = "\0CLOSE" + Math.random() + "\0"; var escComma = "\0COMMA" + Math.random() + "\0"; var escPeriod = "\0PERIOD" + Math.random() + "\0"; function numeric(str) { return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); } function escapeBraces(str) { return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); } function unescapeBraces(str) { return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); } function parseCommaParts(str) { if (!str) return [""]; var parts = []; var m = balanced("{", "}", str); if (!m) return str.split(","); var pre = m.pre; var body = m.body; var post = m.post; var p = pre.split(","); p[p.length - 1] += "{" + body + "}"; var postParts = parseCommaParts(post); if (post.length) { p[p.length - 1] += postParts.shift(); p.push.apply(p, postParts); } parts.push.apply(parts, p); return parts; } function expandTop(str) { if (!str) return []; if (str.substr(0, 2) === "{}") { str = "\\{\\}" + str.substr(2); } return expand(escapeBraces(str), true).map(unescapeBraces); } function embrace(str) { return "{" + str + "}"; } function isPadded(el) { return /^-?0\d/.test(el); } function lte(i, y) { return i <= y; } function gte(i, y) { return i >= y; } function expand(str, isTop) { var expansions = []; var m = balanced("{", "}", str); if (!m) return [str]; var pre = m.pre; var post = m.post.length ? expand(m.post, false) : [""]; if (/\$$/.test(m.pre)) { for (var k = 0; k < post.length; k++) { var expansion = pre + "{" + m.body + "}" + post[k]; expansions.push(expansion); } } else { var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); var isSequence = isNumericSequence || isAlphaSequence; var isOptions = m.body.indexOf(",") >= 0; if (!isSequence && !isOptions) { if (m.post.match(/,.*\}/)) { str = m.pre + "{" + m.body + escClose + m.post; return expand(str); } return [str]; } var n; if (isSequence) { n = m.body.split(/\.\./); } else { n = parseCommaParts(m.body); if (n.length === 1) { n = expand(n[0], false).map(embrace); if (n.length === 1) { return post.map(function(p) { return m.pre + n[0] + p; }); } } } var N; if (isSequence) { var x = numeric(n[0]); var y = numeric(n[1]); var width = Math.max(n[0].length, n[1].length); var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; var test = lte; var reverse = y < x; if (reverse) { incr *= -1; test = gte; } var pad = n.some(isPadded); N = []; for (var i = x; test(i, y); i += incr) { var c; if (isAlphaSequence) { c = String.fromCharCode(i); if (c === "\\") c = ""; } else { c = String(i); if (pad) { var need = width - c.length; if (need > 0) { var z = new Array(need + 1).join("0"); if (i < 0) c = "-" + z + c.slice(1); else c = z + c; } } } N.push(c); } } else { N = []; for (var j = 0; j < n.length; j++) { N.push.apply(N, expand(n[j], false)); } } for (var j = 0; j < N.length; j++) { for (var k = 0; k < post.length; k++) { var expansion = pre + N[j] + post[k]; if (!isTop || isSequence || expansion) expansions.push(expansion); } } } return expansions; } } }); // ../../node_modules/.pnpm/minimatch@5.0.1/node_modules/minimatch/minimatch.js var require_minimatch = __commonJS2({ "../../node_modules/.pnpm/minimatch@5.0.1/node_modules/minimatch/minimatch.js"(exports2, module2) { var minimatch5 = module2.exports = (p, pattern, options = {}) => { assertValidPattern(pattern); if (!options.nocomment && pattern.charAt(0) === "#") { return false; } return new Minimatch(pattern, options).match(p); }; module2.exports = minimatch5; var path11 = require_path2(); minimatch5.sep = path11.sep; var GLOBSTAR = Symbol("globstar **"); minimatch5.GLOBSTAR = GLOBSTAR; var expand = require_brace_expansion(); var plTypes = { "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, "?": { open: "(?:", close: ")?" }, "+": { open: "(?:", close: ")+" }, "*": { open: "(?:", close: ")*" }, "@": { open: "(?:", close: ")" } }; var qmark = "[^/]"; var star = qmark + "*?"; var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; var charSet = (s) => s.split("").reduce((set2, c) => { set2[c] = true; return set2; }, {}); var reSpecials = charSet("().*{}+?[]^$\\!"); var addPatternStartSet = charSet("[.("); var slashSplit = /\/+/; minimatch5.filter = (pattern, options = {}) => (p, i, list10) => minimatch5(p, pattern, options); var ext = (a, b = {}) => { const t = {}; Object.keys(a).forEach((k) => t[k] = a[k]); Object.keys(b).forEach((k) => t[k] = b[k]); return t; }; minimatch5.defaults = (def) => { if (!def || typeof def !== "object" || !Object.keys(def).length) { return minimatch5; } const orig = minimatch5; const m = (p, pattern, options) => orig(p, pattern, ext(def, options)); m.Minimatch = class Minimatch extends orig.Minimatch { constructor(pattern, options) { super(pattern, ext(def, options)); } }; m.Minimatch.defaults = (options) => orig.defaults(ext(def, options)).Minimatch; m.filter = (pattern, options) => orig.filter(pattern, ext(def, options)); m.defaults = (options) => orig.defaults(ext(def, options)); m.makeRe = (pattern, options) => orig.makeRe(pattern, ext(def, options)); m.braceExpand = (pattern, options) => orig.braceExpand(pattern, ext(def, options)); m.match = (list10, pattern, options) => orig.match(list10, pattern, ext(def, options)); return m; }; minimatch5.braceExpand = (pattern, options) => braceExpand(pattern, options); var braceExpand = (pattern, options = {}) => { assertValidPattern(pattern); if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { return [pattern]; } return expand(pattern); }; var MAX_PATTERN_LENGTH = 1024 * 64; var assertValidPattern = (pattern) => { if (typeof pattern !== "string") { throw new TypeError("invalid pattern"); } if (pattern.length > MAX_PATTERN_LENGTH) { throw new TypeError("pattern is too long"); } }; var SUBPARSE = Symbol("subparse"); minimatch5.makeRe = (pattern, options) => new Minimatch(pattern, options || {}).makeRe(); minimatch5.match = (list10, pattern, options = {}) => { const mm = new Minimatch(pattern, options); list10 = list10.filter((f) => mm.match(f)); if (mm.options.nonull && !list10.length) { list10.push(pattern); } return list10; }; var globUnescape = (s) => s.replace(/\\(.)/g, "$1"); var regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); var Minimatch = class { constructor(pattern, options) { assertValidPattern(pattern); if (!options) options = {}; this.options = options; this.set = []; this.pattern = pattern; this.regexp = null; this.negate = false; this.comment = false; this.empty = false; this.partial = !!options.partial; this.make(); } debug() { } make() { const pattern = this.pattern; const options = this.options; if (!options.nocomment && pattern.charAt(0) === "#") { this.comment = true; return; } if (!pattern) { this.empty = true; return; } this.parseNegate(); let set2 = this.globSet = this.braceExpand(); if (options.debug) this.debug = (...args2) => console.error(...args2); this.debug(this.pattern, set2); set2 = this.globParts = set2.map((s) => s.split(slashSplit)); this.debug(this.pattern, set2); set2 = set2.map((s, si, set3) => s.map(this.parse, this)); this.debug(this.pattern, set2); set2 = set2.filter((s) => s.indexOf(false) === -1); this.debug(this.pattern, set2); this.set = set2; } parseNegate() { if (this.options.nonegate) return; const pattern = this.pattern; let negate = false; let negateOffset = 0; for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) { negate = !negate; negateOffset++; } if (negateOffset) this.pattern = pattern.substr(negateOffset); this.negate = negate; } // set partial to true to test if, for example, // "/a/b" matches the start of "/*/b/*/d" // Partial means, if you run out of file before you run // out of pattern, then that's fine, as long as all // the parts match. matchOne(file, pattern, partial) { var options = this.options; this.debug( "matchOne", { "this": this, file, pattern } ); this.debug("matchOne", file.length, pattern.length); for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { this.debug("matchOne loop"); var p = pattern[pi]; var f = file[fi]; this.debug(pattern, p, f); if (p === false) return false; if (p === GLOBSTAR) { this.debug("GLOBSTAR", [pattern, p, f]); var fr = fi; var pr = pi + 1; if (pr === pl) { this.debug("** at the end"); for (; fi < fl; fi++) { if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") return false; } return true; } while (fr < fl) { var swallowee = file[fr]; this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { this.debug("globstar found match!", fr, fl, swallowee); return true; } else { if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { this.debug("dot detected!", file, fr, pattern, pr); break; } this.debug("globstar swallow a segment, and continue"); fr++; } } if (partial) { this.debug("\n>>> no match, partial?", file, fr, pattern, pr); if (fr === fl) return true; } return false; } var hit; if (typeof p === "string") { hit = f === p; this.debug("string match", p, f, hit); } else { hit = f.match(p); this.debug("pattern match", p, f, hit); } if (!hit) return false; } if (fi === fl && pi === pl) { return true; } else if (fi === fl) { return partial; } else if (pi === pl) { return fi === fl - 1 && file[fi] === ""; } throw new Error("wtf?"); } braceExpand() { return braceExpand(this.pattern, this.options); } parse(pattern, isSub) { assertValidPattern(pattern); const options = this.options; if (pattern === "**") { if (!options.noglobstar) return GLOBSTAR; else pattern = "*"; } if (pattern === "") return ""; let re = ""; let hasMagic = !!options.nocase; let escaping = false; const patternListStack = []; const negativeLists = []; let stateChar; let inClass = false; let reClassStart = -1; let classStart = -1; let cs; let pl; let sp; const patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; const clearStateChar = () => { if (stateChar) { switch (stateChar) { case "*": re += star; hasMagic = true; break; case "?": re += qmark; hasMagic = true; break; default: re += "\\" + stateChar; break; } this.debug("clearStateChar %j %j", stateChar, re); stateChar = false; } }; for (let i = 0, c; i < pattern.length && (c = pattern.charAt(i)); i++) { this.debug("%s %s %s %j", pattern, i, re, c); if (escaping) { if (c === "/") { return false; } if (reSpecials[c]) { re += "\\"; } re += c; escaping = false; continue; } switch (c) { case "/": { return false; } case "\\": clearStateChar(); escaping = true; continue; case "?": case "*": case "+": case "@": case "!": this.debug("%s %s %s %j <-- stateChar", pattern, i, re, c); if (inClass) { this.debug(" in class"); if (c === "!" && i === classStart + 1) c = "^"; re += c; continue; } this.debug("call clearStateChar %j", stateChar); clearStateChar(); stateChar = c; if (options.noext) clearStateChar(); continue; case "(": if (inClass) { re += "("; continue; } if (!stateChar) { re += "\\("; continue; } patternListStack.push({ type: stateChar, start: i - 1, reStart: re.length, open: plTypes[stateChar].open, close: plTypes[stateChar].close }); re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; this.debug("plType %j %j", stateChar, re); stateChar = false; continue; case ")": if (inClass || !patternListStack.length) { re += "\\)"; continue; } clearStateChar(); hasMagic = true; pl = patternListStack.pop(); re += pl.close; if (pl.type === "!") { negativeLists.push(pl); } pl.reEnd = re.length; continue; case "|": if (inClass || !patternListStack.length) { re += "\\|"; continue; } clearStateChar(); re += "|"; continue; case "[": clearStateChar(); if (inClass) { re += "\\" + c; continue; } inClass = true; classStart = i; reClassStart = re.length; re += c; continue; case "]": if (i === classStart + 1 || !inClass) { re += "\\" + c; continue; } cs = pattern.substring(classStart + 1, i); try { RegExp("[" + cs + "]"); } catch (er) { sp = this.parse(cs, SUBPARSE); re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; hasMagic = hasMagic || sp[1]; inClass = false; continue; } hasMagic = true; inClass = false; re += c; continue; default: clearStateChar(); if (reSpecials[c] && !(c === "^" && inClass)) { re += "\\"; } re += c; break; } } if (inClass) { cs = pattern.substr(classStart + 1); sp = this.parse(cs, SUBPARSE); re = re.substr(0, reClassStart) + "\\[" + sp[0]; hasMagic = hasMagic || sp[1]; } for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { let tail; tail = re.slice(pl.reStart + pl.open.length); this.debug("setting tail", re, pl); tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => { if (!$2) { $2 = "\\"; } return $1 + $1 + $2 + "|"; }); this.debug("tail=%j\n %s", tail, tail, pl, re); const t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; hasMagic = true; re = re.slice(0, pl.reStart) + t + "\\(" + tail; } clearStateChar(); if (escaping) { re += "\\\\"; } const addPatternStart = addPatternStartSet[re.charAt(0)]; for (let n = negativeLists.length - 1; n > -1; n--) { const nl = negativeLists[n]; const nlBefore = re.slice(0, nl.reStart); const nlFirst = re.slice(nl.reStart, nl.reEnd - 8); let nlAfter = re.slice(nl.reEnd); const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter; const openParensBefore = nlBefore.split("(").length - 1; let cleanAfter = nlAfter; for (let i = 0; i < openParensBefore; i++) { cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); } nlAfter = cleanAfter; const dollar = nlAfter === "" && isSub !== SUBPARSE ? "$" : ""; re = nlBefore + nlFirst + nlAfter + dollar + nlLast; } if (re !== "" && hasMagic) { re = "(?=.)" + re; } if (addPatternStart) { re = patternStart + re; } if (isSub === SUBPARSE) { return [re, hasMagic]; } if (!hasMagic) { return globUnescape(pattern); } const flags = options.nocase ? "i" : ""; try { return Object.assign(new RegExp("^" + re + "$", flags), { _glob: pattern, _src: re }); } catch (er) { return new RegExp("$."); } } makeRe() { if (this.regexp || this.regexp === false) return this.regexp; const set2 = this.set; if (!set2.length) { this.regexp = false; return this.regexp; } const options = this.options; const twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; const flags = options.nocase ? "i" : ""; let re = set2.map((pattern) => { pattern = pattern.map( (p) => typeof p === "string" ? regExpEscape(p) : p === GLOBSTAR ? GLOBSTAR : p._src ).reduce((set3, p) => { if (!(set3[set3.length - 1] === GLOBSTAR && p === GLOBSTAR)) { set3.push(p); } return set3; }, []); pattern.forEach((p, i) => { if (p !== GLOBSTAR || pattern[i - 1] === GLOBSTAR) { return; } if (i === 0) { if (pattern.length > 1) { pattern[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + pattern[i + 1]; } else { pattern[i] = twoStar; } } else if (i === pattern.length - 1) { pattern[i - 1] += "(?:\\/|" + twoStar + ")?"; } else { pattern[i - 1] += "(?:\\/|\\/" + twoStar + "\\/)" + pattern[i + 1]; pattern[i + 1] = GLOBSTAR; } }); return pattern.filter((p) => p !== GLOBSTAR).join("/"); }).join("|"); re = "^(?:" + re + ")$"; if (this.negate) re = "^(?!" + re + ").*$"; try { this.regexp = new RegExp(re, flags); } catch (ex) { this.regexp = false; } return this.regexp; } match(f, partial = this.partial) { this.debug("match", f, this.pattern); if (this.comment) return false; if (this.empty) return f === ""; if (f === "/" && partial) return true; const options = this.options; if (path11.sep !== "/") { f = f.split(path11.sep).join("/"); } f = f.split(slashSplit); this.debug(this.pattern, "split", f); const set2 = this.set; this.debug(this.pattern, "set", set2); let filename; for (let i = f.length - 1; i >= 0; i--) { filename = f[i]; if (filename) break; } for (let i = 0; i < set2.length; i++) { const pattern = set2[i]; let file = f; if (options.matchBase && pattern.length === 1) { file = [filename]; } const hit = this.matchOne(file, pattern, partial); if (hit) { if (options.flipNegate) return true; return !this.negate; } } if (options.flipNegate) return false; return this.negate; } static defaults(def) { return minimatch5.defaults(def).Minimatch; } }; minimatch5.Minimatch = Minimatch; } }); // ../client/dist/utils/readdir-recursive.js var require_readdir_recursive = __commonJS2({ "../client/dist/utils/readdir-recursive.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var readdir_recursive_exports = {}; __export4(readdir_recursive_exports, { default: () => readdir2 }); module2.exports = __toCommonJS4(readdir_recursive_exports); var import_fs11 = __toESM4(__require("fs")); var import_path45 = __toESM4(__require("path")); var import_minimatch5 = __toESM4(require_minimatch()); function patternMatcher(pattern) { return function(path11, stats) { const minimatcher = new import_minimatch5.default.Minimatch(pattern, { matchBase: true }); return (!minimatcher.negate || stats.isFile()) && minimatcher.match(path11); }; } function toMatcherFunction(ignoreEntry) { if (typeof ignoreEntry === "function") { return ignoreEntry; } else { return patternMatcher(ignoreEntry); } } function readdir2(path11, ignores) { ignores = ignores.map(toMatcherFunction); let list10 = []; return new Promise(function(resolve14, reject) { import_fs11.default.readdir(path11, function(err, files) { if (err) { return reject(err); } let pending = files.length; if (!pending) { return resolve14(list10); } files.forEach(function(file) { const filePath = import_path45.default.join(path11, file); import_fs11.default.lstat(filePath, function(_err, stats) { if (_err) { return reject(_err); } const matches = ignores.some((matcher) => matcher(filePath, stats)); if (matches) { pending -= 1; if (!pending) { return resolve14(list10); } return null; } if (stats.isDirectory()) { readdir2(filePath, ignores).then(function(res) { if (res.length === 0) { list10.push(filePath); } list10 = list10.concat(res); pending -= 1; if (!pending) { return resolve14(list10); } }).catch(reject); } else { list10.push(filePath); pending -= 1; if (!pending) { return resolve14(list10); } } }); }); }); }); } } }); // ../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js function createScanner(text, ignoreTrivia = false) { const len = text.length; let pos = 0, value = "", tokenOffset = 0, token = 16, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0; function scanHexDigits(count, exact) { let digits = 0; let value2 = 0; while (digits < count || !exact) { let ch = text.charCodeAt(pos); if (ch >= 48 && ch <= 57) { value2 = value2 * 16 + ch - 48; } else if (ch >= 65 && ch <= 70) { value2 = value2 * 16 + ch - 65 + 10; } else if (ch >= 97 && ch <= 102) { value2 = value2 * 16 + ch - 97 + 10; } else { break; } pos++; digits++; } if (digits < count) { value2 = -1; } return value2; } function setPosition(newPosition) { pos = newPosition; value = ""; tokenOffset = 0; token = 16; scanError = 0; } function scanNumber() { let start = pos; if (text.charCodeAt(pos) === 48) { pos++; } else { pos++; while (pos < text.length && isDigit2(text.charCodeAt(pos))) { pos++; } } if (pos < text.length && text.charCodeAt(pos) === 46) { pos++; if (pos < text.length && isDigit2(text.charCodeAt(pos))) { pos++; while (pos < text.length && isDigit2(text.charCodeAt(pos))) { pos++; } } else { scanError = 3; return text.substring(start, pos); } } let end = pos; if (pos < text.length && (text.charCodeAt(pos) === 69 || text.charCodeAt(pos) === 101)) { pos++; if (pos < text.length && text.charCodeAt(pos) === 43 || text.charCodeAt(pos) === 45) { pos++; } if (pos < text.length && isDigit2(text.charCodeAt(pos))) { pos++; while (pos < text.length && isDigit2(text.charCodeAt(pos))) { pos++; } end = pos; } else { scanError = 3; } } return text.substring(start, end); } function scanString() { let result = "", start = pos; while (true) { if (pos >= len) { result += text.substring(start, pos); scanError = 2; break; } const ch = text.charCodeAt(pos); if (ch === 34) { result += text.substring(start, pos); pos++; break; } if (ch === 92) { result += text.substring(start, pos); pos++; if (pos >= len) { scanError = 2; break; } const ch2 = text.charCodeAt(pos++); switch (ch2) { case 34: result += '"'; break; case 92: result += "\\"; break; case 47: result += "/"; break; case 98: result += "\b"; break; case 102: result += "\f"; break; case 110: result += "\n"; break; case 114: result += "\r"; break; case 116: result += " "; break; case 117: const ch3 = scanHexDigits(4, true); if (ch3 >= 0) { result += String.fromCharCode(ch3); } else { scanError = 4; } break; default: scanError = 5; } start = pos; continue; } if (ch >= 0 && ch <= 31) { if (isLineBreak(ch)) { result += text.substring(start, pos); scanError = 2; break; } else { scanError = 6; } } pos++; } return result; } function scanNext() { value = ""; scanError = 0; tokenOffset = pos; lineStartOffset = lineNumber; prevTokenLineStartOffset = tokenLineStartOffset; if (pos >= len) { tokenOffset = len; return token = 17; } let code2 = text.charCodeAt(pos); if (isWhiteSpace(code2)) { do { pos++; value += String.fromCharCode(code2); code2 = text.charCodeAt(pos); } while (isWhiteSpace(code2)); return token = 15; } if (isLineBreak(code2)) { pos++; value += String.fromCharCode(code2); if (code2 === 13 && text.charCodeAt(pos) === 10) { pos++; value += "\n"; } lineNumber++; tokenLineStartOffset = pos; return token = 14; } switch (code2) { case 123: pos++; return token = 1; case 125: pos++; return token = 2; case 91: pos++; return token = 3; case 93: pos++; return token = 4; case 58: pos++; return token = 6; case 44: pos++; return token = 5; case 34: pos++; value = scanString(); return token = 10; case 47: const start = pos - 1; if (text.charCodeAt(pos + 1) === 47) { pos += 2; while (pos < len) { if (isLineBreak(text.charCodeAt(pos))) { break; } pos++; } value = text.substring(start, pos); return token = 12; } if (text.charCodeAt(pos + 1) === 42) { pos += 2; const safeLength = len - 1; let commentClosed = false; while (pos < safeLength) { const ch = text.charCodeAt(pos); if (ch === 42 && text.charCodeAt(pos + 1) === 47) { pos += 2; commentClosed = true; break; } pos++; if (isLineBreak(ch)) { if (ch === 13 && text.charCodeAt(pos) === 10) { pos++; } lineNumber++; tokenLineStartOffset = pos; } } if (!commentClosed) { pos++; scanError = 1; } value = text.substring(start, pos); return token = 13; } value += String.fromCharCode(code2); pos++; return token = 16; case 45: value += String.fromCharCode(code2); pos++; if (pos === len || !isDigit2(text.charCodeAt(pos))) { return token = 16; } case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: value += scanNumber(); return token = 11; default: while (pos < len && isUnknownContentCharacter(code2)) { pos++; code2 = text.charCodeAt(pos); } if (tokenOffset !== pos) { value = text.substring(tokenOffset, pos); switch (value) { case "true": return token = 8; case "false": return token = 9; case "null": return token = 7; } return token = 16; } value += String.fromCharCode(code2); pos++; return token = 16; } } function isUnknownContentCharacter(code2) { if (isWhiteSpace(code2) || isLineBreak(code2)) { return false; } switch (code2) { case 125: case 93: case 123: case 91: case 34: case 58: case 44: case 47: return false; } return true; } function scanNextNonTrivia() { let result; do { result = scanNext(); } while (result >= 12 && result <= 15); return result; } return { setPosition, getPosition: () => pos, scan: ignoreTrivia ? scanNextNonTrivia : scanNext, getToken: () => token, getTokenValue: () => value, getTokenOffset: () => tokenOffset, getTokenLength: () => pos - tokenOffset, getTokenStartLine: () => lineStartOffset, getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset, getTokenError: () => scanError }; } function isWhiteSpace(ch) { return ch === 32 || ch === 9; } function isLineBreak(ch) { return ch === 10 || ch === 13; } function isDigit2(ch) { return ch >= 48 && ch <= 57; } var CharacterCodes; var init_scanner = __esm({ "../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js"() { "use strict"; (function(CharacterCodes2) { CharacterCodes2[CharacterCodes2["lineFeed"] = 10] = "lineFeed"; CharacterCodes2[CharacterCodes2["carriageReturn"] = 13] = "carriageReturn"; CharacterCodes2[CharacterCodes2["space"] = 32] = "space"; CharacterCodes2[CharacterCodes2["_0"] = 48] = "_0"; CharacterCodes2[CharacterCodes2["_1"] = 49] = "_1"; CharacterCodes2[CharacterCodes2["_2"] = 50] = "_2"; CharacterCodes2[CharacterCodes2["_3"] = 51] = "_3"; CharacterCodes2[CharacterCodes2["_4"] = 52] = "_4"; CharacterCodes2[CharacterCodes2["_5"] = 53] = "_5"; CharacterCodes2[CharacterCodes2["_6"] = 54] = "_6"; CharacterCodes2[CharacterCodes2["_7"] = 55] = "_7"; CharacterCodes2[CharacterCodes2["_8"] = 56] = "_8"; CharacterCodes2[CharacterCodes2["_9"] = 57] = "_9"; CharacterCodes2[CharacterCodes2["a"] = 97] = "a"; CharacterCodes2[CharacterCodes2["b"] = 98] = "b"; CharacterCodes2[CharacterCodes2["c"] = 99] = "c"; CharacterCodes2[CharacterCodes2["d"] = 100] = "d"; CharacterCodes2[CharacterCodes2["e"] = 101] = "e"; CharacterCodes2[CharacterCodes2["f"] = 102] = "f"; CharacterCodes2[CharacterCodes2["g"] = 103] = "g"; CharacterCodes2[CharacterCodes2["h"] = 104] = "h"; CharacterCodes2[CharacterCodes2["i"] = 105] = "i"; CharacterCodes2[CharacterCodes2["j"] = 106] = "j"; CharacterCodes2[CharacterCodes2["k"] = 107] = "k"; CharacterCodes2[CharacterCodes2["l"] = 108] = "l"; CharacterCodes2[CharacterCodes2["m"] = 109] = "m"; CharacterCodes2[CharacterCodes2["n"] = 110] = "n"; CharacterCodes2[CharacterCodes2["o"] = 111] = "o"; CharacterCodes2[CharacterCodes2["p"] = 112] = "p"; CharacterCodes2[CharacterCodes2["q"] = 113] = "q"; CharacterCodes2[CharacterCodes2["r"] = 114] = "r"; CharacterCodes2[CharacterCodes2["s"] = 115] = "s"; CharacterCodes2[CharacterCodes2["t"] = 116] = "t"; CharacterCodes2[CharacterCodes2["u"] = 117] = "u"; CharacterCodes2[CharacterCodes2["v"] = 118] = "v"; CharacterCodes2[CharacterCodes2["w"] = 119] = "w"; CharacterCodes2[CharacterCodes2["x"] = 120] = "x"; CharacterCodes2[CharacterCodes2["y"] = 121] = "y"; CharacterCodes2[CharacterCodes2["z"] = 122] = "z"; CharacterCodes2[CharacterCodes2["A"] = 65] = "A"; CharacterCodes2[CharacterCodes2["B"] = 66] = "B"; CharacterCodes2[CharacterCodes2["C"] = 67] = "C"; CharacterCodes2[CharacterCodes2["D"] = 68] = "D"; CharacterCodes2[CharacterCodes2["E"] = 69] = "E"; CharacterCodes2[CharacterCodes2["F"] = 70] = "F"; CharacterCodes2[CharacterCodes2["G"] = 71] = "G"; CharacterCodes2[CharacterCodes2["H"] = 72] = "H"; CharacterCodes2[CharacterCodes2["I"] = 73] = "I"; CharacterCodes2[CharacterCodes2["J"] = 74] = "J"; CharacterCodes2[CharacterCodes2["K"] = 75] = "K"; CharacterCodes2[CharacterCodes2["L"] = 76] = "L"; CharacterCodes2[CharacterCodes2["M"] = 77] = "M"; CharacterCodes2[CharacterCodes2["N"] = 78] = "N"; CharacterCodes2[CharacterCodes2["O"] = 79] = "O"; CharacterCodes2[CharacterCodes2["P"] = 80] = "P"; CharacterCodes2[CharacterCodes2["Q"] = 81] = "Q"; CharacterCodes2[CharacterCodes2["R"] = 82] = "R"; CharacterCodes2[CharacterCodes2["S"] = 83] = "S"; CharacterCodes2[CharacterCodes2["T"] = 84] = "T"; CharacterCodes2[CharacterCodes2["U"] = 85] = "U"; CharacterCodes2[CharacterCodes2["V"] = 86] = "V"; CharacterCodes2[CharacterCodes2["W"] = 87] = "W"; CharacterCodes2[CharacterCodes2["X"] = 88] = "X"; CharacterCodes2[CharacterCodes2["Y"] = 89] = "Y"; CharacterCodes2[CharacterCodes2["Z"] = 90] = "Z"; CharacterCodes2[CharacterCodes2["asterisk"] = 42] = "asterisk"; CharacterCodes2[CharacterCodes2["backslash"] = 92] = "backslash"; CharacterCodes2[CharacterCodes2["closeBrace"] = 125] = "closeBrace"; CharacterCodes2[CharacterCodes2["closeBracket"] = 93] = "closeBracket"; CharacterCodes2[CharacterCodes2["colon"] = 58] = "colon"; CharacterCodes2[CharacterCodes2["comma"] = 44] = "comma"; CharacterCodes2[CharacterCodes2["dot"] = 46] = "dot"; CharacterCodes2[CharacterCodes2["doubleQuote"] = 34] = "doubleQuote"; CharacterCodes2[CharacterCodes2["minus"] = 45] = "minus"; CharacterCodes2[CharacterCodes2["openBrace"] = 123] = "openBrace"; CharacterCodes2[CharacterCodes2["openBracket"] = 91] = "openBracket"; CharacterCodes2[CharacterCodes2["plus"] = 43] = "plus"; CharacterCodes2[CharacterCodes2["slash"] = 47] = "slash"; CharacterCodes2[CharacterCodes2["formFeed"] = 12] = "formFeed"; CharacterCodes2[CharacterCodes2["tab"] = 9] = "tab"; })(CharacterCodes || (CharacterCodes = {})); } }); // ../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js var cachedSpaces, maxCachedValues, cachedBreakLinesWithSpaces, supportedEols; var init_string_intern = __esm({ "../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js"() { cachedSpaces = new Array(20).fill(0).map((_, index) => { return " ".repeat(index); }); maxCachedValues = 200; cachedBreakLinesWithSpaces = { " ": { "\n": new Array(maxCachedValues).fill(0).map((_, index) => { return "\n" + " ".repeat(index); }), "\r": new Array(maxCachedValues).fill(0).map((_, index) => { return "\r" + " ".repeat(index); }), "\r\n": new Array(maxCachedValues).fill(0).map((_, index) => { return "\r\n" + " ".repeat(index); }) }, " ": { "\n": new Array(maxCachedValues).fill(0).map((_, index) => { return "\n" + " ".repeat(index); }), "\r": new Array(maxCachedValues).fill(0).map((_, index) => { return "\r" + " ".repeat(index); }), "\r\n": new Array(maxCachedValues).fill(0).map((_, index) => { return "\r\n" + " ".repeat(index); }) } }; supportedEols = ["\n", "\r", "\r\n"]; } }); // ../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/format.js function format(documentText, range, options) { let initialIndentLevel; let formatText; let formatTextStart; let rangeStart; let rangeEnd; if (range) { rangeStart = range.offset; rangeEnd = rangeStart + range.length; formatTextStart = rangeStart; while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) { formatTextStart--; } let endOffset = rangeEnd; while (endOffset < documentText.length && !isEOL(documentText, endOffset)) { endOffset++; } formatText = documentText.substring(formatTextStart, endOffset); initialIndentLevel = computeIndentLevel(formatText, options); } else { formatText = documentText; initialIndentLevel = 0; formatTextStart = 0; rangeStart = 0; rangeEnd = documentText.length; } const eol = getEOL(options, documentText); const eolFastPathSupported = supportedEols.includes(eol); let numberLineBreaks = 0; let indentLevel = 0; let indentValue; if (options.insertSpaces) { indentValue = cachedSpaces[options.tabSize || 4] ?? repeat(cachedSpaces[1], options.tabSize || 4); } else { indentValue = " "; } const indentType = indentValue === " " ? " " : " "; let scanner = createScanner(formatText, false); let hasError = false; function newLinesAndIndent() { if (numberLineBreaks > 1) { return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel); } const amountOfSpaces = indentValue.length * (initialIndentLevel + indentLevel); if (!eolFastPathSupported || amountOfSpaces > cachedBreakLinesWithSpaces[indentType][eol].length) { return eol + repeat(indentValue, initialIndentLevel + indentLevel); } if (amountOfSpaces <= 0) { return eol; } return cachedBreakLinesWithSpaces[indentType][eol][amountOfSpaces]; } function scanNext() { let token = scanner.scan(); numberLineBreaks = 0; while (token === 15 || token === 14) { if (token === 14 && options.keepLines) { numberLineBreaks += 1; } else if (token === 14) { numberLineBreaks = 1; } token = scanner.scan(); } hasError = token === 16 || scanner.getTokenError() !== 0; return token; } const editOperations = []; function addEdit(text, startOffset, endOffset) { if (!hasError && (!range || startOffset < rangeEnd && endOffset > rangeStart) && documentText.substring(startOffset, endOffset) !== text) { editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text }); } } let firstToken = scanNext(); if (options.keepLines && numberLineBreaks > 0) { addEdit(repeat(eol, numberLineBreaks), 0, 0); } if (firstToken !== 17) { let firstTokenStart = scanner.getTokenOffset() + formatTextStart; let initialIndent = indentValue.length * initialIndentLevel < 20 && options.insertSpaces ? cachedSpaces[indentValue.length * initialIndentLevel] : repeat(indentValue, initialIndentLevel); addEdit(initialIndent, formatTextStart, firstTokenStart); } while (firstToken !== 17) { let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart; let secondToken = scanNext(); let replaceContent = ""; let needsLineBreak = false; while (numberLineBreaks === 0 && (secondToken === 12 || secondToken === 13)) { let commentTokenStart = scanner.getTokenOffset() + formatTextStart; addEdit(cachedSpaces[1], firstTokenEnd, commentTokenStart); firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart; needsLineBreak = secondToken === 12; replaceContent = needsLineBreak ? newLinesAndIndent() : ""; secondToken = scanNext(); } if (secondToken === 2) { if (firstToken !== 1) { indentLevel--; } ; if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1) { replaceContent = newLinesAndIndent(); } else if (options.keepLines) { replaceContent = cachedSpaces[1]; } } else if (secondToken === 4) { if (firstToken !== 3) { indentLevel--; } ; if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3) { replaceContent = newLinesAndIndent(); } else if (options.keepLines) { replaceContent = cachedSpaces[1]; } } else { switch (firstToken) { case 3: case 1: indentLevel++; if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) { replaceContent = newLinesAndIndent(); } else { replaceContent = cachedSpaces[1]; } break; case 5: if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) { replaceContent = newLinesAndIndent(); } else { replaceContent = cachedSpaces[1]; } break; case 12: replaceContent = newLinesAndIndent(); break; case 13: if (numberLineBreaks > 0) { replaceContent = newLinesAndIndent(); } else if (!needsLineBreak) { replaceContent = cachedSpaces[1]; } break; case 6: if (options.keepLines && numberLineBreaks > 0) { replaceContent = newLinesAndIndent(); } else if (!needsLineBreak) { replaceContent = cachedSpaces[1]; } break; case 10: if (options.keepLines && numberLineBreaks > 0) { replaceContent = newLinesAndIndent(); } else if (secondToken === 6 && !needsLineBreak) { replaceContent = ""; } break; case 7: case 8: case 9: case 11: case 2: case 4: if (options.keepLines && numberLineBreaks > 0) { replaceContent = newLinesAndIndent(); } else { if ((secondToken === 12 || secondToken === 13) && !needsLineBreak) { replaceContent = cachedSpaces[1]; } else if (secondToken !== 5 && secondToken !== 17) { hasError = true; } } break; case 16: hasError = true; break; } if (numberLineBreaks > 0 && (secondToken === 12 || secondToken === 13)) { replaceContent = newLinesAndIndent(); } } if (secondToken === 17) { if (options.keepLines && numberLineBreaks > 0) { replaceContent = newLinesAndIndent(); } else { replaceContent = options.insertFinalNewline ? eol : ""; } } const secondTokenStart = scanner.getTokenOffset() + formatTextStart; addEdit(replaceContent, firstTokenEnd, secondTokenStart); firstToken = secondToken; } return editOperations; } function repeat(s, count) { let result = ""; for (let i = 0; i < count; i++) { result += s; } return result; } function computeIndentLevel(content, options) { let i = 0; let nChars = 0; const tabSize = options.tabSize || 4; while (i < content.length) { let ch = content.charAt(i); if (ch === cachedSpaces[1]) { nChars++; } else if (ch === " ") { nChars += tabSize; } else { break; } i++; } return Math.floor(nChars / tabSize); } function getEOL(options, text) { for (let i = 0; i < text.length; i++) { const ch = text.charAt(i); if (ch === "\r") { if (i + 1 < text.length && text.charAt(i + 1) === "\n") { return "\r\n"; } return "\r"; } else if (ch === "\n") { return "\n"; } } return options && options.eol || "\n"; } function isEOL(text, offset) { return "\r\n".indexOf(text.charAt(offset)) !== -1; } var init_format = __esm({ "../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/format.js"() { "use strict"; init_scanner(); init_string_intern(); } }); // ../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/parser.js function getLocation(text, position) { const segments = []; const earlyReturnException = new Object(); let previousNode = void 0; const previousNodeInst = { value: {}, offset: 0, length: 0, type: "object", parent: void 0 }; let isAtPropertyKey = false; function setPreviousNode(value, offset, length, type) { previousNodeInst.value = value; previousNodeInst.offset = offset; previousNodeInst.length = length; previousNodeInst.type = type; previousNodeInst.colonOffset = void 0; previousNode = previousNodeInst; } try { visit(text, { onObjectBegin: (offset, length) => { if (position <= offset) { throw earlyReturnException; } previousNode = void 0; isAtPropertyKey = position > offset; segments.push(""); }, onObjectProperty: (name, offset, length) => { if (position < offset) { throw earlyReturnException; } setPreviousNode(name, offset, length, "property"); segments[segments.length - 1] = name; if (position <= offset + length) { throw earlyReturnException; } }, onObjectEnd: (offset, length) => { if (position <= offset) { throw earlyReturnException; } previousNode = void 0; segments.pop(); }, onArrayBegin: (offset, length) => { if (position <= offset) { throw earlyReturnException; } previousNode = void 0; segments.push(0); }, onArrayEnd: (offset, length) => { if (position <= offset) { throw earlyReturnException; } previousNode = void 0; segments.pop(); }, onLiteralValue: (value, offset, length) => { if (position < offset) { throw earlyReturnException; } setPreviousNode(value, offset, length, getNodeType(value)); if (position <= offset + length) { throw earlyReturnException; } }, onSeparator: (sep3, offset, length) => { if (position <= offset) { throw earlyReturnException; } if (sep3 === ":" && previousNode && previousNode.type === "property") { previousNode.colonOffset = offset; isAtPropertyKey = false; previousNode = void 0; } else if (sep3 === ",") { const last = segments[segments.length - 1]; if (typeof last === "number") { segments[segments.length - 1] = last + 1; } else { isAtPropertyKey = true; segments[segments.length - 1] = ""; } previousNode = void 0; } } }); } catch (e2) { if (e2 !== earlyReturnException) { throw e2; } } return { path: segments, previousNode, isAtPropertyKey, matches: (pattern) => { let k = 0; for (let i = 0; k < pattern.length && i < segments.length; i++) { if (pattern[k] === segments[i] || pattern[k] === "*") { k++; } else if (pattern[k] !== "**") { return false; } } return k === pattern.length; } }; } function parse(text, errors = [], options = ParseOptions.DEFAULT) { let currentProperty = null; let currentParent = []; const previousParents = []; function onValue(value) { if (Array.isArray(currentParent)) { currentParent.push(value); } else if (currentProperty !== null) { currentParent[currentProperty] = value; } } const visitor = { onObjectBegin: () => { const object = {}; onValue(object); previousParents.push(currentParent); currentParent = object; currentProperty = null; }, onObjectProperty: (name) => { currentProperty = name; }, onObjectEnd: () => { currentParent = previousParents.pop(); }, onArrayBegin: () => { const array = []; onValue(array); previousParents.push(currentParent); currentParent = array; currentProperty = null; }, onArrayEnd: () => { currentParent = previousParents.pop(); }, onLiteralValue: onValue, onError: (error3, offset, length) => { errors.push({ error: error3, offset, length }); } }; visit(text, visitor, options); return currentParent[0]; } function parseTree(text, errors = [], options = ParseOptions.DEFAULT) { let currentParent = { type: "array", offset: -1, length: -1, children: [], parent: void 0 }; function ensurePropertyComplete(endOffset) { if (currentParent.type === "property") { currentParent.length = endOffset - currentParent.offset; currentParent = currentParent.parent; } } function onValue(valueNode) { currentParent.children.push(valueNode); return valueNode; } const visitor = { onObjectBegin: (offset) => { currentParent = onValue({ type: "object", offset, length: -1, parent: currentParent, children: [] }); }, onObjectProperty: (name, offset, length) => { currentParent = onValue({ type: "property", offset, length: -1, parent: currentParent, children: [] }); currentParent.children.push({ type: "string", value: name, offset, length, parent: currentParent }); }, onObjectEnd: (offset, length) => { ensurePropertyComplete(offset + length); currentParent.length = offset + length - currentParent.offset; currentParent = currentParent.parent; ensurePropertyComplete(offset + length); }, onArrayBegin: (offset, length) => { currentParent = onValue({ type: "array", offset, length: -1, parent: currentParent, children: [] }); }, onArrayEnd: (offset, length) => { currentParent.length = offset + length - currentParent.offset; currentParent = currentParent.parent; ensurePropertyComplete(offset + length); }, onLiteralValue: (value, offset, length) => { onValue({ type: getNodeType(value), offset, length, parent: currentParent, value }); ensurePropertyComplete(offset + length); }, onSeparator: (sep3, offset, length) => { if (currentParent.type === "property") { if (sep3 === ":") { currentParent.colonOffset = offset; } else if (sep3 === ",") { ensurePropertyComplete(offset); } } }, onError: (error3, offset, length) => { errors.push({ error: error3, offset, length }); } }; visit(text, visitor, options); const result = currentParent.children[0]; if (result) { delete result.parent; } return result; } function findNodeAtLocation(root, path11) { if (!root) { return void 0; } let node = root; for (let segment of path11) { if (typeof segment === "string") { if (node.type !== "object" || !Array.isArray(node.children)) { return void 0; } let found = false; for (const propertyNode of node.children) { if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) { node = propertyNode.children[1]; found = true; break; } } if (!found) { return void 0; } } else { const index = segment; if (node.type !== "array" || index < 0 || !Array.isArray(node.children) || index >= node.children.length) { return void 0; } node = node.children[index]; } } return node; } function getNodePath(node) { if (!node.parent || !node.parent.children) { return []; } const path11 = getNodePath(node.parent); if (node.parent.type === "property") { const key = node.parent.children[0].value; path11.push(key); } else if (node.parent.type === "array") { const index = node.parent.children.indexOf(node); if (index !== -1) { path11.push(index); } } return path11; } function getNodeValue(node) { switch (node.type) { case "array": return node.children.map(getNodeValue); case "object": const obj = /* @__PURE__ */ Object.create(null); for (let prop of node.children) { const valueNode = prop.children[1]; if (valueNode) { obj[prop.children[0].value] = getNodeValue(valueNode); } } return obj; case "null": case "string": case "number": case "boolean": return node.value; default: return void 0; } } function contains(node, offset, includeRightBound = false) { return offset >= node.offset && offset < node.offset + node.length || includeRightBound && offset === node.offset + node.length; } function findNodeAtOffset(node, offset, includeRightBound = false) { if (contains(node, offset, includeRightBound)) { const children = node.children; if (Array.isArray(children)) { for (let i = 0; i < children.length && children[i].offset <= offset; i++) { const item = findNodeAtOffset(children[i], offset, includeRightBound); if (item) { return item; } } } return node; } return void 0; } function visit(text, visitor, options = ParseOptions.DEFAULT) { const _scanner = createScanner(text, false); const _jsonPath = []; let suppressedCallbacks = 0; function toNoArgVisit(visitFunction) { return visitFunction ? () => suppressedCallbacks === 0 && visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true; } function toOneArgVisit(visitFunction) { return visitFunction ? (arg2) => suppressedCallbacks === 0 && visitFunction(arg2, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true; } function toOneArgVisitWithPath(visitFunction) { return visitFunction ? (arg2) => suppressedCallbacks === 0 && visitFunction(arg2, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true; } function toBeginVisit(visitFunction) { return visitFunction ? () => { if (suppressedCallbacks > 0) { suppressedCallbacks++; } else { let cbReturn = visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()); if (cbReturn === false) { suppressedCallbacks = 1; } } } : () => true; } function toEndVisit(visitFunction) { return visitFunction ? () => { if (suppressedCallbacks > 0) { suppressedCallbacks--; } if (suppressedCallbacks === 0) { visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()); } } : () => true; } const onObjectBegin = toBeginVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toEndVisit(visitor.onObjectEnd), onArrayBegin = toBeginVisit(visitor.onArrayBegin), onArrayEnd = toEndVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError); const disallowComments = options && options.disallowComments; const allowTrailingComma = options && options.allowTrailingComma; function scanNext() { while (true) { const token = _scanner.scan(); switch (_scanner.getTokenError()) { case 4: handleError( 14 /* ParseErrorCode.InvalidUnicode */ ); break; case 5: handleError( 15 /* ParseErrorCode.InvalidEscapeCharacter */ ); break; case 3: handleError( 13 /* ParseErrorCode.UnexpectedEndOfNumber */ ); break; case 1: if (!disallowComments) { handleError( 11 /* ParseErrorCode.UnexpectedEndOfComment */ ); } break; case 2: handleError( 12 /* ParseErrorCode.UnexpectedEndOfString */ ); break; case 6: handleError( 16 /* ParseErrorCode.InvalidCharacter */ ); break; } switch (token) { case 12: case 13: if (disallowComments) { handleError( 10 /* ParseErrorCode.InvalidCommentToken */ ); } else { onComment(); } break; case 16: handleError( 1 /* ParseErrorCode.InvalidSymbol */ ); break; case 15: case 14: break; default: return token; } } } function handleError(error3, skipUntilAfter = [], skipUntil = []) { onError(error3); if (skipUntilAfter.length + skipUntil.length > 0) { let token = _scanner.getToken(); while (token !== 17) { if (skipUntilAfter.indexOf(token) !== -1) { scanNext(); break; } else if (skipUntil.indexOf(token) !== -1) { break; } token = scanNext(); } } } function parseString(isValue) { const value = _scanner.getTokenValue(); if (isValue) { onLiteralValue(value); } else { onObjectProperty(value); _jsonPath.push(value); } scanNext(); return true; } function parseLiteral() { switch (_scanner.getToken()) { case 11: const tokenValue = _scanner.getTokenValue(); let value = Number(tokenValue); if (isNaN(value)) { handleError( 2 /* ParseErrorCode.InvalidNumberFormat */ ); value = 0; } onLiteralValue(value); break; case 7: onLiteralValue(null); break; case 8: onLiteralValue(true); break; case 9: onLiteralValue(false); break; default: return false; } scanNext(); return true; } function parseProperty() { if (_scanner.getToken() !== 10) { handleError(3, [], [ 2, 5 /* SyntaxKind.CommaToken */ ]); return false; } parseString(false); if (_scanner.getToken() === 6) { onSeparator(":"); scanNext(); if (!parseValue()) { handleError(4, [], [ 2, 5 /* SyntaxKind.CommaToken */ ]); } } else { handleError(5, [], [ 2, 5 /* SyntaxKind.CommaToken */ ]); } _jsonPath.pop(); return true; } function parseObject() { onObjectBegin(); scanNext(); let needsComma = false; while (_scanner.getToken() !== 2 && _scanner.getToken() !== 17) { if (_scanner.getToken() === 5) { if (!needsComma) { handleError(4, [], []); } onSeparator(","); scanNext(); if (_scanner.getToken() === 2 && allowTrailingComma) { break; } } else if (needsComma) { handleError(6, [], []); } if (!parseProperty()) { handleError(4, [], [ 2, 5 /* SyntaxKind.CommaToken */ ]); } needsComma = true; } onObjectEnd(); if (_scanner.getToken() !== 2) { handleError(7, [ 2 /* SyntaxKind.CloseBraceToken */ ], []); } else { scanNext(); } return true; } function parseArray() { onArrayBegin(); scanNext(); let isFirstElement = true; let needsComma = false; while (_scanner.getToken() !== 4 && _scanner.getToken() !== 17) { if (_scanner.getToken() === 5) { if (!needsComma) { handleError(4, [], []); } onSeparator(","); scanNext(); if (_scanner.getToken() === 4 && allowTrailingComma) { break; } } else if (needsComma) { handleError(6, [], []); } if (isFirstElement) { _jsonPath.push(0); isFirstElement = false; } else { _jsonPath[_jsonPath.length - 1]++; } if (!parseValue()) { handleError(4, [], [ 4, 5 /* SyntaxKind.CommaToken */ ]); } needsComma = true; } onArrayEnd(); if (!isFirstElement) { _jsonPath.pop(); } if (_scanner.getToken() !== 4) { handleError(8, [ 4 /* SyntaxKind.CloseBracketToken */ ], []); } else { scanNext(); } return true; } function parseValue() { switch (_scanner.getToken()) { case 3: return parseArray(); case 1: return parseObject(); case 10: return parseString(true); default: return parseLiteral(); } } scanNext(); if (_scanner.getToken() === 17) { if (options.allowEmptyContent) { return true; } handleError(4, [], []); return false; } if (!parseValue()) { handleError(4, [], []); return false; } if (_scanner.getToken() !== 17) { handleError(9, [], []); } return true; } function stripComments(text, replaceCh) { let _scanner = createScanner(text), parts = [], kind, offset = 0, pos; do { pos = _scanner.getPosition(); kind = _scanner.scan(); switch (kind) { case 12: case 13: case 17: if (offset !== pos) { parts.push(text.substring(offset, pos)); } if (replaceCh !== void 0) { parts.push(_scanner.getTokenValue().replace(/[^\r\n]/g, replaceCh)); } offset = _scanner.getPosition(); break; } } while (kind !== 17); return parts.join(""); } function getNodeType(value) { switch (typeof value) { case "boolean": return "boolean"; case "number": return "number"; case "string": return "string"; case "object": { if (!value) { return "null"; } else if (Array.isArray(value)) { return "array"; } return "object"; } default: return "null"; } } var ParseOptions; var init_parser = __esm({ "../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/parser.js"() { "use strict"; init_scanner(); (function(ParseOptions2) { ParseOptions2.DEFAULT = { allowTrailingComma: false }; })(ParseOptions || (ParseOptions = {})); } }); // ../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/edit.js function setProperty(text, originalPath, value, options) { const path11 = originalPath.slice(); const errors = []; const root = parseTree(text, errors); let parent = void 0; let lastSegment = void 0; while (path11.length > 0) { lastSegment = path11.pop(); parent = findNodeAtLocation(root, path11); if (parent === void 0 && value !== void 0) { if (typeof lastSegment === "string") { value = { [lastSegment]: value }; } else { value = [value]; } } else { break; } } if (!parent) { if (value === void 0) { throw new Error("Can not delete in empty document"); } return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options); } else if (parent.type === "object" && typeof lastSegment === "string" && Array.isArray(parent.children)) { const existing = findNodeAtLocation(parent, [lastSegment]); if (existing !== void 0) { if (value === void 0) { if (!existing.parent) { throw new Error("Malformed AST"); } const propertyIndex = parent.children.indexOf(existing.parent); let removeBegin; let removeEnd = existing.parent.offset + existing.parent.length; if (propertyIndex > 0) { let previous = parent.children[propertyIndex - 1]; removeBegin = previous.offset + previous.length; } else { removeBegin = parent.offset + 1; if (parent.children.length > 1) { let next = parent.children[1]; removeEnd = next.offset; } } return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: "" }, options); } else { return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options); } } else { if (value === void 0) { return []; } const newProperty = `${JSON.stringify(lastSegment)}: ${JSON.stringify(value)}`; const index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map((p) => p.children[0].value)) : parent.children.length; let edit; if (index > 0) { let previous = parent.children[index - 1]; edit = { offset: previous.offset + previous.length, length: 0, content: "," + newProperty }; } else if (parent.children.length === 0) { edit = { offset: parent.offset + 1, length: 0, content: newProperty }; } else { edit = { offset: parent.offset + 1, length: 0, content: newProperty + "," }; } return withFormatting(text, edit, options); } } else if (parent.type === "array" && typeof lastSegment === "number" && Array.isArray(parent.children)) { const insertIndex = lastSegment; if (insertIndex === -1) { const newProperty = `${JSON.stringify(value)}`; let edit; if (parent.children.length === 0) { edit = { offset: parent.offset + 1, length: 0, content: newProperty }; } else { const previous = parent.children[parent.children.length - 1]; edit = { offset: previous.offset + previous.length, length: 0, content: "," + newProperty }; } return withFormatting(text, edit, options); } else if (value === void 0 && parent.children.length >= 0) { const removalIndex = lastSegment; const toRemove = parent.children[removalIndex]; let edit; if (parent.children.length === 1) { edit = { offset: parent.offset + 1, length: parent.length - 2, content: "" }; } else if (parent.children.length - 1 === removalIndex) { let previous = parent.children[removalIndex - 1]; let offset = previous.offset + previous.length; let parentEndOffset = parent.offset + parent.length; edit = { offset, length: parentEndOffset - 2 - offset, content: "" }; } else { edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: "" }; } return withFormatting(text, edit, options); } else if (value !== void 0) { let edit; const newProperty = `${JSON.stringify(value)}`; if (!options.isArrayInsertion && parent.children.length > lastSegment) { const toModify = parent.children[lastSegment]; edit = { offset: toModify.offset, length: toModify.length, content: newProperty }; } else if (parent.children.length === 0 || lastSegment === 0) { edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + "," }; } else { const index = lastSegment > parent.children.length ? parent.children.length : lastSegment; const previous = parent.children[index - 1]; edit = { offset: previous.offset + previous.length, length: 0, content: "," + newProperty }; } return withFormatting(text, edit, options); } else { throw new Error(`Can not ${value === void 0 ? "remove" : options.isArrayInsertion ? "insert" : "modify"} Array index ${insertIndex} as length is not sufficient`); } } else { throw new Error(`Can not add ${typeof lastSegment !== "number" ? "index" : "property"} to parent of type ${parent.type}`); } } function withFormatting(text, edit, options) { if (!options.formattingOptions) { return [edit]; } let newText = applyEdit(text, edit); let begin = edit.offset; let end = edit.offset + edit.content.length; if (edit.length === 0 || edit.content.length === 0) { while (begin > 0 && !isEOL(newText, begin - 1)) { begin--; } while (end < newText.length && !isEOL(newText, end)) { end++; } } const edits = format(newText, { offset: begin, length: end - begin }, { ...options.formattingOptions, keepLines: false }); for (let i = edits.length - 1; i >= 0; i--) { const edit2 = edits[i]; newText = applyEdit(newText, edit2); begin = Math.min(begin, edit2.offset); end = Math.max(end, edit2.offset + edit2.length); end += edit2.content.length - edit2.length; } const editLength = text.length - (newText.length - end) - begin; return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }]; } function applyEdit(text, edit) { return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length); } var init_edit = __esm({ "../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/edit.js"() { "use strict"; init_format(); init_parser(); } }); // ../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/main.js var main_exports = {}; __export3(main_exports, { ParseErrorCode: () => ParseErrorCode, ScanError: () => ScanError, SyntaxKind: () => SyntaxKind, applyEdits: () => applyEdits, createScanner: () => createScanner2, findNodeAtLocation: () => findNodeAtLocation2, findNodeAtOffset: () => findNodeAtOffset2, format: () => format2, getLocation: () => getLocation2, getNodePath: () => getNodePath2, getNodeValue: () => getNodeValue2, modify: () => modify, parse: () => parse2, parseTree: () => parseTree2, printParseErrorCode: () => printParseErrorCode, stripComments: () => stripComments2, visit: () => visit2 }); function printParseErrorCode(code2) { switch (code2) { case 1: return "InvalidSymbol"; case 2: return "InvalidNumberFormat"; case 3: return "PropertyNameExpected"; case 4: return "ValueExpected"; case 5: return "ColonExpected"; case 6: return "CommaExpected"; case 7: return "CloseBraceExpected"; case 8: return "CloseBracketExpected"; case 9: return "EndOfFileExpected"; case 10: return "InvalidCommentToken"; case 11: return "UnexpectedEndOfComment"; case 12: return "UnexpectedEndOfString"; case 13: return "UnexpectedEndOfNumber"; case 14: return "InvalidUnicode"; case 15: return "InvalidEscapeCharacter"; case 16: return "InvalidCharacter"; } return ""; } function format2(documentText, range, options) { return format(documentText, range, options); } function modify(text, path11, value, options) { return setProperty(text, path11, value, options); } function applyEdits(text, edits) { let sortedEdits = edits.slice(0).sort((a, b) => { const diff = a.offset - b.offset; if (diff === 0) { return a.length - b.length; } return diff; }); let lastModifiedOffset = text.length; for (let i = sortedEdits.length - 1; i >= 0; i--) { let e2 = sortedEdits[i]; if (e2.offset + e2.length <= lastModifiedOffset) { text = applyEdit(text, e2); } else { throw new Error("Overlapping edit"); } lastModifiedOffset = e2.offset; } return text; } var createScanner2, ScanError, SyntaxKind, getLocation2, parse2, parseTree2, findNodeAtLocation2, findNodeAtOffset2, getNodePath2, getNodeValue2, visit2, stripComments2, ParseErrorCode; var init_main = __esm({ "../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/main.js"() { "use strict"; init_format(); init_edit(); init_scanner(); init_parser(); createScanner2 = createScanner; (function(ScanError2) { ScanError2[ScanError2["None"] = 0] = "None"; ScanError2[ScanError2["UnexpectedEndOfComment"] = 1] = "UnexpectedEndOfComment"; ScanError2[ScanError2["UnexpectedEndOfString"] = 2] = "UnexpectedEndOfString"; ScanError2[ScanError2["UnexpectedEndOfNumber"] = 3] = "UnexpectedEndOfNumber"; ScanError2[ScanError2["InvalidUnicode"] = 4] = "InvalidUnicode"; ScanError2[ScanError2["InvalidEscapeCharacter"] = 5] = "InvalidEscapeCharacter"; ScanError2[ScanError2["InvalidCharacter"] = 6] = "InvalidCharacter"; })(ScanError || (ScanError = {})); (function(SyntaxKind2) { SyntaxKind2[SyntaxKind2["OpenBraceToken"] = 1] = "OpenBraceToken"; SyntaxKind2[SyntaxKind2["CloseBraceToken"] = 2] = "CloseBraceToken"; SyntaxKind2[SyntaxKind2["OpenBracketToken"] = 3] = "OpenBracketToken"; SyntaxKind2[SyntaxKind2["CloseBracketToken"] = 4] = "CloseBracketToken"; SyntaxKind2[SyntaxKind2["CommaToken"] = 5] = "CommaToken"; SyntaxKind2[SyntaxKind2["ColonToken"] = 6] = "ColonToken"; SyntaxKind2[SyntaxKind2["NullKeyword"] = 7] = "NullKeyword"; SyntaxKind2[SyntaxKind2["TrueKeyword"] = 8] = "TrueKeyword"; SyntaxKind2[SyntaxKind2["FalseKeyword"] = 9] = "FalseKeyword"; SyntaxKind2[SyntaxKind2["StringLiteral"] = 10] = "StringLiteral"; SyntaxKind2[SyntaxKind2["NumericLiteral"] = 11] = "NumericLiteral"; SyntaxKind2[SyntaxKind2["LineCommentTrivia"] = 12] = "LineCommentTrivia"; SyntaxKind2[SyntaxKind2["BlockCommentTrivia"] = 13] = "BlockCommentTrivia"; SyntaxKind2[SyntaxKind2["LineBreakTrivia"] = 14] = "LineBreakTrivia"; SyntaxKind2[SyntaxKind2["Trivia"] = 15] = "Trivia"; SyntaxKind2[SyntaxKind2["Unknown"] = 16] = "Unknown"; SyntaxKind2[SyntaxKind2["EOF"] = 17] = "EOF"; })(SyntaxKind || (SyntaxKind = {})); getLocation2 = getLocation; parse2 = parse; parseTree2 = parseTree; findNodeAtLocation2 = findNodeAtLocation; findNodeAtOffset2 = findNodeAtOffset; getNodePath2 = getNodePath; getNodeValue2 = getNodeValue; visit2 = visit; stripComments2 = stripComments; (function(ParseErrorCode2) { ParseErrorCode2[ParseErrorCode2["InvalidSymbol"] = 1] = "InvalidSymbol"; ParseErrorCode2[ParseErrorCode2["InvalidNumberFormat"] = 2] = "InvalidNumberFormat"; ParseErrorCode2[ParseErrorCode2["PropertyNameExpected"] = 3] = "PropertyNameExpected"; ParseErrorCode2[ParseErrorCode2["ValueExpected"] = 4] = "ValueExpected"; ParseErrorCode2[ParseErrorCode2["ColonExpected"] = 5] = "ColonExpected"; ParseErrorCode2[ParseErrorCode2["CommaExpected"] = 6] = "CommaExpected"; ParseErrorCode2[ParseErrorCode2["CloseBraceExpected"] = 7] = "CloseBraceExpected"; ParseErrorCode2[ParseErrorCode2["CloseBracketExpected"] = 8] = "CloseBracketExpected"; ParseErrorCode2[ParseErrorCode2["EndOfFileExpected"] = 9] = "EndOfFileExpected"; ParseErrorCode2[ParseErrorCode2["InvalidCommentToken"] = 10] = "InvalidCommentToken"; ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfComment"] = 11] = "UnexpectedEndOfComment"; ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfString"] = 12] = "UnexpectedEndOfString"; ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfNumber"] = 13] = "UnexpectedEndOfNumber"; ParseErrorCode2[ParseErrorCode2["InvalidUnicode"] = 14] = "InvalidUnicode"; ParseErrorCode2[ParseErrorCode2["InvalidEscapeCharacter"] = 15] = "InvalidEscapeCharacter"; ParseErrorCode2[ParseErrorCode2["InvalidCharacter"] = 16] = "InvalidCharacter"; })(ParseErrorCode || (ParseErrorCode = {})); } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js var require_array = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.splitWhen = exports2.flatten = void 0; function flatten2(items) { return items.reduce((collection, item) => [].concat(collection, item), []); } exports2.flatten = flatten2; function splitWhen(items, predicate) { const result = [[]]; let groupIndex = 0; for (const item of items) { if (predicate(item)) { groupIndex++; result[groupIndex] = []; } else { result[groupIndex].push(item); } } return result; } exports2.splitWhen = splitWhen; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/errno.js var require_errno = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/errno.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.isEnoentCodeError = void 0; function isEnoentCodeError(error3) { return error3.code === "ENOENT"; } exports2.isEnoentCodeError = isEnoentCodeError; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/fs.js var require_fs3 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/fs.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.createDirentFromStats = void 0; var DirentFromStats = class { constructor(name, stats) { this.name = name; this.isBlockDevice = stats.isBlockDevice.bind(stats); this.isCharacterDevice = stats.isCharacterDevice.bind(stats); this.isDirectory = stats.isDirectory.bind(stats); this.isFIFO = stats.isFIFO.bind(stats); this.isFile = stats.isFile.bind(stats); this.isSocket = stats.isSocket.bind(stats); this.isSymbolicLink = stats.isSymbolicLink.bind(stats); } }; function createDirentFromStats(name, stats) { return new DirentFromStats(name, stats); } exports2.createDirentFromStats = createDirentFromStats; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/path.js var require_path3 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/path.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.convertPosixPathToPattern = exports2.convertWindowsPathToPattern = exports2.convertPathToPattern = exports2.escapePosixPath = exports2.escapeWindowsPath = exports2.escape = exports2.removeLeadingDotSegment = exports2.makeAbsolute = exports2.unixify = void 0; var os4 = __require("os"); var path11 = __require("path"); var IS_WINDOWS_PLATFORM = os4.platform() === "win32"; var LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; var POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g; var WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()[\]{}]|^!|[!+@](?=\())/g; var DOS_DEVICE_PATH_RE = /^\\\\([.?])/; var WINDOWS_BACKSLASHES_RE = /\\(?![!()+@[\]{}])/g; function unixify(filepath) { return filepath.replace(/\\/g, "/"); } exports2.unixify = unixify; function makeAbsolute(cwd, filepath) { return path11.resolve(cwd, filepath); } exports2.makeAbsolute = makeAbsolute; function removeLeadingDotSegment(entry) { if (entry.charAt(0) === ".") { const secondCharactery = entry.charAt(1); if (secondCharactery === "/" || secondCharactery === "\\") { return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); } } return entry; } exports2.removeLeadingDotSegment = removeLeadingDotSegment; exports2.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath; function escapeWindowsPath(pattern) { return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); } exports2.escapeWindowsPath = escapeWindowsPath; function escapePosixPath(pattern) { return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); } exports2.escapePosixPath = escapePosixPath; exports2.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern; function convertWindowsPathToPattern(filepath) { return escapeWindowsPath(filepath).replace(DOS_DEVICE_PATH_RE, "//$1").replace(WINDOWS_BACKSLASHES_RE, "/"); } exports2.convertWindowsPathToPattern = convertWindowsPathToPattern; function convertPosixPathToPattern(filepath) { return escapePosixPath(filepath); } exports2.convertPosixPathToPattern = convertPosixPathToPattern; } }); // ../../node_modules/.pnpm/is-extglob@2.1.1/node_modules/is-extglob/index.js var require_is_extglob = __commonJS2({ "../../node_modules/.pnpm/is-extglob@2.1.1/node_modules/is-extglob/index.js"(exports2, module2) { module2.exports = function isExtglob(str) { if (typeof str !== "string" || str === "") { return false; } var match; while (match = /(\\).|([@?!+*]\(.*\))/g.exec(str)) { if (match[2]) return true; str = str.slice(match.index + match[0].length); } return false; }; } }); // ../../node_modules/.pnpm/is-glob@4.0.3/node_modules/is-glob/index.js var require_is_glob = __commonJS2({ "../../node_modules/.pnpm/is-glob@4.0.3/node_modules/is-glob/index.js"(exports2, module2) { var isExtglob = require_is_extglob(); var chars2 = { "{": "}", "(": ")", "[": "]" }; var strictCheck = function(str) { if (str[0] === "!") { return true; } var index = 0; var pipeIndex = -2; var closeSquareIndex = -2; var closeCurlyIndex = -2; var closeParenIndex = -2; var backSlashIndex = -2; while (index < str.length) { if (str[index] === "*") { return true; } if (str[index + 1] === "?" && /[\].+)]/.test(str[index])) { return true; } if (closeSquareIndex !== -1 && str[index] === "[" && str[index + 1] !== "]") { if (closeSquareIndex < index) { closeSquareIndex = str.indexOf("]", index); } if (closeSquareIndex > index) { if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { return true; } backSlashIndex = str.indexOf("\\", index); if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { return true; } } } if (closeCurlyIndex !== -1 && str[index] === "{" && str[index + 1] !== "}") { closeCurlyIndex = str.indexOf("}", index); if (closeCurlyIndex > index) { backSlashIndex = str.indexOf("\\", index); if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { return true; } } } if (closeParenIndex !== -1 && str[index] === "(" && str[index + 1] === "?" && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ")") { closeParenIndex = str.indexOf(")", index); if (closeParenIndex > index) { backSlashIndex = str.indexOf("\\", index); if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { return true; } } } if (pipeIndex !== -1 && str[index] === "(" && str[index + 1] !== "|") { if (pipeIndex < index) { pipeIndex = str.indexOf("|", index); } if (pipeIndex !== -1 && str[pipeIndex + 1] !== ")") { closeParenIndex = str.indexOf(")", pipeIndex); if (closeParenIndex > pipeIndex) { backSlashIndex = str.indexOf("\\", pipeIndex); if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { return true; } } } } if (str[index] === "\\") { var open10 = str[index + 1]; index += 2; var close2 = chars2[open10]; if (close2) { var n = str.indexOf(close2, index); if (n !== -1) { index = n + 1; } } if (str[index] === "!") { return true; } } else { index++; } } return false; }; var relaxedCheck = function(str) { if (str[0] === "!") { return true; } var index = 0; while (index < str.length) { if (/[*?{}()[\]]/.test(str[index])) { return true; } if (str[index] === "\\") { var open10 = str[index + 1]; index += 2; var close2 = chars2[open10]; if (close2) { var n = str.indexOf(close2, index); if (n !== -1) { index = n + 1; } } if (str[index] === "!") { return true; } } else { index++; } } return false; }; module2.exports = function isGlob(str, options) { if (typeof str !== "string" || str === "") { return false; } if (isExtglob(str)) { return true; } var check2 = strictCheck; if (options && options.strict === false) { check2 = relaxedCheck; } return check2(str); }; } }); // ../../node_modules/.pnpm/glob-parent@5.1.2/node_modules/glob-parent/index.js var require_glob_parent = __commonJS2({ "../../node_modules/.pnpm/glob-parent@5.1.2/node_modules/glob-parent/index.js"(exports2, module2) { "use strict"; var isGlob = require_is_glob(); var pathPosixDirname = __require("path").posix.dirname; var isWin32 = __require("os").platform() === "win32"; var slash = "/"; var backslash = /\\/g; var enclosure = /[\{\[].*[\}\]]$/; var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; module2.exports = function globParent(str, opts) { var options = Object.assign({ flipBackslashes: true }, opts); if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { str = str.replace(backslash, slash); } if (enclosure.test(str)) { str += slash; } str += "a"; do { str = pathPosixDirname(str); } while (isGlob(str) || globby.test(str)); return str.replace(escaped, "$1"); }; } }); // ../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/utils.js var require_utils9 = __commonJS2({ "../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/utils.js"(exports2) { "use strict"; exports2.isInteger = (num) => { if (typeof num === "number") { return Number.isInteger(num); } if (typeof num === "string" && num.trim() !== "") { return Number.isInteger(Number(num)); } return false; }; exports2.find = (node, type) => node.nodes.find((node2) => node2.type === type); exports2.exceedsLimit = (min, max, step = 1, limit) => { if (limit === false) return false; if (!exports2.isInteger(min) || !exports2.isInteger(max)) return false; return (Number(max) - Number(min)) / Number(step) >= limit; }; exports2.escapeNode = (block, n = 0, type) => { const node = block.nodes[n]; if (!node) return; if (type && node.type === type || node.type === "open" || node.type === "close") { if (node.escaped !== true) { node.value = "\\" + node.value; node.escaped = true; } } }; exports2.encloseBrace = (node) => { if (node.type !== "brace") return false; if (node.commas >> 0 + node.ranges >> 0 === 0) { node.invalid = true; return true; } return false; }; exports2.isInvalidBrace = (block) => { if (block.type !== "brace") return false; if (block.invalid === true || block.dollar) return true; if (block.commas >> 0 + block.ranges >> 0 === 0) { block.invalid = true; return true; } if (block.open !== true || block.close !== true) { block.invalid = true; return true; } return false; }; exports2.isOpenOrClose = (node) => { if (node.type === "open" || node.type === "close") { return true; } return node.open === true || node.close === true; }; exports2.reduce = (nodes) => nodes.reduce((acc, node) => { if (node.type === "text") acc.push(node.value); if (node.type === "range") node.type = "text"; return acc; }, []); exports2.flatten = (...args2) => { const result = []; const flat = (arr) => { for (let i = 0; i < arr.length; i++) { const ele = arr[i]; if (Array.isArray(ele)) { flat(ele); continue; } if (ele !== void 0) { result.push(ele); } } return result; }; flat(args2); return result; }; } }); // ../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/stringify.js var require_stringify = __commonJS2({ "../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/stringify.js"(exports2, module2) { "use strict"; var utils = require_utils9(); module2.exports = (ast, options = {}) => { const stringify2 = (node, parent = {}) => { const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); const invalidNode = node.invalid === true && options.escapeInvalid === true; let output2 = ""; if (node.value) { if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) { return "\\" + node.value; } return node.value; } if (node.value) { return node.value; } if (node.nodes) { for (const child of node.nodes) { output2 += stringify2(child); } } return output2; }; return stringify2(ast); }; } }); // ../../node_modules/.pnpm/is-number@7.0.0/node_modules/is-number/index.js var require_is_number = __commonJS2({ "../../node_modules/.pnpm/is-number@7.0.0/node_modules/is-number/index.js"(exports2, module2) { "use strict"; module2.exports = function(num) { if (typeof num === "number") { return num - num === 0; } if (typeof num === "string" && num.trim() !== "") { return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); } return false; }; } }); // ../../node_modules/.pnpm/to-regex-range@5.0.1/node_modules/to-regex-range/index.js var require_to_regex_range = __commonJS2({ "../../node_modules/.pnpm/to-regex-range@5.0.1/node_modules/to-regex-range/index.js"(exports2, module2) { "use strict"; var isNumber = require_is_number(); var toRegexRange = (min, max, options) => { if (isNumber(min) === false) { throw new TypeError("toRegexRange: expected the first argument to be a number"); } if (max === void 0 || min === max) { return String(min); } if (isNumber(max) === false) { throw new TypeError("toRegexRange: expected the second argument to be a number."); } let opts = { relaxZeros: true, ...options }; if (typeof opts.strictZeros === "boolean") { opts.relaxZeros = opts.strictZeros === false; } let relax = String(opts.relaxZeros); let shorthand = String(opts.shorthand); let capture = String(opts.capture); let wrap = String(opts.wrap); let cacheKey = min + ":" + max + "=" + relax + shorthand + capture + wrap; if (toRegexRange.cache.hasOwnProperty(cacheKey)) { return toRegexRange.cache[cacheKey].result; } let a = Math.min(min, max); let b = Math.max(min, max); if (Math.abs(a - b) === 1) { let result = min + "|" + max; if (opts.capture) { return `(${result})`; } if (opts.wrap === false) { return result; } return `(?:${result})`; } let isPadded = hasPadding(min) || hasPadding(max); let state = { min, max, a, b }; let positives = []; let negatives = []; if (isPadded) { state.isPadded = isPadded; state.maxLen = String(state.max).length; } if (a < 0) { let newMin = b < 0 ? Math.abs(b) : 1; negatives = splitToPatterns(newMin, Math.abs(a), state, opts); a = state.a = 0; } if (b >= 0) { positives = splitToPatterns(a, b, state, opts); } state.negatives = negatives; state.positives = positives; state.result = collatePatterns(negatives, positives, opts); if (opts.capture === true) { state.result = `(${state.result})`; } else if (opts.wrap !== false && positives.length + negatives.length > 1) { state.result = `(?:${state.result})`; } toRegexRange.cache[cacheKey] = state; return state.result; }; function collatePatterns(neg, pos, options) { let onlyNegative = filterPatterns(neg, pos, "-", false, options) || []; let onlyPositive = filterPatterns(pos, neg, "", false, options) || []; let intersected = filterPatterns(neg, pos, "-?", true, options) || []; let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); return subpatterns.join("|"); } function splitToRanges(min, max) { let nines = 1; let zeros = 1; let stop = countNines(min, nines); let stops = /* @__PURE__ */ new Set([max]); while (min <= stop && stop <= max) { stops.add(stop); nines += 1; stop = countNines(min, nines); } stop = countZeros(max + 1, zeros) - 1; while (min < stop && stop <= max) { stops.add(stop); zeros += 1; stop = countZeros(max + 1, zeros) - 1; } stops = [...stops]; stops.sort(compare); return stops; } function rangeToPattern(start, stop, options) { if (start === stop) { return { pattern: start, count: [], digits: 0 }; } let zipped = zip(start, stop); let digits = zipped.length; let pattern = ""; let count = 0; for (let i = 0; i < digits; i++) { let [startDigit, stopDigit] = zipped[i]; if (startDigit === stopDigit) { pattern += startDigit; } else if (startDigit !== "0" || stopDigit !== "9") { pattern += toCharacterClass(startDigit, stopDigit, options); } else { count++; } } if (count) { pattern += options.shorthand === true ? "\\d" : "[0-9]"; } return { pattern, count: [count], digits }; } function splitToPatterns(min, max, tok, options) { let ranges = splitToRanges(min, max); let tokens = []; let start = min; let prev; for (let i = 0; i < ranges.length; i++) { let max2 = ranges[i]; let obj = rangeToPattern(String(start), String(max2), options); let zeros = ""; if (!tok.isPadded && prev && prev.pattern === obj.pattern) { if (prev.count.length > 1) { prev.count.pop(); } prev.count.push(obj.count[0]); prev.string = prev.pattern + toQuantifier(prev.count); start = max2 + 1; continue; } if (tok.isPadded) { zeros = padZeros(max2, tok, options); } obj.string = zeros + obj.pattern + toQuantifier(obj.count); tokens.push(obj); start = max2 + 1; prev = obj; } return tokens; } function filterPatterns(arr, comparison, prefix, intersection, options) { let result = []; for (let ele of arr) { let { string } = ele; if (!intersection && !contains2(comparison, "string", string)) { result.push(prefix + string); } if (intersection && contains2(comparison, "string", string)) { result.push(prefix + string); } } return result; } function zip(a, b) { let arr = []; for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]); return arr; } function compare(a, b) { return a > b ? 1 : b > a ? -1 : 0; } function contains2(arr, key, val) { return arr.some((ele) => ele[key] === val); } function countNines(min, len) { return Number(String(min).slice(0, -len) + "9".repeat(len)); } function countZeros(integer, zeros) { return integer - integer % Math.pow(10, zeros); } function toQuantifier(digits) { let [start = 0, stop = ""] = digits; if (stop || start > 1) { return `{${start + (stop ? "," + stop : "")}}`; } return ""; } function toCharacterClass(a, b, options) { return `[${a}${b - a === 1 ? "" : "-"}${b}]`; } function hasPadding(str) { return /^-?(0+)\d/.test(str); } function padZeros(value, tok, options) { if (!tok.isPadded) { return value; } let diff = Math.abs(tok.maxLen - String(value).length); let relax = options.relaxZeros !== false; switch (diff) { case 0: return ""; case 1: return relax ? "0?" : "0"; case 2: return relax ? "0{0,2}" : "00"; default: { return relax ? `0{0,${diff}}` : `0{${diff}}`; } } } toRegexRange.cache = {}; toRegexRange.clearCache = () => toRegexRange.cache = {}; module2.exports = toRegexRange; } }); // ../../node_modules/.pnpm/fill-range@7.1.1/node_modules/fill-range/index.js var require_fill_range = __commonJS2({ "../../node_modules/.pnpm/fill-range@7.1.1/node_modules/fill-range/index.js"(exports2, module2) { "use strict"; var util = __require("util"); var toRegexRange = require_to_regex_range(); var isObject2 = (val) => val !== null && typeof val === "object" && !Array.isArray(val); var transform = (toNumber) => { return (value) => toNumber === true ? Number(value) : String(value); }; var isValidValue = (value) => { return typeof value === "number" || typeof value === "string" && value !== ""; }; var isNumber = (num) => Number.isInteger(+num); var zeros = (input) => { let value = `${input}`; let index = -1; if (value[0] === "-") value = value.slice(1); if (value === "0") return false; while (value[++index] === "0") ; return index > 0; }; var stringify2 = (start, end, options) => { if (typeof start === "string" || typeof end === "string") { return true; } return options.stringify === true; }; var pad = (input, maxLength, toNumber) => { if (maxLength > 0) { let dash = input[0] === "-" ? "-" : ""; if (dash) input = input.slice(1); input = dash + input.padStart(dash ? maxLength - 1 : maxLength, "0"); } if (toNumber === false) { return String(input); } return input; }; var toMaxLen = (input, maxLength) => { let negative = input[0] === "-" ? "-" : ""; if (negative) { input = input.slice(1); maxLength--; } while (input.length < maxLength) input = "0" + input; return negative ? "-" + input : input; }; var toSequence = (parts, options, maxLen) => { parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); let prefix = options.capture ? "" : "?:"; let positives = ""; let negatives = ""; let result; if (parts.positives.length) { positives = parts.positives.map((v) => toMaxLen(String(v), maxLen)).join("|"); } if (parts.negatives.length) { negatives = `-(${prefix}${parts.negatives.map((v) => toMaxLen(String(v), maxLen)).join("|")})`; } if (positives && negatives) { result = `${positives}|${negatives}`; } else { result = positives || negatives; } if (options.wrap) { return `(${prefix}${result})`; } return result; }; var toRange = (a, b, isNumbers, options) => { if (isNumbers) { return toRegexRange(a, b, { wrap: false, ...options }); } let start = String.fromCharCode(a); if (a === b) return start; let stop = String.fromCharCode(b); return `[${start}-${stop}]`; }; var toRegex = (start, end, options) => { if (Array.isArray(start)) { let wrap = options.wrap === true; let prefix = options.capture ? "" : "?:"; return wrap ? `(${prefix}${start.join("|")})` : start.join("|"); } return toRegexRange(start, end, options); }; var rangeError = (...args2) => { return new RangeError("Invalid range arguments: " + util.inspect(...args2)); }; var invalidRange = (start, end, options) => { if (options.strictRanges === true) throw rangeError([start, end]); return []; }; var invalidStep = (step, options) => { if (options.strictRanges === true) { throw new TypeError(`Expected step "${step}" to be a number`); } return []; }; var fillNumbers = (start, end, step = 1, options = {}) => { let a = Number(start); let b = Number(end); if (!Number.isInteger(a) || !Number.isInteger(b)) { if (options.strictRanges === true) throw rangeError([start, end]); return []; } if (a === 0) a = 0; if (b === 0) b = 0; let descending = a > b; let startString = String(start); let endString = String(end); let stepString = String(step); step = Math.max(Math.abs(step), 1); let padded = zeros(startString) || zeros(endString) || zeros(stepString); let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; let toNumber = padded === false && stringify2(start, end, options) === false; let format8 = options.transform || transform(toNumber); if (options.toRegex && step === 1) { return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); } let parts = { negatives: [], positives: [] }; let push = (num) => parts[num < 0 ? "negatives" : "positives"].push(Math.abs(num)); let range = []; let index = 0; while (descending ? a >= b : a <= b) { if (options.toRegex === true && step > 1) { push(a); } else { range.push(pad(format8(a, index), maxLen, toNumber)); } a = descending ? a - step : a + step; index++; } if (options.toRegex === true) { return step > 1 ? toSequence(parts, options, maxLen) : toRegex(range, null, { wrap: false, ...options }); } return range; }; var fillLetters = (start, end, step = 1, options = {}) => { if (!isNumber(start) && start.length > 1 || !isNumber(end) && end.length > 1) { return invalidRange(start, end, options); } let format8 = options.transform || ((val) => String.fromCharCode(val)); let a = `${start}`.charCodeAt(0); let b = `${end}`.charCodeAt(0); let descending = a > b; let min = Math.min(a, b); let max = Math.max(a, b); if (options.toRegex && step === 1) { return toRange(min, max, false, options); } let range = []; let index = 0; while (descending ? a >= b : a <= b) { range.push(format8(a, index)); a = descending ? a - step : a + step; index++; } if (options.toRegex === true) { return toRegex(range, null, { wrap: false, options }); } return range; }; var fill = (start, end, step, options = {}) => { if (end == null && isValidValue(start)) { return [start]; } if (!isValidValue(start) || !isValidValue(end)) { return invalidRange(start, end, options); } if (typeof step === "function") { return fill(start, end, 1, { transform: step }); } if (isObject2(step)) { return fill(start, end, 0, step); } let opts = { ...options }; if (opts.capture === true) opts.wrap = true; step = step || opts.step || 1; if (!isNumber(step)) { if (step != null && !isObject2(step)) return invalidStep(step, opts); return fill(start, end, 1, step); } if (isNumber(start) && isNumber(end)) { return fillNumbers(start, end, step, opts); } return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); }; module2.exports = fill; } }); // ../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/compile.js var require_compile = __commonJS2({ "../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/compile.js"(exports2, module2) { "use strict"; var fill = require_fill_range(); var utils = require_utils9(); var compile = (ast, options = {}) => { const walk = (node, parent = {}) => { const invalidBlock = utils.isInvalidBrace(parent); const invalidNode = node.invalid === true && options.escapeInvalid === true; const invalid = invalidBlock === true || invalidNode === true; const prefix = options.escapeInvalid === true ? "\\" : ""; let output2 = ""; if (node.isOpen === true) { return prefix + node.value; } if (node.isClose === true) { console.log("node.isClose", prefix, node.value); return prefix + node.value; } if (node.type === "open") { return invalid ? prefix + node.value : "("; } if (node.type === "close") { return invalid ? prefix + node.value : ")"; } if (node.type === "comma") { return node.prev.type === "comma" ? "" : invalid ? node.value : "|"; } if (node.value) { return node.value; } if (node.nodes && node.ranges > 0) { const args2 = utils.reduce(node.nodes); const range = fill(...args2, { ...options, wrap: false, toRegex: true, strictZeros: true }); if (range.length !== 0) { return args2.length > 1 && range.length > 1 ? `(${range})` : range; } } if (node.nodes) { for (const child of node.nodes) { output2 += walk(child, node); } } return output2; }; return walk(ast); }; module2.exports = compile; } }); // ../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/expand.js var require_expand = __commonJS2({ "../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/expand.js"(exports2, module2) { "use strict"; var fill = require_fill_range(); var stringify2 = require_stringify(); var utils = require_utils9(); var append = (queue = "", stash = "", enclose = false) => { const result = []; queue = [].concat(queue); stash = [].concat(stash); if (!stash.length) return queue; if (!queue.length) { return enclose ? utils.flatten(stash).map((ele) => `{${ele}}`) : stash; } for (const item of queue) { if (Array.isArray(item)) { for (const value of item) { result.push(append(value, stash, enclose)); } } else { for (let ele of stash) { if (enclose === true && typeof ele === "string") ele = `{${ele}}`; result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele); } } } return utils.flatten(result); }; var expand = (ast, options = {}) => { const rangeLimit = options.rangeLimit === void 0 ? 1e3 : options.rangeLimit; const walk = (node, parent = {}) => { node.queue = []; let p = parent; let q = parent.queue; while (p.type !== "brace" && p.type !== "root" && p.parent) { p = p.parent; q = p.queue; } if (node.invalid || node.dollar) { q.push(append(q.pop(), stringify2(node, options))); return; } if (node.type === "brace" && node.invalid !== true && node.nodes.length === 2) { q.push(append(q.pop(), ["{}"])); return; } if (node.nodes && node.ranges > 0) { const args2 = utils.reduce(node.nodes); if (utils.exceedsLimit(...args2, options.step, rangeLimit)) { throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit."); } let range = fill(...args2, options); if (range.length === 0) { range = stringify2(node, options); } q.push(append(q.pop(), range)); node.nodes = []; return; } const enclose = utils.encloseBrace(node); let queue = node.queue; let block = node; while (block.type !== "brace" && block.type !== "root" && block.parent) { block = block.parent; queue = block.queue; } for (let i = 0; i < node.nodes.length; i++) { const child = node.nodes[i]; if (child.type === "comma" && node.type === "brace") { if (i === 1) queue.push(""); queue.push(""); continue; } if (child.type === "close") { q.push(append(q.pop(), queue, enclose)); continue; } if (child.value && child.type !== "open") { queue.push(append(queue.pop(), child.value)); continue; } if (child.nodes) { walk(child, node); } } return queue; }; return utils.flatten(walk(ast)); }; module2.exports = expand; } }); // ../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/constants.js var require_constants3 = __commonJS2({ "../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/constants.js"(exports2, module2) { "use strict"; module2.exports = { MAX_LENGTH: 1e4, // Digits CHAR_0: "0", /* 0 */ CHAR_9: "9", /* 9 */ // Alphabet chars. CHAR_UPPERCASE_A: "A", /* A */ CHAR_LOWERCASE_A: "a", /* a */ CHAR_UPPERCASE_Z: "Z", /* Z */ CHAR_LOWERCASE_Z: "z", /* z */ CHAR_LEFT_PARENTHESES: "(", /* ( */ CHAR_RIGHT_PARENTHESES: ")", /* ) */ CHAR_ASTERISK: "*", /* * */ // Non-alphabetic chars. CHAR_AMPERSAND: "&", /* & */ CHAR_AT: "@", /* @ */ CHAR_BACKSLASH: "\\", /* \ */ CHAR_BACKTICK: "`", /* ` */ CHAR_CARRIAGE_RETURN: "\r", /* \r */ CHAR_CIRCUMFLEX_ACCENT: "^", /* ^ */ CHAR_COLON: ":", /* : */ CHAR_COMMA: ",", /* , */ CHAR_DOLLAR: "$", /* . */ CHAR_DOT: ".", /* . */ CHAR_DOUBLE_QUOTE: '"', /* " */ CHAR_EQUAL: "=", /* = */ CHAR_EXCLAMATION_MARK: "!", /* ! */ CHAR_FORM_FEED: "\f", /* \f */ CHAR_FORWARD_SLASH: "/", /* / */ CHAR_HASH: "#", /* # */ CHAR_HYPHEN_MINUS: "-", /* - */ CHAR_LEFT_ANGLE_BRACKET: "<", /* < */ CHAR_LEFT_CURLY_BRACE: "{", /* { */ CHAR_LEFT_SQUARE_BRACKET: "[", /* [ */ CHAR_LINE_FEED: "\n", /* \n */ CHAR_NO_BREAK_SPACE: "\xA0", /* \u00A0 */ CHAR_PERCENT: "%", /* % */ CHAR_PLUS: "+", /* + */ CHAR_QUESTION_MARK: "?", /* ? */ CHAR_RIGHT_ANGLE_BRACKET: ">", /* > */ CHAR_RIGHT_CURLY_BRACE: "}", /* } */ CHAR_RIGHT_SQUARE_BRACKET: "]", /* ] */ CHAR_SEMICOLON: ";", /* ; */ CHAR_SINGLE_QUOTE: "'", /* ' */ CHAR_SPACE: " ", /* */ CHAR_TAB: " ", /* \t */ CHAR_UNDERSCORE: "_", /* _ */ CHAR_VERTICAL_LINE: "|", /* | */ CHAR_ZERO_WIDTH_NOBREAK_SPACE: "\uFEFF" /* \uFEFF */ }; } }); // ../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/parse.js var require_parse2 = __commonJS2({ "../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/parse.js"(exports2, module2) { "use strict"; var stringify2 = require_stringify(); var { MAX_LENGTH, CHAR_BACKSLASH, /* \ */ CHAR_BACKTICK, /* ` */ CHAR_COMMA: CHAR_COMMA2, /* , */ CHAR_DOT, /* . */ CHAR_LEFT_PARENTHESES, /* ( */ CHAR_RIGHT_PARENTHESES, /* ) */ CHAR_LEFT_CURLY_BRACE, /* { */ CHAR_RIGHT_CURLY_BRACE, /* } */ CHAR_LEFT_SQUARE_BRACKET, /* [ */ CHAR_RIGHT_SQUARE_BRACKET, /* ] */ CHAR_DOUBLE_QUOTE, /* " */ CHAR_SINGLE_QUOTE, /* ' */ CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_NOBREAK_SPACE } = require_constants3(); var parse11 = (input, options = {}) => { if (typeof input !== "string") { throw new TypeError("Expected a string"); } const opts = options || {}; const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; if (input.length > max) { throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); } const ast = { type: "root", input, nodes: [] }; const stack2 = [ast]; let block = ast; let prev = ast; let brackets = 0; const length = input.length; let index = 0; let depth = 0; let value; const advance = () => input[index++]; const push = (node) => { if (node.type === "text" && prev.type === "dot") { prev.type = "text"; } if (prev && prev.type === "text" && node.type === "text") { prev.value += node.value; return; } block.nodes.push(node); node.parent = block; node.prev = prev; prev = node; return node; }; push({ type: "bos" }); while (index < length) { block = stack2[stack2.length - 1]; value = advance(); if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { continue; } if (value === CHAR_BACKSLASH) { push({ type: "text", value: (options.keepEscaping ? value : "") + advance() }); continue; } if (value === CHAR_RIGHT_SQUARE_BRACKET) { push({ type: "text", value: "\\" + value }); continue; } if (value === CHAR_LEFT_SQUARE_BRACKET) { brackets++; let next; while (index < length && (next = advance())) { value += next; if (next === CHAR_LEFT_SQUARE_BRACKET) { brackets++; continue; } if (next === CHAR_BACKSLASH) { value += advance(); continue; } if (next === CHAR_RIGHT_SQUARE_BRACKET) { brackets--; if (brackets === 0) { break; } } } push({ type: "text", value }); continue; } if (value === CHAR_LEFT_PARENTHESES) { block = push({ type: "paren", nodes: [] }); stack2.push(block); push({ type: "text", value }); continue; } if (value === CHAR_RIGHT_PARENTHESES) { if (block.type !== "paren") { push({ type: "text", value }); continue; } block = stack2.pop(); push({ type: "text", value }); block = stack2[stack2.length - 1]; continue; } if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { const open10 = value; let next; if (options.keepQuotes !== true) { value = ""; } while (index < length && (next = advance())) { if (next === CHAR_BACKSLASH) { value += next + advance(); continue; } if (next === open10) { if (options.keepQuotes === true) value += next; break; } value += next; } push({ type: "text", value }); continue; } if (value === CHAR_LEFT_CURLY_BRACE) { depth++; const dollar = prev.value && prev.value.slice(-1) === "$" || block.dollar === true; const brace = { type: "brace", open: true, close: false, dollar, depth, commas: 0, ranges: 0, nodes: [] }; block = push(brace); stack2.push(block); push({ type: "open", value }); continue; } if (value === CHAR_RIGHT_CURLY_BRACE) { if (block.type !== "brace") { push({ type: "text", value }); continue; } const type = "close"; block = stack2.pop(); block.close = true; push({ type, value }); depth--; block = stack2[stack2.length - 1]; continue; } if (value === CHAR_COMMA2 && depth > 0) { if (block.ranges > 0) { block.ranges = 0; const open10 = block.nodes.shift(); block.nodes = [open10, { type: "text", value: stringify2(block) }]; } push({ type: "comma", value }); block.commas++; continue; } if (value === CHAR_DOT && depth > 0 && block.commas === 0) { const siblings = block.nodes; if (depth === 0 || siblings.length === 0) { push({ type: "text", value }); continue; } if (prev.type === "dot") { block.range = []; prev.value += value; prev.type = "range"; if (block.nodes.length !== 3 && block.nodes.length !== 5) { block.invalid = true; block.ranges = 0; prev.type = "text"; continue; } block.ranges++; block.args = []; continue; } if (prev.type === "range") { siblings.pop(); const before = siblings[siblings.length - 1]; before.value += prev.value + value; prev = before; block.ranges--; continue; } push({ type: "dot", value }); continue; } push({ type: "text", value }); } do { block = stack2.pop(); if (block.type !== "root") { block.nodes.forEach((node) => { if (!node.nodes) { if (node.type === "open") node.isOpen = true; if (node.type === "close") node.isClose = true; if (!node.nodes) node.type = "text"; node.invalid = true; } }); const parent = stack2[stack2.length - 1]; const index2 = parent.nodes.indexOf(block); parent.nodes.splice(index2, 1, ...block.nodes); } } while (stack2.length > 0); push({ type: "eos" }); return ast; }; module2.exports = parse11; } }); // ../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/index.js var require_braces = __commonJS2({ "../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/index.js"(exports2, module2) { "use strict"; var stringify2 = require_stringify(); var compile = require_compile(); var expand = require_expand(); var parse11 = require_parse2(); var braces = (input, options = {}) => { let output2 = []; if (Array.isArray(input)) { for (const pattern of input) { const result = braces.create(pattern, options); if (Array.isArray(result)) { output2.push(...result); } else { output2.push(result); } } } else { output2 = [].concat(braces.create(input, options)); } if (options && options.expand === true && options.nodupes === true) { output2 = [...new Set(output2)]; } return output2; }; braces.parse = (input, options = {}) => parse11(input, options); braces.stringify = (input, options = {}) => { if (typeof input === "string") { return stringify2(braces.parse(input, options), options); } return stringify2(input, options); }; braces.compile = (input, options = {}) => { if (typeof input === "string") { input = braces.parse(input, options); } return compile(input, options); }; braces.expand = (input, options = {}) => { if (typeof input === "string") { input = braces.parse(input, options); } let result = expand(input, options); if (options.noempty === true) { result = result.filter(Boolean); } if (options.nodupes === true) { result = [...new Set(result)]; } return result; }; braces.create = (input, options = {}) => { if (input === "" || input.length < 3) { return [input]; } return options.expand !== true ? braces.compile(input, options) : braces.expand(input, options); }; module2.exports = braces; } }); // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/constants.js var require_constants4 = __commonJS2({ "../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/constants.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var WIN_SLASH = "\\\\/"; var WIN_NO_SLASH = `[^${WIN_SLASH}]`; var DOT_LITERAL = "\\."; var PLUS_LITERAL = "\\+"; var QMARK_LITERAL = "\\?"; var SLASH_LITERAL = "\\/"; var ONE_CHAR = "(?=.)"; var QMARK = "[^/]"; var END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; var START_ANCHOR = `(?:^|${SLASH_LITERAL})`; var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; var NO_DOT = `(?!${DOT_LITERAL})`; var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; var STAR = `${QMARK}*?`; var POSIX_CHARS = { DOT_LITERAL, PLUS_LITERAL, QMARK_LITERAL, SLASH_LITERAL, ONE_CHAR, QMARK, END_ANCHOR, DOTS_SLASH, NO_DOT, NO_DOTS, NO_DOT_SLASH, NO_DOTS_SLASH, QMARK_NO_DOT, STAR, START_ANCHOR }; var WINDOWS_CHARS = { ...POSIX_CHARS, SLASH_LITERAL: `[${WIN_SLASH}]`, QMARK: WIN_NO_SLASH, STAR: `${WIN_NO_SLASH}*?`, DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, NO_DOT: `(?!${DOT_LITERAL})`, NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, QMARK_NO_DOT: `[^.${WIN_SLASH}]`, START_ANCHOR: `(?:^|[${WIN_SLASH}])`, END_ANCHOR: `(?:[${WIN_SLASH}]|$)` }; var POSIX_REGEX_SOURCE = { alnum: "a-zA-Z0-9", alpha: "a-zA-Z", ascii: "\\x00-\\x7F", blank: " \\t", cntrl: "\\x00-\\x1F\\x7F", digit: "0-9", graph: "\\x21-\\x7E", lower: "a-z", print: "\\x20-\\x7E ", punct: "\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~", space: " \\t\\r\\n\\v\\f", upper: "A-Z", word: "A-Za-z0-9_", xdigit: "A-Fa-f0-9" }; module2.exports = { MAX_LENGTH: 1024 * 64, POSIX_REGEX_SOURCE, // regular expressions REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, // Replace globs with equivalent patterns to reduce parsing time. REPLACEMENTS: { "***": "*", "**/**": "**", "**/**/**": "**" }, // Digits CHAR_0: 48, /* 0 */ CHAR_9: 57, /* 9 */ // Alphabet chars. CHAR_UPPERCASE_A: 65, /* A */ CHAR_LOWERCASE_A: 97, /* a */ CHAR_UPPERCASE_Z: 90, /* Z */ CHAR_LOWERCASE_Z: 122, /* z */ CHAR_LEFT_PARENTHESES: 40, /* ( */ CHAR_RIGHT_PARENTHESES: 41, /* ) */ CHAR_ASTERISK: 42, /* * */ // Non-alphabetic chars. CHAR_AMPERSAND: 38, /* & */ CHAR_AT: 64, /* @ */ CHAR_BACKWARD_SLASH: 92, /* \ */ CHAR_CARRIAGE_RETURN: 13, /* \r */ CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ CHAR_COLON: 58, /* : */ CHAR_COMMA: 44, /* , */ CHAR_DOT: 46, /* . */ CHAR_DOUBLE_QUOTE: 34, /* " */ CHAR_EQUAL: 61, /* = */ CHAR_EXCLAMATION_MARK: 33, /* ! */ CHAR_FORM_FEED: 12, /* \f */ CHAR_FORWARD_SLASH: 47, /* / */ CHAR_GRAVE_ACCENT: 96, /* ` */ CHAR_HASH: 35, /* # */ CHAR_HYPHEN_MINUS: 45, /* - */ CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ CHAR_LEFT_CURLY_BRACE: 123, /* { */ CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ CHAR_LINE_FEED: 10, /* \n */ CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ CHAR_PERCENT: 37, /* % */ CHAR_PLUS: 43, /* + */ CHAR_QUESTION_MARK: 63, /* ? */ CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ CHAR_RIGHT_CURLY_BRACE: 125, /* } */ CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ CHAR_SEMICOLON: 59, /* ; */ CHAR_SINGLE_QUOTE: 39, /* ' */ CHAR_SPACE: 32, /* */ CHAR_TAB: 9, /* \t */ CHAR_UNDERSCORE: 95, /* _ */ CHAR_VERTICAL_LINE: 124, /* | */ CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ SEP: path11.sep, /** * Create EXTGLOB_CHARS */ extglobChars(chars2) { return { "!": { type: "negate", open: "(?:(?!(?:", close: `))${chars2.STAR})` }, "?": { type: "qmark", open: "(?:", close: ")?" }, "+": { type: "plus", open: "(?:", close: ")+" }, "*": { type: "star", open: "(?:", close: ")*" }, "@": { type: "at", open: "(?:", close: ")" } }; }, /** * Create GLOB_CHARS */ globChars(win32) { return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; } }; } }); // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/utils.js var require_utils10 = __commonJS2({ "../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/utils.js"(exports2) { "use strict"; var path11 = __require("path"); var win32 = process.platform === "win32"; var { REGEX_BACKSLASH, REGEX_REMOVE_BACKSLASH, REGEX_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_GLOBAL } = require_constants4(); exports2.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); exports2.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str); exports2.isRegexChar = (str) => str.length === 1 && exports2.hasRegexChars(str); exports2.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1"); exports2.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/"); exports2.removeBackslashes = (str) => { return str.replace(REGEX_REMOVE_BACKSLASH, (match) => { return match === "\\" ? "" : match; }); }; exports2.supportsLookbehinds = () => { const segs = process.version.slice(1).split(".").map(Number); if (segs.length === 3 && segs[0] >= 9 || segs[0] === 8 && segs[1] >= 10) { return true; } return false; }; exports2.isWindows = (options) => { if (options && typeof options.windows === "boolean") { return options.windows; } return win32 === true || path11.sep === "\\"; }; exports2.escapeLast = (input, char, lastIdx) => { const idx = input.lastIndexOf(char, lastIdx); if (idx === -1) return input; if (input[idx - 1] === "\\") return exports2.escapeLast(input, char, idx - 1); return `${input.slice(0, idx)}\\${input.slice(idx)}`; }; exports2.removePrefix = (input, state = {}) => { let output2 = input; if (output2.startsWith("./")) { output2 = output2.slice(2); state.prefix = "./"; } return output2; }; exports2.wrapOutput = (input, state = {}, options = {}) => { const prepend = options.contains ? "" : "^"; const append = options.contains ? "" : "$"; let output2 = `${prepend}(?:${input})${append}`; if (state.negated === true) { output2 = `(?:^(?!${output2}).*$)`; } return output2; }; } }); // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/scan.js var require_scan = __commonJS2({ "../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/scan.js"(exports2, module2) { "use strict"; var utils = require_utils10(); var { CHAR_ASTERISK, /* * */ CHAR_AT, /* @ */ CHAR_BACKWARD_SLASH, /* \ */ CHAR_COMMA: CHAR_COMMA2, /* , */ CHAR_DOT, /* . */ CHAR_EXCLAMATION_MARK, /* ! */ CHAR_FORWARD_SLASH, /* / */ CHAR_LEFT_CURLY_BRACE, /* { */ CHAR_LEFT_PARENTHESES, /* ( */ CHAR_LEFT_SQUARE_BRACKET, /* [ */ CHAR_PLUS: CHAR_PLUS2, /* + */ CHAR_QUESTION_MARK, /* ? */ CHAR_RIGHT_CURLY_BRACE, /* } */ CHAR_RIGHT_PARENTHESES, /* ) */ CHAR_RIGHT_SQUARE_BRACKET /* ] */ } = require_constants4(); var isPathSeparator = (code2) => { return code2 === CHAR_FORWARD_SLASH || code2 === CHAR_BACKWARD_SLASH; }; var depth = (token) => { if (token.isPrefix !== true) { token.depth = token.isGlobstar ? Infinity : 1; } }; var scan = (input, options) => { const opts = options || {}; const length = input.length - 1; const scanToEnd = opts.parts === true || opts.scanToEnd === true; const slashes = []; const tokens = []; const parts = []; let str = input; let index = -1; let start = 0; let lastIndex = 0; let isBrace = false; let isBracket = false; let isGlob = false; let isExtglob = false; let isGlobstar = false; let braceEscaped = false; let backslashes = false; let negated = false; let negatedExtglob = false; let finished = false; let braces = 0; let prev; let code2; let token = { value: "", depth: 0, isGlob: false }; const eos = () => index >= length; const peek = () => str.charCodeAt(index + 1); const advance = () => { prev = code2; return str.charCodeAt(++index); }; while (index < length) { code2 = advance(); let next; if (code2 === CHAR_BACKWARD_SLASH) { backslashes = token.backslashes = true; code2 = advance(); if (code2 === CHAR_LEFT_CURLY_BRACE) { braceEscaped = true; } continue; } if (braceEscaped === true || code2 === CHAR_LEFT_CURLY_BRACE) { braces++; while (eos() !== true && (code2 = advance())) { if (code2 === CHAR_BACKWARD_SLASH) { backslashes = token.backslashes = true; advance(); continue; } if (code2 === CHAR_LEFT_CURLY_BRACE) { braces++; continue; } if (braceEscaped !== true && code2 === CHAR_DOT && (code2 = advance()) === CHAR_DOT) { isBrace = token.isBrace = true; isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } if (braceEscaped !== true && code2 === CHAR_COMMA2) { isBrace = token.isBrace = true; isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } if (code2 === CHAR_RIGHT_CURLY_BRACE) { braces--; if (braces === 0) { braceEscaped = false; isBrace = token.isBrace = true; finished = true; break; } } } if (scanToEnd === true) { continue; } break; } if (code2 === CHAR_FORWARD_SLASH) { slashes.push(index); tokens.push(token); token = { value: "", depth: 0, isGlob: false }; if (finished === true) continue; if (prev === CHAR_DOT && index === start + 1) { start += 2; continue; } lastIndex = index + 1; continue; } if (opts.noext !== true) { const isExtglobChar = code2 === CHAR_PLUS2 || code2 === CHAR_AT || code2 === CHAR_ASTERISK || code2 === CHAR_QUESTION_MARK || code2 === CHAR_EXCLAMATION_MARK; if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { isGlob = token.isGlob = true; isExtglob = token.isExtglob = true; finished = true; if (code2 === CHAR_EXCLAMATION_MARK && index === start) { negatedExtglob = true; } if (scanToEnd === true) { while (eos() !== true && (code2 = advance())) { if (code2 === CHAR_BACKWARD_SLASH) { backslashes = token.backslashes = true; code2 = advance(); continue; } if (code2 === CHAR_RIGHT_PARENTHESES) { isGlob = token.isGlob = true; finished = true; break; } } continue; } break; } } if (code2 === CHAR_ASTERISK) { if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } if (code2 === CHAR_QUESTION_MARK) { isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } if (code2 === CHAR_LEFT_SQUARE_BRACKET) { while (eos() !== true && (next = advance())) { if (next === CHAR_BACKWARD_SLASH) { backslashes = token.backslashes = true; advance(); continue; } if (next === CHAR_RIGHT_SQUARE_BRACKET) { isBracket = token.isBracket = true; isGlob = token.isGlob = true; finished = true; break; } } if (scanToEnd === true) { continue; } break; } if (opts.nonegate !== true && code2 === CHAR_EXCLAMATION_MARK && index === start) { negated = token.negated = true; start++; continue; } if (opts.noparen !== true && code2 === CHAR_LEFT_PARENTHESES) { isGlob = token.isGlob = true; if (scanToEnd === true) { while (eos() !== true && (code2 = advance())) { if (code2 === CHAR_LEFT_PARENTHESES) { backslashes = token.backslashes = true; code2 = advance(); continue; } if (code2 === CHAR_RIGHT_PARENTHESES) { finished = true; break; } } continue; } break; } if (isGlob === true) { finished = true; if (scanToEnd === true) { continue; } break; } } if (opts.noext === true) { isExtglob = false; isGlob = false; } let base = str; let prefix = ""; let glob = ""; if (start > 0) { prefix = str.slice(0, start); str = str.slice(start); lastIndex -= start; } if (base && isGlob === true && lastIndex > 0) { base = str.slice(0, lastIndex); glob = str.slice(lastIndex); } else if (isGlob === true) { base = ""; glob = str; } else { base = str; } if (base && base !== "" && base !== "/" && base !== str) { if (isPathSeparator(base.charCodeAt(base.length - 1))) { base = base.slice(0, -1); } } if (opts.unescape === true) { if (glob) glob = utils.removeBackslashes(glob); if (base && backslashes === true) { base = utils.removeBackslashes(base); } } const state = { prefix, input, start, base, glob, isBrace, isBracket, isGlob, isExtglob, isGlobstar, negated, negatedExtglob }; if (opts.tokens === true) { state.maxDepth = 0; if (!isPathSeparator(code2)) { tokens.push(token); } state.tokens = tokens; } if (opts.parts === true || opts.tokens === true) { let prevIndex; for (let idx = 0; idx < slashes.length; idx++) { const n = prevIndex ? prevIndex + 1 : start; const i = slashes[idx]; const value = input.slice(n, i); if (opts.tokens) { if (idx === 0 && start !== 0) { tokens[idx].isPrefix = true; tokens[idx].value = prefix; } else { tokens[idx].value = value; } depth(tokens[idx]); state.maxDepth += tokens[idx].depth; } if (idx !== 0 || value !== "") { parts.push(value); } prevIndex = i; } if (prevIndex && prevIndex + 1 < input.length) { const value = input.slice(prevIndex + 1); parts.push(value); if (opts.tokens) { tokens[tokens.length - 1].value = value; depth(tokens[tokens.length - 1]); state.maxDepth += tokens[tokens.length - 1].depth; } } state.slashes = slashes; state.parts = parts; } return state; }; module2.exports = scan; } }); // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/parse.js var require_parse3 = __commonJS2({ "../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/parse.js"(exports2, module2) { "use strict"; var constants2 = require_constants4(); var utils = require_utils10(); var { MAX_LENGTH, POSIX_REGEX_SOURCE, REGEX_NON_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_BACKREF, REPLACEMENTS } = constants2; var expandRange = (args2, options) => { if (typeof options.expandRange === "function") { return options.expandRange(...args2, options); } args2.sort(); const value = `[${args2.join("-")}]`; try { new RegExp(value); } catch (ex) { return args2.map((v) => utils.escapeRegex(v)).join(".."); } return value; }; var syntaxError = (type, char) => { return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; }; var parse11 = (input, options) => { if (typeof input !== "string") { throw new TypeError("Expected a string"); } input = REPLACEMENTS[input] || input; const opts = { ...options }; const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; let len = input.length; if (len > max) { throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); } const bos = { type: "bos", value: "", output: opts.prepend || "" }; const tokens = [bos]; const capture = opts.capture ? "" : "?:"; const win32 = utils.isWindows(options); const PLATFORM_CHARS = constants2.globChars(win32); const EXTGLOB_CHARS = constants2.extglobChars(PLATFORM_CHARS); const { DOT_LITERAL, PLUS_LITERAL, SLASH_LITERAL, ONE_CHAR, DOTS_SLASH, NO_DOT, NO_DOT_SLASH, NO_DOTS_SLASH, QMARK, QMARK_NO_DOT, STAR, START_ANCHOR } = PLATFORM_CHARS; const globstar = (opts2) => { return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; }; const nodot = opts.dot ? "" : NO_DOT; const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; let star = opts.bash === true ? globstar(opts) : STAR; if (opts.capture) { star = `(${star})`; } if (typeof opts.noext === "boolean") { opts.noextglob = opts.noext; } const state = { input, index: -1, start: 0, dot: opts.dot === true, consumed: "", output: "", prefix: "", backtrack: false, negated: false, brackets: 0, braces: 0, parens: 0, quotes: 0, globstar: false, tokens }; input = utils.removePrefix(input, state); len = input.length; const extglobs = []; const braces = []; const stack2 = []; let prev = bos; let value; const eos = () => state.index === len - 1; const peek = state.peek = (n = 1) => input[state.index + n]; const advance = state.advance = () => input[++state.index] || ""; const remaining = () => input.slice(state.index + 1); const consume = (value2 = "", num = 0) => { state.consumed += value2; state.index += num; }; const append = (token) => { state.output += token.output != null ? token.output : token.value; consume(token.value); }; const negate = () => { let count = 1; while (peek() === "!" && (peek(2) !== "(" || peek(3) === "?")) { advance(); state.start++; count++; } if (count % 2 === 0) { return false; } state.negated = true; state.start++; return true; }; const increment = (type) => { state[type]++; stack2.push(type); }; const decrement = (type) => { state[type]--; stack2.pop(); }; const push = (tok) => { if (prev.type === "globstar") { const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace"); const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren"); if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) { state.output = state.output.slice(0, -prev.output.length); prev.type = "star"; prev.value = "*"; prev.output = star; state.output += prev.output; } } if (extglobs.length && tok.type !== "paren") { extglobs[extglobs.length - 1].inner += tok.value; } if (tok.value || tok.output) append(tok); if (prev && prev.type === "text" && tok.type === "text") { prev.value += tok.value; prev.output = (prev.output || "") + tok.value; return; } tok.prev = prev; tokens.push(tok); prev = tok; }; const extglobOpen = (type, value2) => { const token = { ...EXTGLOB_CHARS[value2], conditions: 1, inner: "" }; token.prev = prev; token.parens = state.parens; token.output = state.output; const output2 = (opts.capture ? "(" : "") + token.open; increment("parens"); push({ type, value: value2, output: state.output ? "" : ONE_CHAR }); push({ type: "paren", extglob: true, value: advance(), output: output2 }); extglobs.push(token); }; const extglobClose = (token) => { let output2 = token.close + (opts.capture ? ")" : ""); let rest; if (token.type === "negate") { let extglobStar = star; if (token.inner && token.inner.length > 1 && token.inner.includes("/")) { extglobStar = globstar(opts); } if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { output2 = token.close = `)$))${extglobStar}`; } if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { const expression = parse11(rest, { ...options, fastpaths: false }).output; output2 = token.close = `)${expression})${extglobStar})`; } if (token.prev.type === "bos") { state.negatedExtglob = true; } } push({ type: "paren", extglob: true, value, output: output2 }); decrement("parens"); }; if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { let backslashes = false; let output2 = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars2, first, rest, index) => { if (first === "\\") { backslashes = true; return m; } if (first === "?") { if (esc) { return esc + first + (rest ? QMARK.repeat(rest.length) : ""); } if (index === 0) { return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ""); } return QMARK.repeat(chars2.length); } if (first === ".") { return DOT_LITERAL.repeat(chars2.length); } if (first === "*") { if (esc) { return esc + first + (rest ? star : ""); } return star; } return esc ? m : `\\${m}`; }); if (backslashes === true) { if (opts.unescape === true) { output2 = output2.replace(/\\/g, ""); } else { output2 = output2.replace(/\\+/g, (m) => { return m.length % 2 === 0 ? "\\\\" : m ? "\\" : ""; }); } } if (output2 === input && opts.contains === true) { state.output = input; return state; } state.output = utils.wrapOutput(output2, state, options); return state; } while (!eos()) { value = advance(); if (value === "\0") { continue; } if (value === "\\") { const next = peek(); if (next === "/" && opts.bash !== true) { continue; } if (next === "." || next === ";") { continue; } if (!next) { value += "\\"; push({ type: "text", value }); continue; } const match = /^\\+/.exec(remaining()); let slashes = 0; if (match && match[0].length > 2) { slashes = match[0].length; state.index += slashes; if (slashes % 2 !== 0) { value += "\\"; } } if (opts.unescape === true) { value = advance(); } else { value += advance(); } if (state.brackets === 0) { push({ type: "text", value }); continue; } } if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) { if (opts.posix !== false && value === ":") { const inner = prev.value.slice(1); if (inner.includes("[")) { prev.posix = true; if (inner.includes(":")) { const idx = prev.value.lastIndexOf("["); const pre = prev.value.slice(0, idx); const rest2 = prev.value.slice(idx + 2); const posix2 = POSIX_REGEX_SOURCE[rest2]; if (posix2) { prev.value = pre + posix2; state.backtrack = true; advance(); if (!bos.output && tokens.indexOf(prev) === 1) { bos.output = ONE_CHAR; } continue; } } } } if (value === "[" && peek() !== ":" || value === "-" && peek() === "]") { value = `\\${value}`; } if (value === "]" && (prev.value === "[" || prev.value === "[^")) { value = `\\${value}`; } if (opts.posix === true && value === "!" && prev.value === "[") { value = "^"; } prev.value += value; append({ value }); continue; } if (state.quotes === 1 && value !== '"') { value = utils.escapeRegex(value); prev.value += value; append({ value }); continue; } if (value === '"') { state.quotes = state.quotes === 1 ? 0 : 1; if (opts.keepQuotes === true) { push({ type: "text", value }); } continue; } if (value === "(") { increment("parens"); push({ type: "paren", value }); continue; } if (value === ")") { if (state.parens === 0 && opts.strictBrackets === true) { throw new SyntaxError(syntaxError("opening", "(")); } const extglob = extglobs[extglobs.length - 1]; if (extglob && state.parens === extglob.parens + 1) { extglobClose(extglobs.pop()); continue; } push({ type: "paren", value, output: state.parens ? ")" : "\\)" }); decrement("parens"); continue; } if (value === "[") { if (opts.nobracket === true || !remaining().includes("]")) { if (opts.nobracket !== true && opts.strictBrackets === true) { throw new SyntaxError(syntaxError("closing", "]")); } value = `\\${value}`; } else { increment("brackets"); } push({ type: "bracket", value }); continue; } if (value === "]") { if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) { push({ type: "text", value, output: `\\${value}` }); continue; } if (state.brackets === 0) { if (opts.strictBrackets === true) { throw new SyntaxError(syntaxError("opening", "[")); } push({ type: "text", value, output: `\\${value}` }); continue; } decrement("brackets"); const prevValue = prev.value.slice(1); if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) { value = `/${value}`; } prev.value += value; append({ value }); if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { continue; } const escaped = utils.escapeRegex(prev.value); state.output = state.output.slice(0, -prev.value.length); if (opts.literalBrackets === true) { state.output += escaped; prev.value = escaped; continue; } prev.value = `(${capture}${escaped}|${prev.value})`; state.output += prev.value; continue; } if (value === "{" && opts.nobrace !== true) { increment("braces"); const open10 = { type: "brace", value, output: "(", outputIndex: state.output.length, tokensIndex: state.tokens.length }; braces.push(open10); push(open10); continue; } if (value === "}") { const brace = braces[braces.length - 1]; if (opts.nobrace === true || !brace) { push({ type: "text", value, output: value }); continue; } let output2 = ")"; if (brace.dots === true) { const arr = tokens.slice(); const range = []; for (let i = arr.length - 1; i >= 0; i--) { tokens.pop(); if (arr[i].type === "brace") { break; } if (arr[i].type !== "dots") { range.unshift(arr[i].value); } } output2 = expandRange(range, opts); state.backtrack = true; } if (brace.comma !== true && brace.dots !== true) { const out = state.output.slice(0, brace.outputIndex); const toks = state.tokens.slice(brace.tokensIndex); brace.value = brace.output = "\\{"; value = output2 = "\\}"; state.output = out; for (const t of toks) { state.output += t.output || t.value; } } push({ type: "brace", value, output: output2 }); decrement("braces"); braces.pop(); continue; } if (value === "|") { if (extglobs.length > 0) { extglobs[extglobs.length - 1].conditions++; } push({ type: "text", value }); continue; } if (value === ",") { let output2 = value; const brace = braces[braces.length - 1]; if (brace && stack2[stack2.length - 1] === "braces") { brace.comma = true; output2 = "|"; } push({ type: "comma", value, output: output2 }); continue; } if (value === "/") { if (prev.type === "dot" && state.index === state.start + 1) { state.start = state.index + 1; state.consumed = ""; state.output = ""; tokens.pop(); prev = bos; continue; } push({ type: "slash", value, output: SLASH_LITERAL }); continue; } if (value === ".") { if (state.braces > 0 && prev.type === "dot") { if (prev.value === ".") prev.output = DOT_LITERAL; const brace = braces[braces.length - 1]; prev.type = "dots"; prev.output += value; prev.value += value; brace.dots = true; continue; } if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") { push({ type: "text", value, output: DOT_LITERAL }); continue; } push({ type: "dot", value, output: DOT_LITERAL }); continue; } if (value === "?") { const isGroup = prev && prev.value === "("; if (!isGroup && opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { extglobOpen("qmark", value); continue; } if (prev && prev.type === "paren") { const next = peek(); let output2 = value; if (next === "<" && !utils.supportsLookbehinds()) { throw new Error("Node.js v10 or higher is required for regex lookbehinds"); } if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) { output2 = `\\${value}`; } push({ type: "text", value, output: output2 }); continue; } if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) { push({ type: "qmark", value, output: QMARK_NO_DOT }); continue; } push({ type: "qmark", value, output: QMARK }); continue; } if (value === "!") { if (opts.noextglob !== true && peek() === "(") { if (peek(2) !== "?" || !/[!=<:]/.test(peek(3))) { extglobOpen("negate", value); continue; } } if (opts.nonegate !== true && state.index === 0) { negate(); continue; } } if (value === "+") { if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { extglobOpen("plus", value); continue; } if (prev && prev.value === "(" || opts.regex === false) { push({ type: "plus", value, output: PLUS_LITERAL }); continue; } if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) { push({ type: "plus", value }); continue; } push({ type: "plus", value: PLUS_LITERAL }); continue; } if (value === "@") { if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { push({ type: "at", extglob: true, value, output: "" }); continue; } push({ type: "text", value }); continue; } if (value !== "*") { if (value === "$" || value === "^") { value = `\\${value}`; } const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); if (match) { value += match[0]; state.index += match[0].length; } push({ type: "text", value }); continue; } if (prev && (prev.type === "globstar" || prev.star === true)) { prev.type = "star"; prev.star = true; prev.value += value; prev.output = star; state.backtrack = true; state.globstar = true; consume(value); continue; } let rest = remaining(); if (opts.noextglob !== true && /^\([^?]/.test(rest)) { extglobOpen("star", value); continue; } if (prev.type === "star") { if (opts.noglobstar === true) { consume(value); continue; } const prior = prev.prev; const before = prior.prev; const isStart = prior.type === "slash" || prior.type === "bos"; const afterStar = before && (before.type === "star" || before.type === "globstar"); if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) { push({ type: "star", value, output: "" }); continue; } const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace"); const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren"); if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) { push({ type: "star", value, output: "" }); continue; } while (rest.slice(0, 3) === "/**") { const after = input[state.index + 4]; if (after && after !== "/") { break; } rest = rest.slice(3); consume("/**", 3); } if (prior.type === "bos" && eos()) { prev.type = "globstar"; prev.value += value; prev.output = globstar(opts); state.output = prev.output; state.globstar = true; consume(value); continue; } if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) { state.output = state.output.slice(0, -(prior.output + prev.output).length); prior.output = `(?:${prior.output}`; prev.type = "globstar"; prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)"); prev.value += value; state.globstar = true; state.output += prior.output + prev.output; consume(value); continue; } if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") { const end = rest[1] !== void 0 ? "|$" : ""; state.output = state.output.slice(0, -(prior.output + prev.output).length); prior.output = `(?:${prior.output}`; prev.type = "globstar"; prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; prev.value += value; state.output += prior.output + prev.output; state.globstar = true; consume(value + advance()); push({ type: "slash", value: "/", output: "" }); continue; } if (prior.type === "bos" && rest[0] === "/") { prev.type = "globstar"; prev.value += value; prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; state.output = prev.output; state.globstar = true; consume(value + advance()); push({ type: "slash", value: "/", output: "" }); continue; } state.output = state.output.slice(0, -prev.output.length); prev.type = "globstar"; prev.output = globstar(opts); prev.value += value; state.output += prev.output; state.globstar = true; consume(value); continue; } const token = { type: "star", value, output: star }; if (opts.bash === true) { token.output = ".*?"; if (prev.type === "bos" || prev.type === "slash") { token.output = nodot + token.output; } push(token); continue; } if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) { token.output = value; push(token); continue; } if (state.index === state.start || prev.type === "slash" || prev.type === "dot") { if (prev.type === "dot") { state.output += NO_DOT_SLASH; prev.output += NO_DOT_SLASH; } else if (opts.dot === true) { state.output += NO_DOTS_SLASH; prev.output += NO_DOTS_SLASH; } else { state.output += nodot; prev.output += nodot; } if (peek() !== "*") { state.output += ONE_CHAR; prev.output += ONE_CHAR; } } push(token); } while (state.brackets > 0) { if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "]")); state.output = utils.escapeLast(state.output, "["); decrement("brackets"); } while (state.parens > 0) { if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", ")")); state.output = utils.escapeLast(state.output, "("); decrement("parens"); } while (state.braces > 0) { if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "}")); state.output = utils.escapeLast(state.output, "{"); decrement("braces"); } if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) { push({ type: "maybe_slash", value: "", output: `${SLASH_LITERAL}?` }); } if (state.backtrack === true) { state.output = ""; for (const token of state.tokens) { state.output += token.output != null ? token.output : token.value; if (token.suffix) { state.output += token.suffix; } } } return state; }; parse11.fastpaths = (input, options) => { const opts = { ...options }; const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; const len = input.length; if (len > max) { throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); } input = REPLACEMENTS[input] || input; const win32 = utils.isWindows(options); const { DOT_LITERAL, SLASH_LITERAL, ONE_CHAR, DOTS_SLASH, NO_DOT, NO_DOTS, NO_DOTS_SLASH, STAR, START_ANCHOR } = constants2.globChars(win32); const nodot = opts.dot ? NO_DOTS : NO_DOT; const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; const capture = opts.capture ? "" : "?:"; const state = { negated: false, prefix: "" }; let star = opts.bash === true ? ".*?" : STAR; if (opts.capture) { star = `(${star})`; } const globstar = (opts2) => { if (opts2.noglobstar === true) return star; return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; }; const create = (str) => { switch (str) { case "*": return `${nodot}${ONE_CHAR}${star}`; case ".*": return `${DOT_LITERAL}${ONE_CHAR}${star}`; case "*.*": return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; case "*/*": return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; case "**": return nodot + globstar(opts); case "**/*": return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; case "**/*.*": return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; case "**/.*": return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; default: { const match = /^(.*?)\.(\w+)$/.exec(str); if (!match) return; const source2 = create(match[1]); if (!source2) return; return source2 + DOT_LITERAL + match[2]; } } }; const output2 = utils.removePrefix(input, state); let source = create(output2); if (source && opts.strictSlashes !== true) { source += `${SLASH_LITERAL}?`; } return source; }; module2.exports = parse11; } }); // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/picomatch.js var require_picomatch = __commonJS2({ "../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/picomatch.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var scan = require_scan(); var parse11 = require_parse3(); var utils = require_utils10(); var constants2 = require_constants4(); var isObject2 = (val) => val && typeof val === "object" && !Array.isArray(val); var picomatch = (glob, options, returnState = false) => { if (Array.isArray(glob)) { const fns = glob.map((input) => picomatch(input, options, returnState)); const arrayMatcher = (str) => { for (const isMatch of fns) { const state2 = isMatch(str); if (state2) return state2; } return false; }; return arrayMatcher; } const isState = isObject2(glob) && glob.tokens && glob.input; if (glob === "" || typeof glob !== "string" && !isState) { throw new TypeError("Expected pattern to be a non-empty string"); } const opts = options || {}; const posix2 = utils.isWindows(options); const regex = isState ? picomatch.compileRe(glob, options) : picomatch.makeRe(glob, options, false, true); const state = regex.state; delete regex.state; let isIgnored = () => false; if (opts.ignore) { const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); } const matcher = (input, returnObject = false) => { const { isMatch, match, output: output2 } = picomatch.test(input, regex, options, { glob, posix: posix2 }); const result = { glob, state, regex, posix: posix2, input, output: output2, match, isMatch }; if (typeof opts.onResult === "function") { opts.onResult(result); } if (isMatch === false) { result.isMatch = false; return returnObject ? result : false; } if (isIgnored(input)) { if (typeof opts.onIgnore === "function") { opts.onIgnore(result); } result.isMatch = false; return returnObject ? result : false; } if (typeof opts.onMatch === "function") { opts.onMatch(result); } return returnObject ? result : true; }; if (returnState) { matcher.state = state; } return matcher; }; picomatch.test = (input, regex, options, { glob, posix: posix2 } = {}) => { if (typeof input !== "string") { throw new TypeError("Expected input to be a string"); } if (input === "") { return { isMatch: false, output: "" }; } const opts = options || {}; const format8 = opts.format || (posix2 ? utils.toPosixSlashes : null); let match = input === glob; let output2 = match && format8 ? format8(input) : input; if (match === false) { output2 = format8 ? format8(input) : input; match = output2 === glob; } if (match === false || opts.capture === true) { if (opts.matchBase === true || opts.basename === true) { match = picomatch.matchBase(input, regex, options, posix2); } else { match = regex.exec(output2); } } return { isMatch: Boolean(match), match, output: output2 }; }; picomatch.matchBase = (input, glob, options, posix2 = utils.isWindows(options)) => { const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); return regex.test(path11.basename(input)); }; picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); picomatch.parse = (pattern, options) => { if (Array.isArray(pattern)) return pattern.map((p) => picomatch.parse(p, options)); return parse11(pattern, { ...options, fastpaths: false }); }; picomatch.scan = (input, options) => scan(input, options); picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { if (returnOutput === true) { return state.output; } const opts = options || {}; const prepend = opts.contains ? "" : "^"; const append = opts.contains ? "" : "$"; let source = `${prepend}(?:${state.output})${append}`; if (state && state.negated === true) { source = `^(?!${source}).*$`; } const regex = picomatch.toRegex(source, options); if (returnState === true) { regex.state = state; } return regex; }; picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { if (!input || typeof input !== "string") { throw new TypeError("Expected a non-empty string"); } let parsed = { negated: false, fastpaths: true }; if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) { parsed.output = parse11.fastpaths(input, options); } if (!parsed.output) { parsed = parse11(input, options); } return picomatch.compileRe(parsed, options, returnOutput, returnState); }; picomatch.toRegex = (source, options) => { try { const opts = options || {}; return new RegExp(source, opts.flags || (opts.nocase ? "i" : "")); } catch (err) { if (options && options.debug === true) throw err; return /$^/; } }; picomatch.constants = constants2; module2.exports = picomatch; } }); // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/index.js var require_picomatch2 = __commonJS2({ "../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/index.js"(exports2, module2) { "use strict"; module2.exports = require_picomatch(); } }); // ../../node_modules/.pnpm/micromatch@4.0.8/node_modules/micromatch/index.js var require_micromatch = __commonJS2({ "../../node_modules/.pnpm/micromatch@4.0.8/node_modules/micromatch/index.js"(exports2, module2) { "use strict"; var util = __require("util"); var braces = require_braces(); var picomatch = require_picomatch2(); var utils = require_utils10(); var isEmptyString = (v) => v === "" || v === "./"; var hasBraces = (v) => { const index = v.indexOf("{"); return index > -1 && v.indexOf("}", index) > -1; }; var micromatch = (list10, patterns, options) => { patterns = [].concat(patterns); list10 = [].concat(list10); let omit = /* @__PURE__ */ new Set(); let keep = /* @__PURE__ */ new Set(); let items = /* @__PURE__ */ new Set(); let negatives = 0; let onResult = (state) => { items.add(state.output); if (options && options.onResult) { options.onResult(state); } }; for (let i = 0; i < patterns.length; i++) { let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); let negated = isMatch.state.negated || isMatch.state.negatedExtglob; if (negated) negatives++; for (let item of list10) { let matched = isMatch(item, true); let match = negated ? !matched.isMatch : matched.isMatch; if (!match) continue; if (negated) { omit.add(matched.output); } else { omit.delete(matched.output); keep.add(matched.output); } } } let result = negatives === patterns.length ? [...items] : [...keep]; let matches = result.filter((item) => !omit.has(item)); if (options && matches.length === 0) { if (options.failglob === true) { throw new Error(`No matches found for "${patterns.join(", ")}"`); } if (options.nonull === true || options.nullglob === true) { return options.unescape ? patterns.map((p) => p.replace(/\\/g, "")) : patterns; } } return matches; }; micromatch.match = micromatch; micromatch.matcher = (pattern, options) => picomatch(pattern, options); micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); micromatch.any = micromatch.isMatch; micromatch.not = (list10, patterns, options = {}) => { patterns = [].concat(patterns).map(String); let result = /* @__PURE__ */ new Set(); let items = []; let onResult = (state) => { if (options.onResult) options.onResult(state); items.push(state.output); }; let matches = new Set(micromatch(list10, patterns, { ...options, onResult })); for (let item of items) { if (!matches.has(item)) { result.add(item); } } return [...result]; }; micromatch.contains = (str, pattern, options) => { if (typeof str !== "string") { throw new TypeError(`Expected a string: "${util.inspect(str)}"`); } if (Array.isArray(pattern)) { return pattern.some((p) => micromatch.contains(str, p, options)); } if (typeof pattern === "string") { if (isEmptyString(str) || isEmptyString(pattern)) { return false; } if (str.includes(pattern) || str.startsWith("./") && str.slice(2).includes(pattern)) { return true; } } return micromatch.isMatch(str, pattern, { ...options, contains: true }); }; micromatch.matchKeys = (obj, patterns, options) => { if (!utils.isObject(obj)) { throw new TypeError("Expected the first argument to be an object"); } let keys = micromatch(Object.keys(obj), patterns, options); let res = {}; for (let key of keys) res[key] = obj[key]; return res; }; micromatch.some = (list10, patterns, options) => { let items = [].concat(list10); for (let pattern of [].concat(patterns)) { let isMatch = picomatch(String(pattern), options); if (items.some((item) => isMatch(item))) { return true; } } return false; }; micromatch.every = (list10, patterns, options) => { let items = [].concat(list10); for (let pattern of [].concat(patterns)) { let isMatch = picomatch(String(pattern), options); if (!items.every((item) => isMatch(item))) { return false; } } return true; }; micromatch.all = (str, patterns, options) => { if (typeof str !== "string") { throw new TypeError(`Expected a string: "${util.inspect(str)}"`); } return [].concat(patterns).every((p) => picomatch(p, options)(str)); }; micromatch.capture = (glob, input, options) => { let posix2 = utils.isWindows(options); let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); let match = regex.exec(posix2 ? utils.toPosixSlashes(input) : input); if (match) { return match.slice(1).map((v) => v === void 0 ? "" : v); } }; micromatch.makeRe = (...args2) => picomatch.makeRe(...args2); micromatch.scan = (...args2) => picomatch.scan(...args2); micromatch.parse = (patterns, options) => { let res = []; for (let pattern of [].concat(patterns || [])) { for (let str of braces(String(pattern), options)) { res.push(picomatch.parse(str, options)); } } return res; }; micromatch.braces = (pattern, options) => { if (typeof pattern !== "string") throw new TypeError("Expected a string"); if (options && options.nobrace === true || !hasBraces(pattern)) { return [pattern]; } return braces(pattern, options); }; micromatch.braceExpand = (pattern, options) => { if (typeof pattern !== "string") throw new TypeError("Expected a string"); return micromatch.braces(pattern, { ...options, expand: true }); }; micromatch.hasBraces = hasBraces; module2.exports = micromatch; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/pattern.js var require_pattern = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/pattern.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.isAbsolute = exports2.partitionAbsoluteAndRelative = exports2.removeDuplicateSlashes = exports2.matchAny = exports2.convertPatternsToRe = exports2.makeRe = exports2.getPatternParts = exports2.expandBraceExpansion = exports2.expandPatternsWithBraceExpansion = exports2.isAffectDepthOfReadingPattern = exports2.endsWithSlashGlobStar = exports2.hasGlobStar = exports2.getBaseDirectory = exports2.isPatternRelatedToParentDirectory = exports2.getPatternsOutsideCurrentDirectory = exports2.getPatternsInsideCurrentDirectory = exports2.getPositivePatterns = exports2.getNegativePatterns = exports2.isPositivePattern = exports2.isNegativePattern = exports2.convertToNegativePattern = exports2.convertToPositivePattern = exports2.isDynamicPattern = exports2.isStaticPattern = void 0; var path11 = __require("path"); var globParent = require_glob_parent(); var micromatch = require_micromatch(); var GLOBSTAR = "**"; var ESCAPE_SYMBOL = "\\"; var COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; var REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; var REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; var GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; var BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; var DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; function isStaticPattern(pattern, options = {}) { return !isDynamicPattern(pattern, options); } exports2.isStaticPattern = isStaticPattern; function isDynamicPattern(pattern, options = {}) { if (pattern === "") { return false; } if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { return true; } if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { return true; } if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { return true; } if (options.braceExpansion !== false && hasBraceExpansion(pattern)) { return true; } return false; } exports2.isDynamicPattern = isDynamicPattern; function hasBraceExpansion(pattern) { const openingBraceIndex = pattern.indexOf("{"); if (openingBraceIndex === -1) { return false; } const closingBraceIndex = pattern.indexOf("}", openingBraceIndex + 1); if (closingBraceIndex === -1) { return false; } const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex); return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent); } function convertToPositivePattern(pattern) { return isNegativePattern(pattern) ? pattern.slice(1) : pattern; } exports2.convertToPositivePattern = convertToPositivePattern; function convertToNegativePattern(pattern) { return "!" + pattern; } exports2.convertToNegativePattern = convertToNegativePattern; function isNegativePattern(pattern) { return pattern.startsWith("!") && pattern[1] !== "("; } exports2.isNegativePattern = isNegativePattern; function isPositivePattern(pattern) { return !isNegativePattern(pattern); } exports2.isPositivePattern = isPositivePattern; function getNegativePatterns(patterns) { return patterns.filter(isNegativePattern); } exports2.getNegativePatterns = getNegativePatterns; function getPositivePatterns(patterns) { return patterns.filter(isPositivePattern); } exports2.getPositivePatterns = getPositivePatterns; function getPatternsInsideCurrentDirectory(patterns) { return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); } exports2.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; function getPatternsOutsideCurrentDirectory(patterns) { return patterns.filter(isPatternRelatedToParentDirectory); } exports2.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; function isPatternRelatedToParentDirectory(pattern) { return pattern.startsWith("..") || pattern.startsWith("./.."); } exports2.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; function getBaseDirectory(pattern) { return globParent(pattern, { flipBackslashes: false }); } exports2.getBaseDirectory = getBaseDirectory; function hasGlobStar(pattern) { return pattern.includes(GLOBSTAR); } exports2.hasGlobStar = hasGlobStar; function endsWithSlashGlobStar(pattern) { return pattern.endsWith("/" + GLOBSTAR); } exports2.endsWithSlashGlobStar = endsWithSlashGlobStar; function isAffectDepthOfReadingPattern(pattern) { const basename11 = path11.basename(pattern); return endsWithSlashGlobStar(pattern) || isStaticPattern(basename11); } exports2.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; function expandPatternsWithBraceExpansion(patterns) { return patterns.reduce((collection, pattern) => { return collection.concat(expandBraceExpansion(pattern)); }, []); } exports2.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; function expandBraceExpansion(pattern) { const patterns = micromatch.braces(pattern, { expand: true, nodupes: true, keepEscaping: true }); patterns.sort((a, b) => a.length - b.length); return patterns.filter((pattern2) => pattern2 !== ""); } exports2.expandBraceExpansion = expandBraceExpansion; function getPatternParts(pattern, options) { let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); if (parts.length === 0) { parts = [pattern]; } if (parts[0].startsWith("/")) { parts[0] = parts[0].slice(1); parts.unshift(""); } return parts; } exports2.getPatternParts = getPatternParts; function makeRe(pattern, options) { return micromatch.makeRe(pattern, options); } exports2.makeRe = makeRe; function convertPatternsToRe(patterns, options) { return patterns.map((pattern) => makeRe(pattern, options)); } exports2.convertPatternsToRe = convertPatternsToRe; function matchAny(entry, patternsRe) { return patternsRe.some((patternRe) => patternRe.test(entry)); } exports2.matchAny = matchAny; function removeDuplicateSlashes(pattern) { return pattern.replace(DOUBLE_SLASH_RE, "/"); } exports2.removeDuplicateSlashes = removeDuplicateSlashes; function partitionAbsoluteAndRelative(patterns) { const absolute = []; const relative8 = []; for (const pattern of patterns) { if (isAbsolute2(pattern)) { absolute.push(pattern); } else { relative8.push(pattern); } } return [absolute, relative8]; } exports2.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative; function isAbsolute2(pattern) { return path11.isAbsolute(pattern); } exports2.isAbsolute = isAbsolute2; } }); // ../../node_modules/.pnpm/merge2@1.4.1/node_modules/merge2/index.js var require_merge2 = __commonJS2({ "../../node_modules/.pnpm/merge2@1.4.1/node_modules/merge2/index.js"(exports2, module2) { "use strict"; var Stream = __require("stream"); var PassThrough = Stream.PassThrough; var slice = Array.prototype.slice; module2.exports = merge2; function merge2() { const streamsQueue = []; const args2 = slice.call(arguments); let merging = false; let options = args2[args2.length - 1]; if (options && !Array.isArray(options) && options.pipe == null) { args2.pop(); } else { options = {}; } const doEnd = options.end !== false; const doPipeError = options.pipeError === true; if (options.objectMode == null) { options.objectMode = true; } if (options.highWaterMark == null) { options.highWaterMark = 64 * 1024; } const mergedStream = PassThrough(options); function addStream() { for (let i = 0, len = arguments.length; i < len; i++) { streamsQueue.push(pauseStreams(arguments[i], options)); } mergeStream(); return this; } function mergeStream() { if (merging) { return; } merging = true; let streams = streamsQueue.shift(); if (!streams) { process.nextTick(endStream); return; } if (!Array.isArray(streams)) { streams = [streams]; } let pipesCount = streams.length + 1; function next() { if (--pipesCount > 0) { return; } merging = false; mergeStream(); } function pipe3(stream) { function onend() { stream.removeListener("merge2UnpipeEnd", onend); stream.removeListener("end", onend); if (doPipeError) { stream.removeListener("error", onerror); } next(); } function onerror(err) { mergedStream.emit("error", err); } if (stream._readableState.endEmitted) { return next(); } stream.on("merge2UnpipeEnd", onend); stream.on("end", onend); if (doPipeError) { stream.on("error", onerror); } stream.pipe(mergedStream, { end: false }); stream.resume(); } for (let i = 0; i < streams.length; i++) { pipe3(streams[i]); } next(); } function endStream() { merging = false; mergedStream.emit("queueDrain"); if (doEnd) { mergedStream.end(); } } mergedStream.setMaxListeners(0); mergedStream.add = addStream; mergedStream.on("unpipe", function(stream) { stream.emit("merge2UnpipeEnd"); }); if (args2.length) { addStream.apply(null, args2); } return mergedStream; } function pauseStreams(streams, options) { if (!Array.isArray(streams)) { if (!streams._readableState && streams.pipe) { streams = streams.pipe(PassThrough(options)); } if (!streams._readableState || !streams.pause || !streams.pipe) { throw new Error("Only readable stream can be merged."); } streams.pause(); } else { for (let i = 0, len = streams.length; i < len; i++) { streams[i] = pauseStreams(streams[i], options); } } return streams; } } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/stream.js var require_stream = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/stream.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.merge = void 0; var merge2 = require_merge2(); function merge3(streams) { const mergedStream = merge2(streams); streams.forEach((stream) => { stream.once("error", (error3) => mergedStream.emit("error", error3)); }); mergedStream.once("close", () => propagateCloseEventToSources(streams)); mergedStream.once("end", () => propagateCloseEventToSources(streams)); return mergedStream; } exports2.merge = merge3; function propagateCloseEventToSources(streams) { streams.forEach((stream) => stream.emit("close")); } } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/string.js var require_string2 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/string.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.isEmpty = exports2.isString = void 0; function isString(input) { return typeof input === "string"; } exports2.isString = isString; function isEmpty(input) { return input === ""; } exports2.isEmpty = isEmpty; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/index.js var require_utils11 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.string = exports2.stream = exports2.pattern = exports2.path = exports2.fs = exports2.errno = exports2.array = void 0; var array = require_array(); exports2.array = array; var errno = require_errno(); exports2.errno = errno; var fs15 = require_fs3(); exports2.fs = fs15; var path11 = require_path3(); exports2.path = path11; var pattern = require_pattern(); exports2.pattern = pattern; var stream = require_stream(); exports2.stream = stream; var string = require_string2(); exports2.string = string; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/managers/tasks.js var require_tasks = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/managers/tasks.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.convertPatternGroupToTask = exports2.convertPatternGroupsToTasks = exports2.groupPatternsByBaseDirectory = exports2.getNegativePatternsAsPositive = exports2.getPositivePatterns = exports2.convertPatternsToTasks = exports2.generate = void 0; var utils = require_utils11(); function generate(input, settings) { const patterns = processPatterns(input, settings); const ignore = processPatterns(settings.ignore, settings); const positivePatterns = getPositivePatterns(patterns); const negativePatterns = getNegativePatternsAsPositive(patterns, ignore); const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); const staticTasks = convertPatternsToTasks( staticPatterns, negativePatterns, /* dynamic */ false ); const dynamicTasks = convertPatternsToTasks( dynamicPatterns, negativePatterns, /* dynamic */ true ); return staticTasks.concat(dynamicTasks); } exports2.generate = generate; function processPatterns(input, settings) { let patterns = input; if (settings.braceExpansion) { patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns); } if (settings.baseNameMatch) { patterns = patterns.map((pattern) => pattern.includes("/") ? pattern : `**/${pattern}`); } return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern)); } function convertPatternsToTasks(positive, negative, dynamic) { const tasks = []; const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); if ("." in insideCurrentDirectoryGroup) { tasks.push(convertPatternGroupToTask(".", patternsInsideCurrentDirectory, negative, dynamic)); } else { tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); } return tasks; } exports2.convertPatternsToTasks = convertPatternsToTasks; function getPositivePatterns(patterns) { return utils.pattern.getPositivePatterns(patterns); } exports2.getPositivePatterns = getPositivePatterns; function getNegativePatternsAsPositive(patterns, ignore) { const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); const positive = negative.map(utils.pattern.convertToPositivePattern); return positive; } exports2.getNegativePatternsAsPositive = getNegativePatternsAsPositive; function groupPatternsByBaseDirectory(patterns) { const group = {}; return patterns.reduce((collection, pattern) => { const base = utils.pattern.getBaseDirectory(pattern); if (base in collection) { collection[base].push(pattern); } else { collection[base] = [pattern]; } return collection; }, group); } exports2.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; function convertPatternGroupsToTasks(positive, negative, dynamic) { return Object.keys(positive).map((base) => { return convertPatternGroupToTask(base, positive[base], negative, dynamic); }); } exports2.convertPatternGroupsToTasks = convertPatternGroupsToTasks; function convertPatternGroupToTask(base, positive, negative, dynamic) { return { dynamic, positive, negative, base, patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) }; } exports2.convertPatternGroupToTask = convertPatternGroupToTask; } }); // ../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/async.js var require_async2 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/async.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.read = void 0; function read(path11, settings, callback) { settings.fs.lstat(path11, (lstatError, lstat3) => { if (lstatError !== null) { callFailureCallback(callback, lstatError); return; } if (!lstat3.isSymbolicLink() || !settings.followSymbolicLink) { callSuccessCallback(callback, lstat3); return; } settings.fs.stat(path11, (statError, stat2) => { if (statError !== null) { if (settings.throwErrorOnBrokenSymbolicLink) { callFailureCallback(callback, statError); return; } callSuccessCallback(callback, lstat3); return; } if (settings.markSymbolicLink) { stat2.isSymbolicLink = () => true; } callSuccessCallback(callback, stat2); }); }); } exports2.read = read; function callFailureCallback(callback, error3) { callback(error3); } function callSuccessCallback(callback, result) { callback(null, result); } } }); // ../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/sync.js var require_sync = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/sync.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.read = void 0; function read(path11, settings) { const lstat3 = settings.fs.lstatSync(path11); if (!lstat3.isSymbolicLink() || !settings.followSymbolicLink) { return lstat3; } try { const stat2 = settings.fs.statSync(path11); if (settings.markSymbolicLink) { stat2.isSymbolicLink = () => true; } return stat2; } catch (error3) { if (!settings.throwErrorOnBrokenSymbolicLink) { return lstat3; } throw error3; } } exports2.read = read; } }); // ../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/adapters/fs.js var require_fs4 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/adapters/fs.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.createFileSystemAdapter = exports2.FILE_SYSTEM_ADAPTER = void 0; var fs15 = __require("fs"); exports2.FILE_SYSTEM_ADAPTER = { lstat: fs15.lstat, stat: fs15.stat, lstatSync: fs15.lstatSync, statSync: fs15.statSync }; function createFileSystemAdapter(fsMethods) { if (fsMethods === void 0) { return exports2.FILE_SYSTEM_ADAPTER; } return Object.assign(Object.assign({}, exports2.FILE_SYSTEM_ADAPTER), fsMethods); } exports2.createFileSystemAdapter = createFileSystemAdapter; } }); // ../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/settings.js var require_settings = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/settings.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var fs15 = require_fs4(); var Settings = class { constructor(_options = {}) { this._options = _options; this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); this.fs = fs15.createFileSystemAdapter(this._options.fs); this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); } _getValue(option, value) { return option !== null && option !== void 0 ? option : value; } }; exports2.default = Settings; } }); // ../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/index.js var require_out = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.statSync = exports2.stat = exports2.Settings = void 0; var async = require_async2(); var sync = require_sync(); var settings_1 = require_settings(); exports2.Settings = settings_1.default; function stat2(path11, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === "function") { async.read(path11, getSettings(), optionsOrSettingsOrCallback); return; } async.read(path11, getSettings(optionsOrSettingsOrCallback), callback); } exports2.stat = stat2; function statSync3(path11, optionsOrSettings) { const settings = getSettings(optionsOrSettings); return sync.read(path11, settings); } exports2.statSync = statSync3; function getSettings(settingsOrOptions = {}) { if (settingsOrOptions instanceof settings_1.default) { return settingsOrOptions; } return new settings_1.default(settingsOrOptions); } } }); // ../../node_modules/.pnpm/queue-microtask@1.2.3/node_modules/queue-microtask/index.js var require_queue_microtask = __commonJS2({ "../../node_modules/.pnpm/queue-microtask@1.2.3/node_modules/queue-microtask/index.js"(exports2, module2) { var promise; module2.exports = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : global) : (cb) => (promise || (promise = Promise.resolve())).then(cb).catch((err) => setTimeout(() => { throw err; }, 0)); } }); // ../../node_modules/.pnpm/run-parallel@1.2.0/node_modules/run-parallel/index.js var require_run_parallel = __commonJS2({ "../../node_modules/.pnpm/run-parallel@1.2.0/node_modules/run-parallel/index.js"(exports2, module2) { module2.exports = runParallel; var queueMicrotask2 = require_queue_microtask(); function runParallel(tasks, cb) { let results, pending, keys; let isSync = true; if (Array.isArray(tasks)) { results = []; pending = tasks.length; } else { keys = Object.keys(tasks); results = {}; pending = keys.length; } function done(err) { function end() { if (cb) cb(err, results); cb = null; } if (isSync) queueMicrotask2(end); else end(); } function each(i, err, result) { results[i] = result; if (--pending === 0 || err) { done(err); } } if (!pending) { done(null); } else if (keys) { keys.forEach(function(key) { tasks[key](function(err, result) { each(key, err, result); }); }); } else { tasks.forEach(function(task, i) { task(function(err, result) { each(i, err, result); }); }); } isSync = false; } } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/constants.js var require_constants5 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/constants.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0; var NODE_PROCESS_VERSION_PARTS = process.versions.node.split("."); if (NODE_PROCESS_VERSION_PARTS[0] === void 0 || NODE_PROCESS_VERSION_PARTS[1] === void 0) { throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`); } var MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); var MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); var SUPPORTED_MAJOR_VERSION = 10; var SUPPORTED_MINOR_VERSION = 10; var IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; var IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; exports2.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/fs.js var require_fs5 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/fs.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.createDirentFromStats = void 0; var DirentFromStats = class { constructor(name, stats) { this.name = name; this.isBlockDevice = stats.isBlockDevice.bind(stats); this.isCharacterDevice = stats.isCharacterDevice.bind(stats); this.isDirectory = stats.isDirectory.bind(stats); this.isFIFO = stats.isFIFO.bind(stats); this.isFile = stats.isFile.bind(stats); this.isSocket = stats.isSocket.bind(stats); this.isSymbolicLink = stats.isSymbolicLink.bind(stats); } }; function createDirentFromStats(name, stats) { return new DirentFromStats(name, stats); } exports2.createDirentFromStats = createDirentFromStats; } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/index.js var require_utils12 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.fs = void 0; var fs15 = require_fs5(); exports2.fs = fs15; } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/common.js var require_common3 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/common.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.joinPathSegments = void 0; function joinPathSegments(a, b, separator) { if (a.endsWith(separator)) { return a + b; } return a + separator + b; } exports2.joinPathSegments = joinPathSegments; } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/async.js var require_async3 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/async.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.readdir = exports2.readdirWithFileTypes = exports2.read = void 0; var fsStat = require_out(); var rpl = require_run_parallel(); var constants_1 = require_constants5(); var utils = require_utils12(); var common2 = require_common3(); function read(directory, settings, callback) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { readdirWithFileTypes(directory, settings, callback); return; } readdir2(directory, settings, callback); } exports2.read = read; function readdirWithFileTypes(directory, settings, callback) { settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { if (readdirError !== null) { callFailureCallback(callback, readdirError); return; } const entries = dirents.map((dirent) => ({ dirent, name: dirent.name, path: common2.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) })); if (!settings.followSymbolicLinks) { callSuccessCallback(callback, entries); return; } const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); rpl(tasks, (rplError, rplEntries) => { if (rplError !== null) { callFailureCallback(callback, rplError); return; } callSuccessCallback(callback, rplEntries); }); }); } exports2.readdirWithFileTypes = readdirWithFileTypes; function makeRplTaskEntry(entry, settings) { return (done) => { if (!entry.dirent.isSymbolicLink()) { done(null, entry); return; } settings.fs.stat(entry.path, (statError, stats) => { if (statError !== null) { if (settings.throwErrorOnBrokenSymbolicLink) { done(statError); return; } done(null, entry); return; } entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); done(null, entry); }); }; } function readdir2(directory, settings, callback) { settings.fs.readdir(directory, (readdirError, names) => { if (readdirError !== null) { callFailureCallback(callback, readdirError); return; } const tasks = names.map((name) => { const path11 = common2.joinPathSegments(directory, name, settings.pathSegmentSeparator); return (done) => { fsStat.stat(path11, settings.fsStatSettings, (error3, stats) => { if (error3 !== null) { done(error3); return; } const entry = { name, path: path11, dirent: utils.fs.createDirentFromStats(name, stats) }; if (settings.stats) { entry.stats = stats; } done(null, entry); }); }; }); rpl(tasks, (rplError, entries) => { if (rplError !== null) { callFailureCallback(callback, rplError); return; } callSuccessCallback(callback, entries); }); }); } exports2.readdir = readdir2; function callFailureCallback(callback, error3) { callback(error3); } function callSuccessCallback(callback, result) { callback(null, result); } } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/sync.js var require_sync2 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/sync.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.readdir = exports2.readdirWithFileTypes = exports2.read = void 0; var fsStat = require_out(); var constants_1 = require_constants5(); var utils = require_utils12(); var common2 = require_common3(); function read(directory, settings) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { return readdirWithFileTypes(directory, settings); } return readdir2(directory, settings); } exports2.read = read; function readdirWithFileTypes(directory, settings) { const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); return dirents.map((dirent) => { const entry = { dirent, name: dirent.name, path: common2.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) }; if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { try { const stats = settings.fs.statSync(entry.path); entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); } catch (error3) { if (settings.throwErrorOnBrokenSymbolicLink) { throw error3; } } } return entry; }); } exports2.readdirWithFileTypes = readdirWithFileTypes; function readdir2(directory, settings) { const names = settings.fs.readdirSync(directory); return names.map((name) => { const entryPath = common2.joinPathSegments(directory, name, settings.pathSegmentSeparator); const stats = fsStat.statSync(entryPath, settings.fsStatSettings); const entry = { name, path: entryPath, dirent: utils.fs.createDirentFromStats(name, stats) }; if (settings.stats) { entry.stats = stats; } return entry; }); } exports2.readdir = readdir2; } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/adapters/fs.js var require_fs6 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/adapters/fs.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.createFileSystemAdapter = exports2.FILE_SYSTEM_ADAPTER = void 0; var fs15 = __require("fs"); exports2.FILE_SYSTEM_ADAPTER = { lstat: fs15.lstat, stat: fs15.stat, lstatSync: fs15.lstatSync, statSync: fs15.statSync, readdir: fs15.readdir, readdirSync: fs15.readdirSync }; function createFileSystemAdapter(fsMethods) { if (fsMethods === void 0) { return exports2.FILE_SYSTEM_ADAPTER; } return Object.assign(Object.assign({}, exports2.FILE_SYSTEM_ADAPTER), fsMethods); } exports2.createFileSystemAdapter = createFileSystemAdapter; } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/settings.js var require_settings2 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/settings.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var path11 = __require("path"); var fsStat = require_out(); var fs15 = require_fs6(); var Settings = class { constructor(_options = {}) { this._options = _options; this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); this.fs = fs15.createFileSystemAdapter(this._options.fs); this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path11.sep); this.stats = this._getValue(this._options.stats, false); this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); this.fsStatSettings = new fsStat.Settings({ followSymbolicLink: this.followSymbolicLinks, fs: this.fs, throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink }); } _getValue(option, value) { return option !== null && option !== void 0 ? option : value; } }; exports2.default = Settings; } }); // ../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/index.js var require_out2 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Settings = exports2.scandirSync = exports2.scandir = void 0; var async = require_async3(); var sync = require_sync2(); var settings_1 = require_settings2(); exports2.Settings = settings_1.default; function scandir(path11, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === "function") { async.read(path11, getSettings(), optionsOrSettingsOrCallback); return; } async.read(path11, getSettings(optionsOrSettingsOrCallback), callback); } exports2.scandir = scandir; function scandirSync(path11, optionsOrSettings) { const settings = getSettings(optionsOrSettings); return sync.read(path11, settings); } exports2.scandirSync = scandirSync; function getSettings(settingsOrOptions = {}) { if (settingsOrOptions instanceof settings_1.default) { return settingsOrOptions; } return new settings_1.default(settingsOrOptions); } } }); // ../../node_modules/.pnpm/reusify@1.1.0/node_modules/reusify/reusify.js var require_reusify = __commonJS2({ "../../node_modules/.pnpm/reusify@1.1.0/node_modules/reusify/reusify.js"(exports2, module2) { "use strict"; function reusify(Constructor) { var head = new Constructor(); var tail = head; function get() { var current = head; if (current.next) { head = current.next; } else { head = new Constructor(); tail = head; } current.next = null; return current; } function release(obj) { tail.next = obj; tail = obj; } return { get, release }; } module2.exports = reusify; } }); // ../../node_modules/.pnpm/fastq@1.19.1/node_modules/fastq/queue.js var require_queue = __commonJS2({ "../../node_modules/.pnpm/fastq@1.19.1/node_modules/fastq/queue.js"(exports2, module2) { "use strict"; var reusify = require_reusify(); function fastqueue(context, worker, _concurrency) { if (typeof context === "function") { _concurrency = worker; worker = context; context = null; } if (!(_concurrency >= 1)) { throw new Error("fastqueue concurrency must be equal to or greater than 1"); } var cache = reusify(Task); var queueHead = null; var queueTail = null; var _running = 0; var errorHandler = null; var self2 = { push, drain: noop, saturated: noop, pause, paused: false, get concurrency() { return _concurrency; }, set concurrency(value) { if (!(value >= 1)) { throw new Error("fastqueue concurrency must be equal to or greater than 1"); } _concurrency = value; if (self2.paused) return; for (; queueHead && _running < _concurrency; ) { _running++; release(); } }, running, resume, idle, length, getQueue, unshift, empty: noop, kill, killAndDrain, error: error3 }; return self2; function running() { return _running; } function pause() { self2.paused = true; } function length() { var current = queueHead; var counter = 0; while (current) { current = current.next; counter++; } return counter; } function getQueue() { var current = queueHead; var tasks = []; while (current) { tasks.push(current.value); current = current.next; } return tasks; } function resume() { if (!self2.paused) return; self2.paused = false; if (queueHead === null) { _running++; release(); return; } for (; queueHead && _running < _concurrency; ) { _running++; release(); } } function idle() { return _running === 0 && self2.length() === 0; } function push(value, done) { var current = cache.get(); current.context = context; current.release = release; current.value = value; current.callback = done || noop; current.errorHandler = errorHandler; if (_running >= _concurrency || self2.paused) { if (queueTail) { queueTail.next = current; queueTail = current; } else { queueHead = current; queueTail = current; self2.saturated(); } } else { _running++; worker.call(context, current.value, current.worked); } } function unshift(value, done) { var current = cache.get(); current.context = context; current.release = release; current.value = value; current.callback = done || noop; current.errorHandler = errorHandler; if (_running >= _concurrency || self2.paused) { if (queueHead) { current.next = queueHead; queueHead = current; } else { queueHead = current; queueTail = current; self2.saturated(); } } else { _running++; worker.call(context, current.value, current.worked); } } function release(holder) { if (holder) { cache.release(holder); } var next = queueHead; if (next && _running <= _concurrency) { if (!self2.paused) { if (queueTail === queueHead) { queueTail = null; } queueHead = next.next; next.next = null; worker.call(context, next.value, next.worked); if (queueTail === null) { self2.empty(); } } else { _running--; } } else if (--_running === 0) { self2.drain(); } } function kill() { queueHead = null; queueTail = null; self2.drain = noop; } function killAndDrain() { queueHead = null; queueTail = null; self2.drain(); self2.drain = noop; } function error3(handler) { errorHandler = handler; } } function noop() { } function Task() { this.value = null; this.callback = noop; this.next = null; this.release = noop; this.context = null; this.errorHandler = null; var self2 = this; this.worked = function worked(err, result) { var callback = self2.callback; var errorHandler = self2.errorHandler; var val = self2.value; self2.value = null; self2.callback = noop; if (self2.errorHandler) { errorHandler(err, val); } callback.call(self2.context, err, result); self2.release(self2); }; } function queueAsPromised(context, worker, _concurrency) { if (typeof context === "function") { _concurrency = worker; worker = context; context = null; } function asyncWrapper(arg2, cb) { worker.call(this, arg2).then(function(res) { cb(null, res); }, cb); } var queue = fastqueue(context, asyncWrapper, _concurrency); var pushCb = queue.push; var unshiftCb = queue.unshift; queue.push = push; queue.unshift = unshift; queue.drained = drained; return queue; function push(value) { var p = new Promise(function(resolve14, reject) { pushCb(value, function(err, result) { if (err) { reject(err); return; } resolve14(result); }); }); p.catch(noop); return p; } function unshift(value) { var p = new Promise(function(resolve14, reject) { unshiftCb(value, function(err, result) { if (err) { reject(err); return; } resolve14(result); }); }); p.catch(noop); return p; } function drained() { var p = new Promise(function(resolve14) { process.nextTick(function() { if (queue.idle()) { resolve14(); } else { var previousDrain = queue.drain; queue.drain = function() { if (typeof previousDrain === "function") previousDrain(); resolve14(); queue.drain = previousDrain; }; } }); }); return p; } } module2.exports = fastqueue; module2.exports.promise = queueAsPromised; } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/common.js var require_common4 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/common.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.joinPathSegments = exports2.replacePathSegmentSeparator = exports2.isAppliedFilter = exports2.isFatalError = void 0; function isFatalError(settings, error3) { if (settings.errorFilter === null) { return true; } return !settings.errorFilter(error3); } exports2.isFatalError = isFatalError; function isAppliedFilter(filter, value) { return filter === null || filter(value); } exports2.isAppliedFilter = isAppliedFilter; function replacePathSegmentSeparator(filepath, separator) { return filepath.split(/[/\\]/).join(separator); } exports2.replacePathSegmentSeparator = replacePathSegmentSeparator; function joinPathSegments(a, b, separator) { if (a === "") { return b; } if (a.endsWith(separator)) { return a + b; } return a + separator + b; } exports2.joinPathSegments = joinPathSegments; } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/reader.js var require_reader = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/reader.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var common2 = require_common4(); var Reader = class { constructor(_root, _settings) { this._root = _root; this._settings = _settings; this._root = common2.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); } }; exports2.default = Reader; } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/async.js var require_async4 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/async.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var events_1 = __require("events"); var fsScandir = require_out2(); var fastq = require_queue(); var common2 = require_common4(); var reader_1 = require_reader(); var AsyncReader = class extends reader_1.default { constructor(_root, _settings) { super(_root, _settings); this._settings = _settings; this._scandir = fsScandir.scandir; this._emitter = new events_1.EventEmitter(); this._queue = fastq(this._worker.bind(this), this._settings.concurrency); this._isFatalError = false; this._isDestroyed = false; this._queue.drain = () => { if (!this._isFatalError) { this._emitter.emit("end"); } }; } read() { this._isFatalError = false; this._isDestroyed = false; setImmediate(() => { this._pushToQueue(this._root, this._settings.basePath); }); return this._emitter; } get isDestroyed() { return this._isDestroyed; } destroy() { if (this._isDestroyed) { throw new Error("The reader is already destroyed"); } this._isDestroyed = true; this._queue.killAndDrain(); } onEntry(callback) { this._emitter.on("entry", callback); } onError(callback) { this._emitter.once("error", callback); } onEnd(callback) { this._emitter.once("end", callback); } _pushToQueue(directory, base) { const queueItem = { directory, base }; this._queue.push(queueItem, (error3) => { if (error3 !== null) { this._handleError(error3); } }); } _worker(item, done) { this._scandir(item.directory, this._settings.fsScandirSettings, (error3, entries) => { if (error3 !== null) { done(error3, void 0); return; } for (const entry of entries) { this._handleEntry(entry, item.base); } done(null, void 0); }); } _handleError(error3) { if (this._isDestroyed || !common2.isFatalError(this._settings, error3)) { return; } this._isFatalError = true; this._isDestroyed = true; this._emitter.emit("error", error3); } _handleEntry(entry, base) { if (this._isDestroyed || this._isFatalError) { return; } const fullpath = entry.path; if (base !== void 0) { entry.path = common2.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); } if (common2.isAppliedFilter(this._settings.entryFilter, entry)) { this._emitEntry(entry); } if (entry.dirent.isDirectory() && common2.isAppliedFilter(this._settings.deepFilter, entry)) { this._pushToQueue(fullpath, base === void 0 ? void 0 : entry.path); } } _emitEntry(entry) { this._emitter.emit("entry", entry); } }; exports2.default = AsyncReader; } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/async.js var require_async5 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/async.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var async_1 = require_async4(); var AsyncProvider = class { constructor(_root, _settings) { this._root = _root; this._settings = _settings; this._reader = new async_1.default(this._root, this._settings); this._storage = []; } read(callback) { this._reader.onError((error3) => { callFailureCallback(callback, error3); }); this._reader.onEntry((entry) => { this._storage.push(entry); }); this._reader.onEnd(() => { callSuccessCallback(callback, this._storage); }); this._reader.read(); } }; exports2.default = AsyncProvider; function callFailureCallback(callback, error3) { callback(error3); } function callSuccessCallback(callback, entries) { callback(null, entries); } } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/stream.js var require_stream2 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/stream.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var stream_1 = __require("stream"); var async_1 = require_async4(); var StreamProvider = class { constructor(_root, _settings) { this._root = _root; this._settings = _settings; this._reader = new async_1.default(this._root, this._settings); this._stream = new stream_1.Readable({ objectMode: true, read: () => { }, destroy: () => { if (!this._reader.isDestroyed) { this._reader.destroy(); } } }); } read() { this._reader.onError((error3) => { this._stream.emit("error", error3); }); this._reader.onEntry((entry) => { this._stream.push(entry); }); this._reader.onEnd(() => { this._stream.push(null); }); this._reader.read(); return this._stream; } }; exports2.default = StreamProvider; } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/sync.js var require_sync3 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/sync.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var fsScandir = require_out2(); var common2 = require_common4(); var reader_1 = require_reader(); var SyncReader = class extends reader_1.default { constructor() { super(...arguments); this._scandir = fsScandir.scandirSync; this._storage = []; this._queue = /* @__PURE__ */ new Set(); } read() { this._pushToQueue(this._root, this._settings.basePath); this._handleQueue(); return this._storage; } _pushToQueue(directory, base) { this._queue.add({ directory, base }); } _handleQueue() { for (const item of this._queue.values()) { this._handleDirectory(item.directory, item.base); } } _handleDirectory(directory, base) { try { const entries = this._scandir(directory, this._settings.fsScandirSettings); for (const entry of entries) { this._handleEntry(entry, base); } } catch (error3) { this._handleError(error3); } } _handleError(error3) { if (!common2.isFatalError(this._settings, error3)) { return; } throw error3; } _handleEntry(entry, base) { const fullpath = entry.path; if (base !== void 0) { entry.path = common2.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); } if (common2.isAppliedFilter(this._settings.entryFilter, entry)) { this._pushToStorage(entry); } if (entry.dirent.isDirectory() && common2.isAppliedFilter(this._settings.deepFilter, entry)) { this._pushToQueue(fullpath, base === void 0 ? void 0 : entry.path); } } _pushToStorage(entry) { this._storage.push(entry); } }; exports2.default = SyncReader; } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/sync.js var require_sync4 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/sync.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var sync_1 = require_sync3(); var SyncProvider = class { constructor(_root, _settings) { this._root = _root; this._settings = _settings; this._reader = new sync_1.default(this._root, this._settings); } read() { return this._reader.read(); } }; exports2.default = SyncProvider; } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/settings.js var require_settings3 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/settings.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var path11 = __require("path"); var fsScandir = require_out2(); var Settings = class { constructor(_options = {}) { this._options = _options; this.basePath = this._getValue(this._options.basePath, void 0); this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY); this.deepFilter = this._getValue(this._options.deepFilter, null); this.entryFilter = this._getValue(this._options.entryFilter, null); this.errorFilter = this._getValue(this._options.errorFilter, null); this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path11.sep); this.fsScandirSettings = new fsScandir.Settings({ followSymbolicLinks: this._options.followSymbolicLinks, fs: this._options.fs, pathSegmentSeparator: this._options.pathSegmentSeparator, stats: this._options.stats, throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink }); } _getValue(option, value) { return option !== null && option !== void 0 ? option : value; } }; exports2.default = Settings; } }); // ../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/index.js var require_out3 = __commonJS2({ "../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Settings = exports2.walkStream = exports2.walkSync = exports2.walk = void 0; var async_1 = require_async5(); var stream_1 = require_stream2(); var sync_1 = require_sync4(); var settings_1 = require_settings3(); exports2.Settings = settings_1.default; function walk(directory, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === "function") { new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); return; } new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); } exports2.walk = walk; function walkSync(directory, optionsOrSettings) { const settings = getSettings(optionsOrSettings); const provider = new sync_1.default(directory, settings); return provider.read(); } exports2.walkSync = walkSync; function walkStream(directory, optionsOrSettings) { const settings = getSettings(optionsOrSettings); const provider = new stream_1.default(directory, settings); return provider.read(); } exports2.walkStream = walkStream; function getSettings(settingsOrOptions = {}) { if (settingsOrOptions instanceof settings_1.default) { return settingsOrOptions; } return new settings_1.default(settingsOrOptions); } } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/reader.js var require_reader2 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/reader.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var path11 = __require("path"); var fsStat = require_out(); var utils = require_utils11(); var Reader = class { constructor(_settings) { this._settings = _settings; this._fsStatSettings = new fsStat.Settings({ followSymbolicLink: this._settings.followSymbolicLinks, fs: this._settings.fs, throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks }); } _getFullEntryPath(filepath) { return path11.resolve(this._settings.cwd, filepath); } _makeEntry(stats, pattern) { const entry = { name: pattern, path: pattern, dirent: utils.fs.createDirentFromStats(pattern, stats) }; if (this._settings.stats) { entry.stats = stats; } return entry; } _isFatalError(error3) { return !utils.errno.isEnoentCodeError(error3) && !this._settings.suppressErrors; } }; exports2.default = Reader; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/stream.js var require_stream3 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/stream.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var stream_1 = __require("stream"); var fsStat = require_out(); var fsWalk = require_out3(); var reader_1 = require_reader2(); var ReaderStream = class extends reader_1.default { constructor() { super(...arguments); this._walkStream = fsWalk.walkStream; this._stat = fsStat.stat; } dynamic(root, options) { return this._walkStream(root, options); } static(patterns, options) { const filepaths = patterns.map(this._getFullEntryPath, this); const stream = new stream_1.PassThrough({ objectMode: true }); stream._write = (index, _enc, done) => { return this._getEntry(filepaths[index], patterns[index], options).then((entry) => { if (entry !== null && options.entryFilter(entry)) { stream.push(entry); } if (index === filepaths.length - 1) { stream.end(); } done(); }).catch(done); }; for (let i = 0; i < filepaths.length; i++) { stream.write(i); } return stream; } _getEntry(filepath, pattern, options) { return this._getStat(filepath).then((stats) => this._makeEntry(stats, pattern)).catch((error3) => { if (options.errorFilter(error3)) { return null; } throw error3; }); } _getStat(filepath) { return new Promise((resolve14, reject) => { this._stat(filepath, this._fsStatSettings, (error3, stats) => { return error3 === null ? resolve14(stats) : reject(error3); }); }); } }; exports2.default = ReaderStream; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/async.js var require_async6 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/async.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var fsWalk = require_out3(); var reader_1 = require_reader2(); var stream_1 = require_stream3(); var ReaderAsync = class extends reader_1.default { constructor() { super(...arguments); this._walkAsync = fsWalk.walk; this._readerStream = new stream_1.default(this._settings); } dynamic(root, options) { return new Promise((resolve14, reject) => { this._walkAsync(root, options, (error3, entries) => { if (error3 === null) { resolve14(entries); } else { reject(error3); } }); }); } async static(patterns, options) { const entries = []; const stream = this._readerStream.static(patterns, options); return new Promise((resolve14, reject) => { stream.once("error", reject); stream.on("data", (entry) => entries.push(entry)); stream.once("end", () => resolve14(entries)); }); } }; exports2.default = ReaderAsync; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/matchers/matcher.js var require_matcher = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/matchers/matcher.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_utils11(); var Matcher = class { constructor(_patterns, _settings, _micromatchOptions) { this._patterns = _patterns; this._settings = _settings; this._micromatchOptions = _micromatchOptions; this._storage = []; this._fillStorage(); } _fillStorage() { for (const pattern of this._patterns) { const segments = this._getPatternSegments(pattern); const sections = this._splitSegmentsIntoSections(segments); this._storage.push({ complete: sections.length <= 1, pattern, segments, sections }); } } _getPatternSegments(pattern) { const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); return parts.map((part) => { const dynamic = utils.pattern.isDynamicPattern(part, this._settings); if (!dynamic) { return { dynamic: false, pattern: part }; } return { dynamic: true, pattern: part, patternRe: utils.pattern.makeRe(part, this._micromatchOptions) }; }); } _splitSegmentsIntoSections(segments) { return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); } }; exports2.default = Matcher; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/matchers/partial.js var require_partial = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/matchers/partial.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var matcher_1 = require_matcher(); var PartialMatcher = class extends matcher_1.default { match(filepath) { const parts = filepath.split("/"); const levels = parts.length; const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels); for (const pattern of patterns) { const section = pattern.sections[0]; if (!pattern.complete && levels > section.length) { return true; } const match = parts.every((part, index) => { const segment = pattern.segments[index]; if (segment.dynamic && segment.patternRe.test(part)) { return true; } if (!segment.dynamic && segment.pattern === part) { return true; } return false; }); if (match) { return true; } } return false; } }; exports2.default = PartialMatcher; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/deep.js var require_deep = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/deep.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_utils11(); var partial_1 = require_partial(); var DeepFilter = class { constructor(_settings, _micromatchOptions) { this._settings = _settings; this._micromatchOptions = _micromatchOptions; } getFilter(basePath2, positive, negative) { const matcher = this._getMatcher(positive); const negativeRe = this._getNegativePatternsRe(negative); return (entry) => this._filter(basePath2, entry, matcher, negativeRe); } _getMatcher(patterns) { return new partial_1.default(patterns, this._settings, this._micromatchOptions); } _getNegativePatternsRe(patterns) { const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); } _filter(basePath2, entry, matcher, negativeRe) { if (this._isSkippedByDeep(basePath2, entry.path)) { return false; } if (this._isSkippedSymbolicLink(entry)) { return false; } const filepath = utils.path.removeLeadingDotSegment(entry.path); if (this._isSkippedByPositivePatterns(filepath, matcher)) { return false; } return this._isSkippedByNegativePatterns(filepath, negativeRe); } _isSkippedByDeep(basePath2, entryPath) { if (this._settings.deep === Infinity) { return false; } return this._getEntryLevel(basePath2, entryPath) >= this._settings.deep; } _getEntryLevel(basePath2, entryPath) { const entryPathDepth = entryPath.split("/").length; if (basePath2 === "") { return entryPathDepth; } const basePathDepth = basePath2.split("/").length; return entryPathDepth - basePathDepth; } _isSkippedSymbolicLink(entry) { return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); } _isSkippedByPositivePatterns(entryPath, matcher) { return !this._settings.baseNameMatch && !matcher.match(entryPath); } _isSkippedByNegativePatterns(entryPath, patternsRe) { return !utils.pattern.matchAny(entryPath, patternsRe); } }; exports2.default = DeepFilter; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/entry.js var require_entry = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/entry.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_utils11(); var EntryFilter = class { constructor(_settings, _micromatchOptions) { this._settings = _settings; this._micromatchOptions = _micromatchOptions; this.index = /* @__PURE__ */ new Map(); } getFilter(positive, negative) { const [absoluteNegative, relativeNegative] = utils.pattern.partitionAbsoluteAndRelative(negative); const patterns = { positive: { all: utils.pattern.convertPatternsToRe(positive, this._micromatchOptions) }, negative: { absolute: utils.pattern.convertPatternsToRe(absoluteNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })), relative: utils.pattern.convertPatternsToRe(relativeNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })) } }; return (entry) => this._filter(entry, patterns); } _filter(entry, patterns) { const filepath = utils.path.removeLeadingDotSegment(entry.path); if (this._settings.unique && this._isDuplicateEntry(filepath)) { return false; } if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { return false; } const isMatched = this._isMatchToPatternsSet(filepath, patterns, entry.dirent.isDirectory()); if (this._settings.unique && isMatched) { this._createIndexRecord(filepath); } return isMatched; } _isDuplicateEntry(filepath) { return this.index.has(filepath); } _createIndexRecord(filepath) { this.index.set(filepath, void 0); } _onlyFileFilter(entry) { return this._settings.onlyFiles && !entry.dirent.isFile(); } _onlyDirectoryFilter(entry) { return this._settings.onlyDirectories && !entry.dirent.isDirectory(); } _isMatchToPatternsSet(filepath, patterns, isDirectory2) { const isMatched = this._isMatchToPatterns(filepath, patterns.positive.all, isDirectory2); if (!isMatched) { return false; } const isMatchedByRelativeNegative = this._isMatchToPatterns(filepath, patterns.negative.relative, isDirectory2); if (isMatchedByRelativeNegative) { return false; } const isMatchedByAbsoluteNegative = this._isMatchToAbsoluteNegative(filepath, patterns.negative.absolute, isDirectory2); if (isMatchedByAbsoluteNegative) { return false; } return true; } _isMatchToAbsoluteNegative(filepath, patternsRe, isDirectory2) { if (patternsRe.length === 0) { return false; } const fullpath = utils.path.makeAbsolute(this._settings.cwd, filepath); return this._isMatchToPatterns(fullpath, patternsRe, isDirectory2); } _isMatchToPatterns(filepath, patternsRe, isDirectory2) { if (patternsRe.length === 0) { return false; } const isMatched = utils.pattern.matchAny(filepath, patternsRe); if (!isMatched && isDirectory2) { return utils.pattern.matchAny(filepath + "/", patternsRe); } return isMatched; } }; exports2.default = EntryFilter; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/error.js var require_error2 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/error.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_utils11(); var ErrorFilter = class { constructor(_settings) { this._settings = _settings; } getFilter() { return (error3) => this._isNonFatalError(error3); } _isNonFatalError(error3) { return utils.errno.isEnoentCodeError(error3) || this._settings.suppressErrors; } }; exports2.default = ErrorFilter; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/transformers/entry.js var require_entry2 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/transformers/entry.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var utils = require_utils11(); var EntryTransformer = class { constructor(_settings) { this._settings = _settings; } getTransformer() { return (entry) => this._transform(entry); } _transform(entry) { let filepath = entry.path; if (this._settings.absolute) { filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); filepath = utils.path.unixify(filepath); } if (this._settings.markDirectories && entry.dirent.isDirectory()) { filepath += "/"; } if (!this._settings.objectMode) { return filepath; } return Object.assign(Object.assign({}, entry), { path: filepath }); } }; exports2.default = EntryTransformer; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/provider.js var require_provider = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/provider.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var path11 = __require("path"); var deep_1 = require_deep(); var entry_1 = require_entry(); var error_1 = require_error2(); var entry_2 = require_entry2(); var Provider = class { constructor(_settings) { this._settings = _settings; this.errorFilter = new error_1.default(this._settings); this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); this.entryTransformer = new entry_2.default(this._settings); } _getRootDirectory(task) { return path11.resolve(this._settings.cwd, task.base); } _getReaderOptions(task) { const basePath2 = task.base === "." ? "" : task.base; return { basePath: basePath2, pathSegmentSeparator: "/", concurrency: this._settings.concurrency, deepFilter: this.deepFilter.getFilter(basePath2, task.positive, task.negative), entryFilter: this.entryFilter.getFilter(task.positive, task.negative), errorFilter: this.errorFilter.getFilter(), followSymbolicLinks: this._settings.followSymbolicLinks, fs: this._settings.fs, stats: this._settings.stats, throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, transform: this.entryTransformer.getTransformer() }; } _getMicromatchOptions() { return { dot: this._settings.dot, matchBase: this._settings.baseNameMatch, nobrace: !this._settings.braceExpansion, nocase: !this._settings.caseSensitiveMatch, noext: !this._settings.extglob, noglobstar: !this._settings.globstar, posix: true, strictSlashes: false }; } }; exports2.default = Provider; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/async.js var require_async7 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/async.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var async_1 = require_async6(); var provider_1 = require_provider(); var ProviderAsync = class extends provider_1.default { constructor() { super(...arguments); this._reader = new async_1.default(this._settings); } async read(task) { const root = this._getRootDirectory(task); const options = this._getReaderOptions(task); const entries = await this.api(root, task, options); return entries.map((entry) => options.transform(entry)); } api(root, task, options) { if (task.dynamic) { return this._reader.dynamic(root, options); } return this._reader.static(task.patterns, options); } }; exports2.default = ProviderAsync; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/stream.js var require_stream4 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/stream.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var stream_1 = __require("stream"); var stream_2 = require_stream3(); var provider_1 = require_provider(); var ProviderStream = class extends provider_1.default { constructor() { super(...arguments); this._reader = new stream_2.default(this._settings); } read(task) { const root = this._getRootDirectory(task); const options = this._getReaderOptions(task); const source = this.api(root, task, options); const destination = new stream_1.Readable({ objectMode: true, read: () => { } }); source.once("error", (error3) => destination.emit("error", error3)).on("data", (entry) => destination.emit("data", options.transform(entry))).once("end", () => destination.emit("end")); destination.once("close", () => source.destroy()); return destination; } api(root, task, options) { if (task.dynamic) { return this._reader.dynamic(root, options); } return this._reader.static(task.patterns, options); } }; exports2.default = ProviderStream; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/sync.js var require_sync5 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/sync.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var fsStat = require_out(); var fsWalk = require_out3(); var reader_1 = require_reader2(); var ReaderSync = class extends reader_1.default { constructor() { super(...arguments); this._walkSync = fsWalk.walkSync; this._statSync = fsStat.statSync; } dynamic(root, options) { return this._walkSync(root, options); } static(patterns, options) { const entries = []; for (const pattern of patterns) { const filepath = this._getFullEntryPath(pattern); const entry = this._getEntry(filepath, pattern, options); if (entry === null || !options.entryFilter(entry)) { continue; } entries.push(entry); } return entries; } _getEntry(filepath, pattern, options) { try { const stats = this._getStat(filepath); return this._makeEntry(stats, pattern); } catch (error3) { if (options.errorFilter(error3)) { return null; } throw error3; } } _getStat(filepath) { return this._statSync(filepath, this._fsStatSettings); } }; exports2.default = ReaderSync; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/sync.js var require_sync6 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/sync.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var sync_1 = require_sync5(); var provider_1 = require_provider(); var ProviderSync = class extends provider_1.default { constructor() { super(...arguments); this._reader = new sync_1.default(this._settings); } read(task) { const root = this._getRootDirectory(task); const options = this._getReaderOptions(task); const entries = this.api(root, task, options); return entries.map(options.transform); } api(root, task, options) { if (task.dynamic) { return this._reader.dynamic(root, options); } return this._reader.static(task.patterns, options); } }; exports2.default = ProviderSync; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/settings.js var require_settings4 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/settings.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; var fs15 = __require("fs"); var os4 = __require("os"); var CPU_COUNT = Math.max(os4.cpus().length, 1); exports2.DEFAULT_FILE_SYSTEM_ADAPTER = { lstat: fs15.lstat, lstatSync: fs15.lstatSync, stat: fs15.stat, statSync: fs15.statSync, readdir: fs15.readdir, readdirSync: fs15.readdirSync }; var Settings = class { constructor(_options = {}) { this._options = _options; this.absolute = this._getValue(this._options.absolute, false); this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); this.braceExpansion = this._getValue(this._options.braceExpansion, true); this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); this.cwd = this._getValue(this._options.cwd, process.cwd()); this.deep = this._getValue(this._options.deep, Infinity); this.dot = this._getValue(this._options.dot, false); this.extglob = this._getValue(this._options.extglob, true); this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); this.fs = this._getFileSystemMethods(this._options.fs); this.globstar = this._getValue(this._options.globstar, true); this.ignore = this._getValue(this._options.ignore, []); this.markDirectories = this._getValue(this._options.markDirectories, false); this.objectMode = this._getValue(this._options.objectMode, false); this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); this.onlyFiles = this._getValue(this._options.onlyFiles, true); this.stats = this._getValue(this._options.stats, false); this.suppressErrors = this._getValue(this._options.suppressErrors, false); this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); this.unique = this._getValue(this._options.unique, true); if (this.onlyDirectories) { this.onlyFiles = false; } if (this.stats) { this.objectMode = true; } this.ignore = [].concat(this.ignore); } _getValue(option, value) { return option === void 0 ? value : option; } _getFileSystemMethods(methods = {}) { return Object.assign(Object.assign({}, exports2.DEFAULT_FILE_SYSTEM_ADAPTER), methods); } }; exports2.default = Settings; } }); // ../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/index.js var require_out4 = __commonJS2({ "../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/index.js"(exports2, module2) { "use strict"; var taskManager = require_tasks(); var async_1 = require_async7(); var stream_1 = require_stream4(); var sync_1 = require_sync6(); var settings_1 = require_settings4(); var utils = require_utils11(); async function FastGlob(source, options) { assertPatternsInput(source); const works = getWorks(source, async_1.default, options); const result = await Promise.all(works); return utils.array.flatten(result); } (function(FastGlob2) { FastGlob2.glob = FastGlob2; FastGlob2.globSync = sync; FastGlob2.globStream = stream; FastGlob2.async = FastGlob2; function sync(source, options) { assertPatternsInput(source); const works = getWorks(source, sync_1.default, options); return utils.array.flatten(works); } FastGlob2.sync = sync; function stream(source, options) { assertPatternsInput(source); const works = getWorks(source, stream_1.default, options); return utils.stream.merge(works); } FastGlob2.stream = stream; function generateTasks(source, options) { assertPatternsInput(source); const patterns = [].concat(source); const settings = new settings_1.default(options); return taskManager.generate(patterns, settings); } FastGlob2.generateTasks = generateTasks; function isDynamicPattern(source, options) { assertPatternsInput(source); const settings = new settings_1.default(options); return utils.pattern.isDynamicPattern(source, settings); } FastGlob2.isDynamicPattern = isDynamicPattern; function escapePath(source) { assertPatternsInput(source); return utils.path.escape(source); } FastGlob2.escapePath = escapePath; function convertPathToPattern(source) { assertPatternsInput(source); return utils.path.convertPathToPattern(source); } FastGlob2.convertPathToPattern = convertPathToPattern; let posix2; (function(posix3) { function escapePath2(source) { assertPatternsInput(source); return utils.path.escapePosixPath(source); } posix3.escapePath = escapePath2; function convertPathToPattern2(source) { assertPatternsInput(source); return utils.path.convertPosixPathToPattern(source); } posix3.convertPathToPattern = convertPathToPattern2; })(posix2 = FastGlob2.posix || (FastGlob2.posix = {})); let win32; (function(win322) { function escapePath2(source) { assertPatternsInput(source); return utils.path.escapeWindowsPath(source); } win322.escapePath = escapePath2; function convertPathToPattern2(source) { assertPatternsInput(source); return utils.path.convertWindowsPathToPattern(source); } win322.convertPathToPattern = convertPathToPattern2; })(win32 = FastGlob2.win32 || (FastGlob2.win32 = {})); })(FastGlob || (FastGlob = {})); function getWorks(source, _Provider, options) { const patterns = [].concat(source); const settings = new settings_1.default(options); const tasks = taskManager.generate(patterns, settings); const provider = new _Provider(settings); return tasks.map(provider.read, provider); } function assertPatternsInput(input) { const source = [].concat(input); const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); if (!isValidSource) { throw new TypeError("Patterns must be a string (non empty) or an array of strings"); } } module2.exports = FastGlob; } }); // ../../node_modules/.pnpm/@vercel+microfrontends@1.2.2_vite@5.1.8/node_modules/@vercel/microfrontends/dist/microfrontends/utils.cjs var require_utils13 = __commonJS2({ "../../node_modules/.pnpm/@vercel+microfrontends@1.2.2_vite@5.1.8/node_modules/@vercel/microfrontends/dist/microfrontends/utils.cjs"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var utils_exports = {}; __export4(utils_exports, { findConfig: () => findConfig, inferMicrofrontendsLocation: () => inferMicrofrontendsLocation }); module2.exports = __toCommonJS4(utils_exports); var import_node_fs3 = __toESM4(__require("fs"), 1); var import_node_path6 = __require("path"); var CONFIGURATION_FILENAMES = [ "microfrontends.jsonc", "microfrontends.json" ]; function findConfig({ dir }) { for (const filename of CONFIGURATION_FILENAMES) { const maybeConfig = (0, import_node_path6.join)(dir, filename); if (import_node_fs3.default.existsSync(maybeConfig)) { return maybeConfig; } } return null; } var import_node_path22 = __require("path"); var import_node_fs22 = __require("fs"); var import_jsonc_parser = (init_main(), __toCommonJS3(main_exports)); var import_fast_glob = __toESM4(require_out4(), 1); var MicrofrontendError = class extends Error { constructor(message2, opts) { super(message2, { cause: opts?.cause }); this.name = "MicrofrontendsError"; this.source = opts?.source ?? "@vercel/microfrontends"; this.type = opts?.type ?? "unknown"; this.subtype = opts?.subtype; Error.captureStackTrace(this, MicrofrontendError); } isKnown() { return this.type !== "unknown"; } isUnknown() { return !this.isKnown(); } /** * Converts an error to a MicrofrontendsError. * @param original - The original error to convert. * @returns The converted MicrofrontendsError. */ static convert(original, opts) { if (opts?.fileName) { const err = MicrofrontendError.convertFSError(original, opts.fileName); if (err) { return err; } } if (original.message.includes( "Code generation from strings disallowed for this context" )) { return new MicrofrontendError(original.message, { type: "config", subtype: "unsupported_validation_env", source: "ajv" }); } return new MicrofrontendError(original.message); } static convertFSError(original, fileName) { if (original instanceof Error && "code" in original) { if (original.code === "ENOENT") { return new MicrofrontendError(`Could not find "${fileName}"`, { type: "config", subtype: "unable_to_read_file", source: "fs" }); } if (original.code === "EACCES") { return new MicrofrontendError( `Permission denied while accessing "${fileName}"`, { type: "config", subtype: "invalid_permissions", source: "fs" } ); } } if (original instanceof SyntaxError) { return new MicrofrontendError( `Failed to parse "${fileName}": Invalid JSON format.`, { type: "config", subtype: "invalid_syntax", source: "fs" } ); } return null; } /** * Handles an unknown error and returns a MicrofrontendsError instance. * @param err - The error to handle. * @returns A MicrofrontendsError instance. */ static handle(err, opts) { if (err instanceof MicrofrontendError) { return err; } if (err instanceof Error) { return MicrofrontendError.convert(err, opts); } if (typeof err === "object" && err !== null) { if ("message" in err && typeof err.message === "string") { return MicrofrontendError.convert(new Error(err.message), opts); } } return new MicrofrontendError("An unknown error occurred"); } }; var configCache = {}; function findPackageWithMicrofrontendsConfig({ repositoryRoot, applicationName }) { try { const microfrontendsJsonPaths = import_fast_glob.default.globSync( `**/{${CONFIGURATION_FILENAMES.join(",")}}`, { cwd: repositoryRoot, absolute: true, onlyFiles: true, followSymbolicLinks: false, ignore: ["**/node_modules/**", "**/.git/**"] } ); const matchingPaths = []; for (const microfrontendsJsonPath of microfrontendsJsonPaths) { try { const microfrontendsJsonContent = (0, import_node_fs22.readFileSync)( microfrontendsJsonPath, "utf-8" ); const microfrontendsJson = (0, import_jsonc_parser.parse)(microfrontendsJsonContent); if (microfrontendsJson.applications[applicationName]) { matchingPaths.push(microfrontendsJsonPath); } else { for (const [_, app] of Object.entries( microfrontendsJson.applications )) { if (app.packageName === applicationName) { matchingPaths.push(microfrontendsJsonPath); } } } } catch (error3) { } } if (matchingPaths.length > 1) { throw new MicrofrontendError( `Found multiple \`microfrontends.json\` files in the repository referencing the application "${applicationName}", but only one is allowed. ${matchingPaths.join("\n \u2022 ")}`, { type: "config", subtype: "inference_failed" } ); } if (matchingPaths.length === 0) { throw new MicrofrontendError( `Could not find a \`microfrontends.json\` file in the repository that contains "applications.${applicationName}". Microfrontends defined in separate repositories are not supported yet.`, { type: "config", subtype: "inference_failed" } ); } const [packageJsonPath] = matchingPaths; return (0, import_node_path22.dirname)(packageJsonPath); } catch (error3) { return null; } } function inferMicrofrontendsLocation(opts) { const cacheKey = `${opts.repositoryRoot}-${opts.applicationName}`; if (configCache[cacheKey]) { return configCache[cacheKey]; } const result = findPackageWithMicrofrontendsConfig(opts); if (!result) { throw new MicrofrontendError( `Could not infer the location of the \`microfrontends.json\` file for application "${opts.applicationName}" starting in directory "${opts.repositoryRoot}".`, { type: "config", subtype: "inference_failed" } ); } configCache[cacheKey] = result; return result; } } }); // ../client/dist/utils/index.js var require_utils14 = __commonJS2({ "../client/dist/utils/index.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var utils_exports = {}; __export4(utils_exports, { API_FILES: () => API_FILES, EVENTS: () => EVENTS, buildFileTree: () => buildFileTree2, createDebug: () => createDebug, fetch: () => fetch6, getApiDeploymentsUrl: () => getApiDeploymentsUrl, getVercelIgnore: () => getVercelIgnore5, parseVercelConfig: () => parseVercelConfig, prepareFiles: () => prepareFiles }); module2.exports = __toCommonJS4(utils_exports); var import_node_fetch7 = __toESM4(require_lib7()); var import_path45 = __require("path"); var import_url20 = __require("url"); var import_ignore = __toESM4(require_ignore()); var import_pkg6 = require_pkg(); var import_build_utils20 = __require("@vercel/build-utils"); var import_async_sema = require_lib9(); var import_fs_extra25 = require_lib8(); var import_readdir_recursive = __toESM4(require_readdir_recursive()); var import_utils9 = require_utils13(); var semaphore = new import_async_sema.Sema(10); var API_FILES = "/v2/files"; var EVENTS_ARRAY = [ // File events "hashes-calculated", "file-count", "file-uploaded", "all-files-uploaded", // Deployment events "created", "building", "ready", "alias-assigned", "warning", "error", "notice", "tip", "canceled", // Checks events "checks-registered", "checks-completed", "checks-running", "checks-conclusion-succeeded", "checks-conclusion-failed", "checks-conclusion-skipped", "checks-conclusion-canceled" ]; var EVENTS = new Set(EVENTS_ARRAY); function getApiDeploymentsUrl() { return "/v13/deployments"; } async function parseVercelConfig(filePath) { if (!filePath) { return {}; } try { const jsonString = await (0, import_fs_extra25.readFile)(filePath, "utf8"); return JSON.parse(jsonString); } catch (e2) { console.error(e2); return {}; } } var maybeRead = async function(path11, default_) { try { return await (0, import_fs_extra25.readFile)(path11, "utf8"); } catch (err) { return default_; } }; async function buildFileTree2(path11, { isDirectory: isDirectory2, prebuilt, vercelOutputDir, rootDirectory, projectName, bulkRedirectsPath }, debug2) { const ignoreList = []; let fileList; let { ig, ignores } = await getVercelIgnore5(path11, prebuilt, vercelOutputDir); debug2(`Found ${ignores.length} rules in .vercelignore`); debug2("Building file tree..."); if (isDirectory2 && !Array.isArray(path11)) { const ignores2 = (absPath) => { const rel = (0, import_path45.relative)(path11, absPath); const ignored = ig.ignores(rel); if (ignored) { ignoreList.push(rel); } return ignored; }; fileList = await (0, import_readdir_recursive.default)(path11, [ignores2]); const refs = /* @__PURE__ */ new Set(); if (prebuilt) { const vcConfigFilePaths = fileList.filter( (file) => (0, import_path45.basename)(file) === ".vc-config.json" ); await Promise.all( vcConfigFilePaths.map(async (p) => { const configJson = await (0, import_fs_extra25.readFile)(p, "utf8"); const config2 = JSON.parse(configJson); if (!config2.filePathMap) return; for (const v of Object.values(config2.filePathMap)) { refs.add((0, import_path45.join)(path11, v)); } }) ); try { let microfrontendConfigPath = (0, import_utils9.findConfig)({ dir: (0, import_path45.join)(path11, rootDirectory || "") }); if (!microfrontendConfigPath && !rootDirectory && projectName) { microfrontendConfigPath = (0, import_utils9.findConfig)({ dir: (0, import_utils9.inferMicrofrontendsLocation)({ repositoryRoot: path11, applicationName: projectName }) }); } if (microfrontendConfigPath) { refs.add(microfrontendConfigPath); } } catch (e2) { debug2(`Error detecting microfrontend config: ${e2}`); } } try { const routesJsonPath = (0, import_path45.join)(path11, ".vercel", "routes.json"); const routesJsonContent = await maybeRead(routesJsonPath, null); if (routesJsonContent !== null) { refs.add(routesJsonPath); debug2("Including .vercel/routes.json in deployment"); } } catch (e2) { debug2(`Error checking for .vercel/routes.json: ${e2}`); } if (prebuilt && bulkRedirectsPath) { try { const projectRoot = path11; const bulkRedirectsFullPath = (0, import_path45.join)( projectRoot, rootDirectory || "", bulkRedirectsPath ); const relativeFromRoot = (0, import_path45.relative)(projectRoot, bulkRedirectsFullPath); if (relativeFromRoot.startsWith("..")) { debug2( `Skipping bulk redirects file "${bulkRedirectsPath}" - path traversal detected (resolves outside project root)` ); } else { const bulkRedirectsContent = await maybeRead( bulkRedirectsFullPath, null ); if (bulkRedirectsContent !== null) { refs.add(bulkRedirectsFullPath); debug2( `Including bulk redirects file "${bulkRedirectsPath}" in deployment` ); } else { debug2(`Bulk redirects file "${bulkRedirectsPath}" not found`); } } } catch (e2) { debug2(`Error checking for bulk redirects file: ${e2}`); } } if (refs.size > 0) { fileList = fileList.concat(Array.from(refs)); } debug2(`Found ${fileList.length} files in the specified directory`); } else if (Array.isArray(path11)) { fileList = path11; debug2(`Assigned ${fileList.length} files provided explicitly`); } else { fileList = [path11]; debug2(`Deploying the provided path as single file`); } return { fileList, ignoreList }; } async function getVercelIgnore5(cwd, prebuilt, vercelOutputDir) { const ig = (0, import_ignore.default)(); let ignores; if (prebuilt) { if (typeof vercelOutputDir !== "string") { throw new Error( `Missing required \`vercelOutputDir\` parameter when "prebuilt" is true` ); } if (typeof cwd !== "string") { throw new Error(`\`cwd\` must be a "string"`); } const relOutputDir = (0, import_path45.relative)(cwd, vercelOutputDir); ignores = ["*"]; const parts = relOutputDir.split(import_path45.sep); parts.forEach((_, i) => { const level = parts.slice(0, i + 1).join("/"); ignores.push(`!${level}`); }); ignores.push(`!${parts.join("/")}/**`); ig.add(ignores.join("\n")); } else { ignores = [ ".hg", ".git", ".gitmodules", ".svn", ".cache", ".next", ".now", ".vercel", ".npmignore", ".dockerignore", ".gitignore", ".*.swp", ".DS_Store", ".wafpicke-*", ".lock-wscript", ".env.local", ".env.*.local", ".venv", ".yarn/cache", ".pnp*", "npm-debug.log", "config.gypi", "node_modules", "__pycache__", "venv", "CVS" ]; const cwds = Array.isArray(cwd) ? cwd : [cwd]; const files = await Promise.all( cwds.map(async (cwd2) => { const [vercelignore, nowignore] = await Promise.all([ maybeRead((0, import_path45.join)(cwd2, ".vercelignore"), ""), maybeRead((0, import_path45.join)(cwd2, ".nowignore"), "") ]); if (vercelignore && nowignore) { throw new import_build_utils20.NowBuildError({ code: "CONFLICTING_IGNORE_FILES", message: "Cannot use both a `.vercelignore` and `.nowignore` file. Please delete the `.nowignore` file.", link: "https://vercel.link/combining-old-and-new-config" }); } return vercelignore || nowignore; }) ); const ignoreFile = files.join("\n"); ig.add(`${ignores.join("\n")} ${clearRelative(ignoreFile)}`); } return { ig, ignores }; } function clearRelative(str) { return str.replace(/(\n|^)\.\//g, "$1"); } var fetch6 = async (url3, token, opts = {}, debugEnabled) => { semaphore.acquire(); const debug2 = createDebug(debugEnabled); let time; url3 = `${opts.apiUrl || "https://api.vercel.com"}${url3}`; delete opts.apiUrl; const { VERCEL_TEAM_ID } = process.env; if (VERCEL_TEAM_ID) { url3 += `${url3.includes("?") ? "&" : "?"}teamId=${VERCEL_TEAM_ID}`; } if (opts.teamId) { const parsedUrl = new import_url20.URL(url3); parsedUrl.searchParams.set("teamId", opts.teamId); url3 = parsedUrl.toString(); delete opts.teamId; } const userAgent2 = opts.userAgent || `client-v${import_pkg6.pkgVersion}`; delete opts.userAgent; opts.headers = { ...opts.headers, authorization: `Bearer ${token}`, accept: "application/json", "user-agent": userAgent2 }; debug2(`${opts.method || "GET"} ${url3}`); time = Date.now(); const res = await (0, import_node_fetch7.default)(url3, opts); debug2(`DONE in ${Date.now() - time}ms: ${opts.method || "GET"} ${url3}`); semaphore.release(); return res; }; var isWin = process.platform.includes("win"); var prepareFiles = (files, clientOptions) => { const preparedFiles = []; for (const [sha, file] of files) { for (const name of file.names) { let fileName; if (clientOptions.isDirectory) { fileName = typeof clientOptions.path === "string" ? (0, import_path45.relative)(clientOptions.path, name) : name; } else { const segments = name.split(import_path45.sep); fileName = segments[segments.length - 1]; } preparedFiles.push({ file: isWin ? fileName.replace(/\\/g, "/") : fileName, size: file.data?.byteLength || file.data?.length, mode: file.mode, sha: sha || void 0 }); } } return preparedFiles; }; function createDebug(debug2) { if (debug2) { return (...logs2) => { process.stderr.write( [`[client-debug] ${(/* @__PURE__ */ new Date()).toISOString()}`, ...logs2].join(" ") + "\n" ); }; } return () => { }; } } }); // ../client/dist/errors.js var require_errors2 = __commonJS2({ "../client/dist/errors.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var errors_exports = {}; __export4(errors_exports, { DeploymentError: () => DeploymentError }); module2.exports = __toCommonJS4(errors_exports); var DeploymentError = class extends Error { constructor(err) { super(err.message); this.code = err.code; this.errorName = err.name; this.name = "DeploymentError"; } }; } }); // ../client/dist/utils/query-string.js var require_query_string = __commonJS2({ "../client/dist/utils/query-string.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var query_string_exports = {}; __export4(query_string_exports, { generateQueryString: () => generateQueryString }); module2.exports = __toCommonJS4(query_string_exports); var import_url20 = __require("url"); function generateQueryString(clientOptions) { const options = new import_url20.URLSearchParams(); if (clientOptions.teamId) { options.set("teamId", clientOptions.teamId); } if (clientOptions.force) { options.set("forceNew", "1"); } if (clientOptions.withCache) { options.set("withCache", "1"); } if (clientOptions.skipAutoDetectionConfirmation) { options.set("skipAutoDetectionConfirmation", "1"); } if (clientOptions.prebuilt) { options.set("prebuilt", "1"); } return Array.from(options.entries()).length ? `?${options.toString()}` : ""; } } }); // ../client/dist/utils/ready-state.js var require_ready_state = __commonJS2({ "../client/dist/utils/ready-state.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var ready_state_exports = {}; __export4(ready_state_exports, { isAliasAssigned: () => isAliasAssigned, isAliasError: () => isAliasError, isDone: () => isDone, isFailed: () => isFailed2, isReady: () => isReady2 }); module2.exports = __toCommonJS4(ready_state_exports); var isReady2 = ({ readyState, state }) => readyState === "READY" || state === "READY"; var isFailed2 = ({ readyState, state }) => { if (readyState) { return readyState.endsWith("_ERROR") || readyState === "ERROR"; } if (!state) { return false; } return state.endsWith("_ERROR") || state === "ERROR"; }; var isDone = (buildOrDeployment) => isReady2(buildOrDeployment) || isFailed2(buildOrDeployment); var isAliasAssigned = (deployment) => Boolean(deployment.aliasAssigned); var isAliasError = (deployment) => Boolean(deployment.aliasError); } }); // ../../node_modules/.pnpm/sleep-promise@8.0.1/node_modules/sleep-promise/build/cjs.js var require_cjs6 = __commonJS2({ "../../node_modules/.pnpm/sleep-promise@8.0.1/node_modules/sleep-promise/build/cjs.js"(exports2, module2) { "use strict"; var cachedSetTimeout = setTimeout; function createSleepPromise(a, b) { var c = b.useCachedSetTimeout, d = c ? cachedSetTimeout : setTimeout; return new Promise(function(b2) { d(b2, a); }); } function sleep2(a) { function b(a2) { return e2.then(function() { return a2; }); } var c = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}, d = c.useCachedSetTimeout, e2 = createSleepPromise(a, { useCachedSetTimeout: d }); return b.then = function() { return e2.then.apply(e2, arguments); }, b.catch = Promise.resolve().catch, b; } module2.exports = sleep2; } }); // ../../node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js var require_ms = __commonJS2({ "../../node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js"(exports2, module2) { 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 parse11(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 parse11(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(ms34) { var msAbs = Math.abs(ms34); if (msAbs >= d) { return Math.round(ms34 / d) + "d"; } if (msAbs >= h) { return Math.round(ms34 / h) + "h"; } if (msAbs >= m) { return Math.round(ms34 / m) + "m"; } if (msAbs >= s) { return Math.round(ms34 / s) + "s"; } return ms34 + "ms"; } function fmtLong(ms34) { var msAbs = Math.abs(ms34); if (msAbs >= d) { return plural15(ms34, msAbs, d, "day"); } if (msAbs >= h) { return plural15(ms34, msAbs, h, "hour"); } if (msAbs >= m) { return plural15(ms34, msAbs, m, "minute"); } if (msAbs >= s) { return plural15(ms34, msAbs, s, "second"); } return ms34 + " ms"; } function plural15(ms34, msAbs, n, name) { var isPlural = msAbs >= n * 1.5; return Math.round(ms34 / n) + " " + name + (isPlural ? "s" : ""); } } }); // ../client/dist/utils/get-polling-delay.js var require_get_polling_delay = __commonJS2({ "../client/dist/utils/get-polling-delay.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var get_polling_delay_exports = {}; __export4(get_polling_delay_exports, { getPollingDelay: () => getPollingDelay }); module2.exports = __toCommonJS4(get_polling_delay_exports); var import_ms34 = __toESM4(require_ms()); function getPollingDelay(elapsed2) { if (elapsed2 <= (0, import_ms34.default)("15s")) { return (0, import_ms34.default)("1s"); } if (elapsed2 <= (0, import_ms34.default)("1m")) { return (0, import_ms34.default)("5s"); } if (elapsed2 <= (0, import_ms34.default)("5m")) { return (0, import_ms34.default)("15s"); } return (0, import_ms34.default)("30s"); } } }); // ../client/dist/check-deployment-status.js var require_check_deployment_status = __commonJS2({ "../client/dist/check-deployment-status.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var check_deployment_status_exports = {}; __export4(check_deployment_status_exports, { checkDeploymentStatus: () => checkDeploymentStatus3, parseRetryAfterMs: () => parseRetryAfterMs }); module2.exports = __toCommonJS4(check_deployment_status_exports); var import_sleep_promise = __toESM4(require_cjs6()); var import_utils9 = require_utils14(); var import_get_polling_delay = require_get_polling_delay(); var import_ready_state = require_ready_state(); var import_utils22 = require_utils14(); var RETRY_COUNT = 5; var RETRY_DELAY_MAX_MS = 6e4; var RETRY_DELAY_MIN_MS = 5e3; var RETRY_DELAY_SKEW_MS = 3e4; var RETRY_DELAY_DEFAULT_MS = 5e3; function parseRetryAfterMs(response) { if (response.status === 429 || response.status === 503) { let header = response.headers.get("Retry-After"); if (header == null) { return RETRY_DELAY_DEFAULT_MS; } let retryAfterMs = Number(header) * 1e3; if (Number.isNaN(retryAfterMs)) { let retryAfterDateMs = Date.parse(header); if (Number.isNaN(retryAfterDateMs)) { retryAfterMs = RETRY_DELAY_DEFAULT_MS; } else { retryAfterMs = retryAfterDateMs - Date.now(); } } return Math.min( RETRY_DELAY_MAX_MS, Math.max(RETRY_DELAY_MIN_MS, retryAfterMs) ); } else if (response.status >= 500 && response.status <= 599) { return RETRY_DELAY_DEFAULT_MS; } else { return null; } } async function* checkDeploymentStatus3(deployment, clientOptions) { const { token, teamId, apiUrl: apiUrl2, userAgent: userAgent2 } = clientOptions; const debug2 = (0, import_utils22.createDebug)(clientOptions.debug); let deploymentState = deployment; const apiDeployments = (0, import_utils9.getApiDeploymentsUrl)(); if ((0, import_ready_state.isDone)(deploymentState) && (0, import_ready_state.isAliasAssigned)(deploymentState)) { debug2( `Deployment is already READY and aliases are assigned. Not running status checks` ); return; } debug2("Waiting for builds and the deployment to complete..."); const finishedEvents = /* @__PURE__ */ new Set(); const startTime = Date.now(); while (true) { let deploymentResponse; let retriesLeft = RETRY_COUNT; while (true) { deploymentResponse = await (0, import_utils9.fetch)( `${apiDeployments}/${deployment.id || deployment.deploymentId}${teamId ? `?teamId=${teamId}` : ""}`, token, { apiUrl: apiUrl2, userAgent: userAgent2, agent: clientOptions.agent } ); retriesLeft--; if (retriesLeft == 0) { break; } const retryAfterMs = parseRetryAfterMs(deploymentResponse); if (retryAfterMs != null) { const randomSkewMs = Math.floor(RETRY_DELAY_SKEW_MS * Math.random()); debug2( `Received a transient error or rate limit (HTTP ${deploymentResponse.status}) while querying deployment status, retrying after ${retryAfterMs + randomSkewMs}ms (${retryAfterMs} + ${randomSkewMs}ms of random skew)` ); await (0, import_sleep_promise.default)(retryAfterMs + randomSkewMs); continue; } break; } const deploymentUpdate = await deploymentResponse.json(); if (deploymentUpdate.error) { debug2("Deployment status check has errorred"); return yield { type: "error", payload: deploymentUpdate.error }; } if (deploymentUpdate.readyState === "BUILDING" && !finishedEvents.has("building")) { debug2("Deployment state changed to BUILDING"); finishedEvents.add("building"); yield { type: "building", payload: deploymentUpdate }; } if (deploymentUpdate.readyState === "CANCELED" && !finishedEvents.has("canceled")) { debug2("Deployment state changed to CANCELED"); finishedEvents.add("canceled"); yield { type: "canceled", payload: deploymentUpdate }; } if ((0, import_ready_state.isReady)(deploymentUpdate) && !finishedEvents.has("ready")) { debug2("Deployment state changed to READY"); finishedEvents.add("ready"); yield { type: "ready", payload: deploymentUpdate }; } if (deploymentUpdate.checksState !== void 0) { if (deploymentUpdate.checksState === "completed" && !finishedEvents.has("checks-completed")) { finishedEvents.add("checks-completed"); if (deploymentUpdate.checksConclusion === "succeeded") { yield { type: "checks-conclusion-succeeded", payload: deploymentUpdate }; } else if (deploymentUpdate.checksConclusion === "failed") { yield { type: "checks-conclusion-failed", payload: deploymentUpdate }; } else if (deploymentUpdate.checksConclusion === "skipped") { yield { type: "checks-conclusion-skipped", payload: deploymentUpdate }; } else if (deploymentUpdate.checksConclusion === "canceled") { yield { type: "checks-conclusion-canceled", payload: deploymentUpdate }; } } if (deploymentUpdate.checksState === "registered" && !finishedEvents.has("checks-registered")) { finishedEvents.add("checks-registered"); yield { type: "checks-registered", payload: deploymentUpdate }; } if (deploymentUpdate.checksState === "running" && !finishedEvents.has("checks-running")) { finishedEvents.add("checks-running"); yield { type: "checks-running", payload: deploymentUpdate }; } } if ((0, import_ready_state.isAliasAssigned)(deploymentUpdate)) { debug2("Deployment alias assigned"); return yield { type: "alias-assigned", payload: deploymentUpdate }; } if ((0, import_ready_state.isAliasError)(deploymentUpdate)) { return yield { type: "error", payload: deploymentUpdate.aliasError }; } if (deploymentUpdate.readyState === "ERROR" && deploymentUpdate.errorCode === "BUILD_FAILED") { return yield { type: "error", payload: deploymentUpdate }; } if ((0, import_ready_state.isFailed)(deploymentUpdate)) { return yield { type: "error", payload: deploymentUpdate.error || deploymentUpdate }; } const elapsed2 = Date.now() - startTime; const duration = (0, import_get_polling_delay.getPollingDelay)(elapsed2); await (0, import_sleep_promise.default)(duration); } } } }); // ../client/dist/deploy.js var require_deploy = __commonJS2({ "../client/dist/deploy.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var deploy_exports2 = {}; __export4(deploy_exports2, { deploy: () => deploy }); module2.exports = __toCommonJS4(deploy_exports2); var import_query_string = require_query_string(); var import_ready_state = require_ready_state(); var import_check_deployment_status = require_check_deployment_status(); var import_utils9 = require_utils14(); async function* postDeployment(files, clientOptions, deploymentOptions) { const debug2 = (0, import_utils9.createDebug)(clientOptions.debug); const preparedFiles = (0, import_utils9.prepareFiles)(files, clientOptions); const apiDeployments = (0, import_utils9.getApiDeploymentsUrl)(); if (deploymentOptions?.builds && !deploymentOptions.functions) { clientOptions.skipAutoDetectionConfirmation = true; } if (deploymentOptions.target === "preview") { deploymentOptions.target = void 0; } if (deploymentOptions.target && deploymentOptions.target !== "production") { deploymentOptions.customEnvironmentSlugOrId = deploymentOptions.target; deploymentOptions.target = void 0; } debug2("Sending deployment creation API request"); try { const response = await (0, import_utils9.fetch)( `${apiDeployments}${(0, import_query_string.generateQueryString)(clientOptions)}`, clientOptions.token, { method: "POST", headers: { Accept: "application/json", "Content-Type": "application/json" }, body: JSON.stringify({ ...deploymentOptions, files: preparedFiles }), apiUrl: clientOptions.apiUrl, userAgent: clientOptions.userAgent, agent: clientOptions.agent } ); let deployment = void 0; try { deployment = await response.json(); } catch (error3) { throw new Error("Invalid JSON response"); } if (clientOptions.debug) { debug2("Deployment response:", JSON.stringify(deployment)); } if (!response.ok || deployment.error) { debug2("Error: Deployment request status is", response.status); return yield { type: "error", payload: deployment.error ? { ...deployment.error, status: response.status } : { ...deployment, status: response.status } }; } const indications = /* @__PURE__ */ new Set(["warning", "notice", "tip"]); const regex = /^x-(?:vercel|now)-(warning|notice|tip)-(.*)$/; for (const [name, payload] of response.headers.entries()) { const match = name.match(regex); if (match) { const [, type, identifier] = match; const action = response.headers.get(`x-vercel-action-${identifier}`); const link4 = response.headers.get(`x-vercel-link-${identifier}`); if (indications.has(type)) { debug2(`Deployment created with a ${type}: `, payload); yield { type, payload, action, link: link4 }; } } } yield { type: "created", payload: deployment }; } catch (e2) { return yield { type: "error", payload: e2 }; } } function getDefaultName(files, clientOptions) { const debug2 = (0, import_utils9.createDebug)(clientOptions.debug); const { isDirectory: isDirectory2, path: path11 } = clientOptions; if (isDirectory2 && typeof path11 === "string") { debug2("Provided path is a directory. Using last segment as default name"); return path11.split("/").pop() || path11; } else { debug2( "Provided path is not a directory. Using last segment of the first file as default name" ); const filePath = Array.from(files.values())[0].names[0]; return filePath.split("/").pop() || filePath; } } async function* deploy(files, clientOptions, deploymentOptions) { const debug2 = (0, import_utils9.createDebug)(clientOptions.debug); if (!deploymentOptions.name) { deploymentOptions.version = 2; deploymentOptions.name = files.size === 1 ? "file" : getDefaultName(files, clientOptions); if (deploymentOptions.name === "file") { debug2('Setting deployment name to "file" for single-file deployment'); } } if (!deploymentOptions.name) { deploymentOptions.name = clientOptions.defaultName || getDefaultName(files, clientOptions); debug2("No name provided. Defaulting to", deploymentOptions.name); } if (clientOptions.withCache) { debug2( `'withCache' is provided. Force deploy will be performed with cache retention` ); } let deployment; try { debug2("Creating deployment"); for await (const event of postDeployment( files, clientOptions, deploymentOptions )) { if (event.type === "created") { debug2("Deployment created"); deployment = event.payload; } yield event; } } catch (e2) { debug2("An unexpected error occurred when creating the deployment"); return yield { type: "error", payload: e2 }; } if (deployment) { if ((0, import_ready_state.isReady)(deployment) && (0, import_ready_state.isAliasAssigned)(deployment)) { debug2("Deployment state changed to READY 3"); yield { type: "ready", payload: deployment }; debug2("Deployment alias assigned"); return yield { type: "alias-assigned", payload: deployment }; } try { debug2("Waiting for deployment to be ready..."); for await (const event of (0, import_check_deployment_status.checkDeploymentStatus)( deployment, clientOptions )) { yield event; } } catch (e2) { debug2( "An unexpected error occurred while waiting for deployment to be ready" ); return yield { type: "error", payload: e2 }; } } } } }); // ../client/dist/upload.js var require_upload = __commonJS2({ "../client/dist/upload.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var upload_exports = {}; __export4(upload_exports, { upload: () => upload2 }); module2.exports = __toCommonJS4(upload_exports); var import_http4 = __toESM4(__require("http")); var import_https = __toESM4(__require("https")); var import_stream = __require("stream"); var import_node_events = __require("events"); var import_async_retry6 = __toESM4(require_lib10()); var import_async_sema = require_lib9(); var import_utils9 = require_utils14(); var import_errors6 = require_errors2(); var import_deploy2 = require_deploy(); var isClientNetworkError = (err) => { if (err.message) { return err.message.includes("ETIMEDOUT") || err.message.includes("ECONNREFUSED") || err.message.includes("ENOTFOUND") || err.message.includes("ECONNRESET") || err.message.includes("EAI_FAIL") || err.message.includes("socket hang up") || err.message.includes("network socket disconnected"); } return false; }; async function* upload2(files, clientOptions, deploymentOptions) { const { token, teamId, apiUrl: apiUrl2, userAgent: userAgent2 } = clientOptions; const debug2 = (0, import_utils9.createDebug)(clientOptions.debug); if (!files && !token && !teamId) { debug2(`Neither 'files', 'token' nor 'teamId are present. Exiting`); return; } let shas = []; debug2("Determining necessary files for upload..."); for await (const event of (0, import_deploy2.deploy)(files, clientOptions, deploymentOptions)) { if (event.type === "error") { if (event.payload.code === "missing_files") { shas = event.payload.missing; debug2(`${shas.length} files are required to upload`); } else { return yield event; } } else { if (event.type === "alias-assigned") { debug2("Deployment succeeded on file check"); return yield event; } yield event; } } const uploads = shas.map((sha) => { return new UploadProgress(sha, files.get(sha)); }); yield { type: "file-count", payload: { total: files, missing: shas, uploads } }; const uploadList = {}; debug2("Building an upload list..."); const semaphore = new import_async_sema.Sema(50, { capacity: 50 }); const defaultAgent = apiUrl2?.startsWith("https://") ? new import_https.default.Agent({ keepAlive: true }) : new import_http4.default.Agent({ keepAlive: true }); const abortControllers = /* @__PURE__ */ new Set(); let aborted = false; shas.forEach((sha, index) => { const uploadProgress = uploads[index]; uploadList[sha] = (0, import_async_retry6.default)( async (bail) => { const file = files.get(sha); if (!file) { debug2(`File ${sha} is undefined. Bailing`); return bail(new Error(`File ${sha} is undefined`)); } await semaphore.acquire(); if (aborted) { return bail(new Error("Upload aborted")); } const { data } = file; if (typeof data === "undefined") { return; } uploadProgress.bytesUploaded = 0; const body = new import_stream.Readable(); const originalRead = body.read.bind(body); body.read = function(...args2) { const chunk = originalRead(...args2); if (chunk) { uploadProgress.bytesUploaded += chunk.length; uploadProgress.emit("progress"); } return chunk; }; const chunkSize = 16384; for (let i = 0; i < data.length; i += chunkSize) { const chunk = data.slice(i, i + chunkSize); body.push(chunk); } body.push(null); let err; let result; const abortController = new AbortController(); abortControllers.add(abortController); try { const res = await (0, import_utils9.fetch)( import_utils9.API_FILES, token, { agent: clientOptions.agent || defaultAgent, method: "POST", headers: { "Content-Type": "application/octet-stream", "Content-Length": data.length, "x-now-digest": sha, "x-now-size": data.length }, body, teamId, apiUrl: apiUrl2, userAgent: userAgent2, // @ts-expect-error: typescript is getting confused with the signal types from node (web & server) and node-fetch (server only) signal: abortController.signal }, clientOptions.debug ); if (res.status === 200) { debug2( `File ${sha} (${file.names[0]}${file.names.length > 1 ? ` +${file.names.length}` : ""}) uploaded` ); result = { type: "file-uploaded", payload: { sha, file } }; } else if (res.status > 200 && res.status < 500) { debug2( `An internal error occurred in upload request. Not retrying...` ); const { error: error3 } = await res.json(); err = new import_errors6.DeploymentError(error3); } else { debug2(`A server error occurred in upload request. Retrying...`); const { error: error3 } = await res.json(); throw new import_errors6.DeploymentError(error3); } } catch (e2) { debug2(`An unexpected error occurred in upload promise: ${e2}`); err = new Error(e2); } semaphore.release(); if (err) { if (isClientNetworkError(err)) { debug2("Network error, retrying: " + err.message); throw err; } else { debug2("Other error, bailing: " + err.message); if (!aborted) { aborted = true; abortControllers.forEach((controller) => controller.abort()); } return bail(err); } } abortControllers.delete(abortController); return result; }, { retries: 5, factor: 6, minTimeout: 10 } ); }); debug2("Starting upload"); while (Object.keys(uploadList).length > 0) { try { const event = await Promise.race(Object.values(uploadList)); delete uploadList[event.payload.sha]; yield event; } catch (e2) { return yield { type: "error", payload: e2 }; } } debug2("All files uploaded"); yield { type: "all-files-uploaded", payload: files }; try { debug2("Starting deployment creation"); for await (const event of (0, import_deploy2.deploy)(files, clientOptions, deploymentOptions)) { if (event.type === "alias-assigned") { debug2("Deployment is ready"); return yield event; } yield event; } } catch (e2) { debug2("An unexpected error occurred when starting deployment creation"); yield { type: "error", payload: e2 }; } } var UploadProgress = class extends import_node_events.EventEmitter { constructor(sha, file) { super(); this.sha = sha; this.file = file; this.bytesUploaded = 0; } }; } }); // ../../node_modules/.pnpm/chownr@1.1.4/node_modules/chownr/chownr.js var require_chownr = __commonJS2({ "../../node_modules/.pnpm/chownr@1.1.4/node_modules/chownr/chownr.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var path11 = __require("path"); var LCHOWN = fs15.lchown ? "lchown" : "chown"; var LCHOWNSYNC = fs15.lchownSync ? "lchownSync" : "chownSync"; var needEISDIRHandled = fs15.lchown && !process.version.match(/v1[1-9]+\./) && !process.version.match(/v10\.[6-9]/); var lchownSync = (path12, uid, gid) => { try { return fs15[LCHOWNSYNC](path12, uid, gid); } catch (er) { if (er.code !== "ENOENT") throw er; } }; var chownSync = (path12, uid, gid) => { try { return fs15.chownSync(path12, uid, gid); } catch (er) { if (er.code !== "ENOENT") throw er; } }; var handleEISDIR = needEISDIRHandled ? (path12, uid, gid, cb) => (er) => { if (!er || er.code !== "EISDIR") cb(er); else fs15.chown(path12, uid, gid, cb); } : (_, __, ___, cb) => cb; var handleEISDirSync = needEISDIRHandled ? (path12, uid, gid) => { try { return lchownSync(path12, uid, gid); } catch (er) { if (er.code !== "EISDIR") throw er; chownSync(path12, uid, gid); } } : (path12, uid, gid) => lchownSync(path12, uid, gid); var nodeVersion = process.version; var readdir2 = (path12, options, cb) => fs15.readdir(path12, options, cb); var readdirSync = (path12, options) => fs15.readdirSync(path12, options); if (/^v4\./.test(nodeVersion)) readdir2 = (path12, options, cb) => fs15.readdir(path12, cb); var chown = (cpath, uid, gid, cb) => { fs15[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, (er) => { cb(er && er.code !== "ENOENT" ? er : null); })); }; var chownrKid = (p, child, uid, gid, cb) => { if (typeof child === "string") return fs15.lstat(path11.resolve(p, child), (er, stats) => { if (er) return cb(er.code !== "ENOENT" ? er : null); stats.name = child; chownrKid(p, stats, uid, gid, cb); }); if (child.isDirectory()) { chownr(path11.resolve(p, child.name), uid, gid, (er) => { if (er) return cb(er); const cpath = path11.resolve(p, child.name); chown(cpath, uid, gid, cb); }); } else { const cpath = path11.resolve(p, child.name); chown(cpath, uid, gid, cb); } }; var chownr = (p, uid, gid, cb) => { readdir2(p, { withFileTypes: true }, (er, children) => { if (er) { if (er.code === "ENOENT") return cb(); else if (er.code !== "ENOTDIR" && er.code !== "ENOTSUP") return cb(er); } if (er || !children.length) return chown(p, uid, gid, cb); let len = children.length; let errState = null; const then = (er2) => { if (errState) return; if (er2) return cb(errState = er2); if (--len === 0) return chown(p, uid, gid, cb); }; children.forEach((child) => chownrKid(p, child, uid, gid, then)); }); }; var chownrKidSync = (p, child, uid, gid) => { if (typeof child === "string") { try { const stats = fs15.lstatSync(path11.resolve(p, child)); stats.name = child; child = stats; } catch (er) { if (er.code === "ENOENT") return; else throw er; } } if (child.isDirectory()) chownrSync(path11.resolve(p, child.name), uid, gid); handleEISDirSync(path11.resolve(p, child.name), uid, gid); }; var chownrSync = (p, uid, gid) => { let children; try { children = readdirSync(p, { withFileTypes: true }); } catch (er) { if (er.code === "ENOENT") return; else if (er.code === "ENOTDIR" || er.code === "ENOTSUP") return handleEISDirSync(p, uid, gid); else throw er; } if (children && children.length) children.forEach((child) => chownrKidSync(p, child, uid, gid)); return handleEISDirSync(p, uid, gid); }; module2.exports = chownr; chownr.sync = chownrSync; } }); // ../../node_modules/.pnpm/process-nextick-args@2.0.1/node_modules/process-nextick-args/index.js var require_process_nextick_args = __commonJS2({ "../../node_modules/.pnpm/process-nextick-args@2.0.1/node_modules/process-nextick-args/index.js"(exports2, module2) { "use strict"; if (typeof process === "undefined" || !process.version || process.version.indexOf("v0.") === 0 || process.version.indexOf("v1.") === 0 && process.version.indexOf("v1.8.") !== 0) { module2.exports = { nextTick }; } else { module2.exports = process; } function nextTick(fn2, arg1, arg2, arg3) { if (typeof fn2 !== "function") { throw new TypeError('"callback" argument must be a function'); } var len = arguments.length; var args2, i; switch (len) { case 0: case 1: return process.nextTick(fn2); case 2: return process.nextTick(function afterTickOne() { fn2.call(null, arg1); }); case 3: return process.nextTick(function afterTickTwo() { fn2.call(null, arg1, arg2); }); case 4: return process.nextTick(function afterTickThree() { fn2.call(null, arg1, arg2, arg3); }); default: args2 = new Array(len - 1); i = 0; while (i < args2.length) { args2[i++] = arguments[i]; } return process.nextTick(function afterTick() { fn2.apply(null, args2); }); } } } }); // ../../node_modules/.pnpm/isarray@1.0.0/node_modules/isarray/index.js var require_isarray = __commonJS2({ "../../node_modules/.pnpm/isarray@1.0.0/node_modules/isarray/index.js"(exports2, module2) { var toString2 = {}.toString; module2.exports = Array.isArray || function(arr) { return toString2.call(arr) == "[object Array]"; }; } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/stream.js var require_stream5 = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/stream.js"(exports2, module2) { module2.exports = __require("stream"); } }); // ../../node_modules/.pnpm/safe-buffer@5.1.2/node_modules/safe-buffer/index.js var require_safe_buffer = __commonJS2({ "../../node_modules/.pnpm/safe-buffer@5.1.2/node_modules/safe-buffer/index.js"(exports2, module2) { 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(arg2, encodingOrOffset, length) { return Buffer2(arg2, encodingOrOffset, length); } copyProps(Buffer2, SafeBuffer); SafeBuffer.from = function(arg2, encodingOrOffset, length) { if (typeof arg2 === "number") { throw new TypeError("Argument must not be a number"); } return Buffer2(arg2, 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); }; } }); // ../../node_modules/.pnpm/core-util-is@1.0.3/node_modules/core-util-is/lib/util.js var require_util3 = __commonJS2({ "../../node_modules/.pnpm/core-util-is@1.0.3/node_modules/core-util-is/lib/util.js"(exports2) { function isArray(arg2) { if (Array.isArray) { return Array.isArray(arg2); } return objectToString(arg2) === "[object Array]"; } exports2.isArray = isArray; function isBoolean(arg2) { return typeof arg2 === "boolean"; } exports2.isBoolean = isBoolean; function isNull(arg2) { return arg2 === null; } exports2.isNull = isNull; function isNullOrUndefined(arg2) { return arg2 == null; } exports2.isNullOrUndefined = isNullOrUndefined; function isNumber(arg2) { return typeof arg2 === "number"; } exports2.isNumber = isNumber; function isString(arg2) { return typeof arg2 === "string"; } exports2.isString = isString; function isSymbol(arg2) { return typeof arg2 === "symbol"; } exports2.isSymbol = isSymbol; function isUndefined(arg2) { return arg2 === void 0; } exports2.isUndefined = isUndefined; function isRegExp(re) { return objectToString(re) === "[object RegExp]"; } exports2.isRegExp = isRegExp; function isObject2(arg2) { return typeof arg2 === "object" && arg2 !== null; } exports2.isObject = isObject2; function isDate(d) { return objectToString(d) === "[object Date]"; } exports2.isDate = isDate; function isError14(e2) { return objectToString(e2) === "[object Error]" || e2 instanceof Error; } exports2.isError = isError14; function isFunction(arg2) { return typeof arg2 === "function"; } exports2.isFunction = isFunction; function isPrimitive(arg2) { return arg2 === null || typeof arg2 === "boolean" || typeof arg2 === "number" || typeof arg2 === "string" || typeof arg2 === "symbol" || // ES6 symbol typeof arg2 === "undefined"; } exports2.isPrimitive = isPrimitive; exports2.isBuffer = __require("buffer").Buffer.isBuffer; function objectToString(o) { return Object.prototype.toString.call(o); } } }); // ../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js var require_inherits_browser = __commonJS2({ "../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js"(exports2, module2) { 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; } }; } } }); // ../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js var require_inherits = __commonJS2({ "../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js"(exports2, module2) { try { util = __require("util"); if (typeof util.inherits !== "function") throw ""; module2.exports = util.inherits; } catch (e2) { module2.exports = require_inherits_browser(); } var util; } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/BufferList.js var require_BufferList = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/BufferList.js"(exports2, module2) { "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Buffer2 = require_safe_buffer().Buffer; var util = __require("util"); function copyBuffer(src, target, offset) { src.copy(target, offset); } module2.exports = function() { function BufferList() { _classCallCheck(this, BufferList); this.head = null; this.tail = null; this.length = 0; } BufferList.prototype.push = function push(v) { var entry = { data: v, next: null }; if (this.length > 0) this.tail.next = entry; else this.head = entry; this.tail = entry; ++this.length; }; BufferList.prototype.unshift = function unshift(v) { var entry = { data: v, next: this.head }; if (this.length === 0) this.tail = entry; this.head = entry; ++this.length; }; BufferList.prototype.shift = function shift() { if (this.length === 0) return; var ret = this.head.data; if (this.length === 1) this.head = this.tail = null; else this.head = this.head.next; --this.length; return ret; }; BufferList.prototype.clear = function clear() { this.head = this.tail = null; this.length = 0; }; BufferList.prototype.join = function join26(s) { if (this.length === 0) return ""; var p = this.head; var ret = "" + p.data; while (p = p.next) { ret += s + p.data; } return ret; }; BufferList.prototype.concat = function concat(n) { if (this.length === 0) return Buffer2.alloc(0); var ret = Buffer2.allocUnsafe(n >>> 0); var p = this.head; var i = 0; while (p) { copyBuffer(p.data, ret, i); i += p.data.length; p = p.next; } return ret; }; return BufferList; }(); if (util && util.inspect && util.inspect.custom) { module2.exports.prototype[util.inspect.custom] = function() { var obj = util.inspect({ length: this.length }); return this.constructor.name + " " + obj; }; } } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/destroy.js var require_destroy = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/destroy.js"(exports2, module2) { "use strict"; var pna = require_process_nextick_args(); function destroy(err, cb) { var _this = this; var readableDestroyed = this._readableState && this._readableState.destroyed; var writableDestroyed = this._writableState && this._writableState.destroyed; if (readableDestroyed || writableDestroyed) { if (cb) { cb(err); } else if (err) { if (!this._writableState) { pna.nextTick(emitErrorNT, this, err); } else if (!this._writableState.errorEmitted) { this._writableState.errorEmitted = true; pna.nextTick(emitErrorNT, this, err); } } return this; } if (this._readableState) { this._readableState.destroyed = true; } if (this._writableState) { this._writableState.destroyed = true; } this._destroy(err || null, function(err2) { if (!cb && err2) { if (!_this._writableState) { pna.nextTick(emitErrorNT, _this, err2); } else if (!_this._writableState.errorEmitted) { _this._writableState.errorEmitted = true; pna.nextTick(emitErrorNT, _this, err2); } } else if (cb) { cb(err2); } }); return this; } function undestroy() { if (this._readableState) { this._readableState.destroyed = false; this._readableState.reading = false; this._readableState.ended = false; this._readableState.endEmitted = false; } if (this._writableState) { this._writableState.destroyed = false; this._writableState.ended = false; this._writableState.ending = false; this._writableState.finalCalled = false; this._writableState.prefinished = false; this._writableState.finished = false; this._writableState.errorEmitted = false; } } function emitErrorNT(self2, err) { self2.emit("error", err); } module2.exports = { destroy, undestroy }; } }); // ../../node_modules/.pnpm/util-deprecate@1.0.2/node_modules/util-deprecate/node.js var require_node2 = __commonJS2({ "../../node_modules/.pnpm/util-deprecate@1.0.2/node_modules/util-deprecate/node.js"(exports2, module2) { module2.exports = __require("util").deprecate; } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_writable.js var require_stream_writable = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_writable.js"(exports2, module2) { "use strict"; var pna = require_process_nextick_args(); module2.exports = Writable; function CorkedRequest(state) { var _this = this; this.next = null; this.entry = null; this.finish = function() { onCorkedFinish(_this, state); }; } var asyncWrite = !process.browser && ["v0.10", "v0.9."].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; var Duplex; Writable.WritableState = WritableState; var util = Object.create(require_util3()); util.inherits = require_inherits(); var internalUtil = { deprecate: require_node2() }; var Stream = require_stream5(); var Buffer2 = require_safe_buffer().Buffer; var OurUint8Array = (typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() { }; function _uint8ArrayToBuffer(chunk) { return Buffer2.from(chunk); } function _isUint8Array(obj) { return Buffer2.isBuffer(obj) || obj instanceof OurUint8Array; } var destroyImpl = require_destroy(); util.inherits(Writable, Stream); function nop() { } function WritableState(options, stream) { Duplex = Duplex || require_stream_duplex(); options = options || {}; var isDuplex = stream instanceof Duplex; this.objectMode = !!options.objectMode; if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; var hwm = options.highWaterMark; var writableHwm = options.writableHighWaterMark; var defaultHwm = this.objectMode ? 16 : 16 * 1024; if (hwm || hwm === 0) this.highWaterMark = hwm; else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm; else this.highWaterMark = defaultHwm; this.highWaterMark = Math.floor(this.highWaterMark); this.finalCalled = false; this.needDrain = false; this.ending = false; this.ended = false; this.finished = false; this.destroyed = false; var noDecode = options.decodeStrings === false; this.decodeStrings = !noDecode; this.defaultEncoding = options.defaultEncoding || "utf8"; this.length = 0; this.writing = false; this.corked = 0; this.sync = true; this.bufferProcessing = false; this.onwrite = function(er) { onwrite(stream, er); }; this.writecb = null; this.writelen = 0; this.bufferedRequest = null; this.lastBufferedRequest = null; this.pendingcb = 0; this.prefinished = false; this.errorEmitted = false; this.bufferedRequestCount = 0; this.corkedRequestsFree = new CorkedRequest(this); } WritableState.prototype.getBuffer = function getBuffer() { var current = this.bufferedRequest; var out = []; while (current) { out.push(current); current = current.next; } return out; }; (function() { try { Object.defineProperty(WritableState.prototype, "buffer", { get: internalUtil.deprecate(function() { return this.getBuffer(); }, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003") }); } catch (_) { } })(); var realHasInstance; if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") { realHasInstance = Function.prototype[Symbol.hasInstance]; Object.defineProperty(Writable, Symbol.hasInstance, { value: function(object) { if (realHasInstance.call(this, object)) return true; if (this !== Writable) return false; return object && object._writableState instanceof WritableState; } }); } else { realHasInstance = function(object) { return object instanceof this; }; } function Writable(options) { Duplex = Duplex || require_stream_duplex(); if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { return new Writable(options); } this._writableState = new WritableState(options, this); this.writable = true; if (options) { if (typeof options.write === "function") this._write = options.write; if (typeof options.writev === "function") this._writev = options.writev; if (typeof options.destroy === "function") this._destroy = options.destroy; if (typeof options.final === "function") this._final = options.final; } Stream.call(this); } Writable.prototype.pipe = function() { this.emit("error", new Error("Cannot pipe, not readable")); }; function writeAfterEnd(stream, cb) { var er = new Error("write after end"); stream.emit("error", er); pna.nextTick(cb, er); } function validChunk(stream, state, chunk, cb) { var valid = true; var er = false; if (chunk === null) { er = new TypeError("May not write null values to stream"); } else if (typeof chunk !== "string" && chunk !== void 0 && !state.objectMode) { er = new TypeError("Invalid non-string/buffer chunk"); } if (er) { stream.emit("error", er); pna.nextTick(cb, er); valid = false; } return valid; } Writable.prototype.write = function(chunk, encoding, cb) { var state = this._writableState; var ret = false; var isBuf = !state.objectMode && _isUint8Array(chunk); if (isBuf && !Buffer2.isBuffer(chunk)) { chunk = _uint8ArrayToBuffer(chunk); } if (typeof encoding === "function") { cb = encoding; encoding = null; } if (isBuf) encoding = "buffer"; else if (!encoding) encoding = state.defaultEncoding; if (typeof cb !== "function") cb = nop; if (state.ended) writeAfterEnd(this, cb); else if (isBuf || validChunk(this, state, chunk, cb)) { state.pendingcb++; ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); } return ret; }; Writable.prototype.cork = function() { var state = this._writableState; state.corked++; }; Writable.prototype.uncork = function() { var state = this._writableState; if (state.corked) { state.corked--; if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); } }; Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { if (typeof encoding === "string") encoding = encoding.toLowerCase(); if (!(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((encoding + "").toLowerCase()) > -1)) throw new TypeError("Unknown encoding: " + encoding); this._writableState.defaultEncoding = encoding; return this; }; function decodeChunk(state, chunk, encoding) { if (!state.objectMode && state.decodeStrings !== false && typeof chunk === "string") { chunk = Buffer2.from(chunk, encoding); } return chunk; } Object.defineProperty(Writable.prototype, "writableHighWaterMark", { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, get: function() { return this._writableState.highWaterMark; } }); function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { if (!isBuf) { var newChunk = decodeChunk(state, chunk, encoding); if (chunk !== newChunk) { isBuf = true; encoding = "buffer"; chunk = newChunk; } } var len = state.objectMode ? 1 : chunk.length; state.length += len; var ret = state.length < state.highWaterMark; if (!ret) state.needDrain = true; if (state.writing || state.corked) { var last = state.lastBufferedRequest; state.lastBufferedRequest = { chunk, encoding, isBuf, callback: cb, next: null }; if (last) { last.next = state.lastBufferedRequest; } else { state.bufferedRequest = state.lastBufferedRequest; } state.bufferedRequestCount += 1; } else { doWrite(stream, state, false, len, chunk, encoding, cb); } return ret; } function doWrite(stream, state, writev, len, chunk, encoding, cb) { state.writelen = len; state.writecb = cb; state.writing = true; state.sync = true; if (writev) stream._writev(chunk, state.onwrite); else stream._write(chunk, encoding, state.onwrite); state.sync = false; } function onwriteError(stream, state, sync, er, cb) { --state.pendingcb; if (sync) { pna.nextTick(cb, er); pna.nextTick(finishMaybe, stream, state); stream._writableState.errorEmitted = true; stream.emit("error", er); } else { cb(er); stream._writableState.errorEmitted = true; stream.emit("error", er); finishMaybe(stream, state); } } function onwriteStateUpdate(state) { state.writing = false; state.writecb = null; state.length -= state.writelen; state.writelen = 0; } function onwrite(stream, er) { var state = stream._writableState; var sync = state.sync; var cb = state.writecb; onwriteStateUpdate(state); if (er) onwriteError(stream, state, sync, er, cb); else { var finished = needFinish(state); if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { clearBuffer(stream, state); } if (sync) { asyncWrite(afterWrite, stream, state, finished, cb); } else { afterWrite(stream, state, finished, cb); } } } function afterWrite(stream, state, finished, cb) { if (!finished) onwriteDrain(stream, state); state.pendingcb--; cb(); finishMaybe(stream, state); } function onwriteDrain(stream, state) { if (state.length === 0 && state.needDrain) { state.needDrain = false; stream.emit("drain"); } } function clearBuffer(stream, state) { state.bufferProcessing = true; var entry = state.bufferedRequest; if (stream._writev && entry && entry.next) { var l = state.bufferedRequestCount; var buffer = new Array(l); var holder = state.corkedRequestsFree; holder.entry = entry; var count = 0; var allBuffers = true; while (entry) { buffer[count] = entry; if (!entry.isBuf) allBuffers = false; entry = entry.next; count += 1; } buffer.allBuffers = allBuffers; doWrite(stream, state, true, state.length, buffer, "", holder.finish); state.pendingcb++; state.lastBufferedRequest = null; if (holder.next) { state.corkedRequestsFree = holder.next; holder.next = null; } else { state.corkedRequestsFree = new CorkedRequest(state); } state.bufferedRequestCount = 0; } else { while (entry) { var chunk = entry.chunk; var encoding = entry.encoding; var cb = entry.callback; var len = state.objectMode ? 1 : chunk.length; doWrite(stream, state, false, len, chunk, encoding, cb); entry = entry.next; state.bufferedRequestCount--; if (state.writing) { break; } } if (entry === null) state.lastBufferedRequest = null; } state.bufferedRequest = entry; state.bufferProcessing = false; } Writable.prototype._write = function(chunk, encoding, cb) { cb(new Error("_write() is not implemented")); }; Writable.prototype._writev = null; Writable.prototype.end = function(chunk, encoding, cb) { var state = this._writableState; if (typeof chunk === "function") { cb = chunk; chunk = null; encoding = null; } else if (typeof encoding === "function") { cb = encoding; encoding = null; } if (chunk !== null && chunk !== void 0) this.write(chunk, encoding); if (state.corked) { state.corked = 1; this.uncork(); } if (!state.ending) endWritable(this, state, cb); }; function needFinish(state) { return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; } function callFinal(stream, state) { stream._final(function(err) { state.pendingcb--; if (err) { stream.emit("error", err); } state.prefinished = true; stream.emit("prefinish"); finishMaybe(stream, state); }); } function prefinish(stream, state) { if (!state.prefinished && !state.finalCalled) { if (typeof stream._final === "function") { state.pendingcb++; state.finalCalled = true; pna.nextTick(callFinal, stream, state); } else { state.prefinished = true; stream.emit("prefinish"); } } } function finishMaybe(stream, state) { var need = needFinish(state); if (need) { prefinish(stream, state); if (state.pendingcb === 0) { state.finished = true; stream.emit("finish"); } } return need; } function endWritable(stream, state, cb) { state.ending = true; finishMaybe(stream, state); if (cb) { if (state.finished) pna.nextTick(cb); else stream.once("finish", cb); } state.ended = true; stream.writable = false; } function onCorkedFinish(corkReq, state, err) { var entry = corkReq.entry; corkReq.entry = null; while (entry) { var cb = entry.callback; state.pendingcb--; cb(err); entry = entry.next; } state.corkedRequestsFree.next = corkReq; } Object.defineProperty(Writable.prototype, "destroyed", { get: function() { if (this._writableState === void 0) { return false; } return this._writableState.destroyed; }, set: function(value) { if (!this._writableState) { return; } this._writableState.destroyed = value; } }); Writable.prototype.destroy = destroyImpl.destroy; Writable.prototype._undestroy = destroyImpl.undestroy; Writable.prototype._destroy = function(err, cb) { this.end(); cb(err); }; } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_duplex.js var require_stream_duplex = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_duplex.js"(exports2, module2) { "use strict"; var pna = require_process_nextick_args(); var objectKeys = Object.keys || function(obj) { var keys2 = []; for (var key in obj) { keys2.push(key); } return keys2; }; module2.exports = Duplex; var util = Object.create(require_util3()); util.inherits = require_inherits(); var Readable = require_stream_readable(); var Writable = require_stream_writable(); util.inherits(Duplex, Readable); { keys = objectKeys(Writable.prototype); for (v = 0; v < keys.length; v++) { method = keys[v]; if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; } } var keys; var method; var v; function Duplex(options) { if (!(this instanceof Duplex)) return new Duplex(options); Readable.call(this, options); Writable.call(this, options); if (options && options.readable === false) this.readable = false; if (options && options.writable === false) this.writable = false; this.allowHalfOpen = true; if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; this.once("end", onend); } Object.defineProperty(Duplex.prototype, "writableHighWaterMark", { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, get: function() { return this._writableState.highWaterMark; } }); function onend() { if (this.allowHalfOpen || this._writableState.ended) return; pna.nextTick(onEndNT, this); } function onEndNT(self2) { self2.end(); } Object.defineProperty(Duplex.prototype, "destroyed", { get: function() { if (this._readableState === void 0 || this._writableState === void 0) { return false; } return this._readableState.destroyed && this._writableState.destroyed; }, set: function(value) { if (this._readableState === void 0 || this._writableState === void 0) { return; } this._readableState.destroyed = value; this._writableState.destroyed = value; } }); Duplex.prototype._destroy = function(err, cb) { this.push(null); this.end(); pna.nextTick(cb, err); }; } }); // ../../node_modules/.pnpm/string_decoder@1.1.1/node_modules/string_decoder/lib/string_decoder.js var require_string_decoder = __commonJS2({ "../../node_modules/.pnpm/string_decoder@1.1.1/node_modules/string_decoder/lib/string_decoder.js"(exports2) { "use strict"; var Buffer2 = require_safe_buffer().Buffer; var isEncoding = Buffer2.isEncoding || function(encoding) { encoding = "" + encoding; switch (encoding && encoding.toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": case "raw": return true; default: return false; } }; function _normalizeEncoding(enc) { if (!enc) return "utf8"; var retried; while (true) { switch (enc) { case "utf8": case "utf-8": return "utf8"; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return "utf16le"; case "latin1": case "binary": return "latin1"; case "base64": case "ascii": case "hex": return enc; default: if (retried) return; enc = ("" + enc).toLowerCase(); retried = true; } } } function normalizeEncoding(enc) { var nenc = _normalizeEncoding(enc); if (typeof nenc !== "string" && (Buffer2.isEncoding === isEncoding || !isEncoding(enc))) throw new Error("Unknown encoding: " + enc); return nenc || enc; } exports2.StringDecoder = StringDecoder; function StringDecoder(encoding) { this.encoding = normalizeEncoding(encoding); var nb; switch (this.encoding) { case "utf16le": this.text = utf16Text; this.end = utf16End; nb = 4; break; case "utf8": this.fillLast = utf8FillLast; nb = 4; break; case "base64": this.text = base64Text; this.end = base64End; nb = 3; break; default: this.write = simpleWrite; this.end = simpleEnd; return; } this.lastNeed = 0; this.lastTotal = 0; this.lastChar = Buffer2.allocUnsafe(nb); } StringDecoder.prototype.write = function(buf) { if (buf.length === 0) return ""; var r; var i; if (this.lastNeed) { r = this.fillLast(buf); if (r === void 0) return ""; i = this.lastNeed; this.lastNeed = 0; } else { i = 0; } if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); return r || ""; }; StringDecoder.prototype.end = utf8End; StringDecoder.prototype.text = utf8Text; StringDecoder.prototype.fillLast = function(buf) { if (this.lastNeed <= buf.length) { buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); return this.lastChar.toString(this.encoding, 0, this.lastTotal); } buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); this.lastNeed -= buf.length; }; function utf8CheckByte(byte) { if (byte <= 127) return 0; else if (byte >> 5 === 6) return 2; else if (byte >> 4 === 14) return 3; else if (byte >> 3 === 30) return 4; return byte >> 6 === 2 ? -1 : -2; } function utf8CheckIncomplete(self2, buf, i) { var j = buf.length - 1; if (j < i) return 0; var nb = utf8CheckByte(buf[j]); if (nb >= 0) { if (nb > 0) self2.lastNeed = nb - 1; return nb; } if (--j < i || nb === -2) return 0; nb = utf8CheckByte(buf[j]); if (nb >= 0) { if (nb > 0) self2.lastNeed = nb - 2; return nb; } if (--j < i || nb === -2) return 0; nb = utf8CheckByte(buf[j]); if (nb >= 0) { if (nb > 0) { if (nb === 2) nb = 0; else self2.lastNeed = nb - 3; } return nb; } return 0; } function utf8CheckExtraBytes(self2, buf, p) { if ((buf[0] & 192) !== 128) { self2.lastNeed = 0; return "\uFFFD"; } if (self2.lastNeed > 1 && buf.length > 1) { if ((buf[1] & 192) !== 128) { self2.lastNeed = 1; return "\uFFFD"; } if (self2.lastNeed > 2 && buf.length > 2) { if ((buf[2] & 192) !== 128) { self2.lastNeed = 2; return "\uFFFD"; } } } } function utf8FillLast(buf) { var p = this.lastTotal - this.lastNeed; var r = utf8CheckExtraBytes(this, buf, p); if (r !== void 0) return r; if (this.lastNeed <= buf.length) { buf.copy(this.lastChar, p, 0, this.lastNeed); return this.lastChar.toString(this.encoding, 0, this.lastTotal); } buf.copy(this.lastChar, p, 0, buf.length); this.lastNeed -= buf.length; } function utf8Text(buf, i) { var total = utf8CheckIncomplete(this, buf, i); if (!this.lastNeed) return buf.toString("utf8", i); this.lastTotal = total; var end = buf.length - (total - this.lastNeed); buf.copy(this.lastChar, 0, end); return buf.toString("utf8", i, end); } function utf8End(buf) { var r = buf && buf.length ? this.write(buf) : ""; if (this.lastNeed) return r + "\uFFFD"; return r; } function utf16Text(buf, i) { if ((buf.length - i) % 2 === 0) { var r = buf.toString("utf16le", i); if (r) { var c = r.charCodeAt(r.length - 1); if (c >= 55296 && c <= 56319) { this.lastNeed = 2; this.lastTotal = 4; this.lastChar[0] = buf[buf.length - 2]; this.lastChar[1] = buf[buf.length - 1]; return r.slice(0, -1); } } return r; } this.lastNeed = 1; this.lastTotal = 2; this.lastChar[0] = buf[buf.length - 1]; return buf.toString("utf16le", i, buf.length - 1); } function utf16End(buf) { var r = buf && buf.length ? this.write(buf) : ""; if (this.lastNeed) { var end = this.lastTotal - this.lastNeed; return r + this.lastChar.toString("utf16le", 0, end); } return r; } function base64Text(buf, i) { var n = (buf.length - i) % 3; if (n === 0) return buf.toString("base64", i); this.lastNeed = 3 - n; this.lastTotal = 3; if (n === 1) { this.lastChar[0] = buf[buf.length - 1]; } else { this.lastChar[0] = buf[buf.length - 2]; this.lastChar[1] = buf[buf.length - 1]; } return buf.toString("base64", i, buf.length - n); } function base64End(buf) { var r = buf && buf.length ? this.write(buf) : ""; if (this.lastNeed) return r + this.lastChar.toString("base64", 0, 3 - this.lastNeed); return r; } function simpleWrite(buf) { return buf.toString(this.encoding); } function simpleEnd(buf) { return buf && buf.length ? this.write(buf) : ""; } } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_readable.js var require_stream_readable = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_readable.js"(exports2, module2) { "use strict"; var pna = require_process_nextick_args(); module2.exports = Readable; var isArray = require_isarray(); var Duplex; Readable.ReadableState = ReadableState; var EE = __require("events").EventEmitter; var EElistenerCount = function(emitter, type) { return emitter.listeners(type).length; }; var Stream = require_stream5(); var Buffer2 = require_safe_buffer().Buffer; var OurUint8Array = (typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() { }; function _uint8ArrayToBuffer(chunk) { return Buffer2.from(chunk); } function _isUint8Array(obj) { return Buffer2.isBuffer(obj) || obj instanceof OurUint8Array; } var util = Object.create(require_util3()); util.inherits = require_inherits(); var debugUtil = __require("util"); var debug2 = void 0; if (debugUtil && debugUtil.debuglog) { debug2 = debugUtil.debuglog("stream"); } else { debug2 = function() { }; } var BufferList = require_BufferList(); var destroyImpl = require_destroy(); var StringDecoder; util.inherits(Readable, Stream); var kProxyEvents = ["error", "close", "destroy", "pause", "resume"]; function prependListener(emitter, event, fn2) { if (typeof emitter.prependListener === "function") return emitter.prependListener(event, fn2); if (!emitter._events || !emitter._events[event]) emitter.on(event, fn2); else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn2); else emitter._events[event] = [fn2, emitter._events[event]]; } function ReadableState(options, stream) { Duplex = Duplex || require_stream_duplex(); options = options || {}; var isDuplex = stream instanceof Duplex; this.objectMode = !!options.objectMode; if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; var hwm = options.highWaterMark; var readableHwm = options.readableHighWaterMark; var defaultHwm = this.objectMode ? 16 : 16 * 1024; if (hwm || hwm === 0) this.highWaterMark = hwm; else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm; else this.highWaterMark = defaultHwm; this.highWaterMark = Math.floor(this.highWaterMark); this.buffer = new BufferList(); this.length = 0; this.pipes = null; this.pipesCount = 0; this.flowing = null; this.ended = false; this.endEmitted = false; this.reading = false; this.sync = true; this.needReadable = false; this.emittedReadable = false; this.readableListening = false; this.resumeScheduled = false; this.destroyed = false; this.defaultEncoding = options.defaultEncoding || "utf8"; this.awaitDrain = 0; this.readingMore = false; this.decoder = null; this.encoding = null; if (options.encoding) { if (!StringDecoder) StringDecoder = require_string_decoder().StringDecoder; this.decoder = new StringDecoder(options.encoding); this.encoding = options.encoding; } } function Readable(options) { Duplex = Duplex || require_stream_duplex(); if (!(this instanceof Readable)) return new Readable(options); this._readableState = new ReadableState(options, this); this.readable = true; if (options) { if (typeof options.read === "function") this._read = options.read; if (typeof options.destroy === "function") this._destroy = options.destroy; } Stream.call(this); } Object.defineProperty(Readable.prototype, "destroyed", { get: function() { if (this._readableState === void 0) { return false; } return this._readableState.destroyed; }, set: function(value) { if (!this._readableState) { return; } this._readableState.destroyed = value; } }); Readable.prototype.destroy = destroyImpl.destroy; Readable.prototype._undestroy = destroyImpl.undestroy; Readable.prototype._destroy = function(err, cb) { this.push(null); cb(err); }; Readable.prototype.push = function(chunk, encoding) { var state = this._readableState; var skipChunkCheck; if (!state.objectMode) { if (typeof chunk === "string") { encoding = encoding || state.defaultEncoding; if (encoding !== state.encoding) { chunk = Buffer2.from(chunk, encoding); encoding = ""; } skipChunkCheck = true; } } else { skipChunkCheck = true; } return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); }; Readable.prototype.unshift = function(chunk) { return readableAddChunk(this, chunk, null, true, false); }; function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { var state = stream._readableState; if (chunk === null) { state.reading = false; onEofChunk(stream, state); } else { var er; if (!skipChunkCheck) er = chunkInvalid(state, chunk); if (er) { stream.emit("error", er); } else if (state.objectMode || chunk && chunk.length > 0) { if (typeof chunk !== "string" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer2.prototype) { chunk = _uint8ArrayToBuffer(chunk); } if (addToFront) { if (state.endEmitted) stream.emit("error", new Error("stream.unshift() after end event")); else addChunk(stream, state, chunk, true); } else if (state.ended) { stream.emit("error", new Error("stream.push() after EOF")); } else { state.reading = false; if (state.decoder && !encoding) { chunk = state.decoder.write(chunk); if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false); else maybeReadMore(stream, state); } else { addChunk(stream, state, chunk, false); } } } else if (!addToFront) { state.reading = false; } } return needMoreData(state); } function addChunk(stream, state, chunk, addToFront) { if (state.flowing && state.length === 0 && !state.sync) { stream.emit("data", chunk); stream.read(0); } else { state.length += state.objectMode ? 1 : chunk.length; if (addToFront) state.buffer.unshift(chunk); else state.buffer.push(chunk); if (state.needReadable) emitReadable(stream); } maybeReadMore(stream, state); } function chunkInvalid(state, chunk) { var er; if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== void 0 && !state.objectMode) { er = new TypeError("Invalid non-string/buffer chunk"); } return er; } function needMoreData(state) { return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); } Readable.prototype.isPaused = function() { return this._readableState.flowing === false; }; Readable.prototype.setEncoding = function(enc) { if (!StringDecoder) StringDecoder = require_string_decoder().StringDecoder; this._readableState.decoder = new StringDecoder(enc); this._readableState.encoding = enc; return this; }; var MAX_HWM = 8388608; function computeNewHighWaterMark(n) { if (n >= MAX_HWM) { n = MAX_HWM; } else { n--; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; n++; } return n; } function howMuchToRead(n, state) { if (n <= 0 || state.length === 0 && state.ended) return 0; if (state.objectMode) return 1; if (n !== n) { if (state.flowing && state.length) return state.buffer.head.data.length; else return state.length; } if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); if (n <= state.length) return n; if (!state.ended) { state.needReadable = true; return 0; } return state.length; } Readable.prototype.read = function(n) { debug2("read", n); n = parseInt(n, 10); var state = this._readableState; var nOrig = n; if (n !== 0) state.emittedReadable = false; if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { debug2("read: emitReadable", state.length, state.ended); if (state.length === 0 && state.ended) endReadable(this); else emitReadable(this); return null; } n = howMuchToRead(n, state); if (n === 0 && state.ended) { if (state.length === 0) endReadable(this); return null; } var doRead = state.needReadable; debug2("need readable", doRead); if (state.length === 0 || state.length - n < state.highWaterMark) { doRead = true; debug2("length less than watermark", doRead); } if (state.ended || state.reading) { doRead = false; debug2("reading or ended", doRead); } else if (doRead) { debug2("do read"); state.reading = true; state.sync = true; if (state.length === 0) state.needReadable = true; this._read(state.highWaterMark); state.sync = false; if (!state.reading) n = howMuchToRead(nOrig, state); } var ret; if (n > 0) ret = fromList(n, state); else ret = null; if (ret === null) { state.needReadable = true; n = 0; } else { state.length -= n; } if (state.length === 0) { if (!state.ended) state.needReadable = true; if (nOrig !== n && state.ended) endReadable(this); } if (ret !== null) this.emit("data", ret); return ret; }; function onEofChunk(stream, state) { if (state.ended) return; if (state.decoder) { var chunk = state.decoder.end(); if (chunk && chunk.length) { state.buffer.push(chunk); state.length += state.objectMode ? 1 : chunk.length; } } state.ended = true; emitReadable(stream); } function emitReadable(stream) { var state = stream._readableState; state.needReadable = false; if (!state.emittedReadable) { debug2("emitReadable", state.flowing); state.emittedReadable = true; if (state.sync) pna.nextTick(emitReadable_, stream); else emitReadable_(stream); } } function emitReadable_(stream) { debug2("emit readable"); stream.emit("readable"); flow(stream); } function maybeReadMore(stream, state) { if (!state.readingMore) { state.readingMore = true; pna.nextTick(maybeReadMore_, stream, state); } } function maybeReadMore_(stream, state) { var len = state.length; while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { debug2("maybeReadMore read 0"); stream.read(0); if (len === state.length) break; else len = state.length; } state.readingMore = false; } Readable.prototype._read = function(n) { this.emit("error", new Error("_read() is not implemented")); }; Readable.prototype.pipe = function(dest, pipeOpts) { var src = this; var state = this._readableState; switch (state.pipesCount) { case 0: state.pipes = dest; break; case 1: state.pipes = [state.pipes, dest]; break; default: state.pipes.push(dest); break; } state.pipesCount += 1; debug2("pipe count=%d opts=%j", state.pipesCount, pipeOpts); var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; var endFn = doEnd ? onend : unpipe; if (state.endEmitted) pna.nextTick(endFn); else src.once("end", endFn); dest.on("unpipe", onunpipe); function onunpipe(readable, unpipeInfo) { debug2("onunpipe"); if (readable === src) { if (unpipeInfo && unpipeInfo.hasUnpiped === false) { unpipeInfo.hasUnpiped = true; cleanup(); } } } function onend() { debug2("onend"); dest.end(); } var ondrain = pipeOnDrain(src); dest.on("drain", ondrain); var cleanedUp = false; function cleanup() { debug2("cleanup"); dest.removeListener("close", onclose); dest.removeListener("finish", onfinish); dest.removeListener("drain", ondrain); dest.removeListener("error", onerror); dest.removeListener("unpipe", onunpipe); src.removeListener("end", onend); src.removeListener("end", unpipe); src.removeListener("data", ondata); cleanedUp = true; if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); } var increasedAwaitDrain = false; src.on("data", ondata); function ondata(chunk) { debug2("ondata"); increasedAwaitDrain = false; var ret = dest.write(chunk); if (false === ret && !increasedAwaitDrain) { if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { debug2("false write response, pause", state.awaitDrain); state.awaitDrain++; increasedAwaitDrain = true; } src.pause(); } } function onerror(er) { debug2("onerror", er); unpipe(); dest.removeListener("error", onerror); if (EElistenerCount(dest, "error") === 0) dest.emit("error", er); } prependListener(dest, "error", onerror); function onclose() { dest.removeListener("finish", onfinish); unpipe(); } dest.once("close", onclose); function onfinish() { debug2("onfinish"); dest.removeListener("close", onclose); unpipe(); } dest.once("finish", onfinish); function unpipe() { debug2("unpipe"); src.unpipe(dest); } dest.emit("pipe", src); if (!state.flowing) { debug2("pipe resume"); src.resume(); } return dest; }; function pipeOnDrain(src) { return function() { var state = src._readableState; debug2("pipeOnDrain", state.awaitDrain); if (state.awaitDrain) state.awaitDrain--; if (state.awaitDrain === 0 && EElistenerCount(src, "data")) { state.flowing = true; flow(src); } }; } Readable.prototype.unpipe = function(dest) { var state = this._readableState; var unpipeInfo = { hasUnpiped: false }; if (state.pipesCount === 0) return this; if (state.pipesCount === 1) { if (dest && dest !== state.pipes) return this; if (!dest) dest = state.pipes; state.pipes = null; state.pipesCount = 0; state.flowing = false; if (dest) dest.emit("unpipe", this, unpipeInfo); return this; } if (!dest) { var dests = state.pipes; var len = state.pipesCount; state.pipes = null; state.pipesCount = 0; state.flowing = false; for (var i = 0; i < len; i++) { dests[i].emit("unpipe", this, { hasUnpiped: false }); } return this; } var index = indexOf(state.pipes, dest); if (index === -1) return this; state.pipes.splice(index, 1); state.pipesCount -= 1; if (state.pipesCount === 1) state.pipes = state.pipes[0]; dest.emit("unpipe", this, unpipeInfo); return this; }; Readable.prototype.on = function(ev, fn2) { var res = Stream.prototype.on.call(this, ev, fn2); if (ev === "data") { if (this._readableState.flowing !== false) this.resume(); } else if (ev === "readable") { var state = this._readableState; if (!state.endEmitted && !state.readableListening) { state.readableListening = state.needReadable = true; state.emittedReadable = false; if (!state.reading) { pna.nextTick(nReadingNextTick, this); } else if (state.length) { emitReadable(this); } } } return res; }; Readable.prototype.addListener = Readable.prototype.on; function nReadingNextTick(self2) { debug2("readable nexttick read 0"); self2.read(0); } Readable.prototype.resume = function() { var state = this._readableState; if (!state.flowing) { debug2("resume"); state.flowing = true; resume(this, state); } return this; }; function resume(stream, state) { if (!state.resumeScheduled) { state.resumeScheduled = true; pna.nextTick(resume_, stream, state); } } function resume_(stream, state) { if (!state.reading) { debug2("resume read 0"); stream.read(0); } state.resumeScheduled = false; state.awaitDrain = 0; stream.emit("resume"); flow(stream); if (state.flowing && !state.reading) stream.read(0); } Readable.prototype.pause = function() { debug2("call pause flowing=%j", this._readableState.flowing); if (false !== this._readableState.flowing) { debug2("pause"); this._readableState.flowing = false; this.emit("pause"); } return this; }; function flow(stream) { var state = stream._readableState; debug2("flow", state.flowing); while (state.flowing && stream.read() !== null) { } } Readable.prototype.wrap = function(stream) { var _this = this; var state = this._readableState; var paused = false; stream.on("end", function() { debug2("wrapped end"); if (state.decoder && !state.ended) { var chunk = state.decoder.end(); if (chunk && chunk.length) _this.push(chunk); } _this.push(null); }); stream.on("data", function(chunk) { debug2("wrapped data"); if (state.decoder) chunk = state.decoder.write(chunk); if (state.objectMode && (chunk === null || chunk === void 0)) return; else if (!state.objectMode && (!chunk || !chunk.length)) return; var ret = _this.push(chunk); if (!ret) { paused = true; stream.pause(); } }); for (var i in stream) { if (this[i] === void 0 && typeof stream[i] === "function") { this[i] = function(method) { return function() { return stream[method].apply(stream, arguments); }; }(i); } } for (var n = 0; n < kProxyEvents.length; n++) { stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); } this._read = function(n2) { debug2("wrapped _read", n2); if (paused) { paused = false; stream.resume(); } }; return this; }; Object.defineProperty(Readable.prototype, "readableHighWaterMark", { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, get: function() { return this._readableState.highWaterMark; } }); Readable._fromList = fromList; function fromList(n, state) { if (state.length === 0) return null; var ret; if (state.objectMode) ret = state.buffer.shift(); else if (!n || n >= state.length) { if (state.decoder) ret = state.buffer.join(""); else if (state.buffer.length === 1) ret = state.buffer.head.data; else ret = state.buffer.concat(state.length); state.buffer.clear(); } else { ret = fromListPartial(n, state.buffer, state.decoder); } return ret; } function fromListPartial(n, list10, hasStrings) { var ret; if (n < list10.head.data.length) { ret = list10.head.data.slice(0, n); list10.head.data = list10.head.data.slice(n); } else if (n === list10.head.data.length) { ret = list10.shift(); } else { ret = hasStrings ? copyFromBufferString(n, list10) : copyFromBuffer(n, list10); } return ret; } function copyFromBufferString(n, list10) { var p = list10.head; var c = 1; var ret = p.data; n -= ret.length; while (p = p.next) { var str = p.data; var nb = n > str.length ? str.length : n; if (nb === str.length) ret += str; else ret += str.slice(0, n); n -= nb; if (n === 0) { if (nb === str.length) { ++c; if (p.next) list10.head = p.next; else list10.head = list10.tail = null; } else { list10.head = p; p.data = str.slice(nb); } break; } ++c; } list10.length -= c; return ret; } function copyFromBuffer(n, list10) { var ret = Buffer2.allocUnsafe(n); var p = list10.head; var c = 1; p.data.copy(ret); n -= p.data.length; while (p = p.next) { var buf = p.data; var nb = n > buf.length ? buf.length : n; buf.copy(ret, ret.length - n, 0, nb); n -= nb; if (n === 0) { if (nb === buf.length) { ++c; if (p.next) list10.head = p.next; else list10.head = list10.tail = null; } else { list10.head = p; p.data = buf.slice(nb); } break; } ++c; } list10.length -= c; return ret; } function endReadable(stream) { var state = stream._readableState; if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); if (!state.endEmitted) { state.ended = true; pna.nextTick(endReadableNT, state, stream); } } function endReadableNT(state, stream) { if (!state.endEmitted && state.length === 0) { state.endEmitted = true; stream.readable = false; stream.emit("end"); } } function indexOf(xs, x) { for (var i = 0, l = xs.length; i < l; i++) { if (xs[i] === x) return i; } return -1; } } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_transform.js var require_stream_transform = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_transform.js"(exports2, module2) { "use strict"; module2.exports = Transform; var Duplex = require_stream_duplex(); var util = Object.create(require_util3()); util.inherits = require_inherits(); util.inherits(Transform, Duplex); function afterTransform(er, data) { var ts = this._transformState; ts.transforming = false; var cb = ts.writecb; if (!cb) { return this.emit("error", new Error("write callback called multiple times")); } ts.writechunk = null; ts.writecb = null; if (data != null) this.push(data); cb(er); var rs = this._readableState; rs.reading = false; if (rs.needReadable || rs.length < rs.highWaterMark) { this._read(rs.highWaterMark); } } function Transform(options) { if (!(this instanceof Transform)) return new Transform(options); Duplex.call(this, options); this._transformState = { afterTransform: afterTransform.bind(this), needTransform: false, transforming: false, writecb: null, writechunk: null, writeencoding: null }; this._readableState.needReadable = true; this._readableState.sync = false; if (options) { if (typeof options.transform === "function") this._transform = options.transform; if (typeof options.flush === "function") this._flush = options.flush; } this.on("prefinish", prefinish); } function prefinish() { var _this = this; if (typeof this._flush === "function") { this._flush(function(er, data) { done(_this, er, data); }); } else { done(this, null, null); } } Transform.prototype.push = function(chunk, encoding) { this._transformState.needTransform = false; return Duplex.prototype.push.call(this, chunk, encoding); }; Transform.prototype._transform = function(chunk, encoding, cb) { throw new Error("_transform() is not implemented"); }; Transform.prototype._write = function(chunk, encoding, cb) { var ts = this._transformState; ts.writecb = cb; ts.writechunk = chunk; ts.writeencoding = encoding; if (!ts.transforming) { var rs = this._readableState; if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); } }; Transform.prototype._read = function(n) { var ts = this._transformState; if (ts.writechunk !== null && ts.writecb && !ts.transforming) { ts.transforming = true; this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); } else { ts.needTransform = true; } }; Transform.prototype._destroy = function(err, cb) { var _this2 = this; Duplex.prototype._destroy.call(this, err, function(err2) { cb(err2); _this2.emit("close"); }); }; function done(stream, er, data) { if (er) return stream.emit("error", er); if (data != null) stream.push(data); if (stream._writableState.length) throw new Error("Calling transform done when ws.length != 0"); if (stream._transformState.transforming) throw new Error("Calling transform done when still transforming"); return stream.push(null); } } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_passthrough.js var require_stream_passthrough = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_passthrough.js"(exports2, module2) { "use strict"; module2.exports = PassThrough; var Transform = require_stream_transform(); var util = Object.create(require_util3()); util.inherits = require_inherits(); util.inherits(PassThrough, Transform); function PassThrough(options) { if (!(this instanceof PassThrough)) return new PassThrough(options); Transform.call(this, options); } PassThrough.prototype._transform = function(chunk, encoding, cb) { cb(null, chunk); }; } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/readable.js var require_readable = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/readable.js"(exports2, module2) { var Stream = __require("stream"); if (process.env.READABLE_STREAM === "disable" && Stream) { module2.exports = Stream; exports2 = module2.exports = Stream.Readable; exports2.Readable = Stream.Readable; exports2.Writable = Stream.Writable; exports2.Duplex = Stream.Duplex; exports2.Transform = Stream.Transform; exports2.PassThrough = Stream.PassThrough; exports2.Stream = Stream; } else { exports2 = module2.exports = require_stream_readable(); exports2.Stream = Stream || exports2; exports2.Readable = exports2; exports2.Writable = require_stream_writable(); exports2.Duplex = require_stream_duplex(); exports2.Transform = require_stream_transform(); exports2.PassThrough = require_stream_passthrough(); } } }); // ../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/duplex.js var require_duplex = __commonJS2({ "../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/duplex.js"(exports2, module2) { module2.exports = require_readable().Duplex; } }); // ../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js var require_safe_buffer2 = __commonJS2({ "../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js"(exports2, module2) { 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(arg2, encodingOrOffset, length) { return Buffer2(arg2, encodingOrOffset, length); } SafeBuffer.prototype = Object.create(Buffer2.prototype); copyProps(Buffer2, SafeBuffer); SafeBuffer.from = function(arg2, encodingOrOffset, length) { if (typeof arg2 === "number") { throw new TypeError("Argument must not be a number"); } return Buffer2(arg2, 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); }; } }); // ../../node_modules/.pnpm/bl@1.2.3/node_modules/bl/bl.js var require_bl = __commonJS2({ "../../node_modules/.pnpm/bl@1.2.3/node_modules/bl/bl.js"(exports2, module2) { var DuplexStream = require_duplex(); var util = __require("util"); var Buffer2 = require_safe_buffer2().Buffer; function BufferList(callback) { if (!(this instanceof BufferList)) return new BufferList(callback); this._bufs = []; this.length = 0; if (typeof callback == "function") { this._callback = callback; var piper = function piper2(err) { if (this._callback) { this._callback(err); this._callback = null; } }.bind(this); this.on("pipe", function onPipe(src) { src.on("error", piper); }); this.on("unpipe", function onUnpipe(src) { src.removeListener("error", piper); }); } else { this.append(callback); } DuplexStream.call(this); } util.inherits(BufferList, DuplexStream); BufferList.prototype._offset = function _offset(offset) { var tot = 0, i = 0, _t; if (offset === 0) return [0, 0]; for (; i < this._bufs.length; i++) { _t = tot + this._bufs[i].length; if (offset < _t || i == this._bufs.length - 1) return [i, offset - tot]; tot = _t; } }; BufferList.prototype.append = function append(buf) { var i = 0; if (Buffer2.isBuffer(buf)) { this._appendBuffer(buf); } else if (Array.isArray(buf)) { for (; i < buf.length; i++) this.append(buf[i]); } else if (buf instanceof BufferList) { for (; i < buf._bufs.length; i++) this.append(buf._bufs[i]); } else if (buf != null) { if (typeof buf == "number") buf = buf.toString(); this._appendBuffer(Buffer2.from(buf)); } return this; }; BufferList.prototype._appendBuffer = function appendBuffer(buf) { this._bufs.push(buf); this.length += buf.length; }; BufferList.prototype._write = function _write(buf, encoding, callback) { this._appendBuffer(buf); if (typeof callback == "function") callback(); }; BufferList.prototype._read = function _read(size) { if (!this.length) return this.push(null); size = Math.min(size, this.length); this.push(this.slice(0, size)); this.consume(size); }; BufferList.prototype.end = function end(chunk) { DuplexStream.prototype.end.call(this, chunk); if (this._callback) { this._callback(null, this.slice()); this._callback = null; } }; BufferList.prototype.get = function get(index) { return this.slice(index, index + 1)[0]; }; BufferList.prototype.slice = function slice(start, end) { if (typeof start == "number" && start < 0) start += this.length; if (typeof end == "number" && end < 0) end += this.length; return this.copy(null, 0, start, end); }; BufferList.prototype.copy = function copy3(dst, dstStart, srcStart, srcEnd) { if (typeof srcStart != "number" || srcStart < 0) srcStart = 0; if (typeof srcEnd != "number" || srcEnd > this.length) srcEnd = this.length; if (srcStart >= this.length) return dst || Buffer2.alloc(0); if (srcEnd <= 0) return dst || Buffer2.alloc(0); var copy4 = !!dst, off = this._offset(srcStart), len = srcEnd - srcStart, bytes9 = len, bufoff = copy4 && dstStart || 0, start = off[1], l, i; if (srcStart === 0 && srcEnd == this.length) { if (!copy4) { return this._bufs.length === 1 ? this._bufs[0] : Buffer2.concat(this._bufs, this.length); } for (i = 0; i < this._bufs.length; i++) { this._bufs[i].copy(dst, bufoff); bufoff += this._bufs[i].length; } return dst; } if (bytes9 <= this._bufs[off[0]].length - start) { return copy4 ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes9) : this._bufs[off[0]].slice(start, start + bytes9); } if (!copy4) dst = Buffer2.allocUnsafe(len); for (i = off[0]; i < this._bufs.length; i++) { l = this._bufs[i].length - start; if (bytes9 > l) { this._bufs[i].copy(dst, bufoff, start); bufoff += l; } else { this._bufs[i].copy(dst, bufoff, start, start + bytes9); bufoff += l; break; } bytes9 -= l; if (start) start = 0; } if (dst.length > bufoff) return dst.slice(0, bufoff); return dst; }; BufferList.prototype.shallowSlice = function shallowSlice(start, end) { start = start || 0; end = end || this.length; if (start < 0) start += this.length; if (end < 0) end += this.length; var startOffset = this._offset(start), endOffset = this._offset(end), buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1); if (endOffset[1] == 0) buffers.pop(); else buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1]); if (startOffset[1] != 0) buffers[0] = buffers[0].slice(startOffset[1]); return new BufferList(buffers); }; BufferList.prototype.toString = function toString2(encoding, start, end) { return this.slice(start, end).toString(encoding); }; BufferList.prototype.consume = function consume(bytes9) { bytes9 = Math.trunc(bytes9); if (Number.isNaN(bytes9) || bytes9 <= 0) return this; while (this._bufs.length) { if (bytes9 >= this._bufs[0].length) { bytes9 -= this._bufs[0].length; this.length -= this._bufs[0].length; this._bufs.shift(); } else { this._bufs[0] = this._bufs[0].slice(bytes9); this.length -= bytes9; break; } } return this; }; BufferList.prototype.duplicate = function duplicate() { var i = 0, copy3 = new BufferList(); for (; i < this._bufs.length; i++) copy3.append(this._bufs[i]); return copy3; }; BufferList.prototype.destroy = function destroy() { this._bufs.length = 0; this.length = 0; this.push(null); }; (function() { var methods = { "readDoubleBE": 8, "readDoubleLE": 8, "readFloatBE": 4, "readFloatLE": 4, "readInt32BE": 4, "readInt32LE": 4, "readUInt32BE": 4, "readUInt32LE": 4, "readInt16BE": 2, "readInt16LE": 2, "readUInt16BE": 2, "readUInt16LE": 2, "readInt8": 1, "readUInt8": 1 }; for (var m in methods) { (function(m2) { BufferList.prototype[m2] = function(offset) { return this.slice(offset, offset + methods[m2])[m2](0); }; })(m); } })(); module2.exports = BufferList; } }); // ../../node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/immutable.js var require_immutable = __commonJS2({ "../../node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/immutable.js"(exports2, module2) { module2.exports = extend; var hasOwnProperty3 = Object.prototype.hasOwnProperty; function extend() { var target = {}; for (var i = 0; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (hasOwnProperty3.call(source, key)) { target[key] = source[key]; } } } return target; } } }); // ../../node_modules/.pnpm/to-buffer@1.1.1/node_modules/to-buffer/index.js var require_to_buffer = __commonJS2({ "../../node_modules/.pnpm/to-buffer@1.1.1/node_modules/to-buffer/index.js"(exports2, module2) { module2.exports = toBuffer; var makeBuffer = Buffer.from && Buffer.from !== Uint8Array.from ? Buffer.from : bufferFrom; function bufferFrom(buf, enc) { return new Buffer(buf, enc); } function toBuffer(buf, enc) { if (Buffer.isBuffer(buf)) return buf; if (typeof buf === "string") return makeBuffer(buf, enc); if (Array.isArray(buf)) return makeBuffer(buf); throw new Error("Input should be a buffer or a string"); } } }); // ../../node_modules/.pnpm/buffer-fill@1.0.0/node_modules/buffer-fill/index.js var require_buffer_fill = __commonJS2({ "../../node_modules/.pnpm/buffer-fill@1.0.0/node_modules/buffer-fill/index.js"(exports2, module2) { var hasFullSupport = function() { try { if (!Buffer.isEncoding("latin1")) { return false; } var buf = Buffer.alloc ? Buffer.alloc(4) : new Buffer(4); buf.fill("ab", "ucs2"); return buf.toString("hex") === "61006200"; } catch (_) { return false; } }(); function isSingleByte(val) { return val.length === 1 && val.charCodeAt(0) < 256; } function fillWithNumber(buffer, val, start, end) { if (start < 0 || end > buffer.length) { throw new RangeError("Out of range index"); } start = start >>> 0; end = end === void 0 ? buffer.length : end >>> 0; if (end > start) { buffer.fill(val, start, end); } return buffer; } function fillWithBuffer(buffer, val, start, end) { if (start < 0 || end > buffer.length) { throw new RangeError("Out of range index"); } if (end <= start) { return buffer; } start = start >>> 0; end = end === void 0 ? buffer.length : end >>> 0; var pos = start; var len = val.length; while (pos <= end - len) { val.copy(buffer, pos); pos += len; } if (pos !== end) { val.copy(buffer, pos, 0, end - pos); } return buffer; } function fill(buffer, val, start, end, encoding) { if (hasFullSupport) { return buffer.fill(val, start, end, encoding); } if (typeof val === "number") { return fillWithNumber(buffer, val, start, end); } if (typeof val === "string") { if (typeof start === "string") { encoding = start; start = 0; end = buffer.length; } else if (typeof end === "string") { encoding = end; end = buffer.length; } if (encoding !== void 0 && typeof encoding !== "string") { throw new TypeError("encoding must be a string"); } if (encoding === "latin1") { encoding = "binary"; } if (typeof encoding === "string" && !Buffer.isEncoding(encoding)) { throw new TypeError("Unknown encoding: " + encoding); } if (val === "") { return fillWithNumber(buffer, 0, start, end); } if (isSingleByte(val)) { return fillWithNumber(buffer, val.charCodeAt(0), start, end); } val = new Buffer(val, encoding); } if (Buffer.isBuffer(val)) { return fillWithBuffer(buffer, val, start, end); } return fillWithNumber(buffer, 0, start, end); } module2.exports = fill; } }); // ../../node_modules/.pnpm/buffer-alloc-unsafe@1.1.0/node_modules/buffer-alloc-unsafe/index.js var require_buffer_alloc_unsafe = __commonJS2({ "../../node_modules/.pnpm/buffer-alloc-unsafe@1.1.0/node_modules/buffer-alloc-unsafe/index.js"(exports2, module2) { function allocUnsafe(size) { if (typeof size !== "number") { throw new TypeError('"size" argument must be a number'); } if (size < 0) { throw new RangeError('"size" argument must not be negative'); } if (Buffer.allocUnsafe) { return Buffer.allocUnsafe(size); } else { return new Buffer(size); } } module2.exports = allocUnsafe; } }); // ../../node_modules/.pnpm/buffer-alloc@1.2.0/node_modules/buffer-alloc/index.js var require_buffer_alloc = __commonJS2({ "../../node_modules/.pnpm/buffer-alloc@1.2.0/node_modules/buffer-alloc/index.js"(exports2, module2) { var bufferFill = require_buffer_fill(); var allocUnsafe = require_buffer_alloc_unsafe(); module2.exports = function alloc(size, fill, encoding) { if (typeof size !== "number") { throw new TypeError('"size" argument must be a number'); } if (size < 0) { throw new RangeError('"size" argument must not be negative'); } if (Buffer.alloc) { return Buffer.alloc(size, fill, encoding); } var buffer = allocUnsafe(size); if (size === 0) { return buffer; } if (fill === void 0) { return bufferFill(buffer, 0); } if (typeof encoding !== "string") { encoding = void 0; } return bufferFill(buffer, fill, encoding); }; } }); // ../../node_modules/.pnpm/tar-stream@1.6.2/node_modules/tar-stream/headers.js var require_headers = __commonJS2({ "../../node_modules/.pnpm/tar-stream@1.6.2/node_modules/tar-stream/headers.js"(exports2) { var toBuffer = require_to_buffer(); var alloc = require_buffer_alloc(); var ZEROS = "0000000000000000000"; var SEVENS = "7777777777777777777"; var ZERO_OFFSET = "0".charCodeAt(0); var USTAR = "ustar\x0000"; var MASK = parseInt("7777", 8); var clamp = function(index, len, defaultValue) { if (typeof index !== "number") return defaultValue; index = ~~index; if (index >= len) return len; if (index >= 0) return index; index += len; if (index >= 0) return index; return 0; }; var toType = function(flag) { switch (flag) { case 0: return "file"; case 1: return "link"; case 2: return "symlink"; case 3: return "character-device"; case 4: return "block-device"; case 5: return "directory"; case 6: return "fifo"; case 7: return "contiguous-file"; case 72: return "pax-header"; case 55: return "pax-global-header"; case 27: return "gnu-long-link-path"; case 28: case 30: return "gnu-long-path"; } return null; }; var toTypeflag = function(flag) { switch (flag) { case "file": return 0; case "link": return 1; case "symlink": return 2; case "character-device": return 3; case "block-device": return 4; case "directory": return 5; case "fifo": return 6; case "contiguous-file": return 7; case "pax-header": return 72; } return 0; }; var indexOf = function(block, num, offset, end) { for (; offset < end; offset++) { if (block[offset] === num) return offset; } return end; }; var cksum = function(block) { var sum = 8 * 32; for (var i = 0; i < 148; i++) sum += block[i]; for (var j = 156; j < 512; j++) sum += block[j]; return sum; }; var encodeOct = function(val, n) { val = val.toString(8); if (val.length > n) return SEVENS.slice(0, n) + " "; else return ZEROS.slice(0, n - val.length) + val + " "; }; function parse256(buf) { var positive; if (buf[0] === 128) positive = true; else if (buf[0] === 255) positive = false; else return null; var zero = false; var tuple = []; for (var i = buf.length - 1; i > 0; i--) { var byte = buf[i]; if (positive) tuple.push(byte); else if (zero && byte === 0) tuple.push(0); else if (zero) { zero = false; tuple.push(256 - byte); } else tuple.push(255 - byte); } var sum = 0; var l = tuple.length; for (i = 0; i < l; i++) { sum += tuple[i] * Math.pow(256, i); } return positive ? sum : -1 * sum; } var decodeOct = function(val, offset, length) { val = val.slice(offset, offset + length); offset = 0; if (val[offset] & 128) { return parse256(val); } else { while (offset < val.length && val[offset] === 32) offset++; var end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length); while (offset < end && val[offset] === 0) offset++; if (end === offset) return 0; return parseInt(val.slice(offset, end).toString(), 8); } }; var decodeStr = function(val, offset, length, encoding) { return val.slice(offset, indexOf(val, 0, offset, offset + length)).toString(encoding); }; var addLength = function(str) { var len = Buffer.byteLength(str); var digits = Math.floor(Math.log(len) / Math.log(10)) + 1; if (len + digits >= Math.pow(10, digits)) digits++; return len + digits + str; }; exports2.decodeLongPath = function(buf, encoding) { return decodeStr(buf, 0, buf.length, encoding); }; exports2.encodePax = function(opts) { var result = ""; if (opts.name) result += addLength(" path=" + opts.name + "\n"); if (opts.linkname) result += addLength(" linkpath=" + opts.linkname + "\n"); var pax = opts.pax; if (pax) { for (var key in pax) { result += addLength(" " + key + "=" + pax[key] + "\n"); } } return toBuffer(result); }; exports2.decodePax = function(buf) { var result = {}; while (buf.length) { var i = 0; while (i < buf.length && buf[i] !== 32) i++; var len = parseInt(buf.slice(0, i).toString(), 10); if (!len) return result; var b = buf.slice(i + 1, len - 1).toString(); var keyIndex = b.indexOf("="); if (keyIndex === -1) return result; result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1); buf = buf.slice(len); } return result; }; exports2.encode = function(opts) { var buf = alloc(512); var name = opts.name; var prefix = ""; if (opts.typeflag === 5 && name[name.length - 1] !== "/") name += "/"; if (Buffer.byteLength(name) !== name.length) return null; while (Buffer.byteLength(name) > 100) { var i = name.indexOf("/"); if (i === -1) return null; prefix += prefix ? "/" + name.slice(0, i) : name.slice(0, i); name = name.slice(i + 1); } if (Buffer.byteLength(name) > 100 || Buffer.byteLength(prefix) > 155) return null; if (opts.linkname && Buffer.byteLength(opts.linkname) > 100) return null; buf.write(name); buf.write(encodeOct(opts.mode & MASK, 6), 100); buf.write(encodeOct(opts.uid, 6), 108); buf.write(encodeOct(opts.gid, 6), 116); buf.write(encodeOct(opts.size, 11), 124); buf.write(encodeOct(opts.mtime.getTime() / 1e3 | 0, 11), 136); buf[156] = ZERO_OFFSET + toTypeflag(opts.type); if (opts.linkname) buf.write(opts.linkname, 157); buf.write(USTAR, 257); if (opts.uname) buf.write(opts.uname, 265); if (opts.gname) buf.write(opts.gname, 297); buf.write(encodeOct(opts.devmajor || 0, 6), 329); buf.write(encodeOct(opts.devminor || 0, 6), 337); if (prefix) buf.write(prefix, 345); buf.write(encodeOct(cksum(buf), 6), 148); return buf; }; exports2.decode = function(buf, filenameEncoding) { var typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET; var name = decodeStr(buf, 0, 100, filenameEncoding); var mode = decodeOct(buf, 100, 8); var uid = decodeOct(buf, 108, 8); var gid = decodeOct(buf, 116, 8); var size = decodeOct(buf, 124, 12); var mtime = decodeOct(buf, 136, 12); var type = toType(typeflag); var linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding); var uname = decodeStr(buf, 265, 32); var gname = decodeStr(buf, 297, 32); var devmajor = decodeOct(buf, 329, 8); var devminor = decodeOct(buf, 337, 8); if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + "/" + name; if (typeflag === 0 && name && name[name.length - 1] === "/") typeflag = 5; var c = cksum(buf); if (c === 8 * 32) return null; if (c !== decodeOct(buf, 148, 8)) throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?"); return { name, mode, uid, gid, size, mtime: new Date(1e3 * mtime), type, linkname, uname, gname, devmajor, devminor }; }; } }); // ../../node_modules/.pnpm/tar-stream@1.6.2/node_modules/tar-stream/extract.js var require_extract = __commonJS2({ "../../node_modules/.pnpm/tar-stream@1.6.2/node_modules/tar-stream/extract.js"(exports2, module2) { var util = __require("util"); var bl = require_bl(); var xtend = require_immutable(); var headers = require_headers(); var Writable = require_readable().Writable; var PassThrough = require_readable().PassThrough; var noop = function() { }; var overflow = function(size) { size &= 511; return size && 512 - size; }; var emptyStream = function(self2, offset) { var s = new Source(self2, offset); s.end(); return s; }; var mixinPax = function(header, pax) { if (pax.path) header.name = pax.path; if (pax.linkpath) header.linkname = pax.linkpath; if (pax.size) header.size = parseInt(pax.size, 10); header.pax = pax; return header; }; var Source = function(self2, offset) { this._parent = self2; this.offset = offset; PassThrough.call(this); }; util.inherits(Source, PassThrough); Source.prototype.destroy = function(err) { this._parent.destroy(err); }; var Extract = function(opts) { if (!(this instanceof Extract)) return new Extract(opts); Writable.call(this, opts); opts = opts || {}; this._offset = 0; this._buffer = bl(); this._missing = 0; this._partial = false; this._onparse = noop; this._header = null; this._stream = null; this._overflow = null; this._cb = null; this._locked = false; this._destroyed = false; this._pax = null; this._paxGlobal = null; this._gnuLongPath = null; this._gnuLongLinkPath = null; var self2 = this; var b = self2._buffer; var oncontinue = function() { self2._continue(); }; var onunlock = function(err) { self2._locked = false; if (err) return self2.destroy(err); if (!self2._stream) oncontinue(); }; var onstreamend = function() { self2._stream = null; var drain = overflow(self2._header.size); if (drain) self2._parse(drain, ondrain); else self2._parse(512, onheader); if (!self2._locked) oncontinue(); }; var ondrain = function() { self2._buffer.consume(overflow(self2._header.size)); self2._parse(512, onheader); oncontinue(); }; var onpaxglobalheader = function() { var size = self2._header.size; self2._paxGlobal = headers.decodePax(b.slice(0, size)); b.consume(size); onstreamend(); }; var onpaxheader = function() { var size = self2._header.size; self2._pax = headers.decodePax(b.slice(0, size)); if (self2._paxGlobal) self2._pax = xtend(self2._paxGlobal, self2._pax); b.consume(size); onstreamend(); }; var ongnulongpath = function() { var size = self2._header.size; this._gnuLongPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding); b.consume(size); onstreamend(); }; var ongnulonglinkpath = function() { var size = self2._header.size; this._gnuLongLinkPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding); b.consume(size); onstreamend(); }; var onheader = function() { var offset = self2._offset; var header; try { header = self2._header = headers.decode(b.slice(0, 512), opts.filenameEncoding); } catch (err) { self2.emit("error", err); } b.consume(512); if (!header) { self2._parse(512, onheader); oncontinue(); return; } if (header.type === "gnu-long-path") { self2._parse(header.size, ongnulongpath); oncontinue(); return; } if (header.type === "gnu-long-link-path") { self2._parse(header.size, ongnulonglinkpath); oncontinue(); return; } if (header.type === "pax-global-header") { self2._parse(header.size, onpaxglobalheader); oncontinue(); return; } if (header.type === "pax-header") { self2._parse(header.size, onpaxheader); oncontinue(); return; } if (self2._gnuLongPath) { header.name = self2._gnuLongPath; self2._gnuLongPath = null; } if (self2._gnuLongLinkPath) { header.linkname = self2._gnuLongLinkPath; self2._gnuLongLinkPath = null; } if (self2._pax) { self2._header = header = mixinPax(header, self2._pax); self2._pax = null; } self2._locked = true; if (!header.size || header.type === "directory") { self2._parse(512, onheader); self2.emit("entry", header, emptyStream(self2, offset), onunlock); return; } self2._stream = new Source(self2, offset); self2.emit("entry", header, self2._stream, onunlock); self2._parse(header.size, onstreamend); oncontinue(); }; this._onheader = onheader; this._parse(512, onheader); }; util.inherits(Extract, Writable); Extract.prototype.destroy = function(err) { if (this._destroyed) return; this._destroyed = true; if (err) this.emit("error", err); this.emit("close"); if (this._stream) this._stream.emit("close"); }; Extract.prototype._parse = function(size, onparse) { if (this._destroyed) return; this._offset += size; this._missing = size; if (onparse === this._onheader) this._partial = false; this._onparse = onparse; }; Extract.prototype._continue = function() { if (this._destroyed) return; var cb = this._cb; this._cb = noop; if (this._overflow) this._write(this._overflow, void 0, cb); else cb(); }; Extract.prototype._write = function(data, enc, cb) { if (this._destroyed) return; var s = this._stream; var b = this._buffer; var missing = this._missing; if (data.length) this._partial = true; if (data.length < missing) { this._missing -= data.length; this._overflow = null; if (s) return s.write(data, cb); b.append(data); return cb(); } this._cb = cb; this._missing = 0; var overflow2 = null; if (data.length > missing) { overflow2 = data.slice(missing); data = data.slice(0, missing); } if (s) s.end(data); else b.append(data); this._overflow = overflow2; this._onparse(); }; Extract.prototype._final = function(cb) { if (this._partial) return this.destroy(new Error("Unexpected end of data")); cb(); }; module2.exports = Extract; } }); // ../../node_modules/.pnpm/fs-constants@1.0.0/node_modules/fs-constants/index.js var require_fs_constants = __commonJS2({ "../../node_modules/.pnpm/fs-constants@1.0.0/node_modules/fs-constants/index.js"(exports2, module2) { module2.exports = __require("fs").constants || __require("constants"); } }); // ../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js var require_wrappy = __commonJS2({ "../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js"(exports2, module2) { module2.exports = wrappy; function wrappy(fn2, cb) { if (fn2 && cb) return wrappy(fn2)(cb); if (typeof fn2 !== "function") throw new TypeError("need wrapper function"); Object.keys(fn2).forEach(function(k) { wrapper[k] = fn2[k]; }); return wrapper; function wrapper() { var args2 = new Array(arguments.length); for (var i = 0; i < args2.length; i++) { args2[i] = arguments[i]; } var ret = fn2.apply(this, args2); var cb2 = args2[args2.length - 1]; if (typeof ret === "function" && ret !== cb2) { Object.keys(cb2).forEach(function(k) { ret[k] = cb2[k]; }); } return ret; } } } }); // ../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js var require_once = __commonJS2({ "../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js"(exports2, module2) { var wrappy = require_wrappy(); module2.exports = wrappy(once2); module2.exports.strict = wrappy(onceStrict); once2.proto = once2(function() { Object.defineProperty(Function.prototype, "once", { value: function() { return once2(this); }, configurable: true }); Object.defineProperty(Function.prototype, "onceStrict", { value: function() { return onceStrict(this); }, configurable: true }); }); function once2(fn2) { var f = function() { if (f.called) return f.value; f.called = true; return f.value = fn2.apply(this, arguments); }; f.called = false; return f; } function onceStrict(fn2) { var f = function() { if (f.called) throw new Error(f.onceError); f.called = true; return f.value = fn2.apply(this, arguments); }; var name = fn2.name || "Function wrapped with `once`"; f.onceError = name + " shouldn't be called more than once"; f.called = false; return f; } } }); // ../../node_modules/.pnpm/end-of-stream@1.4.1/node_modules/end-of-stream/index.js var require_end_of_stream = __commonJS2({ "../../node_modules/.pnpm/end-of-stream@1.4.1/node_modules/end-of-stream/index.js"(exports2, module2) { var once2 = require_once(); var noop = function() { }; var isRequest = function(stream) { return stream.setHeader && typeof stream.abort === "function"; }; var isChildProcess = function(stream) { return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3; }; var eos = function(stream, opts, callback) { if (typeof opts === "function") return eos(stream, null, opts); if (!opts) opts = {}; callback = once2(callback || noop); var ws = stream._writableState; var rs = stream._readableState; var readable = opts.readable || opts.readable !== false && stream.readable; var writable = opts.writable || opts.writable !== false && stream.writable; var onlegacyfinish = function() { if (!stream.writable) onfinish(); }; var onfinish = function() { writable = false; if (!readable) callback.call(stream); }; var onend = function() { readable = false; if (!writable) callback.call(stream); }; var onexit = function(exitCode2) { callback.call(stream, exitCode2 ? new Error("exited with error code: " + exitCode2) : null); }; var onerror = function(err) { callback.call(stream, err); }; var onclose = function() { if (readable && !(rs && rs.ended)) return callback.call(stream, new Error("premature close")); if (writable && !(ws && ws.ended)) return callback.call(stream, new Error("premature close")); }; var onrequest = function() { stream.req.on("finish", onfinish); }; if (isRequest(stream)) { stream.on("complete", onfinish); stream.on("abort", onclose); if (stream.req) onrequest(); else stream.on("request", onrequest); } else if (writable && !ws) { stream.on("end", onlegacyfinish); stream.on("close", onlegacyfinish); } if (isChildProcess(stream)) stream.on("exit", onexit); stream.on("end", onend); stream.on("finish", onfinish); if (opts.error !== false) stream.on("error", onerror); stream.on("close", onclose); return function() { stream.removeListener("complete", onfinish); stream.removeListener("abort", onclose); stream.removeListener("request", onrequest); if (stream.req) stream.req.removeListener("finish", onfinish); stream.removeListener("end", onlegacyfinish); stream.removeListener("close", onlegacyfinish); stream.removeListener("finish", onfinish); stream.removeListener("exit", onexit); stream.removeListener("end", onend); stream.removeListener("error", onerror); stream.removeListener("close", onclose); }; }; module2.exports = eos; } }); // ../../node_modules/.pnpm/tar-stream@1.6.2/node_modules/tar-stream/pack.js var require_pack = __commonJS2({ "../../node_modules/.pnpm/tar-stream@1.6.2/node_modules/tar-stream/pack.js"(exports2, module2) { var constants2 = require_fs_constants(); var eos = require_end_of_stream(); var util = __require("util"); var alloc = require_buffer_alloc(); var toBuffer = require_to_buffer(); var Readable = require_readable().Readable; var Writable = require_readable().Writable; var StringDecoder = __require("string_decoder").StringDecoder; var headers = require_headers(); var DMODE = parseInt("755", 8); var FMODE = parseInt("644", 8); var END_OF_TAR = alloc(1024); var noop = function() { }; var overflow = function(self2, size) { size &= 511; if (size) self2.push(END_OF_TAR.slice(0, 512 - size)); }; function modeToType(mode) { switch (mode & constants2.S_IFMT) { case constants2.S_IFBLK: return "block-device"; case constants2.S_IFCHR: return "character-device"; case constants2.S_IFDIR: return "directory"; case constants2.S_IFIFO: return "fifo"; case constants2.S_IFLNK: return "symlink"; } return "file"; } var Sink = function(to) { Writable.call(this); this.written = 0; this._to = to; this._destroyed = false; }; util.inherits(Sink, Writable); Sink.prototype._write = function(data, enc, cb) { this.written += data.length; if (this._to.push(data)) return cb(); this._to._drain = cb; }; Sink.prototype.destroy = function() { if (this._destroyed) return; this._destroyed = true; this.emit("close"); }; var LinkSink = function() { Writable.call(this); this.linkname = ""; this._decoder = new StringDecoder("utf-8"); this._destroyed = false; }; util.inherits(LinkSink, Writable); LinkSink.prototype._write = function(data, enc, cb) { this.linkname += this._decoder.write(data); cb(); }; LinkSink.prototype.destroy = function() { if (this._destroyed) return; this._destroyed = true; this.emit("close"); }; var Void = function() { Writable.call(this); this._destroyed = false; }; util.inherits(Void, Writable); Void.prototype._write = function(data, enc, cb) { cb(new Error("No body allowed for this entry")); }; Void.prototype.destroy = function() { if (this._destroyed) return; this._destroyed = true; this.emit("close"); }; var Pack = function(opts) { if (!(this instanceof Pack)) return new Pack(opts); Readable.call(this, opts); this._drain = noop; this._finalized = false; this._finalizing = false; this._destroyed = false; this._stream = null; }; util.inherits(Pack, Readable); Pack.prototype.entry = function(header, buffer, callback) { if (this._stream) throw new Error("already piping an entry"); if (this._finalized || this._destroyed) return; if (typeof buffer === "function") { callback = buffer; buffer = null; } if (!callback) callback = noop; var self2 = this; if (!header.size || header.type === "symlink") header.size = 0; if (!header.type) header.type = modeToType(header.mode); if (!header.mode) header.mode = header.type === "directory" ? DMODE : FMODE; if (!header.uid) header.uid = 0; if (!header.gid) header.gid = 0; if (!header.mtime) header.mtime = /* @__PURE__ */ new Date(); if (typeof buffer === "string") buffer = toBuffer(buffer); if (Buffer.isBuffer(buffer)) { header.size = buffer.length; this._encode(header); this.push(buffer); overflow(self2, header.size); process.nextTick(callback); return new Void(); } if (header.type === "symlink" && !header.linkname) { var linkSink = new LinkSink(); eos(linkSink, function(err) { if (err) { self2.destroy(); return callback(err); } header.linkname = linkSink.linkname; self2._encode(header); callback(); }); return linkSink; } this._encode(header); if (header.type !== "file" && header.type !== "contiguous-file") { process.nextTick(callback); return new Void(); } var sink = new Sink(this); this._stream = sink; eos(sink, function(err) { self2._stream = null; if (err) { self2.destroy(); return callback(err); } if (sink.written !== header.size) { self2.destroy(); return callback(new Error("size mismatch")); } overflow(self2, header.size); if (self2._finalizing) self2.finalize(); callback(); }); return sink; }; Pack.prototype.finalize = function() { if (this._stream) { this._finalizing = true; return; } if (this._finalized) return; this._finalized = true; this.push(END_OF_TAR); this.push(null); }; Pack.prototype.destroy = function(err) { if (this._destroyed) return; this._destroyed = true; if (err) this.emit("error", err); this.emit("close"); if (this._stream && this._stream.destroy) this._stream.destroy(); }; Pack.prototype._encode = function(header) { if (!header.pax) { var buf = headers.encode(header); if (buf) { this.push(buf); return; } } this._encodePax(header); }; Pack.prototype._encodePax = function(header) { var paxHeader = headers.encodePax({ name: header.name, linkname: header.linkname, pax: header.pax }); var newHeader = { name: "PaxHeader", mode: header.mode, uid: header.uid, gid: header.gid, size: paxHeader.length, mtime: header.mtime, type: "pax-header", linkname: header.linkname && "PaxHeader", uname: header.uname, gname: header.gname, devmajor: header.devmajor, devminor: header.devminor }; this.push(headers.encode(newHeader)); this.push(paxHeader); overflow(this, paxHeader.length); newHeader.size = header.size; newHeader.type = header.type; this.push(headers.encode(newHeader)); }; Pack.prototype._read = function(n) { var drain = this._drain; this._drain = noop; drain(); }; module2.exports = Pack; } }); // ../../node_modules/.pnpm/tar-stream@1.6.2/node_modules/tar-stream/index.js var require_tar_stream = __commonJS2({ "../../node_modules/.pnpm/tar-stream@1.6.2/node_modules/tar-stream/index.js"(exports2) { exports2.extract = require_extract(); exports2.pack = require_pack(); } }); // ../../node_modules/.pnpm/pump@1.0.3/node_modules/pump/index.js var require_pump = __commonJS2({ "../../node_modules/.pnpm/pump@1.0.3/node_modules/pump/index.js"(exports2, module2) { var once2 = require_once(); var eos = require_end_of_stream(); var fs15 = __require("fs"); var noop = function() { }; var isFn = function(fn2) { return typeof fn2 === "function"; }; var isFS = function(stream) { if (!fs15) return false; return (stream instanceof (fs15.ReadStream || noop) || stream instanceof (fs15.WriteStream || noop)) && isFn(stream.close); }; var isRequest = function(stream) { return stream.setHeader && isFn(stream.abort); }; var destroyer = function(stream, reading, writing, callback) { callback = once2(callback); var closed = false; stream.on("close", function() { closed = true; }); eos(stream, { readable: reading, writable: writing }, function(err) { if (err) return callback(err); closed = true; callback(); }); var destroyed = false; return function(err) { if (closed) return; if (destroyed) return; destroyed = true; if (isFS(stream)) return stream.close(noop); if (isRequest(stream)) return stream.abort(); if (isFn(stream.destroy)) return stream.destroy(); callback(err || new Error("stream was destroyed")); }; }; var call = function(fn2) { fn2(); }; var pipe3 = function(from, to) { return from.pipe(to); }; var pump = function() { var streams = Array.prototype.slice.call(arguments); var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop; if (Array.isArray(streams[0])) streams = streams[0]; if (streams.length < 2) throw new Error("pump requires two streams per minimum"); var error3; var destroys = streams.map(function(stream, i) { var reading = i < streams.length - 1; var writing = i > 0; return destroyer(stream, reading, writing, function(err) { if (!error3) error3 = err; if (err) destroys.forEach(call); if (reading) return; destroys.forEach(call); callback(error3); }); }); return streams.reduce(pipe3); }; module2.exports = pump; } }); // ../../node_modules/.pnpm/mkdirp@0.5.6/node_modules/mkdirp/index.js var require_mkdirp = __commonJS2({ "../../node_modules/.pnpm/mkdirp@0.5.6/node_modules/mkdirp/index.js"(exports2, module2) { var path11 = __require("path"); var fs15 = __require("fs"); var _0777 = parseInt("0777", 8); module2.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; function mkdirP(p, opts, f, made) { if (typeof opts === "function") { f = opts; opts = {}; } else if (!opts || typeof opts !== "object") { opts = { mode: opts }; } var mode = opts.mode; var xfs = opts.fs || fs15; if (mode === void 0) { mode = _0777; } if (!made) made = null; var cb = f || /* istanbul ignore next */ function() { }; p = path11.resolve(p); xfs.mkdir(p, mode, function(er) { if (!er) { made = made || p; return cb(null, made); } switch (er.code) { case "ENOENT": if (path11.dirname(p) === p) return cb(er); mkdirP(path11.dirname(p), opts, function(er2, made2) { if (er2) cb(er2, made2); else mkdirP(p, opts, cb, made2); }); break; default: xfs.stat(p, function(er2, stat2) { if (er2 || !stat2.isDirectory()) cb(er, made); else cb(null, made); }); break; } }); } mkdirP.sync = function sync(p, opts, made) { if (!opts || typeof opts !== "object") { opts = { mode: opts }; } var mode = opts.mode; var xfs = opts.fs || fs15; if (mode === void 0) { mode = _0777; } if (!made) made = null; p = path11.resolve(p); try { xfs.mkdirSync(p, mode); made = made || p; } catch (err0) { switch (err0.code) { case "ENOENT": made = sync(path11.dirname(p), opts, made); sync(p, opts, made); break; default: var stat2; try { stat2 = xfs.statSync(p); } catch (err1) { throw err0; } if (!stat2.isDirectory()) throw err0; break; } } return made; }; } }); // ../../node_modules/.pnpm/tar-fs@1.16.3/node_modules/tar-fs/index.js var require_tar_fs = __commonJS2({ "../../node_modules/.pnpm/tar-fs@1.16.3/node_modules/tar-fs/index.js"(exports2) { var chownr = require_chownr(); var tar2 = require_tar_stream(); var pump = require_pump(); var mkdirp4 = require_mkdirp(); var fs15 = __require("fs"); var path11 = __require("path"); var os4 = __require("os"); var win32 = os4.platform() === "win32"; var noop = function() { }; var echo = function(name) { return name; }; var normalize4 = !win32 ? echo : function(name) { return name.replace(/\\/g, "/").replace(/[:?<>|]/g, "_"); }; var statAll = function(fs16, stat2, cwd, ignore, entries, sort) { var queue = entries || ["."]; return function loop(callback) { if (!queue.length) return callback(); var next = queue.shift(); var nextAbs = path11.join(cwd, next); stat2(nextAbs, function(err, stat3) { if (err) return callback(err); if (!stat3.isDirectory()) return callback(null, next, stat3); fs16.readdir(nextAbs, function(err2, files) { if (err2) return callback(err2); if (sort) files.sort(); for (var i = 0; i < files.length; i++) { if (!ignore(path11.join(cwd, next, files[i]))) queue.push(path11.join(next, files[i])); } callback(null, next, stat3); }); }); }; }; var strip = function(map, level) { return function(header) { header.name = header.name.split("/").slice(level).join("/"); var linkname = header.linkname; if (linkname && (header.type === "link" || path11.isAbsolute(linkname))) { header.linkname = linkname.split("/").slice(level).join("/"); } return map(header); }; }; exports2.pack = function(cwd, opts) { if (!cwd) cwd = "."; if (!opts) opts = {}; var xfs = opts.fs || fs15; var ignore = opts.ignore || opts.filter || noop; var map = opts.map || noop; var mapStream = opts.mapStream || echo; var statNext = statAll(xfs, opts.dereference ? xfs.stat : xfs.lstat, cwd, ignore, opts.entries, opts.sort); var strict = opts.strict !== false; var umask = typeof opts.umask === "number" ? ~opts.umask : ~processUmask(); var dmode = typeof opts.dmode === "number" ? opts.dmode : 0; var fmode = typeof opts.fmode === "number" ? opts.fmode : 0; var pack = opts.pack || tar2.pack(); var finish = opts.finish || noop; if (opts.strip) map = strip(map, opts.strip); if (opts.readable) { dmode |= parseInt(555, 8); fmode |= parseInt(444, 8); } if (opts.writable) { dmode |= parseInt(333, 8); fmode |= parseInt(222, 8); } var onsymlink = function(filename, header) { xfs.readlink(path11.join(cwd, filename), function(err, linkname) { if (err) return pack.destroy(err); header.linkname = normalize4(linkname); pack.entry(header, onnextentry); }); }; var onstat = function(err, filename, stat2) { if (err) return pack.destroy(err); if (!filename) { if (opts.finalize !== false) pack.finalize(); return finish(pack); } if (stat2.isSocket()) return onnextentry(); var header = { name: normalize4(filename), mode: (stat2.mode | (stat2.isDirectory() ? dmode : fmode)) & umask, mtime: stat2.mtime, size: stat2.size, type: "file", uid: stat2.uid, gid: stat2.gid }; if (stat2.isDirectory()) { header.size = 0; header.type = "directory"; header = map(header) || header; return pack.entry(header, onnextentry); } if (stat2.isSymbolicLink()) { header.size = 0; header.type = "symlink"; header = map(header) || header; return onsymlink(filename, header); } header = map(header) || header; if (!stat2.isFile()) { if (strict) return pack.destroy(new Error("unsupported type for " + filename)); return onnextentry(); } var entry = pack.entry(header, onnextentry); if (!entry) return; var rs = mapStream(xfs.createReadStream(path11.join(cwd, filename)), header); rs.on("error", function(err2) { entry.destroy(err2); }); pump(rs, entry); }; var onnextentry = function(err) { if (err) return pack.destroy(err); statNext(onstat); }; onnextentry(); return pack; }; var head = function(list10) { return list10.length ? list10[list10.length - 1] : null; }; var processGetuid = function() { return process.getuid ? process.getuid() : -1; }; var processUmask = function() { return process.umask ? process.umask() : 0; }; exports2.extract = function(cwd, opts) { if (!cwd) cwd = "."; if (!opts) opts = {}; var xfs = opts.fs || fs15; var ignore = opts.ignore || opts.filter || noop; var map = opts.map || noop; var mapStream = opts.mapStream || echo; var own = opts.chown !== false && !win32 && processGetuid() === 0; var extract = opts.extract || tar2.extract(); var stack2 = []; var now = /* @__PURE__ */ new Date(); var umask = typeof opts.umask === "number" ? ~opts.umask : ~processUmask(); var dmode = typeof opts.dmode === "number" ? opts.dmode : 0; var fmode = typeof opts.fmode === "number" ? opts.fmode : 0; var strict = opts.strict !== false; if (opts.strip) map = strip(map, opts.strip); if (opts.readable) { dmode |= parseInt(555, 8); fmode |= parseInt(444, 8); } if (opts.writable) { dmode |= parseInt(333, 8); fmode |= parseInt(222, 8); } var utimesParent = function(name, cb) { var top; while ((top = head(stack2)) && name.slice(0, top[0].length) !== top[0]) stack2.pop(); if (!top) return cb(); xfs.utimes(top[0], now, top[1], cb); }; var utimes = function(name, header, cb) { if (opts.utimes === false) return cb(); if (header.type === "directory") return xfs.utimes(name, now, header.mtime, cb); if (header.type === "symlink") return utimesParent(name, cb); xfs.utimes(name, now, header.mtime, function(err) { if (err) return cb(err); utimesParent(name, cb); }); }; var chperm = function(name, header, cb) { var link4 = header.type === "symlink"; var chmod = link4 ? xfs.lchmod : xfs.chmod; var chown = link4 ? xfs.lchown : xfs.chown; if (!chmod) return cb(); var mode = (header.mode | (header.type === "directory" ? dmode : fmode)) & umask; chmod(name, mode, function(err) { if (err) return cb(err); if (!own) return cb(); if (!chown) return cb(); chown(name, header.uid, header.gid, cb); }); }; extract.on("entry", function(header, stream, next) { header = map(header) || header; header.name = normalize4(header.name); var name = path11.join(cwd, path11.join("/", header.name)); if (ignore(name, header)) { stream.resume(); return next(); } var stat2 = function(err) { if (err) return next(err); utimes(name, header, function(err2) { if (err2) return next(err2); if (win32) return next(); chperm(name, header, next); }); }; var onsymlink = function() { if (win32) return next(); xfs.unlink(name, function() { xfs.symlink(header.linkname, name, stat2); }); }; var onlink = function() { if (win32) return next(); xfs.unlink(name, function() { var srcpath = path11.join(cwd, path11.join("/", header.linkname)); xfs.link(srcpath, name, function(err) { if (err && err.code === "EPERM" && opts.hardlinkAsFilesFallback) { stream = xfs.createReadStream(srcpath); return onfile(); } stat2(err); }); }); }; var onfile = function() { var ws = xfs.createWriteStream(name); var rs = mapStream(stream, header); ws.on("error", function(err) { rs.destroy(err); }); pump(rs, ws, function(err) { if (err) return next(err); ws.on("close", stat2); }); }; if (header.type === "directory") { stack2.push([name, header.mtime]); return mkdirfix(name, { fs: xfs, own, uid: header.uid, gid: header.gid }, stat2); } var dir = path11.dirname(name); validate2(xfs, dir, path11.join(cwd, "."), function(err, valid) { if (err) return next(err); if (!valid) return next(new Error(dir + " is not a valid path")); mkdirfix(dir, { fs: xfs, own, uid: header.uid, gid: header.gid }, function(err2) { if (err2) return next(err2); switch (header.type) { case "file": return onfile(); case "link": return onlink(); case "symlink": return onsymlink(); } if (strict) return next(new Error("unsupported type for " + name + " (" + header.type + ")")); stream.resume(); next(); }); }); }); if (opts.finish) extract.on("finish", opts.finish); return extract; }; function validate2(fs16, name, root, cb) { if (name === root) return cb(null, true); fs16.lstat(name, function(err, st) { if (err && err.code !== "ENOENT") return cb(err); if (err || st.isDirectory()) return validate2(fs16, path11.join(name, ".."), root, cb); cb(null, false); }); } function mkdirfix(name, opts, cb) { mkdirp4(name, { fs: opts.fs }, function(err, made) { if (!err && made && opts.own) { chownr(made, opts.uid, opts.gid, cb); } else { cb(err); } }); } } }); // ../client/dist/create-deployment.js var require_create_deployment = __commonJS2({ "../client/dist/create-deployment.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var create_deployment_exports = {}; __export4(create_deployment_exports, { default: () => buildCreateDeployment }); module2.exports = __toCommonJS4(create_deployment_exports); var import_fs_extra25 = require_lib8(); var import_path45 = __require("path"); var import_hashes = require_hashes(); var import_upload2 = require_upload(); var import_utils9 = require_utils14(); var import_errors6 = require_errors2(); var import_error_utils39 = require_dist2(); var import_build_utils20 = __require("@vercel/build-utils"); var import_tar_fs2 = __toESM4(require_tar_fs()); var import_zlib = __require("zlib"); function buildCreateDeployment() { return async function* createDeployment2(clientOptions, deploymentOptions = {}) { const { path: path11 } = clientOptions; const debug2 = (0, import_utils9.createDebug)(clientOptions.debug); debug2("Creating deployment..."); if (typeof path11 !== "string" && !Array.isArray(path11)) { debug2( `Error: 'path' is expected to be a string or an array. Received ${typeof path11}` ); throw new import_errors6.DeploymentError({ code: "missing_path", message: "Path not provided" }); } if (typeof clientOptions.token !== "string") { debug2( `Error: 'token' is expected to be a string. Received ${typeof clientOptions.token}` ); throw new import_errors6.DeploymentError({ code: "token_not_provided", message: "Options object must include a `token`" }); } clientOptions.isDirectory = !Array.isArray(path11) && (0, import_fs_extra25.lstatSync)(path11).isDirectory(); if (Array.isArray(path11)) { for (const filePath of path11) { if (!(0, import_path45.isAbsolute)(filePath)) { throw new import_errors6.DeploymentError({ code: "invalid_path", message: `Provided path ${filePath} is not absolute` }); } } } else if (!(0, import_path45.isAbsolute)(path11)) { throw new import_errors6.DeploymentError({ code: "invalid_path", message: `Provided path ${path11} is not absolute` }); } if (clientOptions.isDirectory && !Array.isArray(path11)) { debug2(`Provided 'path' is a directory.`); } else if (Array.isArray(path11)) { debug2(`Provided 'path' is an array of file paths`); } else { debug2(`Provided 'path' is a single file`); } const { fileList } = await (0, import_utils9.buildFileTree)(path11, clientOptions, debug2); if (fileList.length === 0) { debug2("Deployment path has no files. Yielding a warning event"); yield { type: "warning", payload: "There are no files inside your deployment." }; } const workPath = typeof path11 === "string" ? path11 : path11[0]; let files; try { if (clientOptions.archive === "tgz") { debug2("Packing tarball"); const tarStream = import_tar_fs2.default.pack(workPath, { entries: fileList.map((file) => (0, import_path45.relative)(workPath, file)) }).pipe((0, import_zlib.createGzip)()); const chunkedTarBuffers = await (0, import_build_utils20.streamToBufferChunks)(tarStream); debug2(`Packed tarball into ${chunkedTarBuffers.length} chunks`); files = new Map( chunkedTarBuffers.map((chunk, index) => [ (0, import_hashes.hash)(chunk), { names: [(0, import_path45.join)(workPath, `.vercel/source.tgz.part${index + 1}`)], data: chunk, mode: 438 } ]) ); } else { files = await (0, import_hashes.hashes)(fileList); } } catch (err) { if (clientOptions.prebuilt && (0, import_error_utils39.isErrnoException)(err) && err.code === "ENOENT" && err.path) { const errPath = (0, import_path45.relative)(workPath, err.path); err.message = `File does not exist: "${(0, import_path45.relative)(workPath, errPath)}"`; if (errPath.split(import_path45.sep).includes("node_modules")) { err.message = `Please ensure project dependencies have been installed: ${err.message}`; } } throw err; } debug2(`Yielding a 'hashes-calculated' event with ${files.size} hashes`); yield { type: "hashes-calculated", payload: (0, import_hashes.mapToObject)(files) }; if (clientOptions.apiUrl) { debug2(`Using provided API URL: ${clientOptions.apiUrl}`); } if (clientOptions.userAgent) { debug2(`Using provided user agent: ${clientOptions.userAgent}`); } debug2(`Setting platform version to harcoded value 2`); deploymentOptions.version = 2; debug2(`Creating the deployment and starting upload...`); for await (const event of (0, import_upload2.upload)(files, clientOptions, deploymentOptions)) { debug2(`Yielding a '${event.type}' event`); yield event; } }; } } }); // ../client/dist/types.js var require_types2 = __commonJS2({ "../client/dist/types.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var types_exports = {}; __export4(types_exports, { DeploymentEventType: () => import_utils9.DeploymentEventType, VALID_ARCHIVE_FORMATS: () => VALID_ARCHIVE_FORMATS4, fileNameSymbol: () => fileNameSymbol8 }); module2.exports = __toCommonJS4(types_exports); var import_utils9 = require_utils14(); var VALID_ARCHIVE_FORMATS4 = ["tgz"]; var fileNameSymbol8 = Symbol("fileName"); } }); // ../client/dist/index.js var require_dist7 = __commonJS2({ "../client/dist/index.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __reExport = (target, mod, secondTarget) => (__copyProps4(target, mod, "default"), secondTarget && __copyProps4(secondTarget, mod, "default")); var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var src_exports2 = {}; __export4(src_exports2, { buildFileTree: () => import_utils9.buildFileTree, checkDeploymentStatus: () => import_check_deployment_status.checkDeploymentStatus, createDeployment: () => createDeployment2, getVercelIgnore: () => import_utils9.getVercelIgnore }); module2.exports = __toCommonJS4(src_exports2); var import_create_deployment = __toESM4(require_create_deployment()); var import_check_deployment_status = require_check_deployment_status(); var import_utils9 = require_utils14(); __reExport(src_exports2, require_errors2(), module2.exports); __reExport(src_exports2, require_types2(), module2.exports); var createDeployment2 = (0, import_create_deployment.default)(); } }); // ../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/dist/es5/uri.all.js var require_uri_all = __commonJS2({ "../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/dist/es5/uri.all.js"(exports2, module2) { (function(global3, factory) { typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2) : typeof define === "function" && define.amd ? define(["exports"], factory) : factory(global3.URI = global3.URI || {}); })(exports2, function(exports3) { "use strict"; function merge2() { for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) { sets[_key] = arguments[_key]; } if (sets.length > 1) { sets[0] = sets[0].slice(0, -1); var xl = sets.length - 1; for (var x = 1; x < xl; ++x) { sets[x] = sets[x].slice(1, -1); } sets[xl] = sets[xl].slice(1); return sets.join(""); } else { return sets[0]; } } function subexp(str) { return "(?:" + str + ")"; } function typeOf(o) { return o === void 0 ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase(); } function toUpperCase(str) { return str.toUpperCase(); } function toArray(obj) { return obj !== void 0 && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : []; } function assign2(target, source) { var obj = target; if (source) { for (var key in source) { obj[key] = source[key]; } } return obj; } function buildExps(isIRI2) { var ALPHA$$ = "[A-Za-z]", CR$ = "[\\x0D]", DIGIT$$ = "[0-9]", DQUOTE$$ = "[\\x22]", HEXDIG$$2 = merge2(DIGIT$$, "[A-Fa-f]"), LF$$ = "[\\x0A]", SP$$ = "[\\x20]", PCT_ENCODED$2 = subexp(subexp("%[EFef]" + HEXDIG$$2 + "%" + HEXDIG$$2 + HEXDIG$$2 + "%" + HEXDIG$$2 + HEXDIG$$2) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$2 + "%" + HEXDIG$$2 + HEXDIG$$2) + "|" + subexp("%" + HEXDIG$$2 + HEXDIG$$2)), GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", RESERVED$$ = merge2(GEN_DELIMS$$, SUB_DELIMS$$), UCSCHAR$$ = isIRI2 ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", IPRIVATE$$ = isIRI2 ? "[\\uE000-\\uF8FF]" : "[]", UNRESERVED$$2 = merge2(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), SCHEME$ = subexp(ALPHA$$ + merge2(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), USERINFO$ = subexp(subexp(PCT_ENCODED$2 + "|" + merge2(UNRESERVED$$2, SUB_DELIMS$$, "[\\:]")) + "*"), DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), H16$ = subexp(HEXDIG$$2 + "{1,4}"), LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), ZONEID$ = subexp(subexp(UNRESERVED$$2 + "|" + PCT_ENCODED$2) + "+"), IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$2 + "{2})") + ZONEID$), IPVFUTURE$ = subexp("[vV]" + HEXDIG$$2 + "+\\." + merge2(UNRESERVED$$2, SUB_DELIMS$$, "[\\:]") + "+"), IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), REG_NAME$ = subexp(subexp(PCT_ENCODED$2 + "|" + merge2(UNRESERVED$$2, SUB_DELIMS$$)) + "*"), HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")|" + REG_NAME$), PORT$ = subexp(DIGIT$$ + "*"), AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), PCHAR$ = subexp(PCT_ENCODED$2 + "|" + merge2(UNRESERVED$$2, SUB_DELIMS$$, "[\\:\\@]")), SEGMENT$ = subexp(PCHAR$ + "*"), SEGMENT_NZ$ = subexp(PCHAR$ + "+"), SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$2 + "|" + merge2(UNRESERVED$$2, SUB_DELIMS$$, "[\\@]")) + "+"), PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), PATH_EMPTY$ = "(?!" + PCHAR$ + ")", PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), QUERY$ = subexp(subexp(PCHAR$ + "|" + merge2("[\\/\\?]", IPRIVATE$$)) + "*"), FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; return { NOT_SCHEME: new RegExp(merge2("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), NOT_USERINFO: new RegExp(merge2("[^\\%\\:]", UNRESERVED$$2, SUB_DELIMS$$), "g"), NOT_HOST: new RegExp(merge2("[^\\%\\[\\]\\:]", UNRESERVED$$2, SUB_DELIMS$$), "g"), NOT_PATH: new RegExp(merge2("[^\\%\\/\\:\\@]", UNRESERVED$$2, SUB_DELIMS$$), "g"), NOT_PATH_NOSCHEME: new RegExp(merge2("[^\\%\\/\\@]", UNRESERVED$$2, SUB_DELIMS$$), "g"), NOT_QUERY: new RegExp(merge2("[^\\%]", UNRESERVED$$2, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), NOT_FRAGMENT: new RegExp(merge2("[^\\%]", UNRESERVED$$2, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), ESCAPE: new RegExp(merge2("[^]", UNRESERVED$$2, SUB_DELIMS$$), "g"), UNRESERVED: new RegExp(UNRESERVED$$2, "g"), OTHER_CHARS: new RegExp(merge2("[^\\%]", UNRESERVED$$2, RESERVED$$), "g"), PCT_ENCODED: new RegExp(PCT_ENCODED$2, "g"), IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$2 + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules }; } var URI_PROTOCOL = buildExps(false); var IRI_PROTOCOL = buildExps(true); var slicedToArray = function() { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = void 0; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var toConsumableArray = function(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }; var maxInt = 2147483647; var base = 36; var tMin = 1; var tMax = 26; var skew = 38; var damp = 700; var initialBias = 72; var initialN = 128; var delimiter3 = "-"; var regexPunycode = /^xn--/; var regexNonASCII = /[^\0-\x7E]/; var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; var errors = { "overflow": "Overflow: input needs wider integers to process", "not-basic": "Illegal input >= 0x80 (not a basic code point)", "invalid-input": "Invalid input" }; var baseMinusTMin = base - tMin; var floor = Math.floor; var stringFromCharCode = String.fromCharCode; function error$1(type) { throw new RangeError(errors[type]); } function map(array, fn2) { var result = []; var length = array.length; while (length--) { result[length] = fn2(array[length]); } return result; } function mapDomain(string, fn2) { var parts = string.split("@"); var result = ""; if (parts.length > 1) { result = parts[0] + "@"; string = parts[1]; } string = string.replace(regexSeparators, "."); var labels = string.split("."); var encoded = map(labels, fn2).join("."); return result + encoded; } function ucs2decode(string) { var output2 = []; var counter = 0; var length = string.length; while (counter < length) { var value = string.charCodeAt(counter++); if (value >= 55296 && value <= 56319 && counter < length) { var extra = string.charCodeAt(counter++); if ((extra & 64512) == 56320) { output2.push(((value & 1023) << 10) + (extra & 1023) + 65536); } else { output2.push(value); counter--; } } else { output2.push(value); } } return output2; } var ucs2encode = function ucs2encode2(array) { return String.fromCodePoint.apply(String, toConsumableArray(array)); }; var basicToDigit = function basicToDigit2(codePoint) { if (codePoint - 48 < 10) { return codePoint - 22; } if (codePoint - 65 < 26) { return codePoint - 65; } if (codePoint - 97 < 26) { return codePoint - 97; } return base; }; var digitToBasic = function digitToBasic2(digit, flag) { return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); }; var adapt = function adapt2(delta, numPoints, firstTime) { var k = 0; delta = firstTime ? floor(delta / damp) : delta >> 1; delta += floor(delta / numPoints); for ( ; /* no initialization */ delta > baseMinusTMin * tMax >> 1; k += base ) { delta = floor(delta / baseMinusTMin); } return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); }; var decode = function decode2(input) { var output2 = []; var inputLength = input.length; var i = 0; var n = initialN; var bias = initialBias; var basic = input.lastIndexOf(delimiter3); if (basic < 0) { basic = 0; } for (var j = 0; j < basic; ++j) { if (input.charCodeAt(j) >= 128) { error$1("not-basic"); } output2.push(input.charCodeAt(j)); } for (var index = basic > 0 ? basic + 1 : 0; index < inputLength; ) { var oldi = i; for ( var w = 1, k = base; ; /* no condition */ k += base ) { if (index >= inputLength) { error$1("invalid-input"); } var digit = basicToDigit(input.charCodeAt(index++)); if (digit >= base || digit > floor((maxInt - i) / w)) { error$1("overflow"); } i += digit * w; var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; if (digit < t) { break; } var baseMinusT = base - t; if (w > floor(maxInt / baseMinusT)) { error$1("overflow"); } w *= baseMinusT; } var out = output2.length + 1; bias = adapt(i - oldi, out, oldi == 0); if (floor(i / out) > maxInt - n) { error$1("overflow"); } n += floor(i / out); i %= out; output2.splice(i++, 0, n); } return String.fromCodePoint.apply(String, output2); }; var encode = function encode2(input) { var output2 = []; input = ucs2decode(input); var inputLength = input.length; var n = initialN; var delta = 0; var bias = initialBias; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = void 0; try { for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _currentValue2 = _step.value; if (_currentValue2 < 128) { output2.push(stringFromCharCode(_currentValue2)); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } var basicLength = output2.length; var handledCPCount = basicLength; if (basicLength) { output2.push(delimiter3); } while (handledCPCount < inputLength) { var m = maxInt; var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = void 0; try { for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var currentValue = _step2.value; if (currentValue >= n && currentValue < m) { m = currentValue; } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } var handledCPCountPlusOne = handledCPCount + 1; if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { error$1("overflow"); } delta += (m - n) * handledCPCountPlusOne; n = m; var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = void 0; try { for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var _currentValue = _step3.value; if (_currentValue < n && ++delta > maxInt) { error$1("overflow"); } if (_currentValue == n) { var q = delta; for ( var k = base; ; /* no condition */ k += base ) { var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; if (q < t) { break; } var qMinusT = q - t; var baseMinusT = base - t; output2.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); q = floor(qMinusT / baseMinusT); } output2.push(stringFromCharCode(digitToBasic(q, 0))); bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); delta = 0; ++handledCPCount; } } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } ++delta; ++n; } return output2.join(""); }; var toUnicode = function toUnicode2(input) { return mapDomain(input, function(string) { return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; }); }; var toASCII = function toASCII2(input) { return mapDomain(input, function(string) { return regexNonASCII.test(string) ? "xn--" + encode(string) : string; }); }; var punycode = { /** * A string representing the current Punycode.js version number. * @memberOf punycode * @type String */ "version": "2.1.0", /** * An object of methods to convert from JavaScript's internal character * representation (UCS-2) to Unicode code points, and back. * @see * @memberOf punycode * @type Object */ "ucs2": { "decode": ucs2decode, "encode": ucs2encode }, "decode": decode, "encode": encode, "toASCII": toASCII, "toUnicode": toUnicode }; var SCHEMES = {}; function pctEncChar(chr) { var c = chr.charCodeAt(0); var e2 = void 0; if (c < 16) e2 = "%0" + c.toString(16).toUpperCase(); else if (c < 128) e2 = "%" + c.toString(16).toUpperCase(); else if (c < 2048) e2 = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase(); else e2 = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase(); return e2; } function pctDecChars(str) { var newStr = ""; var i = 0; var il = str.length; while (i < il) { var c = parseInt(str.substr(i + 1, 2), 16); if (c < 128) { newStr += String.fromCharCode(c); i += 3; } else if (c >= 194 && c < 224) { if (il - i >= 6) { var c2 = parseInt(str.substr(i + 4, 2), 16); newStr += String.fromCharCode((c & 31) << 6 | c2 & 63); } else { newStr += str.substr(i, 6); } i += 6; } else if (c >= 224) { if (il - i >= 9) { var _c = parseInt(str.substr(i + 4, 2), 16); var c3 = parseInt(str.substr(i + 7, 2), 16); newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63); } else { newStr += str.substr(i, 9); } i += 9; } else { newStr += str.substr(i, 3); i += 3; } } return newStr; } function _normalizeComponentEncoding(components, protocol) { function decodeUnreserved2(str) { var decStr = pctDecChars(str); return !decStr.match(protocol.UNRESERVED) ? str : decStr; } if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved2).toLowerCase().replace(protocol.NOT_SCHEME, ""); if (components.userinfo !== void 0) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved2).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); if (components.host !== void 0) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved2).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); if (components.path !== void 0) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved2).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); if (components.query !== void 0) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved2).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); if (components.fragment !== void 0) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved2).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); return components; } function _stripLeadingZeros(str) { return str.replace(/^0*(.*)/, "$1") || "0"; } function _normalizeIPv4(host, protocol) { var matches = host.match(protocol.IPV4ADDRESS) || []; var _matches = slicedToArray(matches, 2), address = _matches[1]; if (address) { return address.split(".").map(_stripLeadingZeros).join("."); } else { return host; } } function _normalizeIPv6(host, protocol) { var matches = host.match(protocol.IPV6ADDRESS) || []; var _matches2 = slicedToArray(matches, 3), address = _matches2[1], zone = _matches2[2]; if (address) { var _address$toLowerCase$ = address.toLowerCase().split("::").reverse(), _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2), last = _address$toLowerCase$2[0], first = _address$toLowerCase$2[1]; var firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; var lastFields = last.split(":").map(_stripLeadingZeros); var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); var fieldCount = isLastFieldIPv4Address ? 7 : 8; var lastFieldsStart = lastFields.length - fieldCount; var fields = Array(fieldCount); for (var x = 0; x < fieldCount; ++x) { fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ""; } if (isLastFieldIPv4Address) { fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); } var allZeroFields = fields.reduce(function(acc, field, index) { if (!field || field === "0") { var lastLongest = acc[acc.length - 1]; if (lastLongest && lastLongest.index + lastLongest.length === index) { lastLongest.length++; } else { acc.push({ index, length: 1 }); } } return acc; }, []); var longestZeroFields = allZeroFields.sort(function(a, b) { return b.length - a.length; })[0]; var newHost = void 0; if (longestZeroFields && longestZeroFields.length > 1) { var newFirst = fields.slice(0, longestZeroFields.index); var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); newHost = newFirst.join(":") + "::" + newLast.join(":"); } else { newHost = fields.join(":"); } if (zone) { newHost += "%" + zone; } return newHost; } else { return host; } } var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === void 0; function parse11(uriString) { var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; var components = {}; var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; var matches = uriString.match(URI_PARSE); if (matches) { if (NO_MATCH_IS_UNDEFINED) { components.scheme = matches[1]; components.userinfo = matches[3]; components.host = matches[4]; components.port = parseInt(matches[5], 10); components.path = matches[6] || ""; components.query = matches[7]; components.fragment = matches[8]; if (isNaN(components.port)) { components.port = matches[5]; } } else { components.scheme = matches[1] || void 0; components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : void 0; components.host = uriString.indexOf("//") !== -1 ? matches[4] : void 0; components.port = parseInt(matches[5], 10); components.path = matches[6] || ""; components.query = uriString.indexOf("?") !== -1 ? matches[7] : void 0; components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : void 0; if (isNaN(components.port)) { components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : void 0; } } if (components.host) { components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); } if (components.scheme === void 0 && components.userinfo === void 0 && components.host === void 0 && components.port === void 0 && !components.path && components.query === void 0) { components.reference = "same-document"; } else if (components.scheme === void 0) { components.reference = "relative"; } else if (components.fragment === void 0) { components.reference = "absolute"; } else { components.reference = "uri"; } if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { components.error = components.error || "URI is not a " + options.reference + " reference."; } var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) { try { components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); } catch (e2) { components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e2; } } _normalizeComponentEncoding(components, URI_PROTOCOL); } else { _normalizeComponentEncoding(components, protocol); } if (schemeHandler && schemeHandler.parse) { schemeHandler.parse(components, options); } } else { components.error = components.error || "URI can not be parsed."; } return components; } function _recomposeAuthority(components, options) { var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; var uriTokens = []; if (components.userinfo !== void 0) { uriTokens.push(components.userinfo); uriTokens.push("@"); } if (components.host !== void 0) { uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function(_, $1, $2) { return "[" + $1 + ($2 ? "%25" + $2 : "") + "]"; })); } if (typeof components.port === "number" || typeof components.port === "string") { uriTokens.push(":"); uriTokens.push(String(components.port)); } return uriTokens.length ? uriTokens.join("") : void 0; } var RDS1 = /^\.\.?\//; var RDS2 = /^\/\.(\/|$)/; var RDS3 = /^\/\.\.(\/|$)/; var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; function removeDotSegments(input) { var output2 = []; while (input.length) { if (input.match(RDS1)) { input = input.replace(RDS1, ""); } else if (input.match(RDS2)) { input = input.replace(RDS2, "/"); } else if (input.match(RDS3)) { input = input.replace(RDS3, "/"); output2.pop(); } else if (input === "." || input === "..") { input = ""; } else { var im = input.match(RDS5); if (im) { var s = im[0]; input = input.slice(s.length); output2.push(s); } else { throw new Error("Unexpected dot segment condition"); } } } return output2.join(""); } function serialize(components) { var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL; var uriTokens = []; var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); if (components.host) { if (protocol.IPV6ADDRESS.test(components.host)) { } else if (options.domainHost || schemeHandler && schemeHandler.domainHost) { try { components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host); } catch (e2) { components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e2; } } } _normalizeComponentEncoding(components, protocol); if (options.reference !== "suffix" && components.scheme) { uriTokens.push(components.scheme); uriTokens.push(":"); } var authority = _recomposeAuthority(components, options); if (authority !== void 0) { if (options.reference !== "suffix") { uriTokens.push("//"); } uriTokens.push(authority); if (components.path && components.path.charAt(0) !== "/") { uriTokens.push("/"); } } if (components.path !== void 0) { var s = components.path; if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { s = removeDotSegments(s); } if (authority === void 0) { s = s.replace(/^\/\//, "/%2F"); } uriTokens.push(s); } if (components.query !== void 0) { uriTokens.push("?"); uriTokens.push(components.query); } if (components.fragment !== void 0) { uriTokens.push("#"); uriTokens.push(components.fragment); } return uriTokens.join(""); } function resolveComponents(base2, relative8) { var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; var skipNormalization = arguments[3]; var target = {}; if (!skipNormalization) { base2 = parse11(serialize(base2, options), options); relative8 = parse11(serialize(relative8, options), options); } options = options || {}; if (!options.tolerant && relative8.scheme) { target.scheme = relative8.scheme; target.userinfo = relative8.userinfo; target.host = relative8.host; target.port = relative8.port; target.path = removeDotSegments(relative8.path || ""); target.query = relative8.query; } else { if (relative8.userinfo !== void 0 || relative8.host !== void 0 || relative8.port !== void 0) { target.userinfo = relative8.userinfo; target.host = relative8.host; target.port = relative8.port; target.path = removeDotSegments(relative8.path || ""); target.query = relative8.query; } else { if (!relative8.path) { target.path = base2.path; if (relative8.query !== void 0) { target.query = relative8.query; } else { target.query = base2.query; } } else { if (relative8.path.charAt(0) === "/") { target.path = removeDotSegments(relative8.path); } else { if ((base2.userinfo !== void 0 || base2.host !== void 0 || base2.port !== void 0) && !base2.path) { target.path = "/" + relative8.path; } else if (!base2.path) { target.path = relative8.path; } else { target.path = base2.path.slice(0, base2.path.lastIndexOf("/") + 1) + relative8.path; } target.path = removeDotSegments(target.path); } target.query = relative8.query; } target.userinfo = base2.userinfo; target.host = base2.host; target.port = base2.port; } target.scheme = base2.scheme; } target.fragment = relative8.fragment; return target; } function resolve14(baseURI, relativeURI, options) { var schemelessOptions = assign2({ scheme: "null" }, options); return serialize(resolveComponents(parse11(baseURI, schemelessOptions), parse11(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); } function normalize4(uri, options) { if (typeof uri === "string") { uri = serialize(parse11(uri, options), options); } else if (typeOf(uri) === "object") { uri = parse11(serialize(uri, options), options); } return uri; } function equal(uriA, uriB, options) { if (typeof uriA === "string") { uriA = serialize(parse11(uriA, options), options); } else if (typeOf(uriA) === "object") { uriA = serialize(uriA, options); } if (typeof uriB === "string") { uriB = serialize(parse11(uriB, options), options); } else if (typeOf(uriB) === "object") { uriB = serialize(uriB, options); } return uriA === uriB; } function escapeComponent(str, options) { return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar); } function unescapeComponent(str, options) { return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars); } var handler = { scheme: "http", domainHost: true, parse: function parse12(components, options) { if (!components.host) { components.error = components.error || "HTTP URIs must have a host."; } return components; }, serialize: function serialize2(components, options) { var secure = String(components.scheme).toLowerCase() === "https"; if (components.port === (secure ? 443 : 80) || components.port === "") { components.port = void 0; } if (!components.path) { components.path = "/"; } return components; } }; var handler$1 = { scheme: "https", domainHost: handler.domainHost, parse: handler.parse, serialize: handler.serialize }; function isSecure(wsComponents) { return typeof wsComponents.secure === "boolean" ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === "wss"; } var handler$2 = { scheme: "ws", domainHost: true, parse: function parse12(components, options) { var wsComponents = components; wsComponents.secure = isSecure(wsComponents); wsComponents.resourceName = (wsComponents.path || "/") + (wsComponents.query ? "?" + wsComponents.query : ""); wsComponents.path = void 0; wsComponents.query = void 0; return wsComponents; }, serialize: function serialize2(wsComponents, options) { if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === "") { wsComponents.port = void 0; } if (typeof wsComponents.secure === "boolean") { wsComponents.scheme = wsComponents.secure ? "wss" : "ws"; wsComponents.secure = void 0; } if (wsComponents.resourceName) { var _wsComponents$resourc = wsComponents.resourceName.split("?"), _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2), path11 = _wsComponents$resourc2[0], query = _wsComponents$resourc2[1]; wsComponents.path = path11 && path11 !== "/" ? path11 : void 0; wsComponents.query = query; wsComponents.resourceName = void 0; } wsComponents.fragment = void 0; return wsComponents; } }; var handler$3 = { scheme: "wss", domainHost: handler$2.domainHost, parse: handler$2.parse, serialize: handler$2.serialize }; var O = {}; var isIRI = true; var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; var HEXDIG$$ = "[0-9A-Fa-f]"; var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; var VCHAR$$ = merge2(QTEXT$$, '[\\"\\\\]'); var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; var UNRESERVED = new RegExp(UNRESERVED$$, "g"); var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); var NOT_LOCAL_PART = new RegExp(merge2("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); var NOT_HFNAME = new RegExp(merge2("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); var NOT_HFVALUE = NOT_HFNAME; function decodeUnreserved(str) { var decStr = pctDecChars(str); return !decStr.match(UNRESERVED) ? str : decStr; } var handler$4 = { scheme: "mailto", parse: function parse$$1(components, options) { var mailtoComponents = components; var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : []; mailtoComponents.path = void 0; if (mailtoComponents.query) { var unknownHeaders = false; var headers = {}; var hfields = mailtoComponents.query.split("&"); for (var x = 0, xl = hfields.length; x < xl; ++x) { var hfield = hfields[x].split("="); switch (hfield[0]) { case "to": var toAddrs = hfield[1].split(","); for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) { to.push(toAddrs[_x]); } break; case "subject": mailtoComponents.subject = unescapeComponent(hfield[1], options); break; case "body": mailtoComponents.body = unescapeComponent(hfield[1], options); break; default: unknownHeaders = true; headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); break; } } if (unknownHeaders) mailtoComponents.headers = headers; } mailtoComponents.query = void 0; for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) { var addr = to[_x2].split("@"); addr[0] = unescapeComponent(addr[0]); if (!options.unicodeSupport) { try { addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); } catch (e2) { mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e2; } } else { addr[1] = unescapeComponent(addr[1], options).toLowerCase(); } to[_x2] = addr.join("@"); } return mailtoComponents; }, serialize: function serialize$$1(mailtoComponents, options) { var components = mailtoComponents; var to = toArray(mailtoComponents.to); if (to) { for (var x = 0, xl = to.length; x < xl; ++x) { var toAddr = String(to[x]); var atIdx = toAddr.lastIndexOf("@"); var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); var domain = toAddr.slice(atIdx + 1); try { domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain); } catch (e2) { components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e2; } to[x] = localPart + "@" + domain; } components.path = to.join(","); } var headers = mailtoComponents.headers = mailtoComponents.headers || {}; if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; if (mailtoComponents.body) headers["body"] = mailtoComponents.body; var fields = []; for (var name in headers) { if (headers[name] !== O[name]) { fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); } } if (fields.length) { components.query = fields.join("&"); } return components; } }; var URN_PARSE = /^([^\:]+)\:(.*)/; var handler$5 = { scheme: "urn", parse: function parse$$1(components, options) { var matches = components.path && components.path.match(URN_PARSE); var urnComponents = components; if (matches) { var scheme = options.scheme || urnComponents.scheme || "urn"; var nid = matches[1].toLowerCase(); var nss = matches[2]; var urnScheme = scheme + ":" + (options.nid || nid); var schemeHandler = SCHEMES[urnScheme]; urnComponents.nid = nid; urnComponents.nss = nss; urnComponents.path = void 0; if (schemeHandler) { urnComponents = schemeHandler.parse(urnComponents, options); } } else { urnComponents.error = urnComponents.error || "URN can not be parsed."; } return urnComponents; }, serialize: function serialize$$1(urnComponents, options) { var scheme = options.scheme || urnComponents.scheme || "urn"; var nid = urnComponents.nid; var urnScheme = scheme + ":" + (options.nid || nid); var schemeHandler = SCHEMES[urnScheme]; if (schemeHandler) { urnComponents = schemeHandler.serialize(urnComponents, options); } var uriComponents = urnComponents; var nss = urnComponents.nss; uriComponents.path = (nid || options.nid) + ":" + nss; return uriComponents; } }; var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; var handler$6 = { scheme: "urn:uuid", parse: function parse12(urnComponents, options) { var uuidComponents = urnComponents; uuidComponents.uuid = uuidComponents.nss; uuidComponents.nss = void 0; if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { uuidComponents.error = uuidComponents.error || "UUID is not valid."; } return uuidComponents; }, serialize: function serialize2(uuidComponents, options) { var urnComponents = uuidComponents; urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); return urnComponents; } }; SCHEMES[handler.scheme] = handler; SCHEMES[handler$1.scheme] = handler$1; SCHEMES[handler$2.scheme] = handler$2; SCHEMES[handler$3.scheme] = handler$3; SCHEMES[handler$4.scheme] = handler$4; SCHEMES[handler$5.scheme] = handler$5; SCHEMES[handler$6.scheme] = handler$6; exports3.SCHEMES = SCHEMES; exports3.pctEncChar = pctEncChar; exports3.pctDecChars = pctDecChars; exports3.parse = parse11; exports3.removeDotSegments = removeDotSegments; exports3.serialize = serialize; exports3.resolveComponents = resolveComponents; exports3.resolve = resolve14; exports3.normalize = normalize4; exports3.equal = equal; exports3.escapeComponent = escapeComponent; exports3.unescapeComponent = unescapeComponent; Object.defineProperty(exports3, "__esModule", { value: true }); }); } }); // ../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js var require_fast_deep_equal = __commonJS2({ "../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js"(exports2, module2) { "use strict"; module2.exports = function equal(a, b) { if (a === b) return true; if (a && b && typeof a == "object" && typeof b == "object") { if (a.constructor !== b.constructor) return false; var length, i, keys; if (Array.isArray(a)) { length = a.length; if (length != b.length) return false; for (i = length; i-- !== 0; ) if (!equal(a[i], b[i])) return false; return true; } if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); keys = Object.keys(a); length = keys.length; if (length !== Object.keys(b).length) return false; for (i = length; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; for (i = length; i-- !== 0; ) { var key = keys[i]; if (!equal(a[key], b[key])) return false; } return true; } return a !== a && b !== b; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/ucs2length.js var require_ucs2length = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/ucs2length.js"(exports2, module2) { "use strict"; module2.exports = function ucs2length(str) { var length = 0, len = str.length, pos = 0, value; while (pos < len) { length++; value = str.charCodeAt(pos++); if (value >= 55296 && value <= 56319 && pos < len) { value = str.charCodeAt(pos); if ((value & 64512) == 56320) pos++; } } return length; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/util.js var require_util4 = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/util.js"(exports2, module2) { "use strict"; module2.exports = { copy: copy3, checkDataType, checkDataTypes, coerceToTypes, toHash, getProperty, escapeQuotes, equal: require_fast_deep_equal(), ucs2length: require_ucs2length(), varOccurences, varReplace, schemaHasRules, schemaHasRulesExcept, schemaUnknownRules, toQuotedString, getPathExpr, getPath, getData, unescapeFragment, unescapeJsonPointer, escapeFragment, escapeJsonPointer }; function copy3(o, to) { to = to || {}; for (var key in o) to[key] = o[key]; return to; } function checkDataType(dataType, data, strictNumbers, negate) { var EQUAL = negate ? " !== " : " === ", AND = negate ? " || " : " && ", OK = negate ? "!" : "", NOT = negate ? "" : "!"; switch (dataType) { case "null": return data + EQUAL + "null"; case "array": return OK + "Array.isArray(" + data + ")"; case "object": return "(" + OK + data + AND + "typeof " + data + EQUAL + '"object"' + AND + NOT + "Array.isArray(" + data + "))"; case "integer": return "(typeof " + data + EQUAL + '"number"' + AND + NOT + "(" + data + " % 1)" + AND + data + EQUAL + data + (strictNumbers ? AND + OK + "isFinite(" + data + ")" : "") + ")"; case "number": return "(typeof " + data + EQUAL + '"' + dataType + '"' + (strictNumbers ? AND + OK + "isFinite(" + data + ")" : "") + ")"; default: return "typeof " + data + EQUAL + '"' + dataType + '"'; } } function checkDataTypes(dataTypes, data, strictNumbers) { switch (dataTypes.length) { case 1: return checkDataType(dataTypes[0], data, strictNumbers, true); default: var code2 = ""; var types = toHash(dataTypes); if (types.array && types.object) { code2 = types.null ? "(" : "(!" + data + " || "; code2 += "typeof " + data + ' !== "object")'; delete types.null; delete types.array; delete types.object; } if (types.number) delete types.integer; for (var t in types) code2 += (code2 ? " && " : "") + checkDataType(t, data, strictNumbers, true); return code2; } } var COERCE_TO_TYPES = toHash(["string", "number", "integer", "boolean", "null"]); function coerceToTypes(optionCoerceTypes, dataTypes) { if (Array.isArray(dataTypes)) { var types = []; for (var i = 0; i < dataTypes.length; i++) { var t = dataTypes[i]; if (COERCE_TO_TYPES[t]) types[types.length] = t; else if (optionCoerceTypes === "array" && t === "array") types[types.length] = t; } if (types.length) return types; } else if (COERCE_TO_TYPES[dataTypes]) { return [dataTypes]; } else if (optionCoerceTypes === "array" && dataTypes === "array") { return ["array"]; } } function toHash(arr) { var hash = {}; for (var i = 0; i < arr.length; i++) hash[arr[i]] = true; return hash; } var IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i; var SINGLE_QUOTE = /'|\\/g; function getProperty(key) { return typeof key == "number" ? "[" + key + "]" : IDENTIFIER.test(key) ? "." + key : "['" + escapeQuotes(key) + "']"; } function escapeQuotes(str) { return str.replace(SINGLE_QUOTE, "\\$&").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\f/g, "\\f").replace(/\t/g, "\\t"); } function varOccurences(str, dataVar) { dataVar += "[^0-9]"; var matches = str.match(new RegExp(dataVar, "g")); return matches ? matches.length : 0; } function varReplace(str, dataVar, expr) { dataVar += "([^0-9])"; expr = expr.replace(/\$/g, "$$$$"); return str.replace(new RegExp(dataVar, "g"), expr + "$1"); } function schemaHasRules(schema, rules) { if (typeof schema == "boolean") return !schema; for (var key in schema) if (rules[key]) return true; } function schemaHasRulesExcept(schema, rules, exceptKeyword) { if (typeof schema == "boolean") return !schema && exceptKeyword != "not"; for (var key in schema) if (key != exceptKeyword && rules[key]) return true; } function schemaUnknownRules(schema, rules) { if (typeof schema == "boolean") return; for (var key in schema) if (!rules[key]) return key; } function toQuotedString(str) { return "'" + escapeQuotes(str) + "'"; } function getPathExpr(currentPath, expr, jsonPointers, isNumber) { var path11 = jsonPointers ? "'/' + " + expr + (isNumber ? "" : ".replace(/~/g, '~0').replace(/\\//g, '~1')") : isNumber ? "'[' + " + expr + " + ']'" : "'[\\'' + " + expr + " + '\\']'"; return joinPaths(currentPath, path11); } function getPath(currentPath, prop, jsonPointers) { var path11 = jsonPointers ? toQuotedString("/" + escapeJsonPointer(prop)) : toQuotedString(getProperty(prop)); return joinPaths(currentPath, path11); } var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/; var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/; function getData($data, lvl, paths) { var up, jsonPointer, data, matches; if ($data === "") return "rootData"; if ($data[0] == "/") { if (!JSON_POINTER.test($data)) throw new Error("Invalid JSON-pointer: " + $data); jsonPointer = $data; data = "rootData"; } else { matches = $data.match(RELATIVE_JSON_POINTER); if (!matches) throw new Error("Invalid JSON-pointer: " + $data); up = +matches[1]; jsonPointer = matches[2]; if (jsonPointer == "#") { if (up >= lvl) throw new Error("Cannot access property/index " + up + " levels up, current level is " + lvl); return paths[lvl - up]; } if (up > lvl) throw new Error("Cannot access data " + up + " levels up, current level is " + lvl); data = "data" + (lvl - up || ""); if (!jsonPointer) return data; } var expr = data; var segments = jsonPointer.split("/"); for (var i = 0; i < segments.length; i++) { var segment = segments[i]; if (segment) { data += getProperty(unescapeJsonPointer(segment)); expr += " && " + data; } } return expr; } function joinPaths(a, b) { if (a == '""') return b; return (a + " + " + b).replace(/([^\\])' \+ '/g, "$1"); } function unescapeFragment(str) { return unescapeJsonPointer(decodeURIComponent(str)); } function escapeFragment(str) { return encodeURIComponent(escapeJsonPointer(str)); } function escapeJsonPointer(str) { return str.replace(/~/g, "~0").replace(/\//g, "~1"); } function unescapeJsonPointer(str) { return str.replace(/~1/g, "/").replace(/~0/g, "~"); } } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/schema_obj.js var require_schema_obj = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/schema_obj.js"(exports2, module2) { "use strict"; var util = require_util4(); module2.exports = SchemaObject; function SchemaObject(obj) { util.copy(obj, this); } } }); // ../../node_modules/.pnpm/json-schema-traverse@0.4.1/node_modules/json-schema-traverse/index.js var require_json_schema_traverse = __commonJS2({ "../../node_modules/.pnpm/json-schema-traverse@0.4.1/node_modules/json-schema-traverse/index.js"(exports2, module2) { "use strict"; var traverse = module2.exports = function(schema, opts, cb) { if (typeof opts == "function") { cb = opts; opts = {}; } cb = opts.cb || cb; var pre = typeof cb == "function" ? cb : cb.pre || function() { }; var post = cb.post || function() { }; _traverse(opts, pre, post, schema, "", schema); }; traverse.keywords = { additionalItems: true, items: true, contains: true, additionalProperties: true, propertyNames: true, not: true }; traverse.arrayKeywords = { items: true, allOf: true, anyOf: true, oneOf: true }; traverse.propsKeywords = { definitions: true, properties: true, patternProperties: true, dependencies: true }; traverse.skipKeywords = { default: true, enum: true, const: true, required: true, maximum: true, minimum: true, exclusiveMaximum: true, exclusiveMinimum: true, multipleOf: true, maxLength: true, minLength: true, pattern: true, format: true, maxItems: true, minItems: true, uniqueItems: true, maxProperties: true, minProperties: true }; function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { if (schema && typeof schema == "object" && !Array.isArray(schema)) { pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); for (var key in schema) { var sch = schema[key]; if (Array.isArray(sch)) { if (key in traverse.arrayKeywords) { for (var i = 0; i < sch.length; i++) _traverse(opts, pre, post, sch[i], jsonPtr + "/" + key + "/" + i, rootSchema, jsonPtr, key, schema, i); } } else if (key in traverse.propsKeywords) { if (sch && typeof sch == "object") { for (var prop in sch) _traverse(opts, pre, post, sch[prop], jsonPtr + "/" + key + "/" + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop); } } else if (key in traverse.keywords || opts.allKeys && !(key in traverse.skipKeywords)) { _traverse(opts, pre, post, sch, jsonPtr + "/" + key, rootSchema, jsonPtr, key, schema); } } post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); } } function escapeJsonPtr(str) { return str.replace(/~/g, "~0").replace(/\//g, "~1"); } } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/resolve.js var require_resolve = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/resolve.js"(exports2, module2) { "use strict"; var URI = require_uri_all(); var equal = require_fast_deep_equal(); var util = require_util4(); var SchemaObject = require_schema_obj(); var traverse = require_json_schema_traverse(); module2.exports = resolve14; resolve14.normalizeId = normalizeId; resolve14.fullPath = getFullPath; resolve14.url = resolveUrl; resolve14.ids = resolveIds; resolve14.inlineRef = inlineRef; resolve14.schema = resolveSchema; function resolve14(compile, root, ref) { var refVal = this._refs[ref]; if (typeof refVal == "string") { if (this._refs[refVal]) refVal = this._refs[refVal]; else return resolve14.call(this, compile, root, refVal); } refVal = refVal || this._schemas[ref]; if (refVal instanceof SchemaObject) { return inlineRef(refVal.schema, this._opts.inlineRefs) ? refVal.schema : refVal.validate || this._compile(refVal); } var res = resolveSchema.call(this, root, ref); var schema, v, baseId; if (res) { schema = res.schema; root = res.root; baseId = res.baseId; } if (schema instanceof SchemaObject) { v = schema.validate || compile.call(this, schema.schema, root, void 0, baseId); } else if (schema !== void 0) { v = inlineRef(schema, this._opts.inlineRefs) ? schema : compile.call(this, schema, root, void 0, baseId); } return v; } function resolveSchema(root, ref) { var p = URI.parse(ref), refPath = _getFullPath(p), baseId = getFullPath(this._getId(root.schema)); if (Object.keys(root.schema).length === 0 || refPath !== baseId) { var id = normalizeId(refPath); var refVal = this._refs[id]; if (typeof refVal == "string") { return resolveRecursive.call(this, root, refVal, p); } else if (refVal instanceof SchemaObject) { if (!refVal.validate) this._compile(refVal); root = refVal; } else { refVal = this._schemas[id]; if (refVal instanceof SchemaObject) { if (!refVal.validate) this._compile(refVal); if (id == normalizeId(ref)) return { schema: refVal, root, baseId }; root = refVal; } else { return; } } if (!root.schema) return; baseId = getFullPath(this._getId(root.schema)); } return getJsonPointer.call(this, p, baseId, root.schema, root); } function resolveRecursive(root, ref, parsedRef) { var res = resolveSchema.call(this, root, ref); if (res) { var schema = res.schema; var baseId = res.baseId; root = res.root; var id = this._getId(schema); if (id) baseId = resolveUrl(baseId, id); return getJsonPointer.call(this, parsedRef, baseId, schema, root); } } var PREVENT_SCOPE_CHANGE = util.toHash(["properties", "patternProperties", "enum", "dependencies", "definitions"]); function getJsonPointer(parsedRef, baseId, schema, root) { parsedRef.fragment = parsedRef.fragment || ""; if (parsedRef.fragment.slice(0, 1) != "/") return; var parts = parsedRef.fragment.split("/"); for (var i = 1; i < parts.length; i++) { var part = parts[i]; if (part) { part = util.unescapeFragment(part); schema = schema[part]; if (schema === void 0) break; var id; if (!PREVENT_SCOPE_CHANGE[part]) { id = this._getId(schema); if (id) baseId = resolveUrl(baseId, id); if (schema.$ref) { var $ref = resolveUrl(baseId, schema.$ref); var res = resolveSchema.call(this, root, $ref); if (res) { schema = res.schema; root = res.root; baseId = res.baseId; } } } } } if (schema !== void 0 && schema !== root.schema) return { schema, root, baseId }; } var SIMPLE_INLINED = util.toHash([ "type", "format", "pattern", "maxLength", "minLength", "maxProperties", "minProperties", "maxItems", "minItems", "maximum", "minimum", "uniqueItems", "multipleOf", "required", "enum" ]); function inlineRef(schema, limit) { if (limit === false) return false; if (limit === void 0 || limit === true) return checkNoRef(schema); else if (limit) return countKeys(schema) <= limit; } function checkNoRef(schema) { var item; if (Array.isArray(schema)) { for (var i = 0; i < schema.length; i++) { item = schema[i]; if (typeof item == "object" && !checkNoRef(item)) return false; } } else { for (var key in schema) { if (key == "$ref") return false; item = schema[key]; if (typeof item == "object" && !checkNoRef(item)) return false; } } return true; } function countKeys(schema) { var count = 0, item; if (Array.isArray(schema)) { for (var i = 0; i < schema.length; i++) { item = schema[i]; if (typeof item == "object") count += countKeys(item); if (count == Infinity) return Infinity; } } else { for (var key in schema) { if (key == "$ref") return Infinity; if (SIMPLE_INLINED[key]) { count++; } else { item = schema[key]; if (typeof item == "object") count += countKeys(item) + 1; if (count == Infinity) return Infinity; } } } return count; } function getFullPath(id, normalize4) { if (normalize4 !== false) id = normalizeId(id); var p = URI.parse(id); return _getFullPath(p); } function _getFullPath(p) { return URI.serialize(p).split("#")[0] + "#"; } var TRAILING_SLASH_HASH = /#\/?$/; function normalizeId(id) { return id ? id.replace(TRAILING_SLASH_HASH, "") : ""; } function resolveUrl(baseId, id) { id = normalizeId(id); return URI.resolve(baseId, id); } function resolveIds(schema) { var schemaId = normalizeId(this._getId(schema)); var baseIds = { "": schemaId }; var fullPaths = { "": getFullPath(schemaId, false) }; var localRefs = {}; var self2 = this; traverse(schema, { allKeys: true }, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { if (jsonPtr === "") return; var id = self2._getId(sch); var baseId = baseIds[parentJsonPtr]; var fullPath = fullPaths[parentJsonPtr] + "/" + parentKeyword; if (keyIndex !== void 0) fullPath += "/" + (typeof keyIndex == "number" ? keyIndex : util.escapeFragment(keyIndex)); if (typeof id == "string") { id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id); var refVal = self2._refs[id]; if (typeof refVal == "string") refVal = self2._refs[refVal]; if (refVal && refVal.schema) { if (!equal(sch, refVal.schema)) throw new Error('id "' + id + '" resolves to more than one schema'); } else if (id != normalizeId(fullPath)) { if (id[0] == "#") { if (localRefs[id] && !equal(sch, localRefs[id])) throw new Error('id "' + id + '" resolves to more than one schema'); localRefs[id] = sch; } else { self2._refs[id] = fullPath; } } } baseIds[jsonPtr] = baseId; fullPaths[jsonPtr] = fullPath; }); return localRefs; } } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/error_classes.js var require_error_classes = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/error_classes.js"(exports2, module2) { "use strict"; var resolve14 = require_resolve(); module2.exports = { Validation: errorSubclass(ValidationError3), MissingRef: errorSubclass(MissingRefError) }; function ValidationError3(errors) { this.message = "validation failed"; this.errors = errors; this.ajv = this.validation = true; } MissingRefError.message = function(baseId, ref) { return "can't resolve reference " + ref + " from id " + baseId; }; function MissingRefError(baseId, ref, message2) { this.message = message2 || MissingRefError.message(baseId, ref); this.missingRef = resolve14.url(baseId, ref); this.missingSchema = resolve14.normalizeId(resolve14.fullPath(this.missingRef)); } function errorSubclass(Subclass) { Subclass.prototype = Object.create(Error.prototype); Subclass.prototype.constructor = Subclass; return Subclass; } } }); // ../../node_modules/.pnpm/fast-json-stable-stringify@2.1.0/node_modules/fast-json-stable-stringify/index.js var require_fast_json_stable_stringify = __commonJS2({ "../../node_modules/.pnpm/fast-json-stable-stringify@2.1.0/node_modules/fast-json-stable-stringify/index.js"(exports2, module2) { "use strict"; module2.exports = function(data, opts) { if (!opts) opts = {}; if (typeof opts === "function") opts = { cmp: opts }; var cycles = typeof opts.cycles === "boolean" ? opts.cycles : false; var cmp = opts.cmp && function(f) { return function(node) { return function(a, b) { var aobj = { key: a, value: node[a] }; var bobj = { key: b, value: node[b] }; return f(aobj, bobj); }; }; }(opts.cmp); var seen = []; return function stringify2(node) { if (node && node.toJSON && typeof node.toJSON === "function") { node = node.toJSON(); } if (node === void 0) return; if (typeof node == "number") return isFinite(node) ? "" + node : "null"; if (typeof node !== "object") return JSON.stringify(node); var i, out; if (Array.isArray(node)) { out = "["; for (i = 0; i < node.length; i++) { if (i) out += ","; out += stringify2(node[i]) || "null"; } return out + "]"; } if (node === null) return "null"; if (seen.indexOf(node) !== -1) { if (cycles) return JSON.stringify("__cycle__"); throw new TypeError("Converting circular structure to JSON"); } var seenIndex = seen.push(node) - 1; var keys = Object.keys(node).sort(cmp && cmp(node)); out = ""; for (i = 0; i < keys.length; i++) { var key = keys[i]; var value = stringify2(node[key]); if (!value) continue; if (out) out += ","; out += JSON.stringify(key) + ":" + value; } seen.splice(seenIndex, 1); return "{" + out + "}"; }(data); }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/validate.js var require_validate = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/validate.js"(exports2, module2) { "use strict"; module2.exports = function generate_validate(it, $keyword, $ruleType) { var out = ""; var $async = it.schema.$async === true, $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, "$ref"), $id = it.self._getId(it.schema); if (it.opts.strictKeywords) { var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords); if ($unknownKwd) { var $keywordsMsg = "unknown keyword: " + $unknownKwd; if (it.opts.strictKeywords === "log") it.logger.warn($keywordsMsg); else throw new Error($keywordsMsg); } } if (it.isTop) { out += " var validate = "; if ($async) { it.async = true; out += "async "; } out += "function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; "; if ($id && (it.opts.sourceCode || it.opts.processCode)) { out += " " + ("/*# sourceURL=" + $id + " */") + " "; } } if (typeof it.schema == "boolean" || !($refKeywords || it.schema.$ref)) { var $keyword = "false schema"; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $errorKeyword; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; if (it.schema === false) { if (it.isTop) { $breakOnError = true; } else { out += " var " + $valid + " = false; "; } var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "false schema") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: {} "; if (it.opts.messages !== false) { out += " , message: 'boolean schema is false' "; } if (it.opts.verbose) { out += " , schema: false , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } } else { if (it.isTop) { if ($async) { out += " return data; "; } else { out += " validate.errors = null; return true; "; } } else { out += " var " + $valid + " = true; "; } } if (it.isTop) { out += " }; return validate; "; } return out; } if (it.isTop) { var $top = it.isTop, $lvl = it.level = 0, $dataLvl = it.dataLevel = 0, $data = "data"; it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); it.baseId = it.baseId || it.rootId; delete it.isTop; it.dataPathArr = [void 0]; if (it.schema.default !== void 0 && it.opts.useDefaults && it.opts.strictDefaults) { var $defaultMsg = "default is ignored in the schema root"; if (it.opts.strictDefaults === "log") it.logger.warn($defaultMsg); else throw new Error($defaultMsg); } out += " var vErrors = null; "; out += " var errors = 0; "; out += " if (rootData === undefined) rootData = data; "; } else { var $lvl = it.level, $dataLvl = it.dataLevel, $data = "data" + ($dataLvl || ""); if ($id) it.baseId = it.resolve.url(it.baseId, $id); if ($async && !it.async) throw new Error("async schema in sync schema"); out += " var errs_" + $lvl + " = errors;"; } var $valid = "valid" + $lvl, $breakOnError = !it.opts.allErrors, $closingBraces1 = "", $closingBraces2 = ""; var $errorKeyword; var $typeSchema = it.schema.type, $typeIsArray = Array.isArray($typeSchema); if ($typeSchema && it.opts.nullable && it.schema.nullable === true) { if ($typeIsArray) { if ($typeSchema.indexOf("null") == -1) $typeSchema = $typeSchema.concat("null"); } else if ($typeSchema != "null") { $typeSchema = [$typeSchema, "null"]; $typeIsArray = true; } } if ($typeIsArray && $typeSchema.length == 1) { $typeSchema = $typeSchema[0]; $typeIsArray = false; } if (it.schema.$ref && $refKeywords) { if (it.opts.extendRefs == "fail") { throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); } else if (it.opts.extendRefs !== true) { $refKeywords = false; it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); } } if (it.schema.$comment && it.opts.$comment) { out += " " + it.RULES.all.$comment.code(it, "$comment"); } if ($typeSchema) { if (it.opts.coerceTypes) { var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); } var $rulesGroup = it.RULES.types[$typeSchema]; if ($coerceToTypes || $typeIsArray || $rulesGroup === true || $rulesGroup && !$shouldUseGroup($rulesGroup)) { var $schemaPath = it.schemaPath + ".type", $errSchemaPath = it.errSchemaPath + "/type"; var $schemaPath = it.schemaPath + ".type", $errSchemaPath = it.errSchemaPath + "/type", $method = $typeIsArray ? "checkDataTypes" : "checkDataType"; out += " if (" + it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true) + ") { "; if ($coerceToTypes) { var $dataType = "dataType" + $lvl, $coerced = "coerced" + $lvl; out += " var " + $dataType + " = typeof " + $data + "; "; if (it.opts.coerceTypes == "array") { out += " if (" + $dataType + " == 'object' && Array.isArray(" + $data + ")) " + $dataType + " = 'array'; "; } out += " var " + $coerced + " = undefined; "; var $bracesCoercion = ""; var arr1 = $coerceToTypes; if (arr1) { var $type, $i = -1, l1 = arr1.length - 1; while ($i < l1) { $type = arr1[$i += 1]; if ($i) { out += " if (" + $coerced + " === undefined) { "; $bracesCoercion += "}"; } if (it.opts.coerceTypes == "array" && $type != "array") { out += " if (" + $dataType + " == 'array' && " + $data + ".length == 1) { " + $coerced + " = " + $data + " = " + $data + "[0]; " + $dataType + " = typeof " + $data + "; } "; } if ($type == "string") { out += " if (" + $dataType + " == 'number' || " + $dataType + " == 'boolean') " + $coerced + " = '' + " + $data + "; else if (" + $data + " === null) " + $coerced + " = ''; "; } else if ($type == "number" || $type == "integer") { out += " if (" + $dataType + " == 'boolean' || " + $data + " === null || (" + $dataType + " == 'string' && " + $data + " && " + $data + " == +" + $data + " "; if ($type == "integer") { out += " && !(" + $data + " % 1)"; } out += ")) " + $coerced + " = +" + $data + "; "; } else if ($type == "boolean") { out += " if (" + $data + " === 'false' || " + $data + " === 0 || " + $data + " === null) " + $coerced + " = false; else if (" + $data + " === 'true' || " + $data + " === 1) " + $coerced + " = true; "; } else if ($type == "null") { out += " if (" + $data + " === '' || " + $data + " === 0 || " + $data + " === false) " + $coerced + " = null; "; } else if (it.opts.coerceTypes == "array" && $type == "array") { out += " if (" + $dataType + " == 'string' || " + $dataType + " == 'number' || " + $dataType + " == 'boolean' || " + $data + " == null) " + $coerced + " = [" + $data + "]; "; } } } out += " " + $bracesCoercion + " if (" + $coerced + " === undefined) { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "type") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { type: '"; if ($typeIsArray) { out += "" + $typeSchema.join(","); } else { out += "" + $typeSchema; } out += "' } "; if (it.opts.messages !== false) { out += " , message: 'should be "; if ($typeIsArray) { out += "" + $typeSchema.join(","); } else { out += "" + $typeSchema; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } else { "; var $parentData = $dataLvl ? "data" + ($dataLvl - 1 || "") : "parentData", $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : "parentDataProperty"; out += " " + $data + " = " + $coerced + "; "; if (!$dataLvl) { out += "if (" + $parentData + " !== undefined)"; } out += " " + $parentData + "[" + $parentDataProperty + "] = " + $coerced + "; } "; } else { var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "type") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { type: '"; if ($typeIsArray) { out += "" + $typeSchema.join(","); } else { out += "" + $typeSchema; } out += "' } "; if (it.opts.messages !== false) { out += " , message: 'should be "; if ($typeIsArray) { out += "" + $typeSchema.join(","); } else { out += "" + $typeSchema; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } } out += " } "; } } if (it.schema.$ref && !$refKeywords) { out += " " + it.RULES.all.$ref.code(it, "$ref") + " "; if ($breakOnError) { out += " } if (errors === "; if ($top) { out += "0"; } else { out += "errs_" + $lvl; } out += ") { "; $closingBraces2 += "}"; } } else { var arr2 = it.RULES; if (arr2) { var $rulesGroup, i2 = -1, l2 = arr2.length - 1; while (i2 < l2) { $rulesGroup = arr2[i2 += 1]; if ($shouldUseGroup($rulesGroup)) { if ($rulesGroup.type) { out += " if (" + it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers) + ") { "; } if (it.opts.useDefaults) { if ($rulesGroup.type == "object" && it.schema.properties) { var $schema = it.schema.properties, $schemaKeys = Object.keys($schema); var arr3 = $schemaKeys; if (arr3) { var $propertyKey, i3 = -1, l3 = arr3.length - 1; while (i3 < l3) { $propertyKey = arr3[i3 += 1]; var $sch = $schema[$propertyKey]; if ($sch.default !== void 0) { var $passData = $data + it.util.getProperty($propertyKey); if (it.compositeRule) { if (it.opts.strictDefaults) { var $defaultMsg = "default is ignored for: " + $passData; if (it.opts.strictDefaults === "log") it.logger.warn($defaultMsg); else throw new Error($defaultMsg); } } else { out += " if (" + $passData + " === undefined "; if (it.opts.useDefaults == "empty") { out += " || " + $passData + " === null || " + $passData + " === '' "; } out += " ) " + $passData + " = "; if (it.opts.useDefaults == "shared") { out += " " + it.useDefault($sch.default) + " "; } else { out += " " + JSON.stringify($sch.default) + " "; } out += "; "; } } } } } else if ($rulesGroup.type == "array" && Array.isArray(it.schema.items)) { var arr4 = it.schema.items; if (arr4) { var $sch, $i = -1, l4 = arr4.length - 1; while ($i < l4) { $sch = arr4[$i += 1]; if ($sch.default !== void 0) { var $passData = $data + "[" + $i + "]"; if (it.compositeRule) { if (it.opts.strictDefaults) { var $defaultMsg = "default is ignored for: " + $passData; if (it.opts.strictDefaults === "log") it.logger.warn($defaultMsg); else throw new Error($defaultMsg); } } else { out += " if (" + $passData + " === undefined "; if (it.opts.useDefaults == "empty") { out += " || " + $passData + " === null || " + $passData + " === '' "; } out += " ) " + $passData + " = "; if (it.opts.useDefaults == "shared") { out += " " + it.useDefault($sch.default) + " "; } else { out += " " + JSON.stringify($sch.default) + " "; } out += "; "; } } } } } } var arr5 = $rulesGroup.rules; if (arr5) { var $rule, i5 = -1, l5 = arr5.length - 1; while (i5 < l5) { $rule = arr5[i5 += 1]; if ($shouldUseRule($rule)) { var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); if ($code) { out += " " + $code + " "; if ($breakOnError) { $closingBraces1 += "}"; } } } } } if ($breakOnError) { out += " " + $closingBraces1 + " "; $closingBraces1 = ""; } if ($rulesGroup.type) { out += " } "; if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) { out += " else { "; var $schemaPath = it.schemaPath + ".type", $errSchemaPath = it.errSchemaPath + "/type"; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "type") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { type: '"; if ($typeIsArray) { out += "" + $typeSchema.join(","); } else { out += "" + $typeSchema; } out += "' } "; if (it.opts.messages !== false) { out += " , message: 'should be "; if ($typeIsArray) { out += "" + $typeSchema.join(","); } else { out += "" + $typeSchema; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } "; } } if ($breakOnError) { out += " if (errors === "; if ($top) { out += "0"; } else { out += "errs_" + $lvl; } out += ") { "; $closingBraces2 += "}"; } } } } } if ($breakOnError) { out += " " + $closingBraces2 + " "; } if ($top) { if ($async) { out += " if (errors === 0) return data; "; out += " else throw new ValidationError(vErrors); "; } else { out += " validate.errors = vErrors; "; out += " return errors === 0; "; } out += " }; return validate;"; } else { out += " var " + $valid + " = errors === errs_" + $lvl + ";"; } function $shouldUseGroup($rulesGroup2) { var rules = $rulesGroup2.rules; for (var i = 0; i < rules.length; i++) if ($shouldUseRule(rules[i])) return true; } function $shouldUseRule($rule2) { return it.schema[$rule2.keyword] !== void 0 || $rule2.implements && $ruleImplementsSomeKeyword($rule2); } function $ruleImplementsSomeKeyword($rule2) { var impl = $rule2.implements; for (var i = 0; i < impl.length; i++) if (it.schema[impl[i]] !== void 0) return true; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/index.js var require_compile2 = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/index.js"(exports2, module2) { "use strict"; var resolve14 = require_resolve(); var util = require_util4(); var errorClasses = require_error_classes(); var stableStringify = require_fast_json_stable_stringify(); var validateGenerator = require_validate(); var ucs2length = util.ucs2length; var equal = require_fast_deep_equal(); var ValidationError3 = errorClasses.Validation; module2.exports = compile; function compile(schema, root, localRefs, baseId) { var self2 = this, opts = this._opts, refVal = [void 0], refs = {}, patterns = [], patternsHash = {}, defaults = [], defaultsHash = {}, customRules = []; root = root || { schema, refVal, refs }; var c = checkCompiling.call(this, schema, root, baseId); var compilation = this._compilations[c.index]; if (c.compiling) return compilation.callValidate = callValidate; var formats = this._formats; var RULES = this.RULES; try { var v = localCompile(schema, root, localRefs, baseId); compilation.validate = v; var cv = compilation.callValidate; if (cv) { cv.schema = v.schema; cv.errors = null; cv.refs = v.refs; cv.refVal = v.refVal; cv.root = v.root; cv.$async = v.$async; if (opts.sourceCode) cv.source = v.source; } return v; } finally { endCompiling.call(this, schema, root, baseId); } function callValidate() { var validate2 = compilation.validate; var result = validate2.apply(this, arguments); callValidate.errors = validate2.errors; return result; } function localCompile(_schema, _root, localRefs2, baseId2) { var isRoot = !_root || _root && _root.schema == _schema; if (_root.schema != root.schema) return compile.call(self2, _schema, _root, localRefs2, baseId2); var $async = _schema.$async === true; var sourceCode = validateGenerator({ isTop: true, schema: _schema, isRoot, baseId: baseId2, root: _root, schemaPath: "", errSchemaPath: "#", errorPath: '""', MissingRefError: errorClasses.MissingRef, RULES, validate: validateGenerator, util, resolve: resolve14, resolveRef, usePattern, useDefault, useCustomRule, opts, formats, logger: self2.logger, self: self2 }); sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode) + vars(defaults, defaultCode) + vars(customRules, customRuleCode) + sourceCode; if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema); var validate2; try { var makeValidate = new Function( "self", "RULES", "formats", "root", "refVal", "defaults", "customRules", "equal", "ucs2length", "ValidationError", sourceCode ); validate2 = makeValidate( self2, RULES, formats, root, refVal, defaults, customRules, equal, ucs2length, ValidationError3 ); refVal[0] = validate2; } catch (e2) { self2.logger.error("Error compiling schema, function code:", sourceCode); throw e2; } validate2.schema = _schema; validate2.errors = null; validate2.refs = refs; validate2.refVal = refVal; validate2.root = isRoot ? validate2 : _root; if ($async) validate2.$async = true; if (opts.sourceCode === true) { validate2.source = { code: sourceCode, patterns, defaults }; } return validate2; } function resolveRef(baseId2, ref, isRoot) { ref = resolve14.url(baseId2, ref); var refIndex = refs[ref]; var _refVal, refCode; if (refIndex !== void 0) { _refVal = refVal[refIndex]; refCode = "refVal[" + refIndex + "]"; return resolvedRef(_refVal, refCode); } if (!isRoot && root.refs) { var rootRefId = root.refs[ref]; if (rootRefId !== void 0) { _refVal = root.refVal[rootRefId]; refCode = addLocalRef(ref, _refVal); return resolvedRef(_refVal, refCode); } } refCode = addLocalRef(ref); var v2 = resolve14.call(self2, localCompile, root, ref); if (v2 === void 0) { var localSchema = localRefs && localRefs[ref]; if (localSchema) { v2 = resolve14.inlineRef(localSchema, opts.inlineRefs) ? localSchema : compile.call(self2, localSchema, root, localRefs, baseId2); } } if (v2 === void 0) { removeLocalRef(ref); } else { replaceLocalRef(ref, v2); return resolvedRef(v2, refCode); } } function addLocalRef(ref, v2) { var refId = refVal.length; refVal[refId] = v2; refs[ref] = refId; return "refVal" + refId; } function removeLocalRef(ref) { delete refs[ref]; } function replaceLocalRef(ref, v2) { var refId = refs[ref]; refVal[refId] = v2; } function resolvedRef(refVal2, code2) { return typeof refVal2 == "object" || typeof refVal2 == "boolean" ? { code: code2, schema: refVal2, inline: true } : { code: code2, $async: refVal2 && !!refVal2.$async }; } function usePattern(regexStr) { var index = patternsHash[regexStr]; if (index === void 0) { index = patternsHash[regexStr] = patterns.length; patterns[index] = regexStr; } return "pattern" + index; } function useDefault(value) { switch (typeof value) { case "boolean": case "number": return "" + value; case "string": return util.toQuotedString(value); case "object": if (value === null) return "null"; var valueStr = stableStringify(value); var index = defaultsHash[valueStr]; if (index === void 0) { index = defaultsHash[valueStr] = defaults.length; defaults[index] = value; } return "default" + index; } } function useCustomRule(rule, schema2, parentSchema, it) { if (self2._opts.validateSchema !== false) { var deps = rule.definition.dependencies; if (deps && !deps.every(function(keyword) { return Object.prototype.hasOwnProperty.call(parentSchema, keyword); })) throw new Error("parent schema must have all required keywords: " + deps.join(",")); var validateSchema = rule.definition.validateSchema; if (validateSchema) { var valid = validateSchema(schema2); if (!valid) { var message2 = "keyword schema is invalid: " + self2.errorsText(validateSchema.errors); if (self2._opts.validateSchema == "log") self2.logger.error(message2); else throw new Error(message2); } } } var compile2 = rule.definition.compile, inline = rule.definition.inline, macro = rule.definition.macro; var validate2; if (compile2) { validate2 = compile2.call(self2, schema2, parentSchema, it); } else if (macro) { validate2 = macro.call(self2, schema2, parentSchema, it); if (opts.validateSchema !== false) self2.validateSchema(validate2, true); } else if (inline) { validate2 = inline.call(self2, it, rule.keyword, schema2, parentSchema); } else { validate2 = rule.definition.validate; if (!validate2) return; } if (validate2 === void 0) throw new Error('custom keyword "' + rule.keyword + '"failed to compile'); var index = customRules.length; customRules[index] = validate2; return { code: "customRule" + index, validate: validate2 }; } } function checkCompiling(schema, root, baseId) { var index = compIndex.call(this, schema, root, baseId); if (index >= 0) return { index, compiling: true }; index = this._compilations.length; this._compilations[index] = { schema, root, baseId }; return { index, compiling: false }; } function endCompiling(schema, root, baseId) { var i = compIndex.call(this, schema, root, baseId); if (i >= 0) this._compilations.splice(i, 1); } function compIndex(schema, root, baseId) { for (var i = 0; i < this._compilations.length; i++) { var c = this._compilations[i]; if (c.schema == schema && c.root == root && c.baseId == baseId) return i; } return -1; } function patternCode(i, patterns) { return "var pattern" + i + " = new RegExp(" + util.toQuotedString(patterns[i]) + ");"; } function defaultCode(i) { return "var default" + i + " = defaults[" + i + "];"; } function refValCode(i, refVal) { return refVal[i] === void 0 ? "" : "var refVal" + i + " = refVal[" + i + "];"; } function customRuleCode(i) { return "var customRule" + i + " = customRules[" + i + "];"; } function vars(arr, statement) { if (!arr.length) return ""; var code2 = ""; for (var i = 0; i < arr.length; i++) code2 += statement(i, arr); return code2; } } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/cache.js var require_cache2 = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/cache.js"(exports2, module2) { "use strict"; var Cache = module2.exports = function Cache2() { this._cache = {}; }; Cache.prototype.put = function Cache_put(key, value) { this._cache[key] = value; }; Cache.prototype.get = function Cache_get(key) { return this._cache[key]; }; Cache.prototype.del = function Cache_del(key) { delete this._cache[key]; }; Cache.prototype.clear = function Cache_clear() { this._cache = {}; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/formats.js var require_formats = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/formats.js"(exports2, module2) { "use strict"; var util = require_util4(); var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/; var DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i; var HOSTNAME = /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i; var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; var URIREF = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; var URL11 = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; module2.exports = formats; function formats(mode) { mode = mode == "full" ? "full" : "fast"; return util.copy(formats[mode]); } formats.fast = { // date: http://tools.ietf.org/html/rfc3339#section-5.6 date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, "date-time": /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i, "uri-reference": /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, "uri-template": URITEMPLATE, url: URL11, // email (sources from jsen validator): // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, hostname: HOSTNAME, // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, regex, // uuid: http://tools.ietf.org/html/rfc4122 uuid: UUID, // JSON-pointer: https://tools.ietf.org/html/rfc6901 // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A "json-pointer": JSON_POINTER, "json-pointer-uri-fragment": JSON_POINTER_URI_FRAGMENT, // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 "relative-json-pointer": RELATIVE_JSON_POINTER }; formats.full = { date, time, "date-time": date_time, uri, "uri-reference": URIREF, "uri-template": URITEMPLATE, url: URL11, email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, hostname: HOSTNAME, ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, regex, uuid: UUID, "json-pointer": JSON_POINTER, "json-pointer-uri-fragment": JSON_POINTER_URI_FRAGMENT, "relative-json-pointer": RELATIVE_JSON_POINTER }; function isLeapYear(year) { return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); } function date(str) { var matches = str.match(DATE); if (!matches) return false; var year = +matches[1]; var month = +matches[2]; var day = +matches[3]; return month >= 1 && month <= 12 && day >= 1 && day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]); } function time(str, full) { var matches = str.match(TIME); if (!matches) return false; var hour = matches[1]; var minute = matches[2]; var second = matches[3]; var timeZone = matches[5]; return (hour <= 23 && minute <= 59 && second <= 59 || hour == 23 && minute == 59 && second == 60) && (!full || timeZone); } var DATE_TIME_SEPARATOR = /t|\s/i; function date_time(str) { var dateTime = str.split(DATE_TIME_SEPARATOR); return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); } var NOT_URI_FRAGMENT = /\/|:/; function uri(str) { return NOT_URI_FRAGMENT.test(str) && URI.test(str); } var Z_ANCHOR = /[^\\]\\Z/; function regex(str) { if (Z_ANCHOR.test(str)) return false; try { new RegExp(str); return true; } catch (e2) { return false; } } } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/ref.js var require_ref = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/ref.js"(exports2, module2) { "use strict"; module2.exports = function generate_ref(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $async, $refCode; if ($schema == "#" || $schema == "#/") { if (it.isRoot) { $async = it.async; $refCode = "validate"; } else { $async = it.root.schema.$async === true; $refCode = "root.refVal[0]"; } } else { var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); if ($refVal === void 0) { var $message = it.MissingRefError.message(it.baseId, $schema); if (it.opts.missingRefs == "fail") { it.logger.error($message); var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '$ref' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { ref: '" + it.util.escapeQuotes($schema) + "' } "; if (it.opts.messages !== false) { out += " , message: 'can\\'t resolve reference " + it.util.escapeQuotes($schema) + "' "; } if (it.opts.verbose) { out += " , schema: " + it.util.toQuotedString($schema) + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } if ($breakOnError) { out += " if (false) { "; } } else if (it.opts.missingRefs == "ignore") { it.logger.warn($message); if ($breakOnError) { out += " if (true) { "; } } else { throw new it.MissingRefError(it.baseId, $schema, $message); } } else if ($refVal.inline) { var $it = it.util.copy(it); $it.level++; var $nextValid = "valid" + $it.level; $it.schema = $refVal.schema; $it.schemaPath = ""; $it.errSchemaPath = $schema; var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); out += " " + $code + " "; if ($breakOnError) { out += " if (" + $nextValid + ") { "; } } else { $async = $refVal.$async === true || it.async && $refVal.$async !== false; $refCode = $refVal.code; } } if ($refCode) { var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.opts.passContext) { out += " " + $refCode + ".call(this, "; } else { out += " " + $refCode + "( "; } out += " " + $data + ", (dataPath || '')"; if (it.errorPath != '""') { out += " + " + it.errorPath; } var $parentData = $dataLvl ? "data" + ($dataLvl - 1 || "") : "parentData", $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : "parentDataProperty"; out += " , " + $parentData + " , " + $parentDataProperty + ", rootData) "; var __callValidate = out; out = $$outStack.pop(); if ($async) { if (!it.async) throw new Error("async schema referenced by sync schema"); if ($breakOnError) { out += " var " + $valid + "; "; } out += " try { await " + __callValidate + "; "; if ($breakOnError) { out += " " + $valid + " = true; "; } out += " } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; "; if ($breakOnError) { out += " " + $valid + " = false; "; } out += " } "; if ($breakOnError) { out += " if (" + $valid + ") { "; } } else { out += " if (!" + __callValidate + ") { if (vErrors === null) vErrors = " + $refCode + ".errors; else vErrors = vErrors.concat(" + $refCode + ".errors); errors = vErrors.length; } "; if ($breakOnError) { out += " else { "; } } } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/allOf.js var require_allOf = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/allOf.js"(exports2, module2) { "use strict"; module2.exports = function generate_allOf(it, $keyword, $ruleType) { var out = " "; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; var $currentBaseId = $it.baseId, $allSchemasEmpty = true; var arr1 = $schema; if (arr1) { var $sch, $i = -1, l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; if (it.opts.strictKeywords ? typeof $sch == "object" && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)) { $allSchemasEmpty = false; $it.schema = $sch; $it.schemaPath = $schemaPath + "[" + $i + "]"; $it.errSchemaPath = $errSchemaPath + "/" + $i; out += " " + it.validate($it) + " "; $it.baseId = $currentBaseId; if ($breakOnError) { out += " if (" + $nextValid + ") { "; $closingBraces += "}"; } } } } if ($breakOnError) { if ($allSchemasEmpty) { out += " if (true) { "; } else { out += " " + $closingBraces.slice(0, -1) + " "; } } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/anyOf.js var require_anyOf = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/anyOf.js"(exports2, module2) { "use strict"; module2.exports = function generate_anyOf(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $errs = "errs__" + $lvl; var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; var $noEmptySchema = $schema.every(function($sch2) { return it.opts.strictKeywords ? typeof $sch2 == "object" && Object.keys($sch2).length > 0 : it.util.schemaHasRules($sch2, it.RULES.all); }); if ($noEmptySchema) { var $currentBaseId = $it.baseId; out += " var " + $errs + " = errors; var " + $valid + " = false; "; var $wasComposite = it.compositeRule; it.compositeRule = $it.compositeRule = true; var arr1 = $schema; if (arr1) { var $sch, $i = -1, l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; $it.schema = $sch; $it.schemaPath = $schemaPath + "[" + $i + "]"; $it.errSchemaPath = $errSchemaPath + "/" + $i; out += " " + it.validate($it) + " "; $it.baseId = $currentBaseId; out += " " + $valid + " = " + $valid + " || " + $nextValid + "; if (!" + $valid + ") { "; $closingBraces += "}"; } } it.compositeRule = $it.compositeRule = $wasComposite; out += " " + $closingBraces + " if (!" + $valid + ") { var err = "; if (it.createErrors !== false) { out += " { keyword: 'anyOf' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: {} "; if (it.opts.messages !== false) { out += " , message: 'should match some schema in anyOf' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } out += "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError(vErrors); "; } else { out += " validate.errors = vErrors; return false; "; } } out += " } else { errors = " + $errs + "; if (vErrors !== null) { if (" + $errs + ") vErrors.length = " + $errs + "; else vErrors = null; } "; if (it.opts.allErrors) { out += " } "; } } else { if ($breakOnError) { out += " if (true) { "; } } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/comment.js var require_comment = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/comment.js"(exports2, module2) { "use strict"; module2.exports = function generate_comment(it, $keyword, $ruleType) { var out = " "; var $schema = it.schema[$keyword]; var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $comment = it.util.toQuotedString($schema); if (it.opts.$comment === true) { out += " console.log(" + $comment + ");"; } else if (typeof it.opts.$comment == "function") { out += " self._opts.$comment(" + $comment + ", " + it.util.toQuotedString($errSchemaPath) + ", validate.root.schema);"; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/const.js var require_const = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/const.js"(exports2, module2) { "use strict"; module2.exports = function generate_const(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } if (!$isData) { out += " var schema" + $lvl + " = validate.schema" + $schemaPath + ";"; } out += "var " + $valid + " = equal(" + $data + ", schema" + $lvl + "); if (!" + $valid + ") { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'const' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { allowedValue: schema" + $lvl + " } "; if (it.opts.messages !== false) { out += " , message: 'should be equal to constant' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " }"; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/contains.js var require_contains = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/contains.js"(exports2, module2) { "use strict"; module2.exports = function generate_contains(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $errs = "errs__" + $lvl; var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; var $idx = "i" + $lvl, $dataNxt = $it.dataLevel = it.dataLevel + 1, $nextData = "data" + $dataNxt, $currentBaseId = it.baseId, $nonEmptySchema = it.opts.strictKeywords ? typeof $schema == "object" && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all); out += "var " + $errs + " = errors;var " + $valid + ";"; if ($nonEmptySchema) { var $wasComposite = it.compositeRule; it.compositeRule = $it.compositeRule = true; $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; out += " var " + $nextValid + " = false; for (var " + $idx + " = 0; " + $idx + " < " + $data + ".length; " + $idx + "++) { "; $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); var $passData = $data + "[" + $idx + "]"; $it.dataPathArr[$dataNxt] = $idx; var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { out += " " + it.util.varReplace($code, $nextData, $passData) + " "; } else { out += " var " + $nextData + " = " + $passData + "; " + $code + " "; } out += " if (" + $nextValid + ") break; } "; it.compositeRule = $it.compositeRule = $wasComposite; out += " " + $closingBraces + " if (!" + $nextValid + ") {"; } else { out += " if (" + $data + ".length == 0) {"; } var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'contains' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: {} "; if (it.opts.messages !== false) { out += " , message: 'should contain a valid item' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } else { "; if ($nonEmptySchema) { out += " errors = " + $errs + "; if (vErrors !== null) { if (" + $errs + ") vErrors.length = " + $errs + "; else vErrors = null; } "; } if (it.opts.allErrors) { out += " } "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/dependencies.js var require_dependencies = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/dependencies.js"(exports2, module2) { "use strict"; module2.exports = function generate_dependencies(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $errs = "errs__" + $lvl; var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; var $schemaDeps = {}, $propertyDeps = {}, $ownProperties = it.opts.ownProperties; for ($property in $schema) { if ($property == "__proto__") continue; var $sch = $schema[$property]; var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; $deps[$property] = $sch; } out += "var " + $errs + " = errors;"; var $currentErrorPath = it.errorPath; out += "var missing" + $lvl + ";"; for (var $property in $propertyDeps) { $deps = $propertyDeps[$property]; if ($deps.length) { out += " if ( " + $data + it.util.getProperty($property) + " !== undefined "; if ($ownProperties) { out += " && Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($property) + "') "; } if ($breakOnError) { out += " && ( "; var arr1 = $deps; if (arr1) { var $propertyKey, $i = -1, l1 = arr1.length - 1; while ($i < l1) { $propertyKey = arr1[$i += 1]; if ($i) { out += " || "; } var $prop = it.util.getProperty($propertyKey), $useData = $data + $prop; out += " ( ( " + $useData + " === undefined "; if ($ownProperties) { out += " || ! Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($propertyKey) + "') "; } out += ") && (missing" + $lvl + " = " + it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop) + ") ) "; } } out += ")) { "; var $propertyPath = "missing" + $lvl, $missingProperty = "' + " + $propertyPath + " + '"; if (it.opts._errorDataPathProperty) { it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + " + " + $propertyPath; } var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'dependencies' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { property: '" + it.util.escapeQuotes($property) + "', missingProperty: '" + $missingProperty + "', depsCount: " + $deps.length + ", deps: '" + it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", ")) + "' } "; if (it.opts.messages !== false) { out += " , message: 'should have "; if ($deps.length == 1) { out += "property " + it.util.escapeQuotes($deps[0]); } else { out += "properties " + it.util.escapeQuotes($deps.join(", ")); } out += " when property " + it.util.escapeQuotes($property) + " is present' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } } else { out += " ) { "; var arr2 = $deps; if (arr2) { var $propertyKey, i2 = -1, l2 = arr2.length - 1; while (i2 < l2) { $propertyKey = arr2[i2 += 1]; var $prop = it.util.getProperty($propertyKey), $missingProperty = it.util.escapeQuotes($propertyKey), $useData = $data + $prop; if (it.opts._errorDataPathProperty) { it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); } out += " if ( " + $useData + " === undefined "; if ($ownProperties) { out += " || ! Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($propertyKey) + "') "; } out += ") { var err = "; if (it.createErrors !== false) { out += " { keyword: 'dependencies' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { property: '" + it.util.escapeQuotes($property) + "', missingProperty: '" + $missingProperty + "', depsCount: " + $deps.length + ", deps: '" + it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", ")) + "' } "; if (it.opts.messages !== false) { out += " , message: 'should have "; if ($deps.length == 1) { out += "property " + it.util.escapeQuotes($deps[0]); } else { out += "properties " + it.util.escapeQuotes($deps.join(", ")); } out += " when property " + it.util.escapeQuotes($property) + " is present' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } out += "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "; } } } out += " } "; if ($breakOnError) { $closingBraces += "}"; out += " else { "; } } } it.errorPath = $currentErrorPath; var $currentBaseId = $it.baseId; for (var $property in $schemaDeps) { var $sch = $schemaDeps[$property]; if (it.opts.strictKeywords ? typeof $sch == "object" && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)) { out += " " + $nextValid + " = true; if ( " + $data + it.util.getProperty($property) + " !== undefined "; if ($ownProperties) { out += " && Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($property) + "') "; } out += ") { "; $it.schema = $sch; $it.schemaPath = $schemaPath + it.util.getProperty($property); $it.errSchemaPath = $errSchemaPath + "/" + it.util.escapeFragment($property); out += " " + it.validate($it) + " "; $it.baseId = $currentBaseId; out += " } "; if ($breakOnError) { out += " if (" + $nextValid + ") { "; $closingBraces += "}"; } } } if ($breakOnError) { out += " " + $closingBraces + " if (" + $errs + " == errors) {"; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/enum.js var require_enum = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/enum.js"(exports2, module2) { "use strict"; module2.exports = function generate_enum(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } var $i = "i" + $lvl, $vSchema = "schema" + $lvl; if (!$isData) { out += " var " + $vSchema + " = validate.schema" + $schemaPath + ";"; } out += "var " + $valid + ";"; if ($isData) { out += " if (schema" + $lvl + " === undefined) " + $valid + " = true; else if (!Array.isArray(schema" + $lvl + ")) " + $valid + " = false; else {"; } out += "" + $valid + " = false;for (var " + $i + "=0; " + $i + "<" + $vSchema + ".length; " + $i + "++) if (equal(" + $data + ", " + $vSchema + "[" + $i + "])) { " + $valid + " = true; break; }"; if ($isData) { out += " } "; } out += " if (!" + $valid + ") { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'enum' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { allowedValues: schema" + $lvl + " } "; if (it.opts.messages !== false) { out += " , message: 'should be equal to one of the allowed values' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " }"; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/format.js var require_format = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/format.js"(exports2, module2) { "use strict"; module2.exports = function generate_format(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); if (it.opts.format === false) { if ($breakOnError) { out += " if (true) { "; } return out; } var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } var $unknownFormats = it.opts.unknownFormats, $allowUnknown = Array.isArray($unknownFormats); if ($isData) { var $format = "format" + $lvl, $isObject = "isObject" + $lvl, $formatType = "formatType" + $lvl; out += " var " + $format + " = formats[" + $schemaValue + "]; var " + $isObject + " = typeof " + $format + " == 'object' && !(" + $format + " instanceof RegExp) && " + $format + ".validate; var " + $formatType + " = " + $isObject + " && " + $format + ".type || 'string'; if (" + $isObject + ") { "; if (it.async) { out += " var async" + $lvl + " = " + $format + ".async; "; } out += " " + $format + " = " + $format + ".validate; } if ( "; if ($isData) { out += " (" + $schemaValue + " !== undefined && typeof " + $schemaValue + " != 'string') || "; } out += " ("; if ($unknownFormats != "ignore") { out += " (" + $schemaValue + " && !" + $format + " "; if ($allowUnknown) { out += " && self._opts.unknownFormats.indexOf(" + $schemaValue + ") == -1 "; } out += ") || "; } out += " (" + $format + " && " + $formatType + " == '" + $ruleType + "' && !(typeof " + $format + " == 'function' ? "; if (it.async) { out += " (async" + $lvl + " ? await " + $format + "(" + $data + ") : " + $format + "(" + $data + ")) "; } else { out += " " + $format + "(" + $data + ") "; } out += " : " + $format + ".test(" + $data + "))))) {"; } else { var $format = it.formats[$schema]; if (!$format) { if ($unknownFormats == "ignore") { it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); if ($breakOnError) { out += " if (true) { "; } return out; } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { if ($breakOnError) { out += " if (true) { "; } return out; } else { throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); } } var $isObject = typeof $format == "object" && !($format instanceof RegExp) && $format.validate; var $formatType = $isObject && $format.type || "string"; if ($isObject) { var $async = $format.async === true; $format = $format.validate; } if ($formatType != $ruleType) { if ($breakOnError) { out += " if (true) { "; } return out; } if ($async) { if (!it.async) throw new Error("async format in sync schema"); var $formatRef = "formats" + it.util.getProperty($schema) + ".validate"; out += " if (!(await " + $formatRef + "(" + $data + "))) { "; } else { out += " if (! "; var $formatRef = "formats" + it.util.getProperty($schema); if ($isObject) $formatRef += ".validate"; if (typeof $format == "function") { out += " " + $formatRef + "(" + $data + ") "; } else { out += " " + $formatRef + ".test(" + $data + ") "; } out += ") { "; } } var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'format' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { format: "; if ($isData) { out += "" + $schemaValue; } else { out += "" + it.util.toQuotedString($schema); } out += " } "; if (it.opts.messages !== false) { out += ` , message: 'should match format "`; if ($isData) { out += "' + " + $schemaValue + " + '"; } else { out += "" + it.util.escapeQuotes($schema); } out += `"' `; } if (it.opts.verbose) { out += " , schema: "; if ($isData) { out += "validate.schema" + $schemaPath; } else { out += "" + it.util.toQuotedString($schema); } out += " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } "; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/if.js var require_if = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/if.js"(exports2, module2) { "use strict"; module2.exports = function generate_if(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $errs = "errs__" + $lvl; var $it = it.util.copy(it); $it.level++; var $nextValid = "valid" + $it.level; var $thenSch = it.schema["then"], $elseSch = it.schema["else"], $thenPresent = $thenSch !== void 0 && (it.opts.strictKeywords ? typeof $thenSch == "object" && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)), $elsePresent = $elseSch !== void 0 && (it.opts.strictKeywords ? typeof $elseSch == "object" && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)), $currentBaseId = $it.baseId; if ($thenPresent || $elsePresent) { var $ifClause; $it.createErrors = false; $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; out += " var " + $errs + " = errors; var " + $valid + " = true; "; var $wasComposite = it.compositeRule; it.compositeRule = $it.compositeRule = true; out += " " + it.validate($it) + " "; $it.baseId = $currentBaseId; $it.createErrors = true; out += " errors = " + $errs + "; if (vErrors !== null) { if (" + $errs + ") vErrors.length = " + $errs + "; else vErrors = null; } "; it.compositeRule = $it.compositeRule = $wasComposite; if ($thenPresent) { out += " if (" + $nextValid + ") { "; $it.schema = it.schema["then"]; $it.schemaPath = it.schemaPath + ".then"; $it.errSchemaPath = it.errSchemaPath + "/then"; out += " " + it.validate($it) + " "; $it.baseId = $currentBaseId; out += " " + $valid + " = " + $nextValid + "; "; if ($thenPresent && $elsePresent) { $ifClause = "ifClause" + $lvl; out += " var " + $ifClause + " = 'then'; "; } else { $ifClause = "'then'"; } out += " } "; if ($elsePresent) { out += " else { "; } } else { out += " if (!" + $nextValid + ") { "; } if ($elsePresent) { $it.schema = it.schema["else"]; $it.schemaPath = it.schemaPath + ".else"; $it.errSchemaPath = it.errSchemaPath + "/else"; out += " " + it.validate($it) + " "; $it.baseId = $currentBaseId; out += " " + $valid + " = " + $nextValid + "; "; if ($thenPresent && $elsePresent) { $ifClause = "ifClause" + $lvl; out += " var " + $ifClause + " = 'else'; "; } else { $ifClause = "'else'"; } out += " } "; } out += " if (!" + $valid + ") { var err = "; if (it.createErrors !== false) { out += " { keyword: 'if' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { failingKeyword: " + $ifClause + " } "; if (it.opts.messages !== false) { out += ` , message: 'should match "' + ` + $ifClause + ` + '" schema' `; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } out += "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError(vErrors); "; } else { out += " validate.errors = vErrors; return false; "; } } out += " } "; if ($breakOnError) { out += " else { "; } } else { if ($breakOnError) { out += " if (true) { "; } } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/items.js var require_items = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/items.js"(exports2, module2) { "use strict"; module2.exports = function generate_items(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $errs = "errs__" + $lvl; var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; var $idx = "i" + $lvl, $dataNxt = $it.dataLevel = it.dataLevel + 1, $nextData = "data" + $dataNxt, $currentBaseId = it.baseId; out += "var " + $errs + " = errors;var " + $valid + ";"; if (Array.isArray($schema)) { var $additionalItems = it.schema.additionalItems; if ($additionalItems === false) { out += " " + $valid + " = " + $data + ".length <= " + $schema.length + "; "; var $currErrSchemaPath = $errSchemaPath; $errSchemaPath = it.errSchemaPath + "/additionalItems"; out += " if (!" + $valid + ") { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'additionalItems' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { limit: " + $schema.length + " } "; if (it.opts.messages !== false) { out += " , message: 'should NOT have more than " + $schema.length + " items' "; } if (it.opts.verbose) { out += " , schema: false , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } "; $errSchemaPath = $currErrSchemaPath; if ($breakOnError) { $closingBraces += "}"; out += " else { "; } } var arr1 = $schema; if (arr1) { var $sch, $i = -1, l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; if (it.opts.strictKeywords ? typeof $sch == "object" && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)) { out += " " + $nextValid + " = true; if (" + $data + ".length > " + $i + ") { "; var $passData = $data + "[" + $i + "]"; $it.schema = $sch; $it.schemaPath = $schemaPath + "[" + $i + "]"; $it.errSchemaPath = $errSchemaPath + "/" + $i; $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); $it.dataPathArr[$dataNxt] = $i; var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { out += " " + it.util.varReplace($code, $nextData, $passData) + " "; } else { out += " var " + $nextData + " = " + $passData + "; " + $code + " "; } out += " } "; if ($breakOnError) { out += " if (" + $nextValid + ") { "; $closingBraces += "}"; } } } } if (typeof $additionalItems == "object" && (it.opts.strictKeywords ? typeof $additionalItems == "object" && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) { $it.schema = $additionalItems; $it.schemaPath = it.schemaPath + ".additionalItems"; $it.errSchemaPath = it.errSchemaPath + "/additionalItems"; out += " " + $nextValid + " = true; if (" + $data + ".length > " + $schema.length + ") { for (var " + $idx + " = " + $schema.length + "; " + $idx + " < " + $data + ".length; " + $idx + "++) { "; $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); var $passData = $data + "[" + $idx + "]"; $it.dataPathArr[$dataNxt] = $idx; var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { out += " " + it.util.varReplace($code, $nextData, $passData) + " "; } else { out += " var " + $nextData + " = " + $passData + "; " + $code + " "; } if ($breakOnError) { out += " if (!" + $nextValid + ") break; "; } out += " } } "; if ($breakOnError) { out += " if (" + $nextValid + ") { "; $closingBraces += "}"; } } } else if (it.opts.strictKeywords ? typeof $schema == "object" && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all)) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; out += " for (var " + $idx + " = 0; " + $idx + " < " + $data + ".length; " + $idx + "++) { "; $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); var $passData = $data + "[" + $idx + "]"; $it.dataPathArr[$dataNxt] = $idx; var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { out += " " + it.util.varReplace($code, $nextData, $passData) + " "; } else { out += " var " + $nextData + " = " + $passData + "; " + $code + " "; } if ($breakOnError) { out += " if (!" + $nextValid + ") break; "; } out += " }"; } if ($breakOnError) { out += " " + $closingBraces + " if (" + $errs + " == errors) {"; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/_limit.js var require_limit = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/_limit.js"(exports2, module2) { "use strict"; module2.exports = function generate__limit(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $errorKeyword; var $data = "data" + ($dataLvl || ""); var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } var $isMax = $keyword == "maximum", $exclusiveKeyword = $isMax ? "exclusiveMaximum" : "exclusiveMinimum", $schemaExcl = it.schema[$exclusiveKeyword], $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data, $op = $isMax ? "<" : ">", $notOp = $isMax ? ">" : "<", $errorKeyword = void 0; if (!($isData || typeof $schema == "number" || $schema === void 0)) { throw new Error($keyword + " must be number"); } if (!($isDataExcl || $schemaExcl === void 0 || typeof $schemaExcl == "number" || typeof $schemaExcl == "boolean")) { throw new Error($exclusiveKeyword + " must be number or boolean"); } if ($isDataExcl) { var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), $exclusive = "exclusive" + $lvl, $exclType = "exclType" + $lvl, $exclIsNumber = "exclIsNumber" + $lvl, $opExpr = "op" + $lvl, $opStr = "' + " + $opExpr + " + '"; out += " var schemaExcl" + $lvl + " = " + $schemaValueExcl + "; "; $schemaValueExcl = "schemaExcl" + $lvl; out += " var " + $exclusive + "; var " + $exclType + " = typeof " + $schemaValueExcl + "; if (" + $exclType + " != 'boolean' && " + $exclType + " != 'undefined' && " + $exclType + " != 'number') { "; var $errorKeyword = $exclusiveKeyword; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "_exclusiveLimit") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: {} "; if (it.opts.messages !== false) { out += " , message: '" + $exclusiveKeyword + " should be boolean' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } else if ( "; if ($isData) { out += " (" + $schemaValue + " !== undefined && typeof " + $schemaValue + " != 'number') || "; } out += " " + $exclType + " == 'number' ? ( (" + $exclusive + " = " + $schemaValue + " === undefined || " + $schemaValueExcl + " " + $op + "= " + $schemaValue + ") ? " + $data + " " + $notOp + "= " + $schemaValueExcl + " : " + $data + " " + $notOp + " " + $schemaValue + " ) : ( (" + $exclusive + " = " + $schemaValueExcl + " === true) ? " + $data + " " + $notOp + "= " + $schemaValue + " : " + $data + " " + $notOp + " " + $schemaValue + " ) || " + $data + " !== " + $data + ") { var op" + $lvl + " = " + $exclusive + " ? '" + $op + "' : '" + $op + "='; "; if ($schema === void 0) { $errorKeyword = $exclusiveKeyword; $errSchemaPath = it.errSchemaPath + "/" + $exclusiveKeyword; $schemaValue = $schemaValueExcl; $isData = $isDataExcl; } } else { var $exclIsNumber = typeof $schemaExcl == "number", $opStr = $op; if ($exclIsNumber && $isData) { var $opExpr = "'" + $opStr + "'"; out += " if ( "; if ($isData) { out += " (" + $schemaValue + " !== undefined && typeof " + $schemaValue + " != 'number') || "; } out += " ( " + $schemaValue + " === undefined || " + $schemaExcl + " " + $op + "= " + $schemaValue + " ? " + $data + " " + $notOp + "= " + $schemaExcl + " : " + $data + " " + $notOp + " " + $schemaValue + " ) || " + $data + " !== " + $data + ") { "; } else { if ($exclIsNumber && $schema === void 0) { $exclusive = true; $errorKeyword = $exclusiveKeyword; $errSchemaPath = it.errSchemaPath + "/" + $exclusiveKeyword; $schemaValue = $schemaExcl; $notOp += "="; } else { if ($exclIsNumber) $schemaValue = Math[$isMax ? "min" : "max"]($schemaExcl, $schema); if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { $exclusive = true; $errorKeyword = $exclusiveKeyword; $errSchemaPath = it.errSchemaPath + "/" + $exclusiveKeyword; $notOp += "="; } else { $exclusive = false; $opStr += "="; } } var $opExpr = "'" + $opStr + "'"; out += " if ( "; if ($isData) { out += " (" + $schemaValue + " !== undefined && typeof " + $schemaValue + " != 'number') || "; } out += " " + $data + " " + $notOp + " " + $schemaValue + " || " + $data + " !== " + $data + ") { "; } } $errorKeyword = $errorKeyword || $keyword; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "_limit") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { comparison: " + $opExpr + ", limit: " + $schemaValue + ", exclusive: " + $exclusive + " } "; if (it.opts.messages !== false) { out += " , message: 'should be " + $opStr + " "; if ($isData) { out += "' + " + $schemaValue; } else { out += "" + $schemaValue + "'"; } } if (it.opts.verbose) { out += " , schema: "; if ($isData) { out += "validate.schema" + $schemaPath; } else { out += "" + $schema; } out += " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } "; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/_limitItems.js var require_limitItems = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/_limitItems.js"(exports2, module2) { "use strict"; module2.exports = function generate__limitItems(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $errorKeyword; var $data = "data" + ($dataLvl || ""); var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } if (!($isData || typeof $schema == "number")) { throw new Error($keyword + " must be number"); } var $op = $keyword == "maxItems" ? ">" : "<"; out += "if ( "; if ($isData) { out += " (" + $schemaValue + " !== undefined && typeof " + $schemaValue + " != 'number') || "; } out += " " + $data + ".length " + $op + " " + $schemaValue + ") { "; var $errorKeyword = $keyword; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "_limitItems") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { limit: " + $schemaValue + " } "; if (it.opts.messages !== false) { out += " , message: 'should NOT have "; if ($keyword == "maxItems") { out += "more"; } else { out += "fewer"; } out += " than "; if ($isData) { out += "' + " + $schemaValue + " + '"; } else { out += "" + $schema; } out += " items' "; } if (it.opts.verbose) { out += " , schema: "; if ($isData) { out += "validate.schema" + $schemaPath; } else { out += "" + $schema; } out += " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += "} "; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/_limitLength.js var require_limitLength = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/_limitLength.js"(exports2, module2) { "use strict"; module2.exports = function generate__limitLength(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $errorKeyword; var $data = "data" + ($dataLvl || ""); var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } if (!($isData || typeof $schema == "number")) { throw new Error($keyword + " must be number"); } var $op = $keyword == "maxLength" ? ">" : "<"; out += "if ( "; if ($isData) { out += " (" + $schemaValue + " !== undefined && typeof " + $schemaValue + " != 'number') || "; } if (it.opts.unicode === false) { out += " " + $data + ".length "; } else { out += " ucs2length(" + $data + ") "; } out += " " + $op + " " + $schemaValue + ") { "; var $errorKeyword = $keyword; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "_limitLength") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { limit: " + $schemaValue + " } "; if (it.opts.messages !== false) { out += " , message: 'should NOT be "; if ($keyword == "maxLength") { out += "longer"; } else { out += "shorter"; } out += " than "; if ($isData) { out += "' + " + $schemaValue + " + '"; } else { out += "" + $schema; } out += " characters' "; } if (it.opts.verbose) { out += " , schema: "; if ($isData) { out += "validate.schema" + $schemaPath; } else { out += "" + $schema; } out += " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += "} "; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/_limitProperties.js var require_limitProperties = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/_limitProperties.js"(exports2, module2) { "use strict"; module2.exports = function generate__limitProperties(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $errorKeyword; var $data = "data" + ($dataLvl || ""); var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } if (!($isData || typeof $schema == "number")) { throw new Error($keyword + " must be number"); } var $op = $keyword == "maxProperties" ? ">" : "<"; out += "if ( "; if ($isData) { out += " (" + $schemaValue + " !== undefined && typeof " + $schemaValue + " != 'number') || "; } out += " Object.keys(" + $data + ").length " + $op + " " + $schemaValue + ") { "; var $errorKeyword = $keyword; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "_limitProperties") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { limit: " + $schemaValue + " } "; if (it.opts.messages !== false) { out += " , message: 'should NOT have "; if ($keyword == "maxProperties") { out += "more"; } else { out += "fewer"; } out += " than "; if ($isData) { out += "' + " + $schemaValue + " + '"; } else { out += "" + $schema; } out += " properties' "; } if (it.opts.verbose) { out += " , schema: "; if ($isData) { out += "validate.schema" + $schemaPath; } else { out += "" + $schema; } out += " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += "} "; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/multipleOf.js var require_multipleOf = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/multipleOf.js"(exports2, module2) { "use strict"; module2.exports = function generate_multipleOf(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } if (!($isData || typeof $schema == "number")) { throw new Error($keyword + " must be number"); } out += "var division" + $lvl + ";if ("; if ($isData) { out += " " + $schemaValue + " !== undefined && ( typeof " + $schemaValue + " != 'number' || "; } out += " (division" + $lvl + " = " + $data + " / " + $schemaValue + ", "; if (it.opts.multipleOfPrecision) { out += " Math.abs(Math.round(division" + $lvl + ") - division" + $lvl + ") > 1e-" + it.opts.multipleOfPrecision + " "; } else { out += " division" + $lvl + " !== parseInt(division" + $lvl + ") "; } out += " ) "; if ($isData) { out += " ) "; } out += " ) { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'multipleOf' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { multipleOf: " + $schemaValue + " } "; if (it.opts.messages !== false) { out += " , message: 'should be multiple of "; if ($isData) { out += "' + " + $schemaValue; } else { out += "" + $schemaValue + "'"; } } if (it.opts.verbose) { out += " , schema: "; if ($isData) { out += "validate.schema" + $schemaPath; } else { out += "" + $schema; } out += " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += "} "; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/not.js var require_not = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/not.js"(exports2, module2) { "use strict"; module2.exports = function generate_not(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $errs = "errs__" + $lvl; var $it = it.util.copy(it); $it.level++; var $nextValid = "valid" + $it.level; if (it.opts.strictKeywords ? typeof $schema == "object" && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all)) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; out += " var " + $errs + " = errors; "; var $wasComposite = it.compositeRule; it.compositeRule = $it.compositeRule = true; $it.createErrors = false; var $allErrorsOption; if ($it.opts.allErrors) { $allErrorsOption = $it.opts.allErrors; $it.opts.allErrors = false; } out += " " + it.validate($it) + " "; $it.createErrors = true; if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; it.compositeRule = $it.compositeRule = $wasComposite; out += " if (" + $nextValid + ") { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'not' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: {} "; if (it.opts.messages !== false) { out += " , message: 'should NOT be valid' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } else { errors = " + $errs + "; if (vErrors !== null) { if (" + $errs + ") vErrors.length = " + $errs + "; else vErrors = null; } "; if (it.opts.allErrors) { out += " } "; } } else { out += " var err = "; if (it.createErrors !== false) { out += " { keyword: 'not' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: {} "; if (it.opts.messages !== false) { out += " , message: 'should NOT be valid' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } out += "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; if ($breakOnError) { out += " if (false) { "; } } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/oneOf.js var require_oneOf = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/oneOf.js"(exports2, module2) { "use strict"; module2.exports = function generate_oneOf(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $errs = "errs__" + $lvl; var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; var $currentBaseId = $it.baseId, $prevValid = "prevValid" + $lvl, $passingSchemas = "passingSchemas" + $lvl; out += "var " + $errs + " = errors , " + $prevValid + " = false , " + $valid + " = false , " + $passingSchemas + " = null; "; var $wasComposite = it.compositeRule; it.compositeRule = $it.compositeRule = true; var arr1 = $schema; if (arr1) { var $sch, $i = -1, l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; if (it.opts.strictKeywords ? typeof $sch == "object" && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)) { $it.schema = $sch; $it.schemaPath = $schemaPath + "[" + $i + "]"; $it.errSchemaPath = $errSchemaPath + "/" + $i; out += " " + it.validate($it) + " "; $it.baseId = $currentBaseId; } else { out += " var " + $nextValid + " = true; "; } if ($i) { out += " if (" + $nextValid + " && " + $prevValid + ") { " + $valid + " = false; " + $passingSchemas + " = [" + $passingSchemas + ", " + $i + "]; } else { "; $closingBraces += "}"; } out += " if (" + $nextValid + ") { " + $valid + " = " + $prevValid + " = true; " + $passingSchemas + " = " + $i + "; }"; } } it.compositeRule = $it.compositeRule = $wasComposite; out += "" + $closingBraces + "if (!" + $valid + ") { var err = "; if (it.createErrors !== false) { out += " { keyword: 'oneOf' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { passingSchemas: " + $passingSchemas + " } "; if (it.opts.messages !== false) { out += " , message: 'should match exactly one schema in oneOf' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } out += "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError(vErrors); "; } else { out += " validate.errors = vErrors; return false; "; } } out += "} else { errors = " + $errs + "; if (vErrors !== null) { if (" + $errs + ") vErrors.length = " + $errs + "; else vErrors = null; }"; if (it.opts.allErrors) { out += " } "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/pattern.js var require_pattern2 = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/pattern.js"(exports2, module2) { "use strict"; module2.exports = function generate_pattern(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } var $regexp = $isData ? "(new RegExp(" + $schemaValue + "))" : it.usePattern($schema); out += "if ( "; if ($isData) { out += " (" + $schemaValue + " !== undefined && typeof " + $schemaValue + " != 'string') || "; } out += " !" + $regexp + ".test(" + $data + ") ) { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'pattern' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { pattern: "; if ($isData) { out += "" + $schemaValue; } else { out += "" + it.util.toQuotedString($schema); } out += " } "; if (it.opts.messages !== false) { out += ` , message: 'should match pattern "`; if ($isData) { out += "' + " + $schemaValue + " + '"; } else { out += "" + it.util.escapeQuotes($schema); } out += `"' `; } if (it.opts.verbose) { out += " , schema: "; if ($isData) { out += "validate.schema" + $schemaPath; } else { out += "" + it.util.toQuotedString($schema); } out += " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += "} "; if ($breakOnError) { out += " else { "; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/properties.js var require_properties = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/properties.js"(exports2, module2) { "use strict"; module2.exports = function generate_properties(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $errs = "errs__" + $lvl; var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; var $key = "key" + $lvl, $idx = "idx" + $lvl, $dataNxt = $it.dataLevel = it.dataLevel + 1, $nextData = "data" + $dataNxt, $dataProperties = "dataProperties" + $lvl; var $schemaKeys = Object.keys($schema || {}).filter(notProto), $pProperties = it.schema.patternProperties || {}, $pPropertyKeys = Object.keys($pProperties).filter(notProto), $aProperties = it.schema.additionalProperties, $someProperties = $schemaKeys.length || $pPropertyKeys.length, $noAdditional = $aProperties === false, $additionalIsSchema = typeof $aProperties == "object" && Object.keys($aProperties).length, $removeAdditional = it.opts.removeAdditional, $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, $ownProperties = it.opts.ownProperties, $currentBaseId = it.baseId; var $required = it.schema.required; if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) { var $requiredHash = it.util.toHash($required); } function notProto(p) { return p !== "__proto__"; } out += "var " + $errs + " = errors;var " + $nextValid + " = true;"; if ($ownProperties) { out += " var " + $dataProperties + " = undefined;"; } if ($checkAdditional) { if ($ownProperties) { out += " " + $dataProperties + " = " + $dataProperties + " || Object.keys(" + $data + "); for (var " + $idx + "=0; " + $idx + "<" + $dataProperties + ".length; " + $idx + "++) { var " + $key + " = " + $dataProperties + "[" + $idx + "]; "; } else { out += " for (var " + $key + " in " + $data + ") { "; } if ($someProperties) { out += " var isAdditional" + $lvl + " = !(false "; if ($schemaKeys.length) { if ($schemaKeys.length > 8) { out += " || validate.schema" + $schemaPath + ".hasOwnProperty(" + $key + ") "; } else { var arr1 = $schemaKeys; if (arr1) { var $propertyKey, i1 = -1, l1 = arr1.length - 1; while (i1 < l1) { $propertyKey = arr1[i1 += 1]; out += " || " + $key + " == " + it.util.toQuotedString($propertyKey) + " "; } } } } if ($pPropertyKeys.length) { var arr2 = $pPropertyKeys; if (arr2) { var $pProperty, $i = -1, l2 = arr2.length - 1; while ($i < l2) { $pProperty = arr2[$i += 1]; out += " || " + it.usePattern($pProperty) + ".test(" + $key + ") "; } } } out += " ); if (isAdditional" + $lvl + ") { "; } if ($removeAdditional == "all") { out += " delete " + $data + "[" + $key + "]; "; } else { var $currentErrorPath = it.errorPath; var $additionalProperty = "' + " + $key + " + '"; if (it.opts._errorDataPathProperty) { it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); } if ($noAdditional) { if ($removeAdditional) { out += " delete " + $data + "[" + $key + "]; "; } else { out += " " + $nextValid + " = false; "; var $currErrSchemaPath = $errSchemaPath; $errSchemaPath = it.errSchemaPath + "/additionalProperties"; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'additionalProperties' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { additionalProperty: '" + $additionalProperty + "' } "; if (it.opts.messages !== false) { out += " , message: '"; if (it.opts._errorDataPathProperty) { out += "is an invalid additional property"; } else { out += "should NOT have additional properties"; } out += "' "; } if (it.opts.verbose) { out += " , schema: false , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } $errSchemaPath = $currErrSchemaPath; if ($breakOnError) { out += " break; "; } } } else if ($additionalIsSchema) { if ($removeAdditional == "failing") { out += " var " + $errs + " = errors; "; var $wasComposite = it.compositeRule; it.compositeRule = $it.compositeRule = true; $it.schema = $aProperties; $it.schemaPath = it.schemaPath + ".additionalProperties"; $it.errSchemaPath = it.errSchemaPath + "/additionalProperties"; $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); var $passData = $data + "[" + $key + "]"; $it.dataPathArr[$dataNxt] = $key; var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { out += " " + it.util.varReplace($code, $nextData, $passData) + " "; } else { out += " var " + $nextData + " = " + $passData + "; " + $code + " "; } out += " if (!" + $nextValid + ") { errors = " + $errs + "; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete " + $data + "[" + $key + "]; } "; it.compositeRule = $it.compositeRule = $wasComposite; } else { $it.schema = $aProperties; $it.schemaPath = it.schemaPath + ".additionalProperties"; $it.errSchemaPath = it.errSchemaPath + "/additionalProperties"; $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); var $passData = $data + "[" + $key + "]"; $it.dataPathArr[$dataNxt] = $key; var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { out += " " + it.util.varReplace($code, $nextData, $passData) + " "; } else { out += " var " + $nextData + " = " + $passData + "; " + $code + " "; } if ($breakOnError) { out += " if (!" + $nextValid + ") break; "; } } } it.errorPath = $currentErrorPath; } if ($someProperties) { out += " } "; } out += " } "; if ($breakOnError) { out += " if (" + $nextValid + ") { "; $closingBraces += "}"; } } var $useDefaults = it.opts.useDefaults && !it.compositeRule; if ($schemaKeys.length) { var arr3 = $schemaKeys; if (arr3) { var $propertyKey, i3 = -1, l3 = arr3.length - 1; while (i3 < l3) { $propertyKey = arr3[i3 += 1]; var $sch = $schema[$propertyKey]; if (it.opts.strictKeywords ? typeof $sch == "object" && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)) { var $prop = it.util.getProperty($propertyKey), $passData = $data + $prop, $hasDefault = $useDefaults && $sch.default !== void 0; $it.schema = $sch; $it.schemaPath = $schemaPath + $prop; $it.errSchemaPath = $errSchemaPath + "/" + it.util.escapeFragment($propertyKey); $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { $code = it.util.varReplace($code, $nextData, $passData); var $useData = $passData; } else { var $useData = $nextData; out += " var " + $nextData + " = " + $passData + "; "; } if ($hasDefault) { out += " " + $code + " "; } else { if ($requiredHash && $requiredHash[$propertyKey]) { out += " if ( " + $useData + " === undefined "; if ($ownProperties) { out += " || ! Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($propertyKey) + "') "; } out += ") { " + $nextValid + " = false; "; var $currentErrorPath = it.errorPath, $currErrSchemaPath = $errSchemaPath, $missingProperty = it.util.escapeQuotes($propertyKey); if (it.opts._errorDataPathProperty) { it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); } $errSchemaPath = it.errSchemaPath + "/required"; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'required' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { missingProperty: '" + $missingProperty + "' } "; if (it.opts.messages !== false) { out += " , message: '"; if (it.opts._errorDataPathProperty) { out += "is a required property"; } else { out += "should have required property \\'" + $missingProperty + "\\'"; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } $errSchemaPath = $currErrSchemaPath; it.errorPath = $currentErrorPath; out += " } else { "; } else { if ($breakOnError) { out += " if ( " + $useData + " === undefined "; if ($ownProperties) { out += " || ! Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($propertyKey) + "') "; } out += ") { " + $nextValid + " = true; } else { "; } else { out += " if (" + $useData + " !== undefined "; if ($ownProperties) { out += " && Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($propertyKey) + "') "; } out += " ) { "; } } out += " " + $code + " } "; } } if ($breakOnError) { out += " if (" + $nextValid + ") { "; $closingBraces += "}"; } } } } if ($pPropertyKeys.length) { var arr4 = $pPropertyKeys; if (arr4) { var $pProperty, i4 = -1, l4 = arr4.length - 1; while (i4 < l4) { $pProperty = arr4[i4 += 1]; var $sch = $pProperties[$pProperty]; if (it.opts.strictKeywords ? typeof $sch == "object" && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)) { $it.schema = $sch; $it.schemaPath = it.schemaPath + ".patternProperties" + it.util.getProperty($pProperty); $it.errSchemaPath = it.errSchemaPath + "/patternProperties/" + it.util.escapeFragment($pProperty); if ($ownProperties) { out += " " + $dataProperties + " = " + $dataProperties + " || Object.keys(" + $data + "); for (var " + $idx + "=0; " + $idx + "<" + $dataProperties + ".length; " + $idx + "++) { var " + $key + " = " + $dataProperties + "[" + $idx + "]; "; } else { out += " for (var " + $key + " in " + $data + ") { "; } out += " if (" + it.usePattern($pProperty) + ".test(" + $key + ")) { "; $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); var $passData = $data + "[" + $key + "]"; $it.dataPathArr[$dataNxt] = $key; var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { out += " " + it.util.varReplace($code, $nextData, $passData) + " "; } else { out += " var " + $nextData + " = " + $passData + "; " + $code + " "; } if ($breakOnError) { out += " if (!" + $nextValid + ") break; "; } out += " } "; if ($breakOnError) { out += " else " + $nextValid + " = true; "; } out += " } "; if ($breakOnError) { out += " if (" + $nextValid + ") { "; $closingBraces += "}"; } } } } } if ($breakOnError) { out += " " + $closingBraces + " if (" + $errs + " == errors) {"; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/propertyNames.js var require_propertyNames = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/propertyNames.js"(exports2, module2) { "use strict"; module2.exports = function generate_propertyNames(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $errs = "errs__" + $lvl; var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; out += "var " + $errs + " = errors;"; if (it.opts.strictKeywords ? typeof $schema == "object" && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all)) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; var $key = "key" + $lvl, $idx = "idx" + $lvl, $i = "i" + $lvl, $invalidName = "' + " + $key + " + '", $dataNxt = $it.dataLevel = it.dataLevel + 1, $nextData = "data" + $dataNxt, $dataProperties = "dataProperties" + $lvl, $ownProperties = it.opts.ownProperties, $currentBaseId = it.baseId; if ($ownProperties) { out += " var " + $dataProperties + " = undefined; "; } if ($ownProperties) { out += " " + $dataProperties + " = " + $dataProperties + " || Object.keys(" + $data + "); for (var " + $idx + "=0; " + $idx + "<" + $dataProperties + ".length; " + $idx + "++) { var " + $key + " = " + $dataProperties + "[" + $idx + "]; "; } else { out += " for (var " + $key + " in " + $data + ") { "; } out += " var startErrs" + $lvl + " = errors; "; var $passData = $key; var $wasComposite = it.compositeRule; it.compositeRule = $it.compositeRule = true; var $code = it.validate($it); $it.baseId = $currentBaseId; if (it.util.varOccurences($code, $nextData) < 2) { out += " " + it.util.varReplace($code, $nextData, $passData) + " "; } else { out += " var " + $nextData + " = " + $passData + "; " + $code + " "; } it.compositeRule = $it.compositeRule = $wasComposite; out += " if (!" + $nextValid + ") { for (var " + $i + "=startErrs" + $lvl + "; " + $i + " 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) { $required[$required.length] = $property; } } } } else { var $required = $schema; } } if ($isData || $required.length) { var $currentErrorPath = it.errorPath, $loopRequired = $isData || $required.length >= it.opts.loopRequired, $ownProperties = it.opts.ownProperties; if ($breakOnError) { out += " var missing" + $lvl + "; "; if ($loopRequired) { if (!$isData) { out += " var " + $vSchema + " = validate.schema" + $schemaPath + "; "; } var $i = "i" + $lvl, $propertyPath = "schema" + $lvl + "[" + $i + "]", $missingProperty = "' + " + $propertyPath + " + '"; if (it.opts._errorDataPathProperty) { it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); } out += " var " + $valid + " = true; "; if ($isData) { out += " if (schema" + $lvl + " === undefined) " + $valid + " = true; else if (!Array.isArray(schema" + $lvl + ")) " + $valid + " = false; else {"; } out += " for (var " + $i + " = 0; " + $i + " < " + $vSchema + ".length; " + $i + "++) { " + $valid + " = " + $data + "[" + $vSchema + "[" + $i + "]] !== undefined "; if ($ownProperties) { out += " && Object.prototype.hasOwnProperty.call(" + $data + ", " + $vSchema + "[" + $i + "]) "; } out += "; if (!" + $valid + ") break; } "; if ($isData) { out += " } "; } out += " if (!" + $valid + ") { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'required' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { missingProperty: '" + $missingProperty + "' } "; if (it.opts.messages !== false) { out += " , message: '"; if (it.opts._errorDataPathProperty) { out += "is a required property"; } else { out += "should have required property \\'" + $missingProperty + "\\'"; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } else { "; } else { out += " if ( "; var arr2 = $required; if (arr2) { var $propertyKey, $i = -1, l2 = arr2.length - 1; while ($i < l2) { $propertyKey = arr2[$i += 1]; if ($i) { out += " || "; } var $prop = it.util.getProperty($propertyKey), $useData = $data + $prop; out += " ( ( " + $useData + " === undefined "; if ($ownProperties) { out += " || ! Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($propertyKey) + "') "; } out += ") && (missing" + $lvl + " = " + it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop) + ") ) "; } } out += ") { "; var $propertyPath = "missing" + $lvl, $missingProperty = "' + " + $propertyPath + " + '"; if (it.opts._errorDataPathProperty) { it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + " + " + $propertyPath; } var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'required' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { missingProperty: '" + $missingProperty + "' } "; if (it.opts.messages !== false) { out += " , message: '"; if (it.opts._errorDataPathProperty) { out += "is a required property"; } else { out += "should have required property \\'" + $missingProperty + "\\'"; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } else { "; } } else { if ($loopRequired) { if (!$isData) { out += " var " + $vSchema + " = validate.schema" + $schemaPath + "; "; } var $i = "i" + $lvl, $propertyPath = "schema" + $lvl + "[" + $i + "]", $missingProperty = "' + " + $propertyPath + " + '"; if (it.opts._errorDataPathProperty) { it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); } if ($isData) { out += " if (" + $vSchema + " && !Array.isArray(" + $vSchema + ")) { var err = "; if (it.createErrors !== false) { out += " { keyword: 'required' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { missingProperty: '" + $missingProperty + "' } "; if (it.opts.messages !== false) { out += " , message: '"; if (it.opts._errorDataPathProperty) { out += "is a required property"; } else { out += "should have required property \\'" + $missingProperty + "\\'"; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } out += "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (" + $vSchema + " !== undefined) { "; } out += " for (var " + $i + " = 0; " + $i + " < " + $vSchema + ".length; " + $i + "++) { if (" + $data + "[" + $vSchema + "[" + $i + "]] === undefined "; if ($ownProperties) { out += " || ! Object.prototype.hasOwnProperty.call(" + $data + ", " + $vSchema + "[" + $i + "]) "; } out += ") { var err = "; if (it.createErrors !== false) { out += " { keyword: 'required' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { missingProperty: '" + $missingProperty + "' } "; if (it.opts.messages !== false) { out += " , message: '"; if (it.opts._errorDataPathProperty) { out += "is a required property"; } else { out += "should have required property \\'" + $missingProperty + "\\'"; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } out += "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } "; if ($isData) { out += " } "; } } else { var arr3 = $required; if (arr3) { var $propertyKey, i3 = -1, l3 = arr3.length - 1; while (i3 < l3) { $propertyKey = arr3[i3 += 1]; var $prop = it.util.getProperty($propertyKey), $missingProperty = it.util.escapeQuotes($propertyKey), $useData = $data + $prop; if (it.opts._errorDataPathProperty) { it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); } out += " if ( " + $useData + " === undefined "; if ($ownProperties) { out += " || ! Object.prototype.hasOwnProperty.call(" + $data + ", '" + it.util.escapeQuotes($propertyKey) + "') "; } out += ") { var err = "; if (it.createErrors !== false) { out += " { keyword: 'required' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { missingProperty: '" + $missingProperty + "' } "; if (it.opts.messages !== false) { out += " , message: '"; if (it.opts._errorDataPathProperty) { out += "is a required property"; } else { out += "should have required property \\'" + $missingProperty + "\\'"; } out += "' "; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } out += "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "; } } } } it.errorPath = $currentErrorPath; } else if ($breakOnError) { out += " if (true) {"; } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/uniqueItems.js var require_uniqueItems = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/uniqueItems.js"(exports2, module2) { "use strict"; module2.exports = function generate_uniqueItems(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } if (($schema || $isData) && it.opts.uniqueItems !== false) { if ($isData) { out += " var " + $valid + "; if (" + $schemaValue + " === false || " + $schemaValue + " === undefined) " + $valid + " = true; else if (typeof " + $schemaValue + " != 'boolean') " + $valid + " = false; else { "; } out += " var i = " + $data + ".length , " + $valid + " = true , j; if (i > 1) { "; var $itemType = it.schema.items && it.schema.items.type, $typeIsArray = Array.isArray($itemType); if (!$itemType || $itemType == "object" || $itemType == "array" || $typeIsArray && ($itemType.indexOf("object") >= 0 || $itemType.indexOf("array") >= 0)) { out += " outer: for (;i--;) { for (j = i; j--;) { if (equal(" + $data + "[i], " + $data + "[j])) { " + $valid + " = false; break outer; } } } "; } else { out += " var itemIndices = {}, item; for (;i--;) { var item = " + $data + "[i]; "; var $method = "checkDataType" + ($typeIsArray ? "s" : ""); out += " if (" + it.util[$method]($itemType, "item", it.opts.strictNumbers, true) + ") continue; "; if ($typeIsArray) { out += ` if (typeof item == 'string') item = '"' + item; `; } out += " if (typeof itemIndices[item] == 'number') { " + $valid + " = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "; } out += " } "; if ($isData) { out += " } "; } out += " if (!" + $valid + ") { "; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: 'uniqueItems' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { i: i, j: j } "; if (it.opts.messages !== false) { out += " , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "; } if (it.opts.verbose) { out += " , schema: "; if ($isData) { out += "validate.schema" + $schemaPath; } else { out += "" + $schema; } out += " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } out += " } "; if ($breakOnError) { out += " else { "; } } else { if ($breakOnError) { out += " if (true) { "; } } return out; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/index.js var require_dotjs = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/index.js"(exports2, module2) { "use strict"; module2.exports = { "$ref": require_ref(), allOf: require_allOf(), anyOf: require_anyOf(), "$comment": require_comment(), const: require_const(), contains: require_contains(), dependencies: require_dependencies(), "enum": require_enum(), format: require_format(), "if": require_if(), items: require_items(), maximum: require_limit(), minimum: require_limit(), maxItems: require_limitItems(), minItems: require_limitItems(), maxLength: require_limitLength(), minLength: require_limitLength(), maxProperties: require_limitProperties(), minProperties: require_limitProperties(), multipleOf: require_multipleOf(), not: require_not(), oneOf: require_oneOf(), pattern: require_pattern2(), properties: require_properties(), propertyNames: require_propertyNames(), required: require_required(), uniqueItems: require_uniqueItems(), validate: require_validate() }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/rules.js var require_rules = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/rules.js"(exports2, module2) { "use strict"; var ruleModules = require_dotjs(); var toHash = require_util4().toHash; module2.exports = function rules() { var RULES = [ { type: "number", rules: [ { "maximum": ["exclusiveMaximum"] }, { "minimum": ["exclusiveMinimum"] }, "multipleOf", "format" ] }, { type: "string", rules: ["maxLength", "minLength", "pattern", "format"] }, { type: "array", rules: ["maxItems", "minItems", "items", "contains", "uniqueItems"] }, { type: "object", rules: [ "maxProperties", "minProperties", "required", "dependencies", "propertyNames", { "properties": ["additionalProperties", "patternProperties"] } ] }, { rules: ["$ref", "const", "enum", "not", "anyOf", "oneOf", "allOf", "if"] } ]; var ALL = ["type", "$comment"]; var KEYWORDS = [ "$schema", "$id", "id", "$data", "$async", "title", "description", "default", "definitions", "examples", "readOnly", "writeOnly", "contentMediaType", "contentEncoding", "additionalItems", "then", "else" ]; var TYPES = ["number", "integer", "string", "array", "object", "boolean", "null"]; RULES.all = toHash(ALL); RULES.types = toHash(TYPES); RULES.forEach(function(group) { group.rules = group.rules.map(function(keyword) { var implKeywords; if (typeof keyword == "object") { var key = Object.keys(keyword)[0]; implKeywords = keyword[key]; keyword = key; implKeywords.forEach(function(k) { ALL.push(k); RULES.all[k] = true; }); } ALL.push(keyword); var rule = RULES.all[keyword] = { keyword, code: ruleModules[keyword], implements: implKeywords }; return rule; }); RULES.all.$comment = { keyword: "$comment", code: ruleModules.$comment }; if (group.type) RULES.types[group.type] = group; }); RULES.keywords = toHash(ALL.concat(KEYWORDS)); RULES.custom = {}; return RULES; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/data.js var require_data = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/data.js"(exports2, module2) { "use strict"; var KEYWORDS = [ "multipleOf", "maximum", "exclusiveMaximum", "minimum", "exclusiveMinimum", "maxLength", "minLength", "pattern", "additionalItems", "maxItems", "minItems", "uniqueItems", "maxProperties", "minProperties", "required", "additionalProperties", "enum", "format", "const" ]; module2.exports = function(metaSchema, keywordsJsonPointers) { for (var i = 0; i < keywordsJsonPointers.length; i++) { metaSchema = JSON.parse(JSON.stringify(metaSchema)); var segments = keywordsJsonPointers[i].split("/"); var keywords = metaSchema; var j; for (j = 1; j < segments.length; j++) keywords = keywords[segments[j]]; for (j = 0; j < KEYWORDS.length; j++) { var key = KEYWORDS[j]; var schema = keywords[key]; if (schema) { keywords[key] = { anyOf: [ schema, { $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#" } ] }; } } } return metaSchema; }; } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/async.js var require_async8 = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/compile/async.js"(exports2, module2) { "use strict"; var MissingRefError = require_error_classes().MissingRef; module2.exports = compileAsync; function compileAsync(schema, meta, callback) { var self2 = this; if (typeof this._opts.loadSchema != "function") throw new Error("options.loadSchema should be a function"); if (typeof meta == "function") { callback = meta; meta = void 0; } var p = loadMetaSchemaOf(schema).then(function() { var schemaObj = self2._addSchema(schema, void 0, meta); return schemaObj.validate || _compileAsync(schemaObj); }); if (callback) { p.then( function(v) { callback(null, v); }, callback ); } return p; function loadMetaSchemaOf(sch) { var $schema = sch.$schema; return $schema && !self2.getSchema($schema) ? compileAsync.call(self2, { $ref: $schema }, true) : Promise.resolve(); } function _compileAsync(schemaObj) { try { return self2._compile(schemaObj); } catch (e2) { if (e2 instanceof MissingRefError) return loadMissingSchema(e2); throw e2; } function loadMissingSchema(e2) { var ref = e2.missingSchema; if (added(ref)) throw new Error("Schema " + ref + " is loaded but " + e2.missingRef + " cannot be resolved"); var schemaPromise = self2._loadingSchemas[ref]; if (!schemaPromise) { schemaPromise = self2._loadingSchemas[ref] = self2._opts.loadSchema(ref); schemaPromise.then(removePromise, removePromise); } return schemaPromise.then(function(sch) { if (!added(ref)) { return loadMetaSchemaOf(sch).then(function() { if (!added(ref)) self2.addSchema(sch, ref, void 0, meta); }); } }).then(function() { return _compileAsync(schemaObj); }); function removePromise() { delete self2._loadingSchemas[ref]; } function added(ref2) { return self2._refs[ref2] || self2._schemas[ref2]; } } } } } }); // ../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/custom.js var require_custom = __commonJS2({ "../../node_modules/.pnpm/ajv@6.12.3/node_modules/ajv/lib/dotjs/custom.js"(exports2, module2) { "use strict"; module2.exports = function generate_custom(it, $keyword, $ruleType) { var out = " "; var $lvl = it.level; var $dataLvl = it.dataLevel; var $schema = it.schema[$keyword]; var $schemaPath = it.schemaPath + it.util.getProperty($keyword); var $errSchemaPath = it.errSchemaPath + "/" + $keyword; var $breakOnError = !it.opts.allErrors; var $errorKeyword; var $data = "data" + ($dataLvl || ""); var $valid = "valid" + $lvl; var $errs = "errs__" + $lvl; var $isData = it.opts.$data && $schema && $schema.$data, $schemaValue; if ($isData) { out += " var schema" + $lvl + " = " + it.util.getData($schema.$data, $dataLvl, it.dataPathArr) + "; "; $schemaValue = "schema" + $lvl; } else { $schemaValue = $schema; } var $rule = this, $definition = "definition" + $lvl, $rDef = $rule.definition, $closingBraces = ""; var $compile, $inline, $macro, $ruleValidate, $validateCode; if ($isData && $rDef.$data) { $validateCode = "keywordValidate" + $lvl; var $validateSchema = $rDef.validateSchema; out += " var " + $definition + " = RULES.custom['" + $keyword + "'].definition; var " + $validateCode + " = " + $definition + ".validate;"; } else { $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); if (!$ruleValidate) return; $schemaValue = "validate.schema" + $schemaPath; $validateCode = $ruleValidate.code; $compile = $rDef.compile; $inline = $rDef.inline; $macro = $rDef.macro; } var $ruleErrs = $validateCode + ".errors", $i = "i" + $lvl, $ruleErr = "ruleErr" + $lvl, $asyncKeyword = $rDef.async; if ($asyncKeyword && !it.async) throw new Error("async keyword in sync schema"); if (!($inline || $macro)) { out += "" + $ruleErrs + " = null;"; } out += "var " + $errs + " = errors;var " + $valid + ";"; if ($isData && $rDef.$data) { $closingBraces += "}"; out += " if (" + $schemaValue + " === undefined) { " + $valid + " = true; } else { "; if ($validateSchema) { $closingBraces += "}"; out += " " + $valid + " = " + $definition + ".validateSchema(" + $schemaValue + "); if (" + $valid + ") { "; } } if ($inline) { if ($rDef.statements) { out += " " + $ruleValidate.validate + " "; } else { out += " " + $valid + " = " + $ruleValidate.validate + "; "; } } else if ($macro) { var $it = it.util.copy(it); var $closingBraces = ""; $it.level++; var $nextValid = "valid" + $it.level; $it.schema = $ruleValidate.validate; $it.schemaPath = ""; var $wasComposite = it.compositeRule; it.compositeRule = $it.compositeRule = true; var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); it.compositeRule = $it.compositeRule = $wasComposite; out += " " + $code; } else { var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; out += " " + $validateCode + ".call( "; if (it.opts.passContext) { out += "this"; } else { out += "self"; } if ($compile || $rDef.schema === false) { out += " , " + $data + " "; } else { out += " , " + $schemaValue + " , " + $data + " , validate.schema" + it.schemaPath + " "; } out += " , (dataPath || '')"; if (it.errorPath != '""') { out += " + " + it.errorPath; } var $parentData = $dataLvl ? "data" + ($dataLvl - 1 || "") : "parentData", $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : "parentDataProperty"; out += " , " + $parentData + " , " + $parentDataProperty + " , rootData ) "; var def_callRuleValidate = out; out = $$outStack.pop(); if ($rDef.errors === false) { out += " " + $valid + " = "; if ($asyncKeyword) { out += "await "; } out += "" + def_callRuleValidate + "; "; } else { if ($asyncKeyword) { $ruleErrs = "customErrors" + $lvl; out += " var " + $ruleErrs + " = null; try { " + $valid + " = await " + def_callRuleValidate + "; } catch (e) { " + $valid + " = false; if (e instanceof ValidationError) " + $ruleErrs + " = e.errors; else throw e; } "; } else { out += " " + $ruleErrs + " = null; " + $valid + " = " + def_callRuleValidate + "; "; } } } if ($rDef.modifying) { out += " if (" + $parentData + ") " + $data + " = " + $parentData + "[" + $parentDataProperty + "];"; } out += "" + $closingBraces; if ($rDef.valid) { if ($breakOnError) { out += " if (true) { "; } } else { out += " if ( "; if ($rDef.valid === void 0) { out += " !"; if ($macro) { out += "" + $nextValid; } else { out += "" + $valid; } } else { out += " " + !$rDef.valid + " "; } out += ") { "; $errorKeyword = $rule.keyword; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; var $$outStack = $$outStack || []; $$outStack.push(out); out = ""; if (it.createErrors !== false) { out += " { keyword: '" + ($errorKeyword || "custom") + "' , dataPath: (dataPath || '') + " + it.errorPath + " , schemaPath: " + it.util.toQuotedString($errSchemaPath) + " , params: { keyword: '" + $rule.keyword + "' } "; if (it.opts.messages !== false) { out += ` , message: 'should pass "` + $rule.keyword + `" keyword validation' `; } if (it.opts.verbose) { out += " , schema: validate.schema" + $schemaPath + " , parentSchema: validate.schema" + it.schemaPath + " , data: " + $data + " "; } out += " } "; } else { out += " {} "; } var __err = out; out = $$outStack.pop(); if (!it.compositeRule && $breakOnError) { if (it.async) { out += " throw new ValidationError([" + __err + "]); "; } else { out += " validate.errors = [" + __err + "]; return false; "; } } else { out += " var err = " + __err + "; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "; } var def_customError = out; out = $$outStack.pop(); if ($inline) { if ($rDef.errors) { if ($rDef.errors != "full") { out += " for (var " + $i + "=" + $errs + "; " + $i + " { if (typeof string !== "string") { throw new TypeError("Expected a string"); } return string.replace(matchOperatorsRegex, "\\$&"); }; } }); // ../../node_modules/.pnpm/lodash.deburr@4.1.0/node_modules/lodash.deburr/index.js var require_lodash = __commonJS2({ "../../node_modules/.pnpm/lodash.deburr@4.1.0/node_modules/lodash.deburr/index.js"(exports2, module2) { var INFINITY = 1 / 0; var symbolTag = "[object Symbol]"; var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; var rsComboMarksRange = "\\u0300-\\u036f\\ufe20-\\ufe23"; var rsComboSymbolsRange = "\\u20d0-\\u20f0"; var rsCombo = "[" + rsComboMarksRange + rsComboSymbolsRange + "]"; var reComboMark = RegExp(rsCombo, "g"); var deburredLetters = { // Latin-1 Supplement block. "\xC0": "A", "\xC1": "A", "\xC2": "A", "\xC3": "A", "\xC4": "A", "\xC5": "A", "\xE0": "a", "\xE1": "a", "\xE2": "a", "\xE3": "a", "\xE4": "a", "\xE5": "a", "\xC7": "C", "\xE7": "c", "\xD0": "D", "\xF0": "d", "\xC8": "E", "\xC9": "E", "\xCA": "E", "\xCB": "E", "\xE8": "e", "\xE9": "e", "\xEA": "e", "\xEB": "e", "\xCC": "I", "\xCD": "I", "\xCE": "I", "\xCF": "I", "\xEC": "i", "\xED": "i", "\xEE": "i", "\xEF": "i", "\xD1": "N", "\xF1": "n", "\xD2": "O", "\xD3": "O", "\xD4": "O", "\xD5": "O", "\xD6": "O", "\xD8": "O", "\xF2": "o", "\xF3": "o", "\xF4": "o", "\xF5": "o", "\xF6": "o", "\xF8": "o", "\xD9": "U", "\xDA": "U", "\xDB": "U", "\xDC": "U", "\xF9": "u", "\xFA": "u", "\xFB": "u", "\xFC": "u", "\xDD": "Y", "\xFD": "y", "\xFF": "y", "\xC6": "Ae", "\xE6": "ae", "\xDE": "Th", "\xFE": "th", "\xDF": "ss", // Latin Extended-A block. "\u0100": "A", "\u0102": "A", "\u0104": "A", "\u0101": "a", "\u0103": "a", "\u0105": "a", "\u0106": "C", "\u0108": "C", "\u010A": "C", "\u010C": "C", "\u0107": "c", "\u0109": "c", "\u010B": "c", "\u010D": "c", "\u010E": "D", "\u0110": "D", "\u010F": "d", "\u0111": "d", "\u0112": "E", "\u0114": "E", "\u0116": "E", "\u0118": "E", "\u011A": "E", "\u0113": "e", "\u0115": "e", "\u0117": "e", "\u0119": "e", "\u011B": "e", "\u011C": "G", "\u011E": "G", "\u0120": "G", "\u0122": "G", "\u011D": "g", "\u011F": "g", "\u0121": "g", "\u0123": "g", "\u0124": "H", "\u0126": "H", "\u0125": "h", "\u0127": "h", "\u0128": "I", "\u012A": "I", "\u012C": "I", "\u012E": "I", "\u0130": "I", "\u0129": "i", "\u012B": "i", "\u012D": "i", "\u012F": "i", "\u0131": "i", "\u0134": "J", "\u0135": "j", "\u0136": "K", "\u0137": "k", "\u0138": "k", "\u0139": "L", "\u013B": "L", "\u013D": "L", "\u013F": "L", "\u0141": "L", "\u013A": "l", "\u013C": "l", "\u013E": "l", "\u0140": "l", "\u0142": "l", "\u0143": "N", "\u0145": "N", "\u0147": "N", "\u014A": "N", "\u0144": "n", "\u0146": "n", "\u0148": "n", "\u014B": "n", "\u014C": "O", "\u014E": "O", "\u0150": "O", "\u014D": "o", "\u014F": "o", "\u0151": "o", "\u0154": "R", "\u0156": "R", "\u0158": "R", "\u0155": "r", "\u0157": "r", "\u0159": "r", "\u015A": "S", "\u015C": "S", "\u015E": "S", "\u0160": "S", "\u015B": "s", "\u015D": "s", "\u015F": "s", "\u0161": "s", "\u0162": "T", "\u0164": "T", "\u0166": "T", "\u0163": "t", "\u0165": "t", "\u0167": "t", "\u0168": "U", "\u016A": "U", "\u016C": "U", "\u016E": "U", "\u0170": "U", "\u0172": "U", "\u0169": "u", "\u016B": "u", "\u016D": "u", "\u016F": "u", "\u0171": "u", "\u0173": "u", "\u0174": "W", "\u0175": "w", "\u0176": "Y", "\u0177": "y", "\u0178": "Y", "\u0179": "Z", "\u017B": "Z", "\u017D": "Z", "\u017A": "z", "\u017C": "z", "\u017E": "z", "\u0132": "IJ", "\u0133": "ij", "\u0152": "Oe", "\u0153": "oe", "\u0149": "'n", "\u017F": "ss" }; var freeGlobal = typeof global == "object" && global && global.Object === Object && global; var freeSelf = typeof self == "object" && self && self.Object === Object && self; var root = freeGlobal || freeSelf || Function("return this")(); function basePropertyOf(object) { return function(key) { return object == null ? void 0 : object[key]; }; } var deburrLetter = basePropertyOf(deburredLetters); var objectProto = Object.prototype; var objectToString = objectProto.toString; var Symbol2 = root.Symbol; var symbolProto = Symbol2 ? Symbol2.prototype : void 0; var symbolToString = symbolProto ? symbolProto.toString : void 0; function baseToString(value) { if (typeof value == "string") { return value; } if (isSymbol(value)) { return symbolToString ? symbolToString.call(value) : ""; } var result = value + ""; return result == "0" && 1 / value == -INFINITY ? "-0" : result; } function isObjectLike(value) { return !!value && typeof value == "object"; } function isSymbol(value) { return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; } function toString2(value) { return value == null ? "" : baseToString(value); } function deburr(string) { string = toString2(string); return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); } module2.exports = deburr; } }); // ../../node_modules/.pnpm/@sindresorhus+transliterate@0.1.2/node_modules/@sindresorhus/transliterate/replacements.js var require_replacements = __commonJS2({ "../../node_modules/.pnpm/@sindresorhus+transliterate@0.1.2/node_modules/@sindresorhus/transliterate/replacements.js"(exports2, module2) { "use strict"; module2.exports = [ // German umlauts ["\xDF", "ss"], ["\xE4", "ae"], ["\xC4", "Ae"], ["\xF6", "oe"], ["\xD6", "Oe"], ["\xFC", "ue"], ["\xDC", "Ue"], // Latin ["\xC0", "A"], ["\xC1", "A"], ["\xC2", "A"], ["\xC3", "A"], ["\xC4", "Ae"], ["\xC5", "A"], ["\xC6", "AE"], ["\xC7", "C"], ["\xC8", "E"], ["\xC9", "E"], ["\xCA", "E"], ["\xCB", "E"], ["\xCC", "I"], ["\xCD", "I"], ["\xCE", "I"], ["\xCF", "I"], ["\xD0", "D"], ["\xD1", "N"], ["\xD2", "O"], ["\xD3", "O"], ["\xD4", "O"], ["\xD5", "O"], ["\xD6", "Oe"], ["\u0150", "O"], ["\xD8", "O"], ["\xD9", "U"], ["\xDA", "U"], ["\xDB", "U"], ["\xDC", "Ue"], ["\u0170", "U"], ["\xDD", "Y"], ["\xDE", "TH"], ["\xDF", "ss"], ["\xE0", "a"], ["\xE1", "a"], ["\xE2", "a"], ["\xE3", "a"], ["\xE4", "ae"], ["\xE5", "a"], ["\xE6", "ae"], ["\xE7", "c"], ["\xE8", "e"], ["\xE9", "e"], ["\xEA", "e"], ["\xEB", "e"], ["\xEC", "i"], ["\xED", "i"], ["\xEE", "i"], ["\xEF", "i"], ["\xF0", "d"], ["\xF1", "n"], ["\xF2", "o"], ["\xF3", "o"], ["\xF4", "o"], ["\xF5", "o"], ["\xF6", "oe"], ["\u0151", "o"], ["\xF8", "o"], ["\xF9", "u"], ["\xFA", "u"], ["\xFB", "u"], ["\xFC", "ue"], ["\u0171", "u"], ["\xFD", "y"], ["\xFE", "th"], ["\xFF", "y"], ["\u1E9E", "SS"], // Vietnamese ["\xE0", "a"], ["\xC0", "A"], ["\xE1", "a"], ["\xC1", "A"], ["\xE2", "a"], ["\xC2", "A"], ["\xE3", "a"], ["\xC3", "A"], ["\xE8", "e"], ["\xC8", "E"], ["\xE9", "e"], ["\xC9", "E"], ["\xEA", "e"], ["\xCA", "E"], ["\xEC", "i"], ["\xCC", "I"], ["\xED", "i"], ["\xCD", "I"], ["\xF2", "o"], ["\xD2", "O"], ["\xF3", "o"], ["\xD3", "O"], ["\xF4", "o"], ["\xD4", "O"], ["\xF5", "o"], ["\xD5", "O"], ["\xF9", "u"], ["\xD9", "U"], ["\xFA", "u"], ["\xDA", "U"], ["\xFD", "y"], ["\xDD", "Y"], ["\u0103", "a"], ["\u0102", "A"], ["\u0110", "D"], ["\u0111", "d"], ["\u0129", "i"], ["\u0128", "I"], ["\u0169", "u"], ["\u0168", "U"], ["\u01A1", "o"], ["\u01A0", "O"], ["\u01B0", "u"], ["\u01AF", "U"], ["\u1EA1", "a"], ["\u1EA0", "A"], ["\u1EA3", "a"], ["\u1EA2", "A"], ["\u1EA5", "a"], ["\u1EA4", "A"], ["\u1EA7", "a"], ["\u1EA6", "A"], ["\u1EA9", "a"], ["\u1EA8", "A"], ["\u1EAB", "a"], ["\u1EAA", "A"], ["\u1EAD", "a"], ["\u1EAC", "A"], ["\u1EAF", "a"], ["\u1EAE", "A"], ["\u1EB1", "a"], ["\u1EB0", "A"], ["\u1EB3", "a"], ["\u1EB2", "A"], ["\u1EB5", "a"], ["\u1EB4", "A"], ["\u1EB7", "a"], ["\u1EB6", "A"], ["\u1EB9", "e"], ["\u1EB8", "E"], ["\u1EBB", "e"], ["\u1EBA", "E"], ["\u1EBD", "e"], ["\u1EBC", "E"], ["\u1EBF", "e"], ["\u1EBE", "E"], ["\u1EC1", "e"], ["\u1EC0", "E"], ["\u1EC3", "e"], ["\u1EC2", "E"], ["\u1EC5", "e"], ["\u1EC4", "E"], ["\u1EC7", "e"], ["\u1EC6", "E"], ["\u1EC9", "i"], ["\u1EC8", "I"], ["\u1ECB", "i"], ["\u1ECA", "I"], ["\u1ECD", "o"], ["\u1ECC", "O"], ["\u1ECF", "o"], ["\u1ECE", "O"], ["\u1ED1", "o"], ["\u1ED0", "O"], ["\u1ED3", "o"], ["\u1ED2", "O"], ["\u1ED5", "o"], ["\u1ED4", "O"], ["\u1ED7", "o"], ["\u1ED6", "O"], ["\u1ED9", "o"], ["\u1ED8", "O"], ["\u1EDB", "o"], ["\u1EDA", "O"], ["\u1EDD", "o"], ["\u1EDC", "O"], ["\u1EDF", "o"], ["\u1EDE", "O"], ["\u1EE1", "o"], ["\u1EE0", "O"], ["\u1EE3", "o"], ["\u1EE2", "O"], ["\u1EE5", "u"], ["\u1EE4", "U"], ["\u1EE7", "u"], ["\u1EE6", "U"], ["\u1EE9", "u"], ["\u1EE8", "U"], ["\u1EEB", "u"], ["\u1EEA", "U"], ["\u1EED", "u"], ["\u1EEC", "U"], ["\u1EEF", "u"], ["\u1EEE", "U"], ["\u1EF1", "u"], ["\u1EF0", "U"], ["\u1EF3", "y"], ["\u1EF2", "Y"], ["\u1EF5", "y"], ["\u1EF4", "Y"], ["\u1EF7", "y"], ["\u1EF6", "Y"], ["\u1EF9", "y"], ["\u1EF8", "Y"], // Arabic ["\u0621", "e"], ["\u0622", "a"], ["\u0623", "a"], ["\u0624", "w"], ["\u0625", "i"], ["\u0626", "y"], ["\u0627", "a"], ["\u0628", "b"], ["\u0629", "t"], ["\u062A", "t"], ["\u062B", "th"], ["\u062C", "j"], ["\u062D", "h"], ["\u062E", "kh"], ["\u062F", "d"], ["\u0630", "dh"], ["\u0631", "r"], ["\u0632", "z"], ["\u0633", "s"], ["\u0634", "sh"], ["\u0635", "s"], ["\u0636", "d"], ["\u0637", "t"], ["\u0638", "z"], ["\u0639", "e"], ["\u063A", "gh"], ["\u0640", "_"], ["\u0641", "f"], ["\u0642", "q"], ["\u0643", "k"], ["\u0644", "l"], ["\u0645", "m"], ["\u0646", "n"], ["\u0647", "h"], ["\u0648", "w"], ["\u0649", "a"], ["\u064A", "y"], ["\u064E\u200E", "a"], ["\u064F", "u"], ["\u0650\u200E", "i"], ["\u0660", "0"], ["\u0661", "1"], ["\u0662", "2"], ["\u0663", "3"], ["\u0664", "4"], ["\u0665", "5"], ["\u0666", "6"], ["\u0667", "7"], ["\u0668", "8"], ["\u0669", "9"], // Persian / Farsi ["\u0686", "ch"], ["\u06A9", "k"], ["\u06AF", "g"], ["\u067E", "p"], ["\u0698", "zh"], ["\u06CC", "y"], ["\u06F0", "0"], ["\u06F1", "1"], ["\u06F2", "2"], ["\u06F3", "3"], ["\u06F4", "4"], ["\u06F5", "5"], ["\u06F6", "6"], ["\u06F7", "7"], ["\u06F8", "8"], ["\u06F9", "9"], // Pashto ["\u067C", "p"], ["\u0681", "z"], ["\u0685", "c"], ["\u0689", "d"], ["\uFEAB", "d"], ["\uFEAD", "r"], ["\u0693", "r"], ["\uFEAF", "z"], ["\u0696", "g"], ["\u069A", "x"], ["\u06AB", "g"], ["\u06BC", "n"], ["\u06C0", "e"], ["\u06D0", "e"], ["\u06CD", "ai"], // Urdu ["\u0679", "t"], ["\u0688", "d"], ["\u0691", "r"], ["\u06BA", "n"], ["\u06C1", "h"], ["\u06BE", "h"], ["\u06D2", "e"], // Russian ["\u0410", "A"], ["\u0430", "a"], ["\u0411", "B"], ["\u0431", "b"], ["\u0412", "V"], ["\u0432", "v"], ["\u0413", "G"], ["\u0433", "g"], ["\u0414", "D"], ["\u0434", "d"], ["\u0415", "E"], ["\u0435", "e"], ["\u0416", "Zh"], ["\u0436", "zh"], ["\u0417", "Z"], ["\u0437", "z"], ["\u0418", "I"], ["\u0438", "i"], ["\u0419", "J"], ["\u0439", "j"], ["\u041A", "K"], ["\u043A", "k"], ["\u041B", "L"], ["\u043B", "l"], ["\u041C", "M"], ["\u043C", "m"], ["\u041D", "N"], ["\u043D", "n"], ["\u041E", "O"], ["\u043E", "o"], ["\u041F", "P"], ["\u043F", "p"], ["\u0420", "R"], ["\u0440", "r"], ["\u0421", "S"], ["\u0441", "s"], ["\u0422", "T"], ["\u0442", "t"], ["\u0423", "U"], ["\u0443", "u"], ["\u0424", "F"], ["\u0444", "f"], ["\u0425", "H"], ["\u0445", "h"], ["\u0426", "Cz"], ["\u0446", "cz"], ["\u0427", "Ch"], ["\u0447", "ch"], ["\u0428", "Sh"], ["\u0448", "sh"], ["\u0429", "Shh"], ["\u0449", "shh"], ["\u042A", ""], ["\u044A", ""], ["\u042B", "Y"], ["\u044B", "y"], ["\u042C", ""], ["\u044C", ""], ["\u042D", "E"], ["\u044D", "e"], ["\u042E", "Yu"], ["\u044E", "yu"], ["\u042F", "Ya"], ["\u044F", "ya"], ["\u0401", "Yo"], ["\u0451", "yo"], // Romanian ["\u0103", "a"], ["\u0102", "A"], ["\u0219", "s"], ["\u0218", "S"], ["\u021B", "t"], ["\u021A", "T"], ["\u0163", "t"], ["\u0162", "T"], // Turkish ["\u015F", "s"], ["\u015E", "S"], ["\xE7", "c"], ["\xC7", "C"], ["\u011F", "g"], ["\u011E", "G"], ["\u0131", "i"], ["\u0130", "I"], // Armenian ["\u0561", "a"], ["\u0531", "A"], ["\u0562", "b"], ["\u0532", "B"], ["\u0563", "g"], ["\u0533", "G"], ["\u0564", "d"], ["\u0534", "D"], ["\u0565", "ye"], ["\u0535", "Ye"], ["\u0566", "z"], ["\u0536", "Z"], ["\u0567", "e"], ["\u0537", "E"], ["\u0568", "y"], ["\u0538", "Y"], ["\u0569", "t"], ["\u0539", "T"], ["\u056A", "zh"], ["\u053A", "Zh"], ["\u056B", "i"], ["\u053B", "I"], ["\u056C", "l"], ["\u053C", "L"], ["\u056D", "kh"], ["\u053D", "Kh"], ["\u056E", "ts"], ["\u053E", "Ts"], ["\u056F", "k"], ["\u053F", "K"], ["\u0570", "h"], ["\u0540", "H"], ["\u0571", "dz"], ["\u0541", "Dz"], ["\u0572", "gh"], ["\u0542", "Gh"], ["\u0573", "tch"], ["\u0543", "Tch"], ["\u0574", "m"], ["\u0544", "M"], ["\u0575", "y"], ["\u0545", "Y"], ["\u0576", "n"], ["\u0546", "N"], ["\u0577", "sh"], ["\u0547", "Sh"], ["\u0578", "vo"], ["\u0548", "Vo"], ["\u0579", "ch"], ["\u0549", "Ch"], ["\u057A", "p"], ["\u054A", "P"], ["\u057B", "j"], ["\u054B", "J"], ["\u057C", "r"], ["\u054C", "R"], ["\u057D", "s"], ["\u054D", "S"], ["\u057E", "v"], ["\u054E", "V"], ["\u057F", "t"], ["\u054F", "T"], ["\u0580", "r"], ["\u0550", "R"], ["\u0581", "c"], ["\u0551", "C"], ["\u0578\u0582", "u"], ["\u0548\u0552", "U"], ["\u0548\u0582", "U"], ["\u0583", "p"], ["\u0553", "P"], ["\u0584", "q"], ["\u0554", "Q"], ["\u0585", "o"], ["\u0555", "O"], ["\u0586", "f"], ["\u0556", "F"], ["\u0587", "yev"], // Georgian ["\u10D0", "a"], ["\u10D1", "b"], ["\u10D2", "g"], ["\u10D3", "d"], ["\u10D4", "e"], ["\u10D5", "v"], ["\u10D6", "z"], ["\u10D7", "t"], ["\u10D8", "i"], ["\u10D9", "k"], ["\u10DA", "l"], ["\u10DB", "m"], ["\u10DC", "n"], ["\u10DD", "o"], ["\u10DE", "p"], ["\u10DF", "zh"], ["\u10E0", "r"], ["\u10E1", "s"], ["\u10E2", "t"], ["\u10E3", "u"], ["\u10E4", "ph"], ["\u10E5", "q"], ["\u10E6", "gh"], ["\u10E7", "k"], ["\u10E8", "sh"], ["\u10E9", "ch"], ["\u10EA", "ts"], ["\u10EB", "dz"], ["\u10EC", "ts"], ["\u10ED", "tch"], ["\u10EE", "kh"], ["\u10EF", "j"], ["\u10F0", "h"], // Czech ["\u010D", "c"], ["\u010F", "d"], ["\u011B", "e"], ["\u0148", "n"], ["\u0159", "r"], ["\u0161", "s"], ["\u0165", "t"], ["\u016F", "u"], ["\u017E", "z"], ["\u010C", "C"], ["\u010E", "D"], ["\u011A", "E"], ["\u0147", "N"], ["\u0158", "R"], ["\u0160", "S"], ["\u0164", "T"], ["\u016E", "U"], ["\u017D", "Z"], // Dhivehi ["\u0780", "h"], ["\u0781", "sh"], ["\u0782", "n"], ["\u0783", "r"], ["\u0784", "b"], ["\u0785", "lh"], ["\u0786", "k"], ["\u0787", "a"], ["\u0788", "v"], ["\u0789", "m"], ["\u078A", "f"], ["\u078B", "dh"], ["\u078C", "th"], ["\u078D", "l"], ["\u078E", "g"], ["\u078F", "gn"], ["\u0790", "s"], ["\u0791", "d"], ["\u0792", "z"], ["\u0793", "t"], ["\u0794", "y"], ["\u0795", "p"], ["\u0796", "j"], ["\u0797", "ch"], ["\u0798", "tt"], ["\u0799", "hh"], ["\u079A", "kh"], ["\u079B", "th"], ["\u079C", "z"], ["\u079D", "sh"], ["\u079E", "s"], ["\u079F", "d"], ["\u07A0", "t"], ["\u07A1", "z"], ["\u07A2", "a"], ["\u07A3", "gh"], ["\u07A4", "q"], ["\u07A5", "w"], ["\u07A6", "a"], ["\u07A7", "aa"], ["\u07A8", "i"], ["\u07A9", "ee"], ["\u07AA", "u"], ["\u07AB", "oo"], ["\u07AC", "e"], ["\u07AD", "ey"], ["\u07AE", "o"], ["\u07AF", "oa"], ["\u07B0", ""], // Greek ["\u03B1", "a"], ["\u03B2", "v"], ["\u03B3", "g"], ["\u03B4", "d"], ["\u03B5", "e"], ["\u03B6", "z"], ["\u03B7", "i"], ["\u03B8", "th"], ["\u03B9", "i"], ["\u03BA", "k"], ["\u03BB", "l"], ["\u03BC", "m"], ["\u03BD", "n"], ["\u03BE", "ks"], ["\u03BF", "o"], ["\u03C0", "p"], ["\u03C1", "r"], ["\u03C3", "s"], ["\u03C4", "t"], ["\u03C5", "y"], ["\u03C6", "f"], ["\u03C7", "x"], ["\u03C8", "ps"], ["\u03C9", "o"], ["\u03AC", "a"], ["\u03AD", "e"], ["\u03AF", "i"], ["\u03CC", "o"], ["\u03CD", "y"], ["\u03AE", "i"], ["\u03CE", "o"], ["\u03C2", "s"], ["\u03CA", "i"], ["\u03B0", "y"], ["\u03CB", "y"], ["\u0390", "i"], ["\u0391", "A"], ["\u0392", "B"], ["\u0393", "G"], ["\u0394", "D"], ["\u0395", "E"], ["\u0396", "Z"], ["\u0397", "I"], ["\u0398", "TH"], ["\u0399", "I"], ["\u039A", "K"], ["\u039B", "L"], ["\u039C", "M"], ["\u039D", "N"], ["\u039E", "KS"], ["\u039F", "O"], ["\u03A0", "P"], ["\u03A1", "R"], ["\u03A3", "S"], ["\u03A4", "T"], ["\u03A5", "Y"], ["\u03A6", "F"], ["\u03A7", "X"], ["\u03A8", "PS"], ["\u03A9", "O"], ["\u0386", "A"], ["\u0388", "E"], ["\u038A", "I"], ["\u038C", "O"], ["\u038E", "Y"], ["\u0389", "I"], ["\u038F", "O"], ["\u03AA", "I"], ["\u03AB", "Y"], // Disabled as it conflicts with German and Latin. // Hungarian // ['ä', 'a'], // ['Ä', 'A'], // ['ö', 'o'], // ['Ö', 'O'], // ['ü', 'u'], // ['Ü', 'U'], // ['ű', 'u'], // ['Ű', 'U'], // Latvian ["\u0101", "a"], ["\u0113", "e"], ["\u0123", "g"], ["\u012B", "i"], ["\u0137", "k"], ["\u013C", "l"], ["\u0146", "n"], ["\u016B", "u"], ["\u0100", "A"], ["\u0112", "E"], ["\u0122", "G"], ["\u012A", "I"], ["\u0136", "K"], ["\u013B", "L"], ["\u0145", "N"], ["\u016A", "U"], ["\u010D", "c"], ["\u0161", "s"], ["\u017E", "z"], ["\u010C", "C"], ["\u0160", "S"], ["\u017D", "Z"], // Lithuanian ["\u0105", "a"], ["\u010D", "c"], ["\u0119", "e"], ["\u0117", "e"], ["\u012F", "i"], ["\u0161", "s"], ["\u0173", "u"], ["\u016B", "u"], ["\u017E", "z"], ["\u0104", "A"], ["\u010C", "C"], ["\u0118", "E"], ["\u0116", "E"], ["\u012E", "I"], ["\u0160", "S"], ["\u0172", "U"], ["\u016A", "U"], // Macedonian ["\u040C", "Kj"], ["\u045C", "kj"], ["\u0409", "Lj"], ["\u0459", "lj"], ["\u040A", "Nj"], ["\u045A", "nj"], ["\u0422\u0441", "Ts"], ["\u0442\u0441", "ts"], // Polish ["\u0105", "a"], ["\u0107", "c"], ["\u0119", "e"], ["\u0142", "l"], ["\u0144", "n"], ["\u015B", "s"], ["\u017A", "z"], ["\u017C", "z"], ["\u0104", "A"], ["\u0106", "C"], ["\u0118", "E"], ["\u0141", "L"], ["\u0143", "N"], ["\u015A", "S"], ["\u0179", "Z"], ["\u017B", "Z"], // Disabled as it conflicts with Vietnamese. // Serbian // ['љ', 'lj'], // ['њ', 'nj'], // ['Љ', 'Lj'], // ['Њ', 'Nj'], // ['đ', 'dj'], // ['Đ', 'Dj'], // ['ђ', 'dj'], // ['ј', 'j'], // ['ћ', 'c'], // ['џ', 'dz'], // ['Ђ', 'Dj'], // ['Ј', 'j'], // ['Ћ', 'C'], // ['Џ', 'Dz'], // Disabled as it conflicts with German and Latin. // Slovak // ['ä', 'a'], // ['Ä', 'A'], // ['ľ', 'l'], // ['ĺ', 'l'], // ['ŕ', 'r'], // ['Ľ', 'L'], // ['Ĺ', 'L'], // ['Ŕ', 'R'], // Disabled as it conflicts with German and Latin. // Swedish // ['å', 'o'], // ['Å', 'o'], // ['ä', 'a'], // ['Ä', 'A'], // ['ë', 'e'], // ['Ë', 'E'], // ['ö', 'o'], // ['Ö', 'O'], // Ukrainian ["\u0404", "Ye"], ["\u0406", "I"], ["\u0407", "Yi"], ["\u0490", "G"], ["\u0454", "ye"], ["\u0456", "i"], ["\u0457", "yi"], ["\u0491", "g"] // Danish // ['Æ', 'Ae'], // ['Ø', 'Oe'], // ['Å', 'Aa'], // ['æ', 'ae'], // ['ø', 'oe'], // ['å', 'aa'] ]; } }); // ../../node_modules/.pnpm/@sindresorhus+transliterate@0.1.2/node_modules/@sindresorhus/transliterate/index.js var require_transliterate = __commonJS2({ "../../node_modules/.pnpm/@sindresorhus+transliterate@0.1.2/node_modules/@sindresorhus/transliterate/index.js"(exports2, module2) { "use strict"; var deburr = require_lodash(); var escapeStringRegexp = require_escape_string_regexp2(); var builtinReplacements = require_replacements(); var doCustomReplacements = (string, replacements2) => { for (const [key, value] of replacements2) { string = string.replace(new RegExp(escapeStringRegexp(key), "g"), value); } return string; }; module2.exports = (string, options) => { if (typeof string !== "string") { throw new TypeError(`Expected a string, got \`${typeof string}\``); } options = { customReplacements: [], ...options }; const customReplacements = new Map([ ...builtinReplacements, ...options.customReplacements ]); string = string.normalize(); string = doCustomReplacements(string, customReplacements); string = deburr(string); return string; }; } }); // ../../node_modules/.pnpm/@sindresorhus+slugify@0.11.0/node_modules/@sindresorhus/slugify/overridable-replacements.js var require_overridable_replacements = __commonJS2({ "../../node_modules/.pnpm/@sindresorhus+slugify@0.11.0/node_modules/@sindresorhus/slugify/overridable-replacements.js"(exports2, module2) { "use strict"; module2.exports = [ ["&", " and "], ["\u{1F984}", " unicorn "], ["\u2665", " love "] ]; } }); // ../../node_modules/.pnpm/@sindresorhus+slugify@0.11.0/node_modules/@sindresorhus/slugify/index.js var require_slugify = __commonJS2({ "../../node_modules/.pnpm/@sindresorhus+slugify@0.11.0/node_modules/@sindresorhus/slugify/index.js"(exports2, module2) { "use strict"; var escapeStringRegexp = require_escape_string_regexp2(); var transliterate = require_transliterate(); var builtinOverridableReplacements = require_overridable_replacements(); var decamelize = (string) => { return string.replace(/([A-Z]{2,})([a-z\d]+)/g, "$1 $2").replace(/([a-z\d]+)([A-Z]{2,})/g, "$1 $2").replace(/([a-z\d])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g, "$1 $2"); }; var removeMootSeparators = (string, separator) => { const escapedSeparator = escapeStringRegexp(separator); return string.replace(new RegExp(`${escapedSeparator}{2,}`, "g"), separator).replace(new RegExp(`^${escapedSeparator}|${escapedSeparator}$`, "g"), ""); }; module2.exports = (string, options) => { if (typeof string !== "string") { throw new TypeError(`Expected a string, got \`${typeof string}\``); } options = { separator: "-", lowercase: true, decamelize: true, customReplacements: [], preserveLeadingUnderscore: false, ...options }; const shouldPrependUnderscore = options.preserveLeadingUnderscore && string.startsWith("_"); const customReplacements = new Map([ ...builtinOverridableReplacements, ...options.customReplacements ]); string = transliterate(string, { customReplacements }); if (options.decamelize) { string = decamelize(string); } let patternSlug = /[^a-zA-Z\d]+/g; if (options.lowercase) { string = string.toLowerCase(); patternSlug = /[^a-z\d]+/g; } string = string.replace(patternSlug, options.separator); string = string.replace(/\\/g, ""); string = removeMootSeparators(string, options.separator); if (shouldPrependUnderscore) { string = `_${string}`; } return string; }; } }); // ../../node_modules/.pnpm/ini@3.0.0/node_modules/ini/lib/ini.js var require_ini = __commonJS2({ "../../node_modules/.pnpm/ini@3.0.0/node_modules/ini/lib/ini.js"(exports2, module2) { var { hasOwnProperty: hasOwnProperty3 } = Object.prototype; var eol = typeof process !== "undefined" && process.platform === "win32" ? "\r\n" : "\n"; var encode = (obj, opt) => { const children = []; let out = ""; if (typeof opt === "string") { opt = { section: opt, whitespace: false }; } else { opt = opt || /* @__PURE__ */ Object.create(null); opt.whitespace = opt.whitespace === true; } const separator = opt.whitespace ? " = " : "="; for (const k of Object.keys(obj)) { const val = obj[k]; if (val && Array.isArray(val)) { for (const item of val) { out += safe(k + "[]") + separator + safe(item) + eol; } } else if (val && typeof val === "object") { children.push(k); } else { out += safe(k) + separator + safe(val) + eol; } } if (opt.section && out.length) { out = "[" + safe(opt.section) + "]" + eol + out; } for (const k of children) { const nk = dotSplit(k).join("\\."); const section = (opt.section ? opt.section + "." : "") + nk; const { whitespace } = opt; const child = encode(obj[k], { section, whitespace }); if (out.length && child.length) { out += eol; } out += child; } return out; }; var dotSplit = (str) => str.replace(/\1/g, "LITERAL\\1LITERAL").replace(/\\\./g, "").split(/\./).map((part) => part.replace(/\1/g, "\\.").replace(/\2LITERAL\\1LITERAL\2/g, "")); var decode = (str) => { const out = /* @__PURE__ */ Object.create(null); let p = out; let section = null; const re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i; const lines3 = str.split(/[\r\n]+/g); for (const line of lines3) { if (!line || line.match(/^\s*[;#]/)) { continue; } const match = line.match(re); if (!match) { continue; } if (match[1] !== void 0) { section = unsafe(match[1]); if (section === "__proto__") { p = /* @__PURE__ */ Object.create(null); continue; } p = out[section] = out[section] || /* @__PURE__ */ Object.create(null); continue; } const keyRaw = unsafe(match[2]); const isArray = keyRaw.length > 2 && keyRaw.slice(-2) === "[]"; const key = isArray ? keyRaw.slice(0, -2) : keyRaw; if (key === "__proto__") { continue; } const valueRaw = match[3] ? unsafe(match[4]) : true; const value = valueRaw === "true" || valueRaw === "false" || valueRaw === "null" ? JSON.parse(valueRaw) : valueRaw; if (isArray) { if (!hasOwnProperty3.call(p, key)) { p[key] = []; } else if (!Array.isArray(p[key])) { p[key] = [p[key]]; } } if (Array.isArray(p[key])) { p[key].push(value); } else { p[key] = value; } } const remove7 = []; for (const k of Object.keys(out)) { if (!hasOwnProperty3.call(out, k) || typeof out[k] !== "object" || Array.isArray(out[k])) { continue; } const parts = dotSplit(k); p = out; const l = parts.pop(); const nl = l.replace(/\\\./g, "."); for (const part of parts) { if (part === "__proto__") { continue; } if (!hasOwnProperty3.call(p, part) || typeof p[part] !== "object") { p[part] = /* @__PURE__ */ Object.create(null); } p = p[part]; } if (p === out && nl === l) { continue; } p[nl] = out[k]; remove7.push(k); } for (const del3 of remove7) { delete out[del3]; } return out; }; var isQuoted = (val) => { return val.startsWith('"') && val.endsWith('"') || val.startsWith("'") && val.endsWith("'"); }; var safe = (val) => { if (typeof val !== "string" || val.match(/[=\r\n]/) || val.match(/^\[/) || val.length > 1 && isQuoted(val) || val !== val.trim()) { return JSON.stringify(val); } return val.split(";").join("\\;").split("#").join("\\#"); }; var unsafe = (val, doUnesc) => { val = (val || "").trim(); if (isQuoted(val)) { if (val.charAt(0) === "'") { val = val.slice(1, -1); } try { val = JSON.parse(val); } catch (_) { } } else { let esc = false; let unesc = ""; for (let i = 0, l = val.length; i < l; i++) { const c = val.charAt(i); if (esc) { if ("\\;#".indexOf(c) !== -1) { unesc += c; } else { unesc += "\\" + c; } esc = false; } else if (";#".indexOf(c) !== -1) { break; } else if (c === "\\") { esc = true; } else { unesc += c; } } if (esc) { unesc += "\\"; } return unesc.trim(); } return val; }; module2.exports = { parse: decode, decode, stringify: encode, encode, safe, unsafe }; } }); // ../../node_modules/.pnpm/git-last-commit@1.0.1/node_modules/git-last-commit/source/index.js var require_source3 = __commonJS2({ "../../node_modules/.pnpm/git-last-commit@1.0.1/node_modules/git-last-commit/source/index.js"(exports2, module2) { var process4 = __require("child_process"); var splitCharacter = "<##>"; var executeCommand = (command, options, callback) => { let dst = __dirname; if (!!options && options.dst) { dst = options.dst; } process4.exec(command, { cwd: dst }, function(err, stdout, stderr) { if (stdout === "") { callback("this does not look like a git repo"); return; } if (stderr) { callback(stderr); return; } callback(null, stdout); }); }; var prettyFormat = ["%h", "%H", "%s", "%f", "%b", "%at", "%ct", "%an", "%ae", "%cn", "%ce", "%N", ""]; var getCommandString = (splitCharacter2) => 'git log -1 --pretty=format:"' + prettyFormat.join(splitCharacter2) + '" && git rev-parse --abbrev-ref HEAD && git tag --contains HEAD'; var getLastCommit2 = (callback, options) => { const command = getCommandString(splitCharacter); executeCommand(command, options, function(err, res) { if (err) { callback(err); return; } var a = res.split(splitCharacter); var branchAndTags = a[a.length - 1].split("\n").filter((n) => n); var branch = branchAndTags[0]; var tags = branchAndTags.slice(1); callback(null, { shortHash: a[0], hash: a[1], subject: a[2], sanitizedSubject: a[3], body: a[4], authoredOn: a[5], committedOn: a[6], author: { name: a[7], email: a[8] }, committer: { name: a[9], email: a[10] }, notes: a[11], branch, tags }); }); }; module2.exports = { getLastCommit: getLastCommit2 }; } }); // src/util/create-git-meta.ts import { join } from "path"; import { exec } from "child_process"; async function createGitMeta(directory, project) { let remoteUrl; if (project?.link) { const { repo } = project.link; const remoteUrls = await getRemoteUrls(join(directory, ".git/config")); if (remoteUrls) { for (const urlValue of Object.values(remoteUrls)) { if (urlValue.includes(repo)) { remoteUrl = urlValue; } } } } if (!remoteUrl) { remoteUrl = await getOriginUrl(join(directory, ".git/config")); } const [commitResult, dirtyResult] = await Promise.allSettled([ getLastCommit(directory), isDirty(directory) ]); if (commitResult.status === "rejected") { output_manager_default.debug( `Failed to get last commit. The directory is likely not a Git repo, there are no latest commits, or it is corrupted. ${commitResult.reason}` ); return; } if (dirtyResult.status === "rejected") { output_manager_default.debug( `Failed to determine if Git repo has been modified: ${dirtyResult.reason}` ); return; } const dirty = dirtyResult.value; const commit = commitResult.value; return { remoteUrl: remoteUrl || void 0, commitAuthorName: commit.author.name, commitAuthorEmail: commit.author.email, commitMessage: commit.subject, commitRef: commit.branch, commitSha: commit.hash, dirty }; } function getLastCommit(directory) { return new Promise((resolve14, reject) => { import_git_last_commit.default.getLastCommit( (err, commit) => { if (err) { return reject((0, import_error_utils3.normalizeError)(err)); } resolve14(commit); }, { dst: directory } ); }); } function isDirty(directory) { return new Promise((resolve14, reject) => { exec( "git --no-optional-locks status -s", { cwd: directory }, function(err, stdout, stderr) { if (err) { return reject(err); } if (stderr !== void 0 && stderr.trim().length > 0) { return reject(new Error(stderr)); } resolve14(stdout.trim().length > 0); } ); }); } async function parseGitConfig(configPath) { try { return import_ini.default.parse(await import_fs_extra2.default.readFile(configPath, "utf-8")); } catch (err) { output_manager_default.debug(`Error while parsing repo data: ${(0, import_error_utils3.errorToString)(err)}`); } } function pluckRemoteUrls(gitConfig) { const remoteUrls = {}; for (const key of Object.keys(gitConfig)) { if (key.includes("remote")) { const remoteName = key.match(/(?<=").*(?=")/g)?.[0]; const remoteUrl = gitConfig[key]?.url; if (remoteName && remoteUrl) { remoteUrls[remoteName] = remoteUrl; } } } if (Object.keys(remoteUrls).length === 0) { return; } return remoteUrls; } async function getRemoteUrls(configPath) { const config2 = await parseGitConfig(configPath); if (!config2) { return; } const remoteUrls = pluckRemoteUrls(config2); return remoteUrls; } function pluckOriginUrl(gitConfig) { return gitConfig['remote "origin"']?.url; } async function getOriginUrl(configPath) { const gitConfig = await parseGitConfig(configPath); if (!gitConfig) { return null; } const originUrl = pluckOriginUrl(gitConfig); if (originUrl) { return originUrl; } return null; } var import_fs_extra2, import_ini, import_git_last_commit, import_error_utils3; var init_create_git_meta = __esm({ "src/util/create-git-meta.ts"() { "use strict"; import_fs_extra2 = __toESM3(require_lib(), 1); import_ini = __toESM3(require_ini(), 1); import_git_last_commit = __toESM3(require_source3(), 1); import_error_utils3 = __toESM3(require_dist2(), 1); init_output_manager(); } }); // src/util/input/select-org.ts async function selectOrg(client2, question, autoConfirm) { const { config: { currentTeam } } = client2; output_manager_default.spinner("Loading scopes\u2026", 1e3); let user; let teams2; try { [user, teams2] = await Promise.all([getUser(client2), getTeams(client2)]); } finally { output_manager_default.stopSpinner(); } const personalAccountChoice = user.version === "northstar" ? [] : [ { name: user.name || user.username, value: { type: "user", id: user.id, slug: user.username } } ]; const choices = [ ...personalAccountChoice, ...teams2.sort((a) => a.id === user.defaultTeamId ? -1 : 1).map((team) => ({ name: team.name || team.slug, value: { type: "team", id: team.id, slug: team.slug } })) ]; const defaultChoiceIndex = Math.max( choices.findIndex((choice) => choice.value.id === currentTeam), 0 ); if (autoConfirm) { return choices[defaultChoiceIndex].value; } return await client2.input.select({ message: question, choices, default: choices[defaultChoiceIndex].value }); } var init_select_org = __esm({ "src/util/input/select-org.ts"() { "use strict"; init_get_user(); init_get_teams(); init_output_manager(); } }); // src/util/link/add-to-gitignore.ts import os3 from "os"; import { join as join2 } from "path"; async function addToGitIgnore(path11, ignore = VERCEL_DIR) { let isGitIgnoreUpdated = false; try { const gitIgnorePath = join2(path11, ".gitignore"); let gitIgnore = await (0, import_fs_extra3.readFile)(gitIgnorePath, "utf8").catch(() => null) ?? ""; const EOL = gitIgnore.includes("\r\n") ? "\r\n" : os3.EOL; let contentModified = false; if (!gitIgnore.split(EOL).includes(ignore)) { gitIgnore += `${gitIgnore.endsWith(EOL) || gitIgnore.length === 0 ? "" : EOL}${ignore}${EOL}`; contentModified = true; } if (contentModified) { await (0, import_fs_extra3.writeFile)(gitIgnorePath, gitIgnore); isGitIgnoreUpdated = true; } } catch (error3) { } return isGitIgnoreUpdated; } var import_fs_extra3; var init_add_to_gitignore = __esm({ "src/util/link/add-to-gitignore.ts"() { "use strict"; import_fs_extra3 = __toESM3(require_lib(), 1); init_link2(); } }); // src/util/projects/create-project.ts async function createProject(client2, settings) { const { vercelAuth: vercelAuth2, ...rest } = settings; const project = await client2.fetch("/v1/projects", { method: "POST", body: { ...rest, /** * If `null`, vercel auth is disabled. Otherwise standard protection is enabled. * vercelAuth used to be called ssoProtection. */ ...vercelAuth2 === "none" ? { ssoProtection: null } : void 0 } }); return project; } var init_create_project = __esm({ "src/util/projects/create-project.ts"() { "use strict"; } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/common.js var require_common5 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/common.js"(exports2, module2) { "use strict"; function isNothing(subject) { return typeof subject === "undefined" || subject === null; } function isObject2(subject) { return typeof subject === "object" && subject !== null; } function toArray(sequence) { if (Array.isArray(sequence)) return sequence; else if (isNothing(sequence)) return []; return [sequence]; } function extend(target, source) { var index, length, key, sourceKeys; if (source) { sourceKeys = Object.keys(source); for (index = 0, length = sourceKeys.length; index < length; index += 1) { key = sourceKeys[index]; target[key] = source[key]; } } return target; } function repeat2(string, count) { var result = "", cycle; for (cycle = 0; cycle < count; cycle += 1) { result += string; } return result; } function isNegativeZero(number) { return number === 0 && Number.NEGATIVE_INFINITY === 1 / number; } module2.exports.isNothing = isNothing; module2.exports.isObject = isObject2; module2.exports.toArray = toArray; module2.exports.repeat = repeat2; module2.exports.isNegativeZero = isNegativeZero; module2.exports.extend = extend; } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/exception.js var require_exception = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/exception.js"(exports2, module2) { "use strict"; function YAMLException(reason, mark) { Error.call(this); this.name = "YAMLException"; this.reason = reason; this.mark = mark; this.message = (this.reason || "(unknown reason)") + (this.mark ? " " + this.mark.toString() : ""); if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } else { this.stack = new Error().stack || ""; } } YAMLException.prototype = Object.create(Error.prototype); YAMLException.prototype.constructor = YAMLException; YAMLException.prototype.toString = function toString2(compact) { var result = this.name + ": "; result += this.reason || "(unknown reason)"; if (!compact && this.mark) { result += " " + this.mark.toString(); } return result; }; module2.exports = YAMLException; } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/mark.js var require_mark = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/mark.js"(exports2, module2) { "use strict"; var common2 = require_common5(); function Mark(name, buffer, position, line, column) { this.name = name; this.buffer = buffer; this.position = position; this.line = line; this.column = column; } Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { var head, start, tail, end, snippet; if (!this.buffer) return null; indent = indent || 4; maxLength = maxLength || 75; head = ""; start = this.position; while (start > 0 && "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(start - 1)) === -1) { start -= 1; if (this.position - start > maxLength / 2 - 1) { head = " ... "; start += 5; break; } } tail = ""; end = this.position; while (end < this.buffer.length && "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(end)) === -1) { end += 1; if (end - this.position > maxLength / 2 - 1) { tail = " ... "; end -= 5; break; } } snippet = this.buffer.slice(start, end); return common2.repeat(" ", indent) + head + snippet + tail + "\n" + common2.repeat(" ", indent + this.position - start + head.length) + "^"; }; Mark.prototype.toString = function toString2(compact) { var snippet, where = ""; if (this.name) { where += 'in "' + this.name + '" '; } where += "at line " + (this.line + 1) + ", column " + (this.column + 1); if (!compact) { snippet = this.getSnippet(); if (snippet) { where += ":\n" + snippet; } } return where; }; module2.exports = Mark; } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type.js var require_type = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type.js"(exports2, module2) { "use strict"; var YAMLException = require_exception(); var TYPE_CONSTRUCTOR_OPTIONS = [ "kind", "resolve", "construct", "instanceOf", "predicate", "represent", "defaultStyle", "styleAliases" ]; var YAML_NODE_KINDS = [ "scalar", "sequence", "mapping" ]; function compileStyleAliases(map) { var result = {}; if (map !== null) { Object.keys(map).forEach(function(style) { map[style].forEach(function(alias2) { result[String(alias2)] = style; }); }); } return result; } function Type(tag, options) { options = options || {}; Object.keys(options).forEach(function(name) { if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); } }); this.tag = tag; this.kind = options["kind"] || null; this.resolve = options["resolve"] || function() { return true; }; this.construct = options["construct"] || function(data) { return data; }; this.instanceOf = options["instanceOf"] || null; this.predicate = options["predicate"] || null; this.represent = options["represent"] || null; this.defaultStyle = options["defaultStyle"] || null; this.styleAliases = compileStyleAliases(options["styleAliases"] || null); if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); } } module2.exports = Type; } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema.js var require_schema = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema.js"(exports2, module2) { "use strict"; var common2 = require_common5(); var YAMLException = require_exception(); var Type = require_type(); function compileList(schema, name, result) { var exclude = []; schema.include.forEach(function(includedSchema) { result = compileList(includedSchema, name, result); }); schema[name].forEach(function(currentType) { result.forEach(function(previousType, previousIndex) { if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { exclude.push(previousIndex); } }); result.push(currentType); }); return result.filter(function(type, index) { return exclude.indexOf(index) === -1; }); } function compileMap() { var result = { scalar: {}, sequence: {}, mapping: {}, fallback: {} }, index, length; function collectType(type) { result[type.kind][type.tag] = result["fallback"][type.tag] = type; } for (index = 0, length = arguments.length; index < length; index += 1) { arguments[index].forEach(collectType); } return result; } function Schema(definition) { this.include = definition.include || []; this.implicit = definition.implicit || []; this.explicit = definition.explicit || []; this.implicit.forEach(function(type) { if (type.loadKind && type.loadKind !== "scalar") { throw new YAMLException("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported."); } }); this.compiledImplicit = compileList(this, "implicit", []); this.compiledExplicit = compileList(this, "explicit", []); this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); } Schema.DEFAULT = null; Schema.create = function createSchema() { var schemas, types; switch (arguments.length) { case 1: schemas = Schema.DEFAULT; types = arguments[0]; break; case 2: schemas = arguments[0]; types = arguments[1]; break; default: throw new YAMLException("Wrong number of arguments for Schema.create function"); } schemas = common2.toArray(schemas); types = common2.toArray(types); if (!schemas.every(function(schema) { return schema instanceof Schema; })) { throw new YAMLException("Specified list of super schemas (or a single Schema object) contains a non-Schema object."); } if (!types.every(function(type) { return type instanceof Type; })) { throw new YAMLException("Specified list of YAML types (or a single Type object) contains a non-Type object."); } return new Schema({ include: schemas, explicit: types }); }; module2.exports = Schema; } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/str.js var require_str = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/str.js"(exports2, module2) { "use strict"; var Type = require_type(); module2.exports = new Type("tag:yaml.org,2002:str", { kind: "scalar", construct: function(data) { return data !== null ? data : ""; } }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/seq.js var require_seq = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/seq.js"(exports2, module2) { "use strict"; var Type = require_type(); module2.exports = new Type("tag:yaml.org,2002:seq", { kind: "sequence", construct: function(data) { return data !== null ? data : []; } }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/map.js var require_map = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/map.js"(exports2, module2) { "use strict"; var Type = require_type(); module2.exports = new Type("tag:yaml.org,2002:map", { kind: "mapping", construct: function(data) { return data !== null ? data : {}; } }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js var require_failsafe = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js"(exports2, module2) { "use strict"; var Schema = require_schema(); module2.exports = new Schema({ explicit: [ require_str(), require_seq(), require_map() ] }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/null.js var require_null = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/null.js"(exports2, module2) { "use strict"; var Type = require_type(); function resolveYamlNull(data) { if (data === null) return true; var max = data.length; return max === 1 && data === "~" || max === 4 && (data === "null" || data === "Null" || data === "NULL"); } function constructYamlNull() { return null; } function isNull(object) { return object === null; } module2.exports = new Type("tag:yaml.org,2002:null", { kind: "scalar", resolve: resolveYamlNull, construct: constructYamlNull, predicate: isNull, represent: { canonical: function() { return "~"; }, lowercase: function() { return "null"; }, uppercase: function() { return "NULL"; }, camelcase: function() { return "Null"; } }, defaultStyle: "lowercase" }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/bool.js var require_bool = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/bool.js"(exports2, module2) { "use strict"; var Type = require_type(); function resolveYamlBoolean(data) { if (data === null) return false; var max = data.length; return max === 4 && (data === "true" || data === "True" || data === "TRUE") || max === 5 && (data === "false" || data === "False" || data === "FALSE"); } function constructYamlBoolean(data) { return data === "true" || data === "True" || data === "TRUE"; } function isBoolean(object) { return Object.prototype.toString.call(object) === "[object Boolean]"; } module2.exports = new Type("tag:yaml.org,2002:bool", { kind: "scalar", resolve: resolveYamlBoolean, construct: constructYamlBoolean, predicate: isBoolean, represent: { lowercase: function(object) { return object ? "true" : "false"; }, uppercase: function(object) { return object ? "TRUE" : "FALSE"; }, camelcase: function(object) { return object ? "True" : "False"; } }, defaultStyle: "lowercase" }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/int.js var require_int = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/int.js"(exports2, module2) { "use strict"; var common2 = require_common5(); var Type = require_type(); function isHexCode(c) { return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102; } function isOctCode(c) { return 48 <= c && c <= 55; } function isDecCode(c) { return 48 <= c && c <= 57; } function resolveYamlInteger(data) { if (data === null) return false; var max = data.length, index = 0, hasDigits = false, ch; if (!max) return false; ch = data[index]; if (ch === "-" || ch === "+") { ch = data[++index]; } if (ch === "0") { if (index + 1 === max) return true; ch = data[++index]; if (ch === "b") { index++; for (; index < max; index++) { ch = data[index]; if (ch === "_") continue; if (ch !== "0" && ch !== "1") return false; hasDigits = true; } return hasDigits && ch !== "_"; } if (ch === "x") { index++; for (; index < max; index++) { ch = data[index]; if (ch === "_") continue; if (!isHexCode(data.charCodeAt(index))) return false; hasDigits = true; } return hasDigits && ch !== "_"; } for (; index < max; index++) { ch = data[index]; if (ch === "_") continue; if (!isOctCode(data.charCodeAt(index))) return false; hasDigits = true; } return hasDigits && ch !== "_"; } if (ch === "_") return false; for (; index < max; index++) { ch = data[index]; if (ch === "_") continue; if (ch === ":") break; if (!isDecCode(data.charCodeAt(index))) { return false; } hasDigits = true; } if (!hasDigits || ch === "_") return false; if (ch !== ":") return true; return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); } function constructYamlInteger(data) { var value = data, sign = 1, ch, base, digits = []; if (value.indexOf("_") !== -1) { value = value.replace(/_/g, ""); } ch = value[0]; if (ch === "-" || ch === "+") { if (ch === "-") sign = -1; value = value.slice(1); ch = value[0]; } if (value === "0") return 0; if (ch === "0") { if (value[1] === "b") return sign * parseInt(value.slice(2), 2); if (value[1] === "x") return sign * parseInt(value, 16); return sign * parseInt(value, 8); } if (value.indexOf(":") !== -1) { value.split(":").forEach(function(v) { digits.unshift(parseInt(v, 10)); }); value = 0; base = 1; digits.forEach(function(d) { value += d * base; base *= 60; }); return sign * value; } return sign * parseInt(value, 10); } function isInteger2(object) { return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 === 0 && !common2.isNegativeZero(object)); } module2.exports = new Type("tag:yaml.org,2002:int", { kind: "scalar", resolve: resolveYamlInteger, construct: constructYamlInteger, predicate: isInteger2, represent: { binary: function(obj) { return obj >= 0 ? "0b" + obj.toString(2) : "-0b" + obj.toString(2).slice(1); }, octal: function(obj) { return obj >= 0 ? "0" + obj.toString(8) : "-0" + obj.toString(8).slice(1); }, decimal: function(obj) { return obj.toString(10); }, /* eslint-disable max-len */ hexadecimal: function(obj) { return obj >= 0 ? "0x" + obj.toString(16).toUpperCase() : "-0x" + obj.toString(16).toUpperCase().slice(1); } }, defaultStyle: "decimal", styleAliases: { binary: [2, "bin"], octal: [8, "oct"], decimal: [10, "dec"], hexadecimal: [16, "hex"] } }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/float.js var require_float = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/float.js"(exports2, module2) { "use strict"; var common2 = require_common5(); var Type = require_type(); var YAML_FLOAT_PATTERN = new RegExp( // 2.5e4, 2.5 and integers "^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" ); function resolveYamlFloat(data) { if (data === null) return false; if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_` // Probably should update regexp & check speed data[data.length - 1] === "_") { return false; } return true; } function constructYamlFloat(data) { var value, sign, base, digits; value = data.replace(/_/g, "").toLowerCase(); sign = value[0] === "-" ? -1 : 1; digits = []; if ("+-".indexOf(value[0]) >= 0) { value = value.slice(1); } if (value === ".inf") { return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; } else if (value === ".nan") { return NaN; } else if (value.indexOf(":") >= 0) { value.split(":").forEach(function(v) { digits.unshift(parseFloat(v, 10)); }); value = 0; base = 1; digits.forEach(function(d) { value += d * base; base *= 60; }); return sign * value; } return sign * parseFloat(value, 10); } var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; function representYamlFloat(object, style) { var res; if (isNaN(object)) { switch (style) { case "lowercase": return ".nan"; case "uppercase": return ".NAN"; case "camelcase": return ".NaN"; } } else if (Number.POSITIVE_INFINITY === object) { switch (style) { case "lowercase": return ".inf"; case "uppercase": return ".INF"; case "camelcase": return ".Inf"; } } else if (Number.NEGATIVE_INFINITY === object) { switch (style) { case "lowercase": return "-.inf"; case "uppercase": return "-.INF"; case "camelcase": return "-.Inf"; } } else if (common2.isNegativeZero(object)) { return "-0.0"; } res = object.toString(10); return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; } function isFloat2(object) { return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 !== 0 || common2.isNegativeZero(object)); } module2.exports = new Type("tag:yaml.org,2002:float", { kind: "scalar", resolve: resolveYamlFloat, construct: constructYamlFloat, predicate: isFloat2, represent: representYamlFloat, defaultStyle: "lowercase" }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/json.js var require_json3 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/json.js"(exports2, module2) { "use strict"; var Schema = require_schema(); module2.exports = new Schema({ include: [ require_failsafe() ], implicit: [ require_null(), require_bool(), require_int(), require_float() ] }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/core.js var require_core = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/core.js"(exports2, module2) { "use strict"; var Schema = require_schema(); module2.exports = new Schema({ include: [ require_json3() ] }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/timestamp.js var require_timestamp = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/timestamp.js"(exports2, module2) { "use strict"; var Type = require_type(); var YAML_DATE_REGEXP = new RegExp( "^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$" ); var YAML_TIMESTAMP_REGEXP = new RegExp( "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$" ); function resolveYamlTimestamp(data) { if (data === null) return false; if (YAML_DATE_REGEXP.exec(data) !== null) return true; if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; return false; } function constructYamlTimestamp(data) { var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date; match = YAML_DATE_REGEXP.exec(data); if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); if (match === null) throw new Error("Date resolve error"); year = +match[1]; month = +match[2] - 1; day = +match[3]; if (!match[4]) { return new Date(Date.UTC(year, month, day)); } hour = +match[4]; minute = +match[5]; second = +match[6]; if (match[7]) { fraction = match[7].slice(0, 3); while (fraction.length < 3) { fraction += "0"; } fraction = +fraction; } if (match[9]) { tz_hour = +match[10]; tz_minute = +(match[11] || 0); delta = (tz_hour * 60 + tz_minute) * 6e4; if (match[9] === "-") delta = -delta; } date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); if (delta) date.setTime(date.getTime() - delta); return date; } function representYamlTimestamp(object) { return object.toISOString(); } module2.exports = new Type("tag:yaml.org,2002:timestamp", { kind: "scalar", resolve: resolveYamlTimestamp, construct: constructYamlTimestamp, instanceOf: Date, represent: representYamlTimestamp }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/merge.js var require_merge = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/merge.js"(exports2, module2) { "use strict"; var Type = require_type(); function resolveYamlMerge(data) { return data === "<<" || data === null; } module2.exports = new Type("tag:yaml.org,2002:merge", { kind: "scalar", resolve: resolveYamlMerge }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/binary.js var require_binary = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/binary.js"(exports2, module2) { "use strict"; var NodeBuffer; try { _require = __require; NodeBuffer = _require("buffer").Buffer; } catch (__) { } var _require; var Type = require_type(); var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; function resolveYamlBinary(data) { if (data === null) return false; var code2, idx, bitlen = 0, max = data.length, map = BASE64_MAP; for (idx = 0; idx < max; idx++) { code2 = map.indexOf(data.charAt(idx)); if (code2 > 64) continue; if (code2 < 0) return false; bitlen += 6; } return bitlen % 8 === 0; } function constructYamlBinary(data) { var idx, tailbits, input = data.replace(/[\r\n=]/g, ""), max = input.length, map = BASE64_MAP, bits = 0, result = []; for (idx = 0; idx < max; idx++) { if (idx % 4 === 0 && idx) { result.push(bits >> 16 & 255); result.push(bits >> 8 & 255); result.push(bits & 255); } bits = bits << 6 | map.indexOf(input.charAt(idx)); } tailbits = max % 4 * 6; if (tailbits === 0) { result.push(bits >> 16 & 255); result.push(bits >> 8 & 255); result.push(bits & 255); } else if (tailbits === 18) { result.push(bits >> 10 & 255); result.push(bits >> 2 & 255); } else if (tailbits === 12) { result.push(bits >> 4 & 255); } if (NodeBuffer) { return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); } return result; } function representYamlBinary(object) { var result = "", bits = 0, idx, tail, max = object.length, map = BASE64_MAP; for (idx = 0; idx < max; idx++) { if (idx % 3 === 0 && idx) { result += map[bits >> 18 & 63]; result += map[bits >> 12 & 63]; result += map[bits >> 6 & 63]; result += map[bits & 63]; } bits = (bits << 8) + object[idx]; } tail = max % 3; if (tail === 0) { result += map[bits >> 18 & 63]; result += map[bits >> 12 & 63]; result += map[bits >> 6 & 63]; result += map[bits & 63]; } else if (tail === 2) { result += map[bits >> 10 & 63]; result += map[bits >> 4 & 63]; result += map[bits << 2 & 63]; result += map[64]; } else if (tail === 1) { result += map[bits >> 2 & 63]; result += map[bits << 4 & 63]; result += map[64]; result += map[64]; } return result; } function isBinary(object) { return NodeBuffer && NodeBuffer.isBuffer(object); } module2.exports = new Type("tag:yaml.org,2002:binary", { kind: "scalar", resolve: resolveYamlBinary, construct: constructYamlBinary, predicate: isBinary, represent: representYamlBinary }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/omap.js var require_omap = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/omap.js"(exports2, module2) { "use strict"; var Type = require_type(); var _hasOwnProperty = Object.prototype.hasOwnProperty; var _toString = Object.prototype.toString; function resolveYamlOmap(data) { if (data === null) return true; var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data; for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; pairHasKey = false; if (_toString.call(pair) !== "[object Object]") return false; for (pairKey in pair) { if (_hasOwnProperty.call(pair, pairKey)) { if (!pairHasKey) pairHasKey = true; else return false; } } if (!pairHasKey) return false; if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); else return false; } return true; } function constructYamlOmap(data) { return data !== null ? data : []; } module2.exports = new Type("tag:yaml.org,2002:omap", { kind: "sequence", resolve: resolveYamlOmap, construct: constructYamlOmap }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/pairs.js var require_pairs = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/pairs.js"(exports2, module2) { "use strict"; var Type = require_type(); var _toString = Object.prototype.toString; function resolveYamlPairs(data) { if (data === null) return true; var index, length, pair, keys, result, object = data; result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; if (_toString.call(pair) !== "[object Object]") return false; keys = Object.keys(pair); if (keys.length !== 1) return false; result[index] = [keys[0], pair[keys[0]]]; } return true; } function constructYamlPairs(data) { if (data === null) return []; var index, length, pair, keys, result, object = data; result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; keys = Object.keys(pair); result[index] = [keys[0], pair[keys[0]]]; } return result; } module2.exports = new Type("tag:yaml.org,2002:pairs", { kind: "sequence", resolve: resolveYamlPairs, construct: constructYamlPairs }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/set.js var require_set = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/set.js"(exports2, module2) { "use strict"; var Type = require_type(); var _hasOwnProperty = Object.prototype.hasOwnProperty; function resolveYamlSet(data) { if (data === null) return true; var key, object = data; for (key in object) { if (_hasOwnProperty.call(object, key)) { if (object[key] !== null) return false; } } return true; } function constructYamlSet(data) { return data !== null ? data : {}; } module2.exports = new Type("tag:yaml.org,2002:set", { kind: "mapping", resolve: resolveYamlSet, construct: constructYamlSet }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js var require_default_safe = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js"(exports2, module2) { "use strict"; var Schema = require_schema(); module2.exports = new Schema({ include: [ require_core() ], implicit: [ require_timestamp(), require_merge() ], explicit: [ require_binary(), require_omap(), require_pairs(), require_set() ] }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js var require_undefined = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js"(exports2, module2) { "use strict"; var Type = require_type(); function resolveJavascriptUndefined() { return true; } function constructJavascriptUndefined() { return void 0; } function representJavascriptUndefined() { return ""; } function isUndefined(object) { return typeof object === "undefined"; } module2.exports = new Type("tag:yaml.org,2002:js/undefined", { kind: "scalar", resolve: resolveJavascriptUndefined, construct: constructJavascriptUndefined, predicate: isUndefined, represent: representJavascriptUndefined }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js var require_regexp = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js"(exports2, module2) { "use strict"; var Type = require_type(); function resolveJavascriptRegExp(data) { if (data === null) return false; if (data.length === 0) return false; var regexp = data, tail = /\/([gim]*)$/.exec(data), modifiers = ""; if (regexp[0] === "/") { if (tail) modifiers = tail[1]; if (modifiers.length > 3) return false; if (regexp[regexp.length - modifiers.length - 1] !== "/") return false; } return true; } function constructJavascriptRegExp(data) { var regexp = data, tail = /\/([gim]*)$/.exec(data), modifiers = ""; if (regexp[0] === "/") { if (tail) modifiers = tail[1]; regexp = regexp.slice(1, regexp.length - modifiers.length - 1); } return new RegExp(regexp, modifiers); } function representJavascriptRegExp(object) { var result = "/" + object.source + "/"; if (object.global) result += "g"; if (object.multiline) result += "m"; if (object.ignoreCase) result += "i"; return result; } function isRegExp(object) { return Object.prototype.toString.call(object) === "[object RegExp]"; } module2.exports = new Type("tag:yaml.org,2002:js/regexp", { kind: "scalar", resolve: resolveJavascriptRegExp, construct: constructJavascriptRegExp, predicate: isRegExp, represent: representJavascriptRegExp }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/js/function.js var require_function = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/type/js/function.js"(exports2, module2) { "use strict"; var esprima; try { _require = __require; esprima = _require("esprima"); } catch (_) { if (typeof window !== "undefined") esprima = window.esprima; } var _require; var Type = require_type(); function resolveJavascriptFunction(data) { if (data === null) return false; try { var source = "(" + data + ")", ast = esprima.parse(source, { range: true }); if (ast.type !== "Program" || ast.body.length !== 1 || ast.body[0].type !== "ExpressionStatement" || ast.body[0].expression.type !== "ArrowFunctionExpression" && ast.body[0].expression.type !== "FunctionExpression") { return false; } return true; } catch (err) { return false; } } function constructJavascriptFunction(data) { var source = "(" + data + ")", ast = esprima.parse(source, { range: true }), params2 = [], body; if (ast.type !== "Program" || ast.body.length !== 1 || ast.body[0].type !== "ExpressionStatement" || ast.body[0].expression.type !== "ArrowFunctionExpression" && ast.body[0].expression.type !== "FunctionExpression") { throw new Error("Failed to resolve function"); } ast.body[0].expression.params.forEach(function(param2) { params2.push(param2.name); }); body = ast.body[0].expression.body.range; if (ast.body[0].expression.body.type === "BlockStatement") { return new Function(params2, source.slice(body[0] + 1, body[1] - 1)); } return new Function(params2, "return " + source.slice(body[0], body[1])); } function representJavascriptFunction(object) { return object.toString(); } function isFunction(object) { return Object.prototype.toString.call(object) === "[object Function]"; } module2.exports = new Type("tag:yaml.org,2002:js/function", { kind: "scalar", resolve: resolveJavascriptFunction, construct: constructJavascriptFunction, predicate: isFunction, represent: representJavascriptFunction }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/default_full.js var require_default_full = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/schema/default_full.js"(exports2, module2) { "use strict"; var Schema = require_schema(); module2.exports = Schema.DEFAULT = new Schema({ include: [ require_default_safe() ], explicit: [ require_undefined(), require_regexp(), require_function() ] }); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/loader.js var require_loader = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/loader.js"(exports2, module2) { "use strict"; var common2 = require_common5(); var YAMLException = require_exception(); var Mark = require_mark(); var DEFAULT_SAFE_SCHEMA = require_default_safe(); var DEFAULT_FULL_SCHEMA = require_default_full(); var _hasOwnProperty = Object.prototype.hasOwnProperty; var CONTEXT_FLOW_IN = 1; var CONTEXT_FLOW_OUT = 2; var CONTEXT_BLOCK_IN = 3; var CONTEXT_BLOCK_OUT = 4; var CHOMPING_CLIP = 1; var CHOMPING_STRIP = 2; var CHOMPING_KEEP = 3; var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; function _class(obj) { return Object.prototype.toString.call(obj); } function is_EOL(c) { return c === 10 || c === 13; } function is_WHITE_SPACE(c) { return c === 9 || c === 32; } function is_WS_OR_EOL(c) { return c === 9 || c === 32 || c === 10 || c === 13; } function is_FLOW_INDICATOR(c) { return c === 44 || c === 91 || c === 93 || c === 123 || c === 125; } function fromHexCode(c) { var lc; if (48 <= c && c <= 57) { return c - 48; } lc = c | 32; if (97 <= lc && lc <= 102) { return lc - 97 + 10; } return -1; } function escapedHexLen(c) { if (c === 120) { return 2; } if (c === 117) { return 4; } if (c === 85) { return 8; } return 0; } function fromDecimalCode(c) { if (48 <= c && c <= 57) { return c - 48; } return -1; } function simpleEscapeSequence(c) { return c === 48 ? "\0" : c === 97 ? "\x07" : c === 98 ? "\b" : c === 116 ? " " : c === 9 ? " " : c === 110 ? "\n" : c === 118 ? "\v" : c === 102 ? "\f" : c === 114 ? "\r" : c === 101 ? "\x1B" : c === 32 ? " " : c === 34 ? '"' : c === 47 ? "/" : c === 92 ? "\\" : c === 78 ? "\x85" : c === 95 ? "\xA0" : c === 76 ? "\u2028" : c === 80 ? "\u2029" : ""; } function charFromCodepoint(c) { if (c <= 65535) { return String.fromCharCode(c); } return String.fromCharCode( (c - 65536 >> 10) + 55296, (c - 65536 & 1023) + 56320 ); } var simpleEscapeCheck = new Array(256); var simpleEscapeMap = new Array(256); for (i = 0; i < 256; i++) { simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; simpleEscapeMap[i] = simpleEscapeSequence(i); } var i; function State(input, options) { this.input = input; this.filename = options["filename"] || null; this.schema = options["schema"] || DEFAULT_FULL_SCHEMA; this.onWarning = options["onWarning"] || null; this.legacy = options["legacy"] || false; this.json = options["json"] || false; this.listener = options["listener"] || null; this.implicitTypes = this.schema.compiledImplicit; this.typeMap = this.schema.compiledTypeMap; this.length = input.length; this.position = 0; this.line = 0; this.lineStart = 0; this.lineIndent = 0; this.documents = []; } function generateError(state, message2) { return new YAMLException( message2, new Mark(state.filename, state.input, state.position, state.line, state.position - state.lineStart) ); } function throwError(state, message2) { throw generateError(state, message2); } function throwWarning(state, message2) { if (state.onWarning) { state.onWarning.call(null, generateError(state, message2)); } } var directiveHandlers = { YAML: function handleYamlDirective(state, name, args2) { var match, major, minor; if (state.version !== null) { throwError(state, "duplication of %YAML directive"); } if (args2.length !== 1) { throwError(state, "YAML directive accepts exactly one argument"); } match = /^([0-9]+)\.([0-9]+)$/.exec(args2[0]); if (match === null) { throwError(state, "ill-formed argument of the YAML directive"); } major = parseInt(match[1], 10); minor = parseInt(match[2], 10); if (major !== 1) { throwError(state, "unacceptable YAML version of the document"); } state.version = args2[0]; state.checkLineBreaks = minor < 2; if (minor !== 1 && minor !== 2) { throwWarning(state, "unsupported YAML version of the document"); } }, TAG: function handleTagDirective(state, name, args2) { var handle, prefix; if (args2.length !== 2) { throwError(state, "TAG directive accepts exactly two arguments"); } handle = args2[0]; prefix = args2[1]; if (!PATTERN_TAG_HANDLE.test(handle)) { throwError(state, "ill-formed tag handle (first argument) of the TAG directive"); } if (_hasOwnProperty.call(state.tagMap, handle)) { throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); } if (!PATTERN_TAG_URI.test(prefix)) { throwError(state, "ill-formed tag prefix (second argument) of the TAG directive"); } state.tagMap[handle] = prefix; } }; function captureSegment(state, start, end, checkJson) { var _position, _length, _character, _result; if (start < end) { _result = state.input.slice(start, end); if (checkJson) { for (_position = 0, _length = _result.length; _position < _length; _position += 1) { _character = _result.charCodeAt(_position); if (!(_character === 9 || 32 <= _character && _character <= 1114111)) { throwError(state, "expected valid JSON character"); } } } else if (PATTERN_NON_PRINTABLE.test(_result)) { throwError(state, "the stream contains non-printable characters"); } state.result += _result; } } function mergeMappings(state, destination, source, overridableKeys) { var sourceKeys, key, index, quantity; if (!common2.isObject(source)) { throwError(state, "cannot merge mappings; the provided source object is unacceptable"); } sourceKeys = Object.keys(source); for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { key = sourceKeys[index]; if (!_hasOwnProperty.call(destination, key)) { destination[key] = source[key]; overridableKeys[key] = true; } } } function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { var index, quantity; if (Array.isArray(keyNode)) { keyNode = Array.prototype.slice.call(keyNode); for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { if (Array.isArray(keyNode[index])) { throwError(state, "nested arrays are not supported inside keys"); } if (typeof keyNode === "object" && _class(keyNode[index]) === "[object Object]") { keyNode[index] = "[object Object]"; } } } if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") { keyNode = "[object Object]"; } keyNode = String(keyNode); if (_result === null) { _result = {}; } if (keyTag === "tag:yaml.org,2002:merge") { if (Array.isArray(valueNode)) { for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { mergeMappings(state, _result, valueNode[index], overridableKeys); } } else { mergeMappings(state, _result, valueNode, overridableKeys); } } else { if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) { state.line = startLine || state.line; state.position = startPos || state.position; throwError(state, "duplicated mapping key"); } _result[keyNode] = valueNode; delete overridableKeys[keyNode]; } return _result; } function readLineBreak(state) { var ch; ch = state.input.charCodeAt(state.position); if (ch === 10) { state.position++; } else if (ch === 13) { state.position++; if (state.input.charCodeAt(state.position) === 10) { state.position++; } } else { throwError(state, "a line break is expected"); } state.line += 1; state.lineStart = state.position; } function skipSeparationSpace(state, allowComments, checkIndent) { var lineBreaks = 0, ch = state.input.charCodeAt(state.position); while (ch !== 0) { while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (allowComments && ch === 35) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 10 && ch !== 13 && ch !== 0); } if (is_EOL(ch)) { readLineBreak(state); ch = state.input.charCodeAt(state.position); lineBreaks++; state.lineIndent = 0; while (ch === 32) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } } else { break; } } if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { throwWarning(state, "deficient indentation"); } return lineBreaks; } function testDocumentSeparator(state) { var _position = state.position, ch; ch = state.input.charCodeAt(_position); if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { _position += 3; ch = state.input.charCodeAt(_position); if (ch === 0 || is_WS_OR_EOL(ch)) { return true; } } return false; } function writeFoldedLines(state, count) { if (count === 1) { state.result += " "; } else if (count > 1) { state.result += common2.repeat("\n", count - 1); } } function readPlainScalar(state, nodeIndent, withinFlowCollection) { var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch; ch = state.input.charCodeAt(state.position); if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) { return false; } if (ch === 63 || ch === 45) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { return false; } } state.kind = "scalar"; state.result = ""; captureStart = captureEnd = state.position; hasPendingContent = false; while (ch !== 0) { if (ch === 58) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { break; } } else if (ch === 35) { preceding = state.input.charCodeAt(state.position - 1); if (is_WS_OR_EOL(preceding)) { break; } } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { break; } else if (is_EOL(ch)) { _line = state.line; _lineStart = state.lineStart; _lineIndent = state.lineIndent; skipSeparationSpace(state, false, -1); if (state.lineIndent >= nodeIndent) { hasPendingContent = true; ch = state.input.charCodeAt(state.position); continue; } else { state.position = captureEnd; state.line = _line; state.lineStart = _lineStart; state.lineIndent = _lineIndent; break; } } if (hasPendingContent) { captureSegment(state, captureStart, captureEnd, false); writeFoldedLines(state, state.line - _line); captureStart = captureEnd = state.position; hasPendingContent = false; } if (!is_WHITE_SPACE(ch)) { captureEnd = state.position + 1; } ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, captureEnd, false); if (state.result) { return true; } state.kind = _kind; state.result = _result; return false; } function readSingleQuotedScalar(state, nodeIndent) { var ch, captureStart, captureEnd; ch = state.input.charCodeAt(state.position); if (ch !== 39) { return false; } state.kind = "scalar"; state.result = ""; state.position++; captureStart = captureEnd = state.position; while ((ch = state.input.charCodeAt(state.position)) !== 0) { if (ch === 39) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); if (ch === 39) { captureStart = state.position; state.position++; captureEnd = state.position; } else { return true; } } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, "unexpected end of the document within a single quoted scalar"); } else { state.position++; captureEnd = state.position; } } throwError(state, "unexpected end of the stream within a single quoted scalar"); } function readDoubleQuotedScalar(state, nodeIndent) { var captureStart, captureEnd, hexLength, hexResult, tmp, ch; ch = state.input.charCodeAt(state.position); if (ch !== 34) { return false; } state.kind = "scalar"; state.result = ""; state.position++; captureStart = captureEnd = state.position; while ((ch = state.input.charCodeAt(state.position)) !== 0) { if (ch === 34) { captureSegment(state, captureStart, state.position, true); state.position++; return true; } else if (ch === 92) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); if (is_EOL(ch)) { skipSeparationSpace(state, false, nodeIndent); } else if (ch < 256 && simpleEscapeCheck[ch]) { state.result += simpleEscapeMap[ch]; state.position++; } else if ((tmp = escapedHexLen(ch)) > 0) { hexLength = tmp; hexResult = 0; for (; hexLength > 0; hexLength--) { ch = state.input.charCodeAt(++state.position); if ((tmp = fromHexCode(ch)) >= 0) { hexResult = (hexResult << 4) + tmp; } else { throwError(state, "expected hexadecimal character"); } } state.result += charFromCodepoint(hexResult); state.position++; } else { throwError(state, "unknown escape sequence"); } captureStart = captureEnd = state.position; } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, "unexpected end of the document within a double quoted scalar"); } else { state.position++; captureEnd = state.position; } } throwError(state, "unexpected end of the stream within a double quoted scalar"); } function readFlowCollection(state, nodeIndent) { var readNext = true, _line, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = {}, keyNode, keyTag, valueNode, ch; ch = state.input.charCodeAt(state.position); if (ch === 91) { terminator = 93; isMapping = false; _result = []; } else if (ch === 123) { terminator = 125; isMapping = true; _result = {}; } else { return false; } if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(++state.position); while (ch !== 0) { skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if (ch === terminator) { state.position++; state.tag = _tag; state.anchor = _anchor; state.kind = isMapping ? "mapping" : "sequence"; state.result = _result; return true; } else if (!readNext) { throwError(state, "missed comma between flow collection entries"); } keyTag = keyNode = valueNode = null; isPair = isExplicitPair = false; if (ch === 63) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following)) { isPair = isExplicitPair = true; state.position++; skipSeparationSpace(state, true, nodeIndent); } } _line = state.line; composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); keyTag = state.tag; keyNode = state.result; skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if ((isExplicitPair || state.line === _line) && ch === 58) { isPair = true; ch = state.input.charCodeAt(++state.position); skipSeparationSpace(state, true, nodeIndent); composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); valueNode = state.result; } if (isMapping) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); } else if (isPair) { _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); } else { _result.push(keyNode); } skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if (ch === 44) { readNext = true; ch = state.input.charCodeAt(++state.position); } else { readNext = false; } } throwError(state, "unexpected end of the stream within a flow collection"); } function readBlockScalar(state, nodeIndent) { var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch; ch = state.input.charCodeAt(state.position); if (ch === 124) { folding = false; } else if (ch === 62) { folding = true; } else { return false; } state.kind = "scalar"; state.result = ""; while (ch !== 0) { ch = state.input.charCodeAt(++state.position); if (ch === 43 || ch === 45) { if (CHOMPING_CLIP === chomping) { chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP; } else { throwError(state, "repeat of a chomping mode identifier"); } } else if ((tmp = fromDecimalCode(ch)) >= 0) { if (tmp === 0) { throwError(state, "bad explicit indentation width of a block scalar; it cannot be less than one"); } else if (!detectedIndent) { textIndent = nodeIndent + tmp - 1; detectedIndent = true; } else { throwError(state, "repeat of an indentation width identifier"); } } else { break; } } if (is_WHITE_SPACE(ch)) { do { ch = state.input.charCodeAt(++state.position); } while (is_WHITE_SPACE(ch)); if (ch === 35) { do { ch = state.input.charCodeAt(++state.position); } while (!is_EOL(ch) && ch !== 0); } } while (ch !== 0) { readLineBreak(state); state.lineIndent = 0; ch = state.input.charCodeAt(state.position); while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } if (!detectedIndent && state.lineIndent > textIndent) { textIndent = state.lineIndent; } if (is_EOL(ch)) { emptyLines++; continue; } if (state.lineIndent < textIndent) { if (chomping === CHOMPING_KEEP) { state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } else if (chomping === CHOMPING_CLIP) { if (didReadContent) { state.result += "\n"; } } break; } if (folding) { if (is_WHITE_SPACE(ch)) { atMoreIndented = true; state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } else if (atMoreIndented) { atMoreIndented = false; state.result += common2.repeat("\n", emptyLines + 1); } else if (emptyLines === 0) { if (didReadContent) { state.result += " "; } } else { state.result += common2.repeat("\n", emptyLines); } } else { state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } didReadContent = true; detectedIndent = true; emptyLines = 0; captureStart = state.position; while (!is_EOL(ch) && ch !== 0) { ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, state.position, false); } return true; } function readBlockSequence(state, nodeIndent) { var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch; if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(state.position); while (ch !== 0) { if (ch !== 45) { break; } following = state.input.charCodeAt(state.position + 1); if (!is_WS_OR_EOL(following)) { break; } detected = true; state.position++; if (skipSeparationSpace(state, true, -1)) { if (state.lineIndent <= nodeIndent) { _result.push(null); ch = state.input.charCodeAt(state.position); continue; } } _line = state.line; composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); _result.push(state.result); skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { throwError(state, "bad indentation of a sequence entry"); } else if (state.lineIndent < nodeIndent) { break; } } if (detected) { state.tag = _tag; state.anchor = _anchor; state.kind = "sequence"; state.result = _result; return true; } return false; } function readBlockMapping(state, nodeIndent, flowIndent) { var following, allowCompact, _line, _pos, _tag = state.tag, _anchor = state.anchor, _result = {}, overridableKeys = {}, keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch; if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(state.position); while (ch !== 0) { following = state.input.charCodeAt(state.position + 1); _line = state.line; _pos = state.position; if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) { if (ch === 63) { if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = true; allowCompact = true; } else if (atExplicitKey) { atExplicitKey = false; allowCompact = true; } else { throwError(state, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"); } state.position += 1; ch = following; } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { if (state.line === _line) { ch = state.input.charCodeAt(state.position); while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (ch === 58) { ch = state.input.charCodeAt(++state.position); if (!is_WS_OR_EOL(ch)) { throwError(state, "a whitespace character is expected after the key-value separator within a block mapping"); } if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = false; allowCompact = false; keyTag = state.tag; keyNode = state.result; } else if (detected) { throwError(state, "can not read an implicit mapping pair; a colon is missed"); } else { state.tag = _tag; state.anchor = _anchor; return true; } } else if (detected) { throwError(state, "can not read a block mapping entry; a multiline key may not be an implicit key"); } else { state.tag = _tag; state.anchor = _anchor; return true; } } else { break; } if (state.line === _line || state.lineIndent > nodeIndent) { if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { if (atExplicitKey) { keyNode = state.result; } else { valueNode = state.result; } } if (!atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos); keyTag = keyNode = valueNode = null; } skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); } if (state.lineIndent > nodeIndent && ch !== 0) { throwError(state, "bad indentation of a mapping entry"); } else if (state.lineIndent < nodeIndent) { break; } } if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); } if (detected) { state.tag = _tag; state.anchor = _anchor; state.kind = "mapping"; state.result = _result; } return detected; } function readTagProperty(state) { var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch; ch = state.input.charCodeAt(state.position); if (ch !== 33) return false; if (state.tag !== null) { throwError(state, "duplication of a tag property"); } ch = state.input.charCodeAt(++state.position); if (ch === 60) { isVerbatim = true; ch = state.input.charCodeAt(++state.position); } else if (ch === 33) { isNamed = true; tagHandle = "!!"; ch = state.input.charCodeAt(++state.position); } else { tagHandle = "!"; } _position = state.position; if (isVerbatim) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 0 && ch !== 62); if (state.position < state.length) { tagName = state.input.slice(_position, state.position); ch = state.input.charCodeAt(++state.position); } else { throwError(state, "unexpected end of the stream within a verbatim tag"); } } else { while (ch !== 0 && !is_WS_OR_EOL(ch)) { if (ch === 33) { if (!isNamed) { tagHandle = state.input.slice(_position - 1, state.position + 1); if (!PATTERN_TAG_HANDLE.test(tagHandle)) { throwError(state, "named tag handle cannot contain such characters"); } isNamed = true; _position = state.position + 1; } else { throwError(state, "tag suffix cannot contain exclamation marks"); } } ch = state.input.charCodeAt(++state.position); } tagName = state.input.slice(_position, state.position); if (PATTERN_FLOW_INDICATORS.test(tagName)) { throwError(state, "tag suffix cannot contain flow indicator characters"); } } if (tagName && !PATTERN_TAG_URI.test(tagName)) { throwError(state, "tag name cannot contain such characters: " + tagName); } if (isVerbatim) { state.tag = tagName; } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { state.tag = state.tagMap[tagHandle] + tagName; } else if (tagHandle === "!") { state.tag = "!" + tagName; } else if (tagHandle === "!!") { state.tag = "tag:yaml.org,2002:" + tagName; } else { throwError(state, 'undeclared tag handle "' + tagHandle + '"'); } return true; } function readAnchorProperty(state) { var _position, ch; ch = state.input.charCodeAt(state.position); if (ch !== 38) return false; if (state.anchor !== null) { throwError(state, "duplication of an anchor property"); } ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { throwError(state, "name of an anchor node must contain at least one character"); } state.anchor = state.input.slice(_position, state.position); return true; } function readAlias(state) { var _position, alias2, ch; ch = state.input.charCodeAt(state.position); if (ch !== 42) return false; ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { throwError(state, "name of an alias node must contain at least one character"); } alias2 = state.input.slice(_position, state.position); if (!state.anchorMap.hasOwnProperty(alias2)) { throwError(state, 'unidentified alias "' + alias2 + '"'); } state.result = state.anchorMap[alias2]; skipSeparationSpace(state, true, -1); return true; } function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, type, flowIndent, blockIndent; if (state.listener !== null) { state.listener("open", state); } state.tag = null; state.anchor = null; state.kind = null; state.result = null; allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext; if (allowToSeek) { if (skipSeparationSpace(state, true, -1)) { atNewLine = true; if (state.lineIndent > parentIndent) { indentStatus = 1; } else if (state.lineIndent === parentIndent) { indentStatus = 0; } else if (state.lineIndent < parentIndent) { indentStatus = -1; } } } if (indentStatus === 1) { while (readTagProperty(state) || readAnchorProperty(state)) { if (skipSeparationSpace(state, true, -1)) { atNewLine = true; allowBlockCollections = allowBlockStyles; if (state.lineIndent > parentIndent) { indentStatus = 1; } else if (state.lineIndent === parentIndent) { indentStatus = 0; } else if (state.lineIndent < parentIndent) { indentStatus = -1; } } else { allowBlockCollections = false; } } } if (allowBlockCollections) { allowBlockCollections = atNewLine || allowCompact; } if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { flowIndent = parentIndent; } else { flowIndent = parentIndent + 1; } blockIndent = state.position - state.lineStart; if (indentStatus === 1) { if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { hasContent = true; } else { if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { hasContent = true; } else if (readAlias(state)) { hasContent = true; if (state.tag !== null || state.anchor !== null) { throwError(state, "alias node should not have any properties"); } } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { hasContent = true; if (state.tag === null) { state.tag = "?"; } } if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } } } else if (indentStatus === 0) { hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); } } if (state.tag !== null && state.tag !== "!") { if (state.tag === "?") { for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { type = state.implicitTypes[typeIndex]; if (type.resolve(state.result)) { state.result = type.construct(state.result); state.tag = type.tag; if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } break; } } } else if (_hasOwnProperty.call(state.typeMap[state.kind || "fallback"], state.tag)) { type = state.typeMap[state.kind || "fallback"][state.tag]; if (state.result !== null && type.kind !== state.kind) { throwError(state, "unacceptable node kind for !<" + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); } if (!type.resolve(state.result)) { throwError(state, "cannot resolve a node with !<" + state.tag + "> explicit tag"); } else { state.result = type.construct(state.result); if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } } } else { throwError(state, "unknown tag !<" + state.tag + ">"); } } if (state.listener !== null) { state.listener("close", state); } return state.tag !== null || state.anchor !== null || hasContent; } function readDocument(state) { var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch; state.version = null; state.checkLineBreaks = state.legacy; state.tagMap = {}; state.anchorMap = {}; while ((ch = state.input.charCodeAt(state.position)) !== 0) { skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); if (state.lineIndent > 0 || ch !== 37) { break; } hasDirectives = true; ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { ch = state.input.charCodeAt(++state.position); } directiveName = state.input.slice(_position, state.position); directiveArgs = []; if (directiveName.length < 1) { throwError(state, "directive name must not be less than one character in length"); } while (ch !== 0) { while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (ch === 35) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 0 && !is_EOL(ch)); break; } if (is_EOL(ch)) break; _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { ch = state.input.charCodeAt(++state.position); } directiveArgs.push(state.input.slice(_position, state.position)); } if (ch !== 0) readLineBreak(state); if (_hasOwnProperty.call(directiveHandlers, directiveName)) { directiveHandlers[directiveName](state, directiveName, directiveArgs); } else { throwWarning(state, 'unknown document directive "' + directiveName + '"'); } } skipSeparationSpace(state, true, -1); if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) { state.position += 3; skipSeparationSpace(state, true, -1); } else if (hasDirectives) { throwError(state, "directives end mark is expected"); } composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); skipSeparationSpace(state, true, -1); if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { throwWarning(state, "non-ASCII line breaks are interpreted as content"); } state.documents.push(state.result); if (state.position === state.lineStart && testDocumentSeparator(state)) { if (state.input.charCodeAt(state.position) === 46) { state.position += 3; skipSeparationSpace(state, true, -1); } return; } if (state.position < state.length - 1) { throwError(state, "end of the stream or a document separator is expected"); } else { return; } } function loadDocuments(input, options) { input = String(input); options = options || {}; if (input.length !== 0) { if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) { input += "\n"; } if (input.charCodeAt(0) === 65279) { input = input.slice(1); } } var state = new State(input, options); state.input += "\0"; while (state.input.charCodeAt(state.position) === 32) { state.lineIndent += 1; state.position += 1; } while (state.position < state.length - 1) { readDocument(state); } return state.documents; } function loadAll(input, iterator, options) { var documents = loadDocuments(input, options), index, length; if (typeof iterator !== "function") { return documents; } for (index = 0, length = documents.length; index < length; index += 1) { iterator(documents[index]); } } function load3(input, options) { var documents = loadDocuments(input, options); if (documents.length === 0) { return void 0; } else if (documents.length === 1) { return documents[0]; } throw new YAMLException("expected a single document in the stream, but found more"); } function safeLoadAll(input, output2, options) { if (typeof output2 === "function") { loadAll(input, output2, common2.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } else { return loadAll(input, common2.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } } function safeLoad(input, options) { return load3(input, common2.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } module2.exports.loadAll = loadAll; module2.exports.load = load3; module2.exports.safeLoadAll = safeLoadAll; module2.exports.safeLoad = safeLoad; } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/dumper.js var require_dumper = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/dumper.js"(exports2, module2) { "use strict"; var common2 = require_common5(); var YAMLException = require_exception(); var DEFAULT_FULL_SCHEMA = require_default_full(); var DEFAULT_SAFE_SCHEMA = require_default_safe(); var _toString = Object.prototype.toString; var _hasOwnProperty = Object.prototype.hasOwnProperty; var CHAR_TAB = 9; var CHAR_LINE_FEED = 10; var CHAR_SPACE = 32; var CHAR_EXCLAMATION = 33; var CHAR_DOUBLE_QUOTE = 34; var CHAR_SHARP = 35; var CHAR_PERCENT = 37; var CHAR_AMPERSAND = 38; var CHAR_SINGLE_QUOTE = 39; var CHAR_ASTERISK = 42; var CHAR_COMMA2 = 44; var CHAR_MINUS = 45; var CHAR_COLON2 = 58; var CHAR_GREATER_THAN = 62; var CHAR_QUESTION = 63; var CHAR_COMMERCIAL_AT = 64; var CHAR_LEFT_SQUARE_BRACKET = 91; var CHAR_RIGHT_SQUARE_BRACKET = 93; var CHAR_GRAVE_ACCENT = 96; var CHAR_LEFT_CURLY_BRACKET = 123; var CHAR_VERTICAL_LINE = 124; var CHAR_RIGHT_CURLY_BRACKET = 125; var ESCAPE_SEQUENCES = {}; ESCAPE_SEQUENCES[0] = "\\0"; ESCAPE_SEQUENCES[7] = "\\a"; ESCAPE_SEQUENCES[8] = "\\b"; ESCAPE_SEQUENCES[9] = "\\t"; ESCAPE_SEQUENCES[10] = "\\n"; ESCAPE_SEQUENCES[11] = "\\v"; ESCAPE_SEQUENCES[12] = "\\f"; ESCAPE_SEQUENCES[13] = "\\r"; ESCAPE_SEQUENCES[27] = "\\e"; ESCAPE_SEQUENCES[34] = '\\"'; ESCAPE_SEQUENCES[92] = "\\\\"; ESCAPE_SEQUENCES[133] = "\\N"; ESCAPE_SEQUENCES[160] = "\\_"; ESCAPE_SEQUENCES[8232] = "\\L"; ESCAPE_SEQUENCES[8233] = "\\P"; var DEPRECATED_BOOLEANS_SYNTAX = [ "y", "Y", "yes", "Yes", "YES", "on", "On", "ON", "n", "N", "no", "No", "NO", "off", "Off", "OFF" ]; function compileStyleMap(schema, map) { var result, keys, index, length, tag, style, type; if (map === null) return {}; result = {}; keys = Object.keys(map); for (index = 0, length = keys.length; index < length; index += 1) { tag = keys[index]; style = String(map[tag]); if (tag.slice(0, 2) === "!!") { tag = "tag:yaml.org,2002:" + tag.slice(2); } type = schema.compiledTypeMap["fallback"][tag]; if (type && _hasOwnProperty.call(type.styleAliases, style)) { style = type.styleAliases[style]; } result[tag] = style; } return result; } function encodeHex(character) { var string, handle, length; string = character.toString(16).toUpperCase(); if (character <= 255) { handle = "x"; length = 2; } else if (character <= 65535) { handle = "u"; length = 4; } else if (character <= 4294967295) { handle = "U"; length = 8; } else { throw new YAMLException("code point within a string may not be greater than 0xFFFFFFFF"); } return "\\" + handle + common2.repeat("0", length - string.length) + string; } function State(options) { this.schema = options["schema"] || DEFAULT_FULL_SCHEMA; this.indent = Math.max(1, options["indent"] || 2); this.noArrayIndent = options["noArrayIndent"] || false; this.skipInvalid = options["skipInvalid"] || false; this.flowLevel = common2.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"]; this.styleMap = compileStyleMap(this.schema, options["styles"] || null); this.sortKeys = options["sortKeys"] || false; this.lineWidth = options["lineWidth"] || 80; this.noRefs = options["noRefs"] || false; this.noCompatMode = options["noCompatMode"] || false; this.condenseFlow = options["condenseFlow"] || false; this.implicitTypes = this.schema.compiledImplicit; this.explicitTypes = this.schema.compiledExplicit; this.tag = null; this.result = ""; this.duplicates = []; this.usedDuplicates = null; } function indentString(string, spaces) { var ind = common2.repeat(" ", spaces), position = 0, next = -1, result = "", line, length = string.length; while (position < length) { next = string.indexOf("\n", position); if (next === -1) { line = string.slice(position); position = length; } else { line = string.slice(position, next + 1); position = next + 1; } if (line.length && line !== "\n") result += ind; result += line; } return result; } function generateNextLine(state, level) { return "\n" + common2.repeat(" ", state.indent * level); } function testImplicitResolving(state, str) { var index, length, type; for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { type = state.implicitTypes[index]; if (type.resolve(str)) { return true; } } return false; } function isWhitespace(c) { return c === CHAR_SPACE || c === CHAR_TAB; } function isPrintable(c) { return 32 <= c && c <= 126 || 161 <= c && c <= 55295 && c !== 8232 && c !== 8233 || 57344 <= c && c <= 65533 && c !== 65279 || 65536 <= c && c <= 1114111; } function isPlainSafe(c) { return isPrintable(c) && c !== 65279 && c !== CHAR_COMMA2 && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_COLON2 && c !== CHAR_SHARP; } function isPlainSafeFirst(c) { return isPrintable(c) && c !== 65279 && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON2 && c !== CHAR_COMMA2 && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; } function needIndentIndicator(string) { var leadingSpaceRe = /^\n* /; return leadingSpaceRe.test(string); } var STYLE_PLAIN = 1; var STYLE_SINGLE = 2; var STYLE_LITERAL = 3; var STYLE_FOLDED = 4; var STYLE_DOUBLE = 5; function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { var i; var char; var hasLineBreak = false; var hasFoldableLine = false; var shouldTrackWidth = lineWidth !== -1; var previousLineBreak = -1; var plain = isPlainSafeFirst(string.charCodeAt(0)) && !isWhitespace(string.charCodeAt(string.length - 1)); if (singleLineOnly) { for (i = 0; i < string.length; i++) { char = string.charCodeAt(i); if (!isPrintable(char)) { return STYLE_DOUBLE; } plain = plain && isPlainSafe(char); } } else { for (i = 0; i < string.length; i++) { char = string.charCodeAt(i); if (char === CHAR_LINE_FEED) { hasLineBreak = true; if (shouldTrackWidth) { hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "; previousLineBreak = i; } } else if (!isPrintable(char)) { return STYLE_DOUBLE; } plain = plain && isPlainSafe(char); } hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "); } if (!hasLineBreak && !hasFoldableLine) { return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE; } if (indentPerLevel > 9 && needIndentIndicator(string)) { return STYLE_DOUBLE; } return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; } function writeScalar(state, string, level, iskey) { state.dump = function() { if (string.length === 0) { return "''"; } if (!state.noCompatMode && DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { return "'" + string + "'"; } var indent = state.indent * Math.max(1, level); var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); var singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel; function testAmbiguity(string2) { return testImplicitResolving(state, string2); } switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { case STYLE_PLAIN: return string; case STYLE_SINGLE: return "'" + string.replace(/'/g, "''") + "'"; case STYLE_LITERAL: return "|" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); case STYLE_FOLDED: return ">" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); case STYLE_DOUBLE: return '"' + escapeString(string, lineWidth) + '"'; default: throw new YAMLException("impossible error: invalid scalar style"); } }(); } function blockHeader(string, indentPerLevel) { var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ""; var clip = string[string.length - 1] === "\n"; var keep = clip && (string[string.length - 2] === "\n" || string === "\n"); var chomp = keep ? "+" : clip ? "" : "-"; return indentIndicator + chomp + "\n"; } function dropEndingNewline(string) { return string[string.length - 1] === "\n" ? string.slice(0, -1) : string; } function foldString(string, width) { var lineRe = /(\n+)([^\n]*)/g; var result = function() { var nextLF = string.indexOf("\n"); nextLF = nextLF !== -1 ? nextLF : string.length; lineRe.lastIndex = nextLF; return foldLine(string.slice(0, nextLF), width); }(); var prevMoreIndented = string[0] === "\n" || string[0] === " "; var moreIndented; var match; while (match = lineRe.exec(string)) { var prefix = match[1], line = match[2]; moreIndented = line[0] === " "; result += prefix + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + foldLine(line, width); prevMoreIndented = moreIndented; } return result; } function foldLine(line, width) { if (line === "" || line[0] === " ") return line; var breakRe = / [^ ]/g; var match; var start = 0, end, curr = 0, next = 0; var result = ""; while (match = breakRe.exec(line)) { next = match.index; if (next - start > width) { end = curr > start ? curr : next; result += "\n" + line.slice(start, end); start = end + 1; } curr = next; } result += "\n"; if (line.length - start > width && curr > start) { result += line.slice(start, curr) + "\n" + line.slice(curr + 1); } else { result += line.slice(start); } return result.slice(1); } function escapeString(string) { var result = ""; var char, nextChar; var escapeSeq; for (var i = 0; i < string.length; i++) { char = string.charCodeAt(i); if (char >= 55296 && char <= 56319) { nextChar = string.charCodeAt(i + 1); if (nextChar >= 56320 && nextChar <= 57343) { result += encodeHex((char - 55296) * 1024 + nextChar - 56320 + 65536); i++; continue; } } escapeSeq = ESCAPE_SEQUENCES[char]; result += !escapeSeq && isPrintable(char) ? string[i] : escapeSeq || encodeHex(char); } return result; } function writeFlowSequence(state, level, object) { var _result = "", _tag = state.tag, index, length; for (index = 0, length = object.length; index < length; index += 1) { if (writeNode(state, level, object[index], false, false)) { if (index !== 0) _result += "," + (!state.condenseFlow ? " " : ""); _result += state.dump; } } state.tag = _tag; state.dump = "[" + _result + "]"; } function writeBlockSequence(state, level, object, compact) { var _result = "", _tag = state.tag, index, length; for (index = 0, length = object.length; index < length; index += 1) { if (writeNode(state, level + 1, object[index], true, true)) { if (!compact || index !== 0) { _result += generateNextLine(state, level); } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { _result += "-"; } else { _result += "- "; } _result += state.dump; } } state.tag = _tag; state.dump = _result || "[]"; } function writeFlowMapping(state, level, object) { var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, pairBuffer; for (index = 0, length = objectKeyList.length; index < length; index += 1) { pairBuffer = state.condenseFlow ? '"' : ""; if (index !== 0) pairBuffer += ", "; objectKey = objectKeyList[index]; objectValue = object[objectKey]; if (!writeNode(state, level, objectKey, false, false)) { continue; } if (state.dump.length > 1024) pairBuffer += "? "; pairBuffer += state.dump + (state.condenseFlow ? '"' : "") + ":" + (state.condenseFlow ? "" : " "); if (!writeNode(state, level, objectValue, false, false)) { continue; } pairBuffer += state.dump; _result += pairBuffer; } state.tag = _tag; state.dump = "{" + _result + "}"; } function writeBlockMapping(state, level, object, compact) { var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, explicitPair, pairBuffer; if (state.sortKeys === true) { objectKeyList.sort(); } else if (typeof state.sortKeys === "function") { objectKeyList.sort(state.sortKeys); } else if (state.sortKeys) { throw new YAMLException("sortKeys must be a boolean or a function"); } for (index = 0, length = objectKeyList.length; index < length; index += 1) { pairBuffer = ""; if (!compact || index !== 0) { pairBuffer += generateNextLine(state, level); } objectKey = objectKeyList[index]; objectValue = object[objectKey]; if (!writeNode(state, level + 1, objectKey, true, true, true)) { continue; } explicitPair = state.tag !== null && state.tag !== "?" || state.dump && state.dump.length > 1024; if (explicitPair) { if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { pairBuffer += "?"; } else { pairBuffer += "? "; } } pairBuffer += state.dump; if (explicitPair) { pairBuffer += generateNextLine(state, level); } if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { continue; } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { pairBuffer += ":"; } else { pairBuffer += ": "; } pairBuffer += state.dump; _result += pairBuffer; } state.tag = _tag; state.dump = _result || "{}"; } function detectType(state, object, explicit) { var _result, typeList, index, length, type, style; typeList = explicit ? state.explicitTypes : state.implicitTypes; for (index = 0, length = typeList.length; index < length; index += 1) { type = typeList[index]; if ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object === "object" && object instanceof type.instanceOf) && (!type.predicate || type.predicate(object))) { state.tag = explicit ? type.tag : "?"; if (type.represent) { style = state.styleMap[type.tag] || type.defaultStyle; if (_toString.call(type.represent) === "[object Function]") { _result = type.represent(object, style); } else if (_hasOwnProperty.call(type.represent, style)) { _result = type.represent[style](object, style); } else { throw new YAMLException("!<" + type.tag + '> tag resolver accepts not "' + style + '" style'); } state.dump = _result; } return true; } } return false; } function writeNode(state, level, object, block, compact, iskey) { state.tag = null; state.dump = object; if (!detectType(state, object, false)) { detectType(state, object, true); } var type = _toString.call(state.dump); if (block) { block = state.flowLevel < 0 || state.flowLevel > level; } var objectOrArray = type === "[object Object]" || type === "[object Array]", duplicateIndex, duplicate; if (objectOrArray) { duplicateIndex = state.duplicates.indexOf(object); duplicate = duplicateIndex !== -1; } if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) { compact = false; } if (duplicate && state.usedDuplicates[duplicateIndex]) { state.dump = "*ref_" + duplicateIndex; } else { if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { state.usedDuplicates[duplicateIndex] = true; } if (type === "[object Object]") { if (block && Object.keys(state.dump).length !== 0) { writeBlockMapping(state, level, state.dump, compact); if (duplicate) { state.dump = "&ref_" + duplicateIndex + state.dump; } } else { writeFlowMapping(state, level, state.dump); if (duplicate) { state.dump = "&ref_" + duplicateIndex + " " + state.dump; } } } else if (type === "[object Array]") { var arrayLevel = state.noArrayIndent && level > 0 ? level - 1 : level; if (block && state.dump.length !== 0) { writeBlockSequence(state, arrayLevel, state.dump, compact); if (duplicate) { state.dump = "&ref_" + duplicateIndex + state.dump; } } else { writeFlowSequence(state, arrayLevel, state.dump); if (duplicate) { state.dump = "&ref_" + duplicateIndex + " " + state.dump; } } } else if (type === "[object String]") { if (state.tag !== "?") { writeScalar(state, state.dump, level, iskey); } } else { if (state.skipInvalid) return false; throw new YAMLException("unacceptable kind of an object to dump " + type); } if (state.tag !== null && state.tag !== "?") { state.dump = "!<" + state.tag + "> " + state.dump; } } return true; } function getDuplicateReferences(object, state) { var objects = [], duplicatesIndexes = [], index, length; inspectNode(object, objects, duplicatesIndexes); for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { state.duplicates.push(objects[duplicatesIndexes[index]]); } state.usedDuplicates = new Array(length); } function inspectNode(object, objects, duplicatesIndexes) { var objectKeyList, index, length; if (object !== null && typeof object === "object") { index = objects.indexOf(object); if (index !== -1) { if (duplicatesIndexes.indexOf(index) === -1) { duplicatesIndexes.push(index); } } else { objects.push(object); if (Array.isArray(object)) { for (index = 0, length = object.length; index < length; index += 1) { inspectNode(object[index], objects, duplicatesIndexes); } } else { objectKeyList = Object.keys(object); for (index = 0, length = objectKeyList.length; index < length; index += 1) { inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); } } } } } function dump(input, options) { options = options || {}; var state = new State(options); if (!state.noRefs) getDuplicateReferences(input, state); if (writeNode(state, 0, input, true, true)) return state.dump + "\n"; return ""; } function safeDump(input, options) { return dump(input, common2.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } module2.exports.dump = dump; module2.exports.safeDump = safeDump; } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml.js var require_js_yaml = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml.js"(exports2, module2) { "use strict"; var loader = require_loader(); var dumper = require_dumper(); function deprecated(name) { return function() { throw new Error("Function " + name + " is deprecated and cannot be used."); }; } module2.exports.Type = require_type(); module2.exports.Schema = require_schema(); module2.exports.FAILSAFE_SCHEMA = require_failsafe(); module2.exports.JSON_SCHEMA = require_json3(); module2.exports.CORE_SCHEMA = require_core(); module2.exports.DEFAULT_SAFE_SCHEMA = require_default_safe(); module2.exports.DEFAULT_FULL_SCHEMA = require_default_full(); module2.exports.load = loader.load; module2.exports.loadAll = loader.loadAll; module2.exports.safeLoad = loader.safeLoad; module2.exports.safeLoadAll = loader.safeLoadAll; module2.exports.dump = dumper.dump; module2.exports.safeDump = dumper.safeDump; module2.exports.YAMLException = require_exception(); module2.exports.MINIMAL_SCHEMA = require_failsafe(); module2.exports.SAFE_SCHEMA = require_default_safe(); module2.exports.DEFAULT_SCHEMA = require_default_full(); module2.exports.scan = deprecated("scan"); module2.exports.parse = deprecated("parse"); module2.exports.compose = deprecated("compose"); module2.exports.addConstructor = deprecated("addConstructor"); } }); // ../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/index.js var require_js_yaml2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/index.js"(exports2, module2) { "use strict"; var yaml = require_js_yaml(); module2.exports = yaml; } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/parser.js var require_parser = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/parser.js"(exports2, module2) { "use strict"; var ParserEND = 1114112; var ParserError = class _ParserError extends Error { /* istanbul ignore next */ constructor(msg, filename, linenumber) { super("[ParserError] " + msg, filename, linenumber); this.name = "ParserError"; this.code = "ParserError"; if (Error.captureStackTrace) Error.captureStackTrace(this, _ParserError); } }; var State = class { constructor(parser) { this.parser = parser; this.buf = ""; this.returned = null; this.result = null; this.resultTable = null; this.resultArr = null; } }; var Parser = class { constructor() { this.pos = 0; this.col = 0; this.line = 0; this.obj = {}; this.ctx = this.obj; this.stack = []; this._buf = ""; this.char = null; this.ii = 0; this.state = new State(this.parseStart); } parse(str) { if (str.length === 0 || str.length == null) return; this._buf = String(str); this.ii = -1; this.char = -1; let getNext; while (getNext === false || this.nextChar()) { getNext = this.runOne(); } this._buf = null; } nextChar() { if (this.char === 10) { ++this.line; this.col = -1; } ++this.ii; this.char = this._buf.codePointAt(this.ii); ++this.pos; ++this.col; return this.haveBuffer(); } haveBuffer() { return this.ii < this._buf.length; } runOne() { return this.state.parser.call(this, this.state.returned); } finish() { this.char = ParserEND; let last; do { last = this.state.parser; this.runOne(); } while (this.state.parser !== last); this.ctx = null; this.state = null; this._buf = null; return this.obj; } next(fn2) { if (typeof fn2 !== "function") throw new ParserError("Tried to set state to non-existent state: " + JSON.stringify(fn2)); this.state.parser = fn2; } goto(fn2) { this.next(fn2); return this.runOne(); } call(fn2, returnWith) { if (returnWith) this.next(returnWith); this.stack.push(this.state); this.state = new State(fn2); } callNow(fn2, returnWith) { this.call(fn2, returnWith); return this.runOne(); } return(value) { if (this.stack.length === 0) throw this.error(new ParserError("Stack underflow")); if (value === void 0) value = this.state.buf; this.state = this.stack.pop(); this.state.returned = value; } returnNow(value) { this.return(value); return this.runOne(); } consume() { if (this.char === ParserEND) throw this.error(new ParserError("Unexpected end-of-buffer")); this.state.buf += this._buf[this.ii]; } error(err) { err.line = this.line; err.col = this.col; err.pos = this.pos; return err; } /* istanbul ignore next */ parseStart() { throw new ParserError("Must declare a parseStart method"); } }; Parser.END = ParserEND; Parser.Error = ParserError; module2.exports = Parser; } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/create-datetime.js var require_create_datetime = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/create-datetime.js"(exports2, module2) { "use strict"; module2.exports = (value) => { const date = new Date(value); if (isNaN(date)) { throw new TypeError("Invalid Datetime"); } else { return date; } }; } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/format-num.js var require_format_num = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/format-num.js"(exports2, module2) { "use strict"; module2.exports = (d, num) => { num = String(num); while (num.length < d) num = "0" + num; return num; }; } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/create-datetime-float.js var require_create_datetime_float = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/create-datetime-float.js"(exports2, module2) { "use strict"; var f = require_format_num(); var FloatingDateTime = class extends Date { constructor(value) { super(value + "Z"); this.isFloating = true; } toISOString() { const date = `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`; const time = `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`; return `${date}T${time}`; } }; module2.exports = (value) => { const date = new FloatingDateTime(value); if (isNaN(date)) { throw new TypeError("Invalid Datetime"); } else { return date; } }; } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/create-date.js var require_create_date = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/create-date.js"(exports2, module2) { "use strict"; var f = require_format_num(); var DateTime = global.Date; var Date2 = class extends DateTime { constructor(value) { super(value); this.isDate = true; } toISOString() { return `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`; } }; module2.exports = (value) => { const date = new Date2(value); if (isNaN(date)) { throw new TypeError("Invalid Datetime"); } else { return date; } }; } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/create-time.js var require_create_time = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/create-time.js"(exports2, module2) { "use strict"; var f = require_format_num(); var Time = class extends Date { constructor(value) { super(`0000-01-01T${value}Z`); this.isTime = true; } toISOString() { return `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`; } }; module2.exports = (value) => { const date = new Time(value); if (isNaN(date)) { throw new TypeError("Invalid Datetime"); } else { return date; } }; } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/toml-parser.js var require_toml_parser = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/lib/toml-parser.js"(exports, module) { "use strict"; module.exports = makeParserClass(require_parser()); module.exports.makeParserClass = makeParserClass; var TomlError = class _TomlError extends Error { constructor(msg) { super(msg); this.name = "TomlError"; if (Error.captureStackTrace) Error.captureStackTrace(this, _TomlError); this.fromTOML = true; this.wrapped = null; } }; TomlError.wrap = (err) => { const terr = new TomlError(err.message); terr.code = err.code; terr.wrapped = err; return terr; }; module.exports.TomlError = TomlError; var createDateTime = require_create_datetime(); var createDateTimeFloat = require_create_datetime_float(); var createDate = require_create_date(); var createTime = require_create_time(); var CTRL_I = 9; var CTRL_J = 10; var CTRL_M = 13; var CTRL_CHAR_BOUNDARY = 31; var CHAR_SP = 32; var CHAR_QUOT = 34; var CHAR_NUM = 35; var CHAR_APOS = 39; var CHAR_PLUS = 43; var CHAR_COMMA = 44; var CHAR_HYPHEN = 45; var CHAR_PERIOD = 46; var CHAR_0 = 48; var CHAR_1 = 49; var CHAR_7 = 55; var CHAR_9 = 57; var CHAR_COLON = 58; var CHAR_EQUALS = 61; var CHAR_A = 65; var CHAR_E = 69; var CHAR_F = 70; var CHAR_T = 84; var CHAR_U = 85; var CHAR_Z = 90; var CHAR_LOWBAR = 95; var CHAR_a = 97; var CHAR_b = 98; var CHAR_e = 101; var CHAR_f = 102; var CHAR_i = 105; var CHAR_l = 108; var CHAR_n = 110; var CHAR_o = 111; var CHAR_r = 114; var CHAR_s = 115; var CHAR_t = 116; var CHAR_u = 117; var CHAR_x = 120; var CHAR_z = 122; var CHAR_LCUB = 123; var CHAR_RCUB = 125; var CHAR_LSQB = 91; var CHAR_BSOL = 92; var CHAR_RSQB = 93; var CHAR_DEL = 127; var SURROGATE_FIRST = 55296; var SURROGATE_LAST = 57343; var escapes = { [CHAR_b]: "\b", [CHAR_t]: " ", [CHAR_n]: "\n", [CHAR_f]: "\f", [CHAR_r]: "\r", [CHAR_QUOT]: '"', [CHAR_BSOL]: "\\" }; function isDigit(cp) { return cp >= CHAR_0 && cp <= CHAR_9; } function isHexit(cp) { return cp >= CHAR_A && cp <= CHAR_F || cp >= CHAR_a && cp <= CHAR_f || cp >= CHAR_0 && cp <= CHAR_9; } function isBit(cp) { return cp === CHAR_1 || cp === CHAR_0; } function isOctit(cp) { return cp >= CHAR_0 && cp <= CHAR_7; } function isAlphaNumQuoteHyphen(cp) { return cp >= CHAR_A && cp <= CHAR_Z || cp >= CHAR_a && cp <= CHAR_z || cp >= CHAR_0 && cp <= CHAR_9 || cp === CHAR_APOS || cp === CHAR_QUOT || cp === CHAR_LOWBAR || cp === CHAR_HYPHEN; } function isAlphaNumHyphen(cp) { return cp >= CHAR_A && cp <= CHAR_Z || cp >= CHAR_a && cp <= CHAR_z || cp >= CHAR_0 && cp <= CHAR_9 || cp === CHAR_LOWBAR || cp === CHAR_HYPHEN; } var _type = Symbol("type"); var _declared = Symbol("declared"); var hasOwnProperty = Object.prototype.hasOwnProperty; var defineProperty = Object.defineProperty; var descriptor = { configurable: true, enumerable: true, writable: true, value: void 0 }; function hasKey(obj, key) { if (hasOwnProperty.call(obj, key)) return true; if (key === "__proto__") defineProperty(obj, "__proto__", descriptor); return false; } var INLINE_TABLE = Symbol("inline-table"); function InlineTable() { return Object.defineProperties({}, { [_type]: { value: INLINE_TABLE } }); } function isInlineTable(obj) { if (obj === null || typeof obj !== "object") return false; return obj[_type] === INLINE_TABLE; } var TABLE = Symbol("table"); function Table() { return Object.defineProperties({}, { [_type]: { value: TABLE }, [_declared]: { value: false, writable: true } }); } function isTable(obj) { if (obj === null || typeof obj !== "object") return false; return obj[_type] === TABLE; } var _contentType = Symbol("content-type"); var INLINE_LIST = Symbol("inline-list"); function InlineList(type) { return Object.defineProperties([], { [_type]: { value: INLINE_LIST }, [_contentType]: { value: type } }); } function isInlineList(obj) { if (obj === null || typeof obj !== "object") return false; return obj[_type] === INLINE_LIST; } var LIST = Symbol("list"); function List() { return Object.defineProperties([], { [_type]: { value: LIST } }); } function isList(obj) { if (obj === null || typeof obj !== "object") return false; return obj[_type] === LIST; } var _custom; try { const utilInspect = eval("require('util').inspect"); _custom = utilInspect.custom; } catch (_) { } var _inspect = _custom || "inspect"; var BoxedBigInt = class { constructor(value) { try { this.value = global.BigInt.asIntN(64, value); } catch (_) { this.value = null; } Object.defineProperty(this, _type, { value: INTEGER }); } isNaN() { return this.value === null; } /* istanbul ignore next */ toString() { return String(this.value); } /* istanbul ignore next */ [_inspect]() { return `[BigInt: ${this.toString()}]}`; } valueOf() { return this.value; } }; var INTEGER = Symbol("integer"); function Integer(value) { let num = Number(value); if (Object.is(num, -0)) num = 0; if (global.BigInt && !Number.isSafeInteger(num)) { return new BoxedBigInt(value); } else { return Object.defineProperties(new Number(num), { isNaN: { value: function() { return isNaN(this); } }, [_type]: { value: INTEGER }, [_inspect]: { value: () => `[Integer: ${value}]` } }); } } function isInteger(obj) { if (obj === null || typeof obj !== "object") return false; return obj[_type] === INTEGER; } var FLOAT = Symbol("float"); function Float(value) { return Object.defineProperties(new Number(value), { [_type]: { value: FLOAT }, [_inspect]: { value: () => `[Float: ${value}]` } }); } function isFloat(obj) { if (obj === null || typeof obj !== "object") return false; return obj[_type] === FLOAT; } function tomlType(value) { const type = typeof value; if (type === "object") { if (value === null) return "null"; if (value instanceof Date) return "datetime"; if (_type in value) { switch (value[_type]) { case INLINE_TABLE: return "inline-table"; case INLINE_LIST: return "inline-list"; case TABLE: return "table"; case LIST: return "list"; case FLOAT: return "float"; case INTEGER: return "integer"; } } } return type; } function makeParserClass(Parser) { class TOMLParser extends Parser { constructor() { super(); this.ctx = this.obj = Table(); } /* MATCH HELPER */ atEndOfWord() { return this.char === CHAR_NUM || this.char === CTRL_I || this.char === CHAR_SP || this.atEndOfLine(); } atEndOfLine() { return this.char === Parser.END || this.char === CTRL_J || this.char === CTRL_M; } parseStart() { if (this.char === Parser.END) { return null; } else if (this.char === CHAR_LSQB) { return this.call(this.parseTableOrList); } else if (this.char === CHAR_NUM) { return this.call(this.parseComment); } else if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) { return null; } else if (isAlphaNumQuoteHyphen(this.char)) { return this.callNow(this.parseAssignStatement); } else { throw this.error(new TomlError(`Unknown character "${this.char}"`)); } } // HELPER, this strips any whitespace and comments to the end of the line // then RETURNS. Last state in a production. parseWhitespaceToEOL() { if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) { return null; } else if (this.char === CHAR_NUM) { return this.goto(this.parseComment); } else if (this.char === Parser.END || this.char === CTRL_J) { return this.return(); } else { throw this.error(new TomlError("Unexpected character, expected only whitespace or comments till end of line")); } } /* ASSIGNMENT: key = value */ parseAssignStatement() { return this.callNow(this.parseAssign, this.recordAssignStatement); } recordAssignStatement(kv) { let target = this.ctx; let finalKey = kv.key.pop(); for (let kw of kv.key) { if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) { throw this.error(new TomlError("Can't redefine existing key")); } target = target[kw] = target[kw] || Table(); } if (hasKey(target, finalKey)) { throw this.error(new TomlError("Can't redefine existing key")); } if (isInteger(kv.value) || isFloat(kv.value)) { target[finalKey] = kv.value.valueOf(); } else { target[finalKey] = kv.value; } return this.goto(this.parseWhitespaceToEOL); } /* ASSSIGNMENT expression, key = value possibly inside an inline table */ parseAssign() { return this.callNow(this.parseKeyword, this.recordAssignKeyword); } recordAssignKeyword(key) { if (this.state.resultTable) { this.state.resultTable.push(key); } else { this.state.resultTable = [key]; } return this.goto(this.parseAssignKeywordPreDot); } parseAssignKeywordPreDot() { if (this.char === CHAR_PERIOD) { return this.next(this.parseAssignKeywordPostDot); } else if (this.char !== CHAR_SP && this.char !== CTRL_I) { return this.goto(this.parseAssignEqual); } } parseAssignKeywordPostDot() { if (this.char !== CHAR_SP && this.char !== CTRL_I) { return this.callNow(this.parseKeyword, this.recordAssignKeyword); } } parseAssignEqual() { if (this.char === CHAR_EQUALS) { return this.next(this.parseAssignPreValue); } else { throw this.error(new TomlError('Invalid character, expected "="')); } } parseAssignPreValue() { if (this.char === CHAR_SP || this.char === CTRL_I) { return null; } else { return this.callNow(this.parseValue, this.recordAssignValue); } } recordAssignValue(value) { return this.returnNow({ key: this.state.resultTable, value }); } /* COMMENTS: #...eol */ parseComment() { do { if (this.char === Parser.END || this.char === CTRL_J) { return this.return(); } } while (this.nextChar()); } /* TABLES AND LISTS, [foo] and [[foo]] */ parseTableOrList() { if (this.char === CHAR_LSQB) { this.next(this.parseList); } else { return this.goto(this.parseTable); } } /* TABLE [foo.bar.baz] */ parseTable() { this.ctx = this.obj; return this.goto(this.parseTableNext); } parseTableNext() { if (this.char === CHAR_SP || this.char === CTRL_I) { return null; } else { return this.callNow(this.parseKeyword, this.parseTableMore); } } parseTableMore(keyword) { if (this.char === CHAR_SP || this.char === CTRL_I) { return null; } else if (this.char === CHAR_RSQB) { if (hasKey(this.ctx, keyword) && (!isTable(this.ctx[keyword]) || this.ctx[keyword][_declared])) { throw this.error(new TomlError("Can't redefine existing key")); } else { this.ctx = this.ctx[keyword] = this.ctx[keyword] || Table(); this.ctx[_declared] = true; } return this.next(this.parseWhitespaceToEOL); } else if (this.char === CHAR_PERIOD) { if (!hasKey(this.ctx, keyword)) { this.ctx = this.ctx[keyword] = Table(); } else if (isTable(this.ctx[keyword])) { this.ctx = this.ctx[keyword]; } else if (isList(this.ctx[keyword])) { this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]; } else { throw this.error(new TomlError("Can't redefine existing key")); } return this.next(this.parseTableNext); } else { throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]")); } } /* LIST [[a.b.c]] */ parseList() { this.ctx = this.obj; return this.goto(this.parseListNext); } parseListNext() { if (this.char === CHAR_SP || this.char === CTRL_I) { return null; } else { return this.callNow(this.parseKeyword, this.parseListMore); } } parseListMore(keyword) { if (this.char === CHAR_SP || this.char === CTRL_I) { return null; } else if (this.char === CHAR_RSQB) { if (!hasKey(this.ctx, keyword)) { this.ctx[keyword] = List(); } if (isInlineList(this.ctx[keyword])) { throw this.error(new TomlError("Can't extend an inline array")); } else if (isList(this.ctx[keyword])) { const next = Table(); this.ctx[keyword].push(next); this.ctx = next; } else { throw this.error(new TomlError("Can't redefine an existing key")); } return this.next(this.parseListEnd); } else if (this.char === CHAR_PERIOD) { if (!hasKey(this.ctx, keyword)) { this.ctx = this.ctx[keyword] = Table(); } else if (isInlineList(this.ctx[keyword])) { throw this.error(new TomlError("Can't extend an inline array")); } else if (isInlineTable(this.ctx[keyword])) { throw this.error(new TomlError("Can't extend an inline table")); } else if (isList(this.ctx[keyword])) { this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]; } else if (isTable(this.ctx[keyword])) { this.ctx = this.ctx[keyword]; } else { throw this.error(new TomlError("Can't redefine an existing key")); } return this.next(this.parseListNext); } else { throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]")); } } parseListEnd(keyword) { if (this.char === CHAR_RSQB) { return this.next(this.parseWhitespaceToEOL); } else { throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]")); } } /* VALUE string, number, boolean, inline list, inline object */ parseValue() { if (this.char === Parser.END) { throw this.error(new TomlError("Key without value")); } else if (this.char === CHAR_QUOT) { return this.next(this.parseDoubleString); } if (this.char === CHAR_APOS) { return this.next(this.parseSingleString); } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) { return this.goto(this.parseNumberSign); } else if (this.char === CHAR_i) { return this.next(this.parseInf); } else if (this.char === CHAR_n) { return this.next(this.parseNan); } else if (isDigit(this.char)) { return this.goto(this.parseNumberOrDateTime); } else if (this.char === CHAR_t || this.char === CHAR_f) { return this.goto(this.parseBoolean); } else if (this.char === CHAR_LSQB) { return this.call(this.parseInlineList, this.recordValue); } else if (this.char === CHAR_LCUB) { return this.call(this.parseInlineTable, this.recordValue); } else { throw this.error(new TomlError("Unexpected character, expecting string, number, datetime, boolean, inline array or inline table")); } } recordValue(value) { return this.returnNow(value); } parseInf() { if (this.char === CHAR_n) { return this.next(this.parseInf2); } else { throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"')); } } parseInf2() { if (this.char === CHAR_f) { if (this.state.buf === "-") { return this.return(-Infinity); } else { return this.return(Infinity); } } else { throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"')); } } parseNan() { if (this.char === CHAR_a) { return this.next(this.parseNan2); } else { throw this.error(new TomlError('Unexpected character, expected "nan"')); } } parseNan2() { if (this.char === CHAR_n) { return this.return(NaN); } else { throw this.error(new TomlError('Unexpected character, expected "nan"')); } } /* KEYS, barewords or basic, literal, or dotted */ parseKeyword() { if (this.char === CHAR_QUOT) { return this.next(this.parseBasicString); } else if (this.char === CHAR_APOS) { return this.next(this.parseLiteralString); } else { return this.goto(this.parseBareKey); } } /* KEYS: barewords */ parseBareKey() { do { if (this.char === Parser.END) { throw this.error(new TomlError("Key ended without value")); } else if (isAlphaNumHyphen(this.char)) { this.consume(); } else if (this.state.buf.length === 0) { throw this.error(new TomlError("Empty bare keys are not allowed")); } else { return this.returnNow(); } } while (this.nextChar()); } /* STRINGS, single quoted (literal) */ parseSingleString() { if (this.char === CHAR_APOS) { return this.next(this.parseLiteralMultiStringMaybe); } else { return this.goto(this.parseLiteralString); } } parseLiteralString() { do { if (this.char === CHAR_APOS) { return this.return(); } else if (this.atEndOfLine()) { throw this.error(new TomlError("Unterminated string")); } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I) { throw this.errorControlCharInString(); } else { this.consume(); } } while (this.nextChar()); } parseLiteralMultiStringMaybe() { if (this.char === CHAR_APOS) { return this.next(this.parseLiteralMultiString); } else { return this.returnNow(); } } parseLiteralMultiString() { if (this.char === CTRL_M) { return null; } else if (this.char === CTRL_J) { return this.next(this.parseLiteralMultiStringContent); } else { return this.goto(this.parseLiteralMultiStringContent); } } parseLiteralMultiStringContent() { do { if (this.char === CHAR_APOS) { return this.next(this.parseLiteralMultiEnd); } else if (this.char === Parser.END) { throw this.error(new TomlError("Unterminated multi-line string")); } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M) { throw this.errorControlCharInString(); } else { this.consume(); } } while (this.nextChar()); } parseLiteralMultiEnd() { if (this.char === CHAR_APOS) { return this.next(this.parseLiteralMultiEnd2); } else { this.state.buf += "'"; return this.goto(this.parseLiteralMultiStringContent); } } parseLiteralMultiEnd2() { if (this.char === CHAR_APOS) { return this.return(); } else { this.state.buf += "''"; return this.goto(this.parseLiteralMultiStringContent); } } /* STRINGS double quoted */ parseDoubleString() { if (this.char === CHAR_QUOT) { return this.next(this.parseMultiStringMaybe); } else { return this.goto(this.parseBasicString); } } parseBasicString() { do { if (this.char === CHAR_BSOL) { return this.call(this.parseEscape, this.recordEscapeReplacement); } else if (this.char === CHAR_QUOT) { return this.return(); } else if (this.atEndOfLine()) { throw this.error(new TomlError("Unterminated string")); } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I) { throw this.errorControlCharInString(); } else { this.consume(); } } while (this.nextChar()); } recordEscapeReplacement(replacement) { this.state.buf += replacement; return this.goto(this.parseBasicString); } parseMultiStringMaybe() { if (this.char === CHAR_QUOT) { return this.next(this.parseMultiString); } else { return this.returnNow(); } } parseMultiString() { if (this.char === CTRL_M) { return null; } else if (this.char === CTRL_J) { return this.next(this.parseMultiStringContent); } else { return this.goto(this.parseMultiStringContent); } } parseMultiStringContent() { do { if (this.char === CHAR_BSOL) { return this.call(this.parseMultiEscape, this.recordMultiEscapeReplacement); } else if (this.char === CHAR_QUOT) { return this.next(this.parseMultiEnd); } else if (this.char === Parser.END) { throw this.error(new TomlError("Unterminated multi-line string")); } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M) { throw this.errorControlCharInString(); } else { this.consume(); } } while (this.nextChar()); } errorControlCharInString() { let displayCode = "\\u00"; if (this.char < 16) { displayCode += "0"; } displayCode += this.char.toString(16); return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${displayCode} instead`)); } recordMultiEscapeReplacement(replacement) { this.state.buf += replacement; return this.goto(this.parseMultiStringContent); } parseMultiEnd() { if (this.char === CHAR_QUOT) { return this.next(this.parseMultiEnd2); } else { this.state.buf += '"'; return this.goto(this.parseMultiStringContent); } } parseMultiEnd2() { if (this.char === CHAR_QUOT) { return this.return(); } else { this.state.buf += '""'; return this.goto(this.parseMultiStringContent); } } parseMultiEscape() { if (this.char === CTRL_M || this.char === CTRL_J) { return this.next(this.parseMultiTrim); } else if (this.char === CHAR_SP || this.char === CTRL_I) { return this.next(this.parsePreMultiTrim); } else { return this.goto(this.parseEscape); } } parsePreMultiTrim() { if (this.char === CHAR_SP || this.char === CTRL_I) { return null; } else if (this.char === CTRL_M || this.char === CTRL_J) { return this.next(this.parseMultiTrim); } else { throw this.error(new TomlError("Can't escape whitespace")); } } parseMultiTrim() { if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) { return null; } else { return this.returnNow(); } } parseEscape() { if (this.char in escapes) { return this.return(escapes[this.char]); } else if (this.char === CHAR_u) { return this.call(this.parseSmallUnicode, this.parseUnicodeReturn); } else if (this.char === CHAR_U) { return this.call(this.parseLargeUnicode, this.parseUnicodeReturn); } else { throw this.error(new TomlError("Unknown escape character: " + this.char)); } } parseUnicodeReturn(char) { try { const codePoint = parseInt(char, 16); if (codePoint >= SURROGATE_FIRST && codePoint <= SURROGATE_LAST) { throw this.error(new TomlError("Invalid unicode, character in range 0xD800 - 0xDFFF is reserved")); } return this.returnNow(String.fromCodePoint(codePoint)); } catch (err) { throw this.error(TomlError.wrap(err)); } } parseSmallUnicode() { if (!isHexit(this.char)) { throw this.error(new TomlError("Invalid character in unicode sequence, expected hex")); } else { this.consume(); if (this.state.buf.length >= 4) return this.return(); } } parseLargeUnicode() { if (!isHexit(this.char)) { throw this.error(new TomlError("Invalid character in unicode sequence, expected hex")); } else { this.consume(); if (this.state.buf.length >= 8) return this.return(); } } /* NUMBERS */ parseNumberSign() { this.consume(); return this.next(this.parseMaybeSignedInfOrNan); } parseMaybeSignedInfOrNan() { if (this.char === CHAR_i) { return this.next(this.parseInf); } else if (this.char === CHAR_n) { return this.next(this.parseNan); } else { return this.callNow(this.parseNoUnder, this.parseNumberIntegerStart); } } parseNumberIntegerStart() { if (this.char === CHAR_0) { this.consume(); return this.next(this.parseNumberIntegerExponentOrDecimal); } else { return this.goto(this.parseNumberInteger); } } parseNumberIntegerExponentOrDecimal() { if (this.char === CHAR_PERIOD) { this.consume(); return this.call(this.parseNoUnder, this.parseNumberFloat); } else if (this.char === CHAR_E || this.char === CHAR_e) { this.consume(); return this.next(this.parseNumberExponentSign); } else { return this.returnNow(Integer(this.state.buf)); } } parseNumberInteger() { if (isDigit(this.char)) { this.consume(); } else if (this.char === CHAR_LOWBAR) { return this.call(this.parseNoUnder); } else if (this.char === CHAR_E || this.char === CHAR_e) { this.consume(); return this.next(this.parseNumberExponentSign); } else if (this.char === CHAR_PERIOD) { this.consume(); return this.call(this.parseNoUnder, this.parseNumberFloat); } else { const result = Integer(this.state.buf); if (result.isNaN()) { throw this.error(new TomlError("Invalid number")); } else { return this.returnNow(result); } } } parseNoUnder() { if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD || this.char === CHAR_E || this.char === CHAR_e) { throw this.error(new TomlError("Unexpected character, expected digit")); } else if (this.atEndOfWord()) { throw this.error(new TomlError("Incomplete number")); } return this.returnNow(); } parseNumberFloat() { if (this.char === CHAR_LOWBAR) { return this.call(this.parseNoUnder, this.parseNumberFloat); } else if (isDigit(this.char)) { this.consume(); } else if (this.char === CHAR_E || this.char === CHAR_e) { this.consume(); return this.next(this.parseNumberExponentSign); } else { return this.returnNow(Float(this.state.buf)); } } parseNumberExponentSign() { if (isDigit(this.char)) { return this.goto(this.parseNumberExponent); } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) { this.consume(); this.call(this.parseNoUnder, this.parseNumberExponent); } else { throw this.error(new TomlError("Unexpected character, expected -, + or digit")); } } parseNumberExponent() { if (isDigit(this.char)) { this.consume(); } else if (this.char === CHAR_LOWBAR) { return this.call(this.parseNoUnder); } else { return this.returnNow(Float(this.state.buf)); } } /* NUMBERS or DATETIMES */ parseNumberOrDateTime() { if (this.char === CHAR_0) { this.consume(); return this.next(this.parseNumberBaseOrDateTime); } else { return this.goto(this.parseNumberOrDateTimeOnly); } } parseNumberOrDateTimeOnly() { if (this.char === CHAR_LOWBAR) { return this.call(this.parseNoUnder, this.parseNumberInteger); } else if (isDigit(this.char)) { this.consume(); if (this.state.buf.length > 4) this.next(this.parseNumberInteger); } else if (this.char === CHAR_E || this.char === CHAR_e) { this.consume(); return this.next(this.parseNumberExponentSign); } else if (this.char === CHAR_PERIOD) { this.consume(); return this.call(this.parseNoUnder, this.parseNumberFloat); } else if (this.char === CHAR_HYPHEN) { return this.goto(this.parseDateTime); } else if (this.char === CHAR_COLON) { return this.goto(this.parseOnlyTimeHour); } else { return this.returnNow(Integer(this.state.buf)); } } parseDateTimeOnly() { if (this.state.buf.length < 4) { if (isDigit(this.char)) { return this.consume(); } else if (this.char === CHAR_COLON) { return this.goto(this.parseOnlyTimeHour); } else { throw this.error(new TomlError("Expected digit while parsing year part of a date")); } } else { if (this.char === CHAR_HYPHEN) { return this.goto(this.parseDateTime); } else { throw this.error(new TomlError("Expected hyphen (-) while parsing year part of date")); } } } parseNumberBaseOrDateTime() { if (this.char === CHAR_b) { this.consume(); return this.call(this.parseNoUnder, this.parseIntegerBin); } else if (this.char === CHAR_o) { this.consume(); return this.call(this.parseNoUnder, this.parseIntegerOct); } else if (this.char === CHAR_x) { this.consume(); return this.call(this.parseNoUnder, this.parseIntegerHex); } else if (this.char === CHAR_PERIOD) { return this.goto(this.parseNumberInteger); } else if (isDigit(this.char)) { return this.goto(this.parseDateTimeOnly); } else { return this.returnNow(Integer(this.state.buf)); } } parseIntegerHex() { if (isHexit(this.char)) { this.consume(); } else if (this.char === CHAR_LOWBAR) { return this.call(this.parseNoUnder); } else { const result = Integer(this.state.buf); if (result.isNaN()) { throw this.error(new TomlError("Invalid number")); } else { return this.returnNow(result); } } } parseIntegerOct() { if (isOctit(this.char)) { this.consume(); } else if (this.char === CHAR_LOWBAR) { return this.call(this.parseNoUnder); } else { const result = Integer(this.state.buf); if (result.isNaN()) { throw this.error(new TomlError("Invalid number")); } else { return this.returnNow(result); } } } parseIntegerBin() { if (isBit(this.char)) { this.consume(); } else if (this.char === CHAR_LOWBAR) { return this.call(this.parseNoUnder); } else { const result = Integer(this.state.buf); if (result.isNaN()) { throw this.error(new TomlError("Invalid number")); } else { return this.returnNow(result); } } } /* DATETIME */ parseDateTime() { if (this.state.buf.length < 4) { throw this.error(new TomlError("Years less than 1000 must be zero padded to four characters")); } this.state.result = this.state.buf; this.state.buf = ""; return this.next(this.parseDateMonth); } parseDateMonth() { if (this.char === CHAR_HYPHEN) { if (this.state.buf.length < 2) { throw this.error(new TomlError("Months less than 10 must be zero padded to two characters")); } this.state.result += "-" + this.state.buf; this.state.buf = ""; return this.next(this.parseDateDay); } else if (isDigit(this.char)) { this.consume(); } else { throw this.error(new TomlError("Incomplete datetime")); } } parseDateDay() { if (this.char === CHAR_T || this.char === CHAR_SP) { if (this.state.buf.length < 2) { throw this.error(new TomlError("Days less than 10 must be zero padded to two characters")); } this.state.result += "-" + this.state.buf; this.state.buf = ""; return this.next(this.parseStartTimeHour); } else if (this.atEndOfWord()) { return this.return(createDate(this.state.result + "-" + this.state.buf)); } else if (isDigit(this.char)) { this.consume(); } else { throw this.error(new TomlError("Incomplete datetime")); } } parseStartTimeHour() { if (this.atEndOfWord()) { return this.returnNow(createDate(this.state.result)); } else { return this.goto(this.parseTimeHour); } } parseTimeHour() { if (this.char === CHAR_COLON) { if (this.state.buf.length < 2) { throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters")); } this.state.result += "T" + this.state.buf; this.state.buf = ""; return this.next(this.parseTimeMin); } else if (isDigit(this.char)) { this.consume(); } else { throw this.error(new TomlError("Incomplete datetime")); } } parseTimeMin() { if (this.state.buf.length < 2 && isDigit(this.char)) { this.consume(); } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) { this.state.result += ":" + this.state.buf; this.state.buf = ""; return this.next(this.parseTimeSec); } else { throw this.error(new TomlError("Incomplete datetime")); } } parseTimeSec() { if (isDigit(this.char)) { this.consume(); if (this.state.buf.length === 2) { this.state.result += ":" + this.state.buf; this.state.buf = ""; return this.next(this.parseTimeZoneOrFraction); } } else { throw this.error(new TomlError("Incomplete datetime")); } } parseOnlyTimeHour() { if (this.char === CHAR_COLON) { if (this.state.buf.length < 2) { throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters")); } this.state.result = this.state.buf; this.state.buf = ""; return this.next(this.parseOnlyTimeMin); } else { throw this.error(new TomlError("Incomplete time")); } } parseOnlyTimeMin() { if (this.state.buf.length < 2 && isDigit(this.char)) { this.consume(); } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) { this.state.result += ":" + this.state.buf; this.state.buf = ""; return this.next(this.parseOnlyTimeSec); } else { throw this.error(new TomlError("Incomplete time")); } } parseOnlyTimeSec() { if (isDigit(this.char)) { this.consume(); if (this.state.buf.length === 2) { return this.next(this.parseOnlyTimeFractionMaybe); } } else { throw this.error(new TomlError("Incomplete time")); } } parseOnlyTimeFractionMaybe() { this.state.result += ":" + this.state.buf; if (this.char === CHAR_PERIOD) { this.state.buf = ""; this.next(this.parseOnlyTimeFraction); } else { return this.return(createTime(this.state.result)); } } parseOnlyTimeFraction() { if (isDigit(this.char)) { this.consume(); } else if (this.atEndOfWord()) { if (this.state.buf.length === 0) throw this.error(new TomlError("Expected digit in milliseconds")); return this.returnNow(createTime(this.state.result + "." + this.state.buf)); } else { throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z")); } } parseTimeZoneOrFraction() { if (this.char === CHAR_PERIOD) { this.consume(); this.next(this.parseDateTimeFraction); } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) { this.consume(); this.next(this.parseTimeZoneHour); } else if (this.char === CHAR_Z) { this.consume(); return this.return(createDateTime(this.state.result + this.state.buf)); } else if (this.atEndOfWord()) { return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf)); } else { throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z")); } } parseDateTimeFraction() { if (isDigit(this.char)) { this.consume(); } else if (this.state.buf.length === 1) { throw this.error(new TomlError("Expected digit in milliseconds")); } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) { this.consume(); this.next(this.parseTimeZoneHour); } else if (this.char === CHAR_Z) { this.consume(); return this.return(createDateTime(this.state.result + this.state.buf)); } else if (this.atEndOfWord()) { return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf)); } else { throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z")); } } parseTimeZoneHour() { if (isDigit(this.char)) { this.consume(); if (/\d\d$/.test(this.state.buf)) return this.next(this.parseTimeZoneSep); } else { throw this.error(new TomlError("Unexpected character in datetime, expected digit")); } } parseTimeZoneSep() { if (this.char === CHAR_COLON) { this.consume(); this.next(this.parseTimeZoneMin); } else { throw this.error(new TomlError("Unexpected character in datetime, expected colon")); } } parseTimeZoneMin() { if (isDigit(this.char)) { this.consume(); if (/\d\d$/.test(this.state.buf)) return this.return(createDateTime(this.state.result + this.state.buf)); } else { throw this.error(new TomlError("Unexpected character in datetime, expected digit")); } } /* BOOLEAN */ parseBoolean() { if (this.char === CHAR_t) { this.consume(); return this.next(this.parseTrue_r); } else if (this.char === CHAR_f) { this.consume(); return this.next(this.parseFalse_a); } } parseTrue_r() { if (this.char === CHAR_r) { this.consume(); return this.next(this.parseTrue_u); } else { throw this.error(new TomlError("Invalid boolean, expected true or false")); } } parseTrue_u() { if (this.char === CHAR_u) { this.consume(); return this.next(this.parseTrue_e); } else { throw this.error(new TomlError("Invalid boolean, expected true or false")); } } parseTrue_e() { if (this.char === CHAR_e) { return this.return(true); } else { throw this.error(new TomlError("Invalid boolean, expected true or false")); } } parseFalse_a() { if (this.char === CHAR_a) { this.consume(); return this.next(this.parseFalse_l); } else { throw this.error(new TomlError("Invalid boolean, expected true or false")); } } parseFalse_l() { if (this.char === CHAR_l) { this.consume(); return this.next(this.parseFalse_s); } else { throw this.error(new TomlError("Invalid boolean, expected true or false")); } } parseFalse_s() { if (this.char === CHAR_s) { this.consume(); return this.next(this.parseFalse_e); } else { throw this.error(new TomlError("Invalid boolean, expected true or false")); } } parseFalse_e() { if (this.char === CHAR_e) { return this.return(false); } else { throw this.error(new TomlError("Invalid boolean, expected true or false")); } } /* INLINE LISTS */ parseInlineList() { if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) { return null; } else if (this.char === Parser.END) { throw this.error(new TomlError("Unterminated inline array")); } else if (this.char === CHAR_NUM) { return this.call(this.parseComment); } else if (this.char === CHAR_RSQB) { return this.return(this.state.resultArr || InlineList()); } else { return this.callNow(this.parseValue, this.recordInlineListValue); } } recordInlineListValue(value) { if (this.state.resultArr) { const listType = this.state.resultArr[_contentType]; const valueType = tomlType(value); if (listType !== valueType) { throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${listType} and ${valueType}`)); } } else { this.state.resultArr = InlineList(tomlType(value)); } if (isFloat(value) || isInteger(value)) { this.state.resultArr.push(value.valueOf()); } else { this.state.resultArr.push(value); } return this.goto(this.parseInlineListNext); } parseInlineListNext() { if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) { return null; } else if (this.char === CHAR_NUM) { return this.call(this.parseComment); } else if (this.char === CHAR_COMMA) { return this.next(this.parseInlineList); } else if (this.char === CHAR_RSQB) { return this.goto(this.parseInlineList); } else { throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])")); } } /* INLINE TABLE */ parseInlineTable() { if (this.char === CHAR_SP || this.char === CTRL_I) { return null; } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) { throw this.error(new TomlError("Unterminated inline array")); } else if (this.char === CHAR_RCUB) { return this.return(this.state.resultTable || InlineTable()); } else { if (!this.state.resultTable) this.state.resultTable = InlineTable(); return this.callNow(this.parseAssign, this.recordInlineTableValue); } } recordInlineTableValue(kv) { let target = this.state.resultTable; let finalKey = kv.key.pop(); for (let kw of kv.key) { if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) { throw this.error(new TomlError("Can't redefine existing key")); } target = target[kw] = target[kw] || Table(); } if (hasKey(target, finalKey)) { throw this.error(new TomlError("Can't redefine existing key")); } if (isInteger(kv.value) || isFloat(kv.value)) { target[finalKey] = kv.value.valueOf(); } else { target[finalKey] = kv.value; } return this.goto(this.parseInlineTableNext); } parseInlineTableNext() { if (this.char === CHAR_SP || this.char === CTRL_I) { return null; } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) { throw this.error(new TomlError("Unterminated inline array")); } else if (this.char === CHAR_COMMA) { return this.next(this.parseInlineTable); } else if (this.char === CHAR_RCUB) { return this.goto(this.parseInlineTable); } else { throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])")); } } } return TOMLParser; } } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse-pretty-error.js var require_parse_pretty_error = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse-pretty-error.js"(exports2, module2) { "use strict"; module2.exports = prettyError; function prettyError(err, buf) { if (err.pos == null || err.line == null) return err; let msg = err.message; msg += ` at row ${err.line + 1}, col ${err.col + 1}, pos ${err.pos}: `; if (buf && buf.split) { const lines3 = buf.split(/\n/); const lineNumWidth = String(Math.min(lines3.length, err.line + 3)).length; let linePadding = " "; while (linePadding.length < lineNumWidth) linePadding += " "; for (let ii = Math.max(0, err.line - 1); ii < Math.min(lines3.length, err.line + 2); ++ii) { let lineNum = String(ii + 1); if (lineNum.length < lineNumWidth) lineNum = " " + lineNum; if (err.line === ii) { msg += lineNum + "> " + lines3[ii] + "\n"; msg += linePadding + " "; for (let hh = 0; hh < err.col; ++hh) { msg += " "; } msg += "^\n"; } else { msg += lineNum + ": " + lines3[ii] + "\n"; } } } err.message = msg + "\n"; return err; } } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse-string.js var require_parse_string = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse-string.js"(exports2, module2) { "use strict"; module2.exports = parseString; var TOMLParser = require_toml_parser(); var prettyError = require_parse_pretty_error(); function parseString(str) { if (global.Buffer && global.Buffer.isBuffer(str)) { str = str.toString("utf8"); } const parser = new TOMLParser(); try { parser.parse(str); return parser.finish(); } catch (err) { throw prettyError(err, str); } } } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse-async.js var require_parse_async = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse-async.js"(exports2, module2) { "use strict"; module2.exports = parseAsync; var TOMLParser = require_toml_parser(); var prettyError = require_parse_pretty_error(); function parseAsync(str, opts) { if (!opts) opts = {}; const index = 0; const blocksize = opts.blocksize || 40960; const parser = new TOMLParser(); return new Promise((resolve14, reject) => { setImmediate(parseAsyncNext, index, blocksize, resolve14, reject); }); function parseAsyncNext(index2, blocksize2, resolve14, reject) { if (index2 >= str.length) { try { return resolve14(parser.finish()); } catch (err) { return reject(prettyError(err, str)); } } try { parser.parse(str.slice(index2, index2 + blocksize2)); setImmediate(parseAsyncNext, index2 + blocksize2, blocksize2, resolve14, reject); } catch (err) { reject(prettyError(err, str)); } } } } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse-stream.js var require_parse_stream = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse-stream.js"(exports2, module2) { "use strict"; module2.exports = parseStream; var stream = __require("stream"); var TOMLParser = require_toml_parser(); function parseStream(stm) { if (stm) { return parseReadable(stm); } else { return parseTransform(stm); } } function parseReadable(stm) { const parser = new TOMLParser(); stm.setEncoding("utf8"); return new Promise((resolve14, reject) => { let readable; let ended = false; let errored = false; function finish() { ended = true; if (readable) return; try { resolve14(parser.finish()); } catch (err) { reject(err); } } function error3(err) { errored = true; reject(err); } stm.once("end", finish); stm.once("error", error3); readNext(); function readNext() { readable = true; let data; while ((data = stm.read()) !== null) { try { parser.parse(data); } catch (err) { return error3(err); } } readable = false; if (ended) return finish(); if (errored) return; stm.once("readable", readNext); } }); } function parseTransform() { const parser = new TOMLParser(); return new stream.Transform({ objectMode: true, transform(chunk, encoding, cb) { try { parser.parse(chunk.toString(encoding)); } catch (err) { this.emit("error", err); } cb(); }, flush(cb) { try { this.push(parser.finish()); } catch (err) { this.emit("error", err); } cb(); } }); } } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse.js var require_parse4 = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/parse.js"(exports2, module2) { "use strict"; module2.exports = require_parse_string(); module2.exports.async = require_parse_async(); module2.exports.stream = require_parse_stream(); module2.exports.prettyError = require_parse_pretty_error(); } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/stringify.js var require_stringify2 = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/stringify.js"(exports2, module2) { "use strict"; module2.exports = stringify2; module2.exports.value = stringifyInline; function stringify2(obj) { if (obj === null) throw typeError("null"); if (obj === void 0) throw typeError("undefined"); if (typeof obj !== "object") throw typeError(typeof obj); if (typeof obj.toJSON === "function") obj = obj.toJSON(); if (obj == null) return null; const type = tomlType2(obj); if (type !== "table") throw typeError(type); return stringifyObject("", "", obj); } function typeError(type) { return new Error("Can only stringify objects, not " + type); } function arrayOneTypeError() { return new Error("Array values can't have mixed types"); } function getInlineKeys(obj) { return Object.keys(obj).filter((key) => isInline(obj[key])); } function getComplexKeys(obj) { return Object.keys(obj).filter((key) => !isInline(obj[key])); } function toJSON(obj) { let nobj = Array.isArray(obj) ? [] : Object.prototype.hasOwnProperty.call(obj, "__proto__") ? { ["__proto__"]: void 0 } : {}; for (let prop of Object.keys(obj)) { if (obj[prop] && typeof obj[prop].toJSON === "function" && !("toISOString" in obj[prop])) { nobj[prop] = obj[prop].toJSON(); } else { nobj[prop] = obj[prop]; } } return nobj; } function stringifyObject(prefix, indent, obj) { obj = toJSON(obj); var inlineKeys; var complexKeys; inlineKeys = getInlineKeys(obj); complexKeys = getComplexKeys(obj); var result = []; var inlineIndent = indent || ""; inlineKeys.forEach((key) => { var type = tomlType2(obj[key]); if (type !== "undefined" && type !== "null") { result.push(inlineIndent + stringifyKey(key) + " = " + stringifyAnyInline(obj[key], true)); } }); if (result.length > 0) result.push(""); var complexIndent = prefix && inlineKeys.length > 0 ? indent + " " : ""; complexKeys.forEach((key) => { result.push(stringifyComplex(prefix, complexIndent, key, obj[key])); }); return result.join("\n"); } function isInline(value) { switch (tomlType2(value)) { case "undefined": case "null": case "integer": case "nan": case "float": case "boolean": case "string": case "datetime": return true; case "array": return value.length === 0 || tomlType2(value[0]) !== "table"; case "table": return Object.keys(value).length === 0; default: return false; } } function tomlType2(value) { if (value === void 0) { return "undefined"; } else if (value === null) { return "null"; } else if (typeof value === "bigint" || Number.isInteger(value) && !Object.is(value, -0)) { return "integer"; } else if (typeof value === "number") { return "float"; } else if (typeof value === "boolean") { return "boolean"; } else if (typeof value === "string") { return "string"; } else if ("toISOString" in value) { return isNaN(value) ? "undefined" : "datetime"; } else if (Array.isArray(value)) { return "array"; } else { return "table"; } } function stringifyKey(key) { var keyStr = String(key); if (/^[-A-Za-z0-9_]+$/.test(keyStr)) { return keyStr; } else { return stringifyBasicString(keyStr); } } function stringifyBasicString(str) { return '"' + escapeString(str).replace(/"/g, '\\"') + '"'; } function stringifyLiteralString(str) { return "'" + str + "'"; } function numpad(num, str) { while (str.length < num) str = "0" + str; return str; } function escapeString(str) { return str.replace(/\\/g, "\\\\").replace(/[\b]/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/([\u0000-\u001f\u007f])/, (c) => "\\u" + numpad(4, c.codePointAt(0).toString(16))); } function stringifyMultilineString(str) { let escaped = str.split(/\n/).map((str2) => { return escapeString(str2).replace(/"(?="")/g, '\\"'); }).join("\n"); if (escaped.slice(-1) === '"') escaped += "\\\n"; return '"""\n' + escaped + '"""'; } function stringifyAnyInline(value, multilineOk) { let type = tomlType2(value); if (type === "string") { if (multilineOk && /\n/.test(value)) { type = "string-multiline"; } else if (!/[\b\t\n\f\r']/.test(value) && /"/.test(value)) { type = "string-literal"; } } return stringifyInline(value, type); } function stringifyInline(value, type) { if (!type) type = tomlType2(value); switch (type) { case "string-multiline": return stringifyMultilineString(value); case "string": return stringifyBasicString(value); case "string-literal": return stringifyLiteralString(value); case "integer": return stringifyInteger(value); case "float": return stringifyFloat(value); case "boolean": return stringifyBoolean(value); case "datetime": return stringifyDatetime(value); case "array": return stringifyInlineArray(value.filter((_) => tomlType2(_) !== "null" && tomlType2(_) !== "undefined" && tomlType2(_) !== "nan")); case "table": return stringifyInlineTable(value); default: throw typeError(type); } } function stringifyInteger(value) { return String(value).replace(/\B(?=(\d{3})+(?!\d))/g, "_"); } function stringifyFloat(value) { if (value === Infinity) { return "inf"; } else if (value === -Infinity) { return "-inf"; } else if (Object.is(value, NaN)) { return "nan"; } else if (Object.is(value, -0)) { return "-0.0"; } var chunks = String(value).split("."); var int = chunks[0]; var dec = chunks[1] || 0; return stringifyInteger(int) + "." + dec; } function stringifyBoolean(value) { return String(value); } function stringifyDatetime(value) { return value.toISOString(); } function isNumber(type) { return type === "float" || type === "integer"; } function arrayType(values) { var contentType2 = tomlType2(values[0]); if (values.every((_) => tomlType2(_) === contentType2)) return contentType2; if (values.every((_) => isNumber(tomlType2(_)))) return "float"; return "mixed"; } function validateArray(values) { const type = arrayType(values); if (type === "mixed") { throw arrayOneTypeError(); } return type; } function stringifyInlineArray(values) { values = toJSON(values); const type = validateArray(values); var result = "["; var stringified = values.map((_) => stringifyInline(_, type)); if (stringified.join(", ").length > 60 || /\n/.test(stringified)) { result += "\n " + stringified.join(",\n ") + "\n"; } else { result += " " + stringified.join(", ") + (stringified.length > 0 ? " " : ""); } return result + "]"; } function stringifyInlineTable(value) { value = toJSON(value); var result = []; Object.keys(value).forEach((key) => { result.push(stringifyKey(key) + " = " + stringifyAnyInline(value[key], false)); }); return "{ " + result.join(", ") + (result.length > 0 ? " " : "") + "}"; } function stringifyComplex(prefix, indent, key, value) { var valueType = tomlType2(value); if (valueType === "array") { return stringifyArrayOfTables(prefix, indent, key, value); } else if (valueType === "table") { return stringifyComplexTable(prefix, indent, key, value); } else { throw typeError(valueType); } } function stringifyArrayOfTables(prefix, indent, key, values) { values = toJSON(values); validateArray(values); var firstValueType = tomlType2(values[0]); if (firstValueType !== "table") throw typeError(firstValueType); var fullKey = prefix + stringifyKey(key); var result = ""; values.forEach((table2) => { if (result.length > 0) result += "\n"; result += indent + "[[" + fullKey + "]]\n"; result += stringifyObject(fullKey + ".", indent, table2); }); return result; } function stringifyComplexTable(prefix, indent, key, value) { var fullKey = prefix + stringifyKey(key); var result = ""; if (getInlineKeys(value).length > 0) { result += indent + "[" + fullKey + "]\n"; } return result + stringifyObject(fullKey + ".", indent, value); } } }); // ../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/toml.js var require_toml = __commonJS2({ "../../node_modules/.pnpm/@iarna+toml@2.2.3/node_modules/@iarna/toml/toml.js"(exports2) { "use strict"; exports2.parse = require_parse4(); exports2.stringify = require_stringify2(); } }); // ../frameworks/dist/read-config-file.js var require_read_config_file = __commonJS2({ "../frameworks/dist/read-config-file.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var read_config_file_exports = {}; __export4(read_config_file_exports, { readConfigFile: () => readConfigFile2 }); module2.exports = __toCommonJS4(read_config_file_exports); var import_js_yaml = __toESM4(require_js_yaml2()); var import_toml = __toESM4(require_toml()); var import_fs11 = __require("fs"); var import_error_utils39 = require_dist2(); var { readFile: readFile8 } = import_fs11.promises; async function readFileOrNull(file) { try { const data = await readFile8(file); return data; } catch (error3) { if (!(0, import_error_utils39.isErrnoException)(error3)) { throw error3; } if (error3.code !== "ENOENT") { throw error3; } } return null; } async function readConfigFile2(files) { files = Array.isArray(files) ? files : [files]; for (const name of files) { const data = await readFileOrNull(name); if (data) { const str = data.toString("utf8"); if (name.endsWith(".json")) { return JSON.parse(str); } else if (name.endsWith(".toml")) { return import_toml.default.parse(str); } else if (name.endsWith(".yaml") || name.endsWith(".yml")) { return import_js_yaml.default.safeLoad(str, { filename: name }); } } } return null; } } }); // ../frameworks/dist/types.js var require_types3 = __commonJS2({ "../frameworks/dist/types.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var types_exports = {}; module2.exports = __toCommonJS4(types_exports); } }); // ../frameworks/dist/frameworks.js var require_frameworks = __commonJS2({ "../frameworks/dist/frameworks.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __reExport = (target, mod, secondTarget) => (__copyProps4(target, mod, "default"), secondTarget && __copyProps4(secondTarget, mod, "default")); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var frameworks_exports = {}; __export4(frameworks_exports, { default: () => frameworks_default, frameworkList: () => frameworkList9, frameworks: () => frameworks }); module2.exports = __toCommonJS4(frameworks_exports); var import_path45 = __require("path"); var import_fs11 = __require("fs"); var import_read_config_file = require_read_config_file(); __reExport(frameworks_exports, require_types3(), module2.exports); var { readdir: readdir2, readFile: readFile8, unlink: unlink2 } = import_fs11.promises; var frameworks = [ { name: "Blitz.js (Legacy)", slug: "blitzjs", demo: "https://blitz-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/blitz.svg", tagline: "Blitz.js: The Fullstack React Framework", description: "A brand new Blitz.js app - the result of running `npx blitz@0.45.4 new`.", website: "https://blitzjs.com", envPrefix: "NEXT_PUBLIC_", useRuntime: { src: "package.json", use: "@vercel/next" }, detectors: { some: [ // Intentionally does not detect a package name // https://github.com/vercel/vercel/pull/8432 { path: "blitz.config.js" }, { path: "blitz.config.ts" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `blitz build`", value: "blitz build" }, devCommand: { value: "blitz start" }, outputDirectory: { placeholder: "Next.js default" } }, getOutputDirName: async () => "public" }, { name: "Next.js", slug: "nextjs", demo: "https://nextjs-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/next.svg", darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/next-dark.svg", screenshot: "https://assets.vercel.com/image/upload/v1701461207/front/import/nextjs.png", tagline: "Next.js makes you productive with React instantly \u2014 whether you want to build static or dynamic sites.", description: "A Next.js app and a Serverless Function API.", website: "https://nextjs.org", sort: 1, envPrefix: "NEXT_PUBLIC_", useRuntime: { src: "package.json", use: "@vercel/next" }, detectors: { every: [ { matchPackage: "next" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `next build`", value: "next build" }, devCommand: { value: "next dev --port $PORT", placeholder: "next" }, outputDirectory: { placeholder: "Next.js default" } }, recommendedIntegrations: [ { id: "oac_5lUsiANun1DEzgLg0NZx5Es3", dependencies: ["next-plugin-sentry", "next-sentry-source-maps"] } ], getOutputDirName: async () => "public", cachePattern: ".next/cache/**" }, { name: "Gatsby.js", slug: "gatsby", demo: "https://gatsby.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/gatsby.svg", tagline: "Gatsby helps developers build blazing fast websites and apps with React.", description: "A Gatsby starter app with an API Route.", website: "https://gatsbyjs.org", sort: 5, envPrefix: "GATSBY_", detectors: { every: [ { matchPackage: "gatsby" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `gatsby build`", value: "gatsby build" }, devCommand: { value: "gatsby develop --port $PORT", placeholder: "gatsby develop" }, outputDirectory: { value: "public" } }, dependency: "gatsby", getOutputDirName: async () => "public", defaultRoutes: async (dirPrefix) => { try { const nowRoutesPath = (0, import_path45.join)( dirPrefix, "public", "__now_routes_g4t5bY.json" ); const content = await readFile8(nowRoutesPath, "utf8"); const nowRoutes = JSON.parse(content); try { await unlink2(nowRoutesPath); } catch (err) { } return nowRoutes; } catch (err) { return [ { src: "^/static/(.*)$", headers: { "cache-control": "public,max-age=31536000,immutable" }, continue: true }, { src: "^/.*\\.(js|css)$", headers: { "cache-control": "public,max-age=31536000,immutable" }, continue: true }, { src: "^/(sw\\.js|app-data\\.json|.*\\.html|page-data/.*)$", headers: { "cache-control": "public,max-age=0,must-revalidate" }, continue: true }, { handle: "filesystem" }, { src: ".*", status: 404, dest: "404.html" } ]; } }, cachePattern: "{.cache,public}/**" }, { name: "Remix", slug: "remix", demo: "https://remix-run-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/remix-no-shadow.svg", tagline: "Build Better Websites", description: "A new Remix app \u2014 the result of running `npx create-remix`.", website: "https://remix.run", sort: 6, supersedes: ["hydrogen", "vite"], useRuntime: { src: "package.json", use: "@vercel/remix-builder" }, ignoreRuntimes: ["@vercel/node"], detectors: { some: [ { matchPackage: "@remix-run/dev" }, { path: "remix.config.js" }, { path: "remix.config.mjs" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { value: "remix build", placeholder: "`npm run build` or `remix build`" }, devCommand: { value: "remix dev", placeholder: "remix dev" }, outputDirectory: { value: "public" } }, dependency: "remix", getOutputDirName: async () => "public" }, { name: "React Router", slug: "react-router", demo: "https://react-router-v7-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/react-router.svg", darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/react-router-dark.svg", tagline: "Declarative routing for React", description: "A user-obsessed, standards-focused, multi-strategy router you can deploy anywhere.", website: "https://reactrouter.com", sort: 7, supersedes: ["hydrogen", "vite"], useRuntime: { src: "package.json", use: "@vercel/remix-builder" }, ignoreRuntimes: ["@vercel/node"], detectors: { some: [ { path: "vite.config.js", matchContent: "@react-router/dev/vite" }, { path: "vite.config.ts", matchContent: "@react-router/dev/vite" }, { path: "react-router.config.js" }, { path: "react-router.config.ts" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { value: "react-router build", placeholder: "`npm run build` or `react-router build`" }, devCommand: { value: "react-router dev", placeholder: "react-router dev" }, outputDirectory: { value: "build" } }, dependency: "react-router", getOutputDirName: async () => "build" }, { name: "Astro", slug: "astro", demo: "https://astro-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/astro.svg", darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/astro-dark.svg", tagline: "Astro is a new kind of static site builder for the modern web. Powerful developer experience meets lightweight output.", description: "An Astro site, using the basics starter kit.", website: "https://astro.build", envPrefix: "PUBLIC_", detectors: { every: [ { matchPackage: "astro" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { value: "astro build", placeholder: "`npm run build` or `astro build`" }, devCommand: { value: "astro dev --port $PORT", placeholder: "astro dev" }, outputDirectory: { value: "dist" } }, dependency: "astro", getOutputDirName: async () => "dist", defaultRoutes: [ { src: "^/assets/(.*)$", headers: { "cache-control": "public, max-age=31536000, immutable" }, continue: true }, { src: "^/_astro/(.*)$", headers: { "cache-control": "public, max-age=31536000, immutable" }, continue: true } ] }, { name: "Hexo", slug: "hexo", demo: "https://hexo-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/hexo.svg", tagline: "Hexo is a fast, simple & powerful blog framework powered by Node.js.", description: "A Hexo site, created with the Hexo CLI.", website: "https://hexo.io", detectors: { every: [ { matchPackage: "hexo" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `hexo generate`", value: "hexo generate" }, devCommand: { value: "hexo server --port $PORT", placeholder: "hexo server" }, outputDirectory: { value: "public" } }, dependency: "hexo", getOutputDirName: async () => "public" }, { name: "Eleventy", slug: "eleventy", demo: "https://eleventy-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/eleventy.svg", tagline: "11ty is a simpler static site generator written in JavaScript, created to be an alternative to Jekyll.", description: "An Eleventy site, created with npm init.", website: "https://www.11ty.dev", detectors: { every: [ { matchPackage: "@11ty/eleventy" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `npx @11ty/eleventy`", value: "npx @11ty/eleventy" }, devCommand: { value: "npx @11ty/eleventy --serve --watch --port $PORT", placeholder: "npx @11ty/eleventy --serve" }, outputDirectory: { value: "_site" } }, dependency: "@11ty/eleventy", getOutputDirName: async () => "_site", cachePattern: ".cache/**" }, { name: "Docusaurus (v2+)", slug: "docusaurus-2", demo: "https://docusaurus-2-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/docusaurus.svg", tagline: "Docusaurus makes it easy to maintain Open Source documentation websites.", description: "A static Docusaurus site that makes it easy to maintain OSS documentation.", website: "https://v2.docusaurus.io", detectors: { some: [ { matchPackage: "@docusaurus/core" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `docusaurus build`", value: "docusaurus build" }, devCommand: { value: "docusaurus start --port $PORT", placeholder: "docusaurus start" }, outputDirectory: { value: "build" } }, dependency: "@docusaurus/core", getOutputDirName: async (dirPrefix) => { const base = "build"; try { const location = (0, import_path45.join)(dirPrefix, base); const content = await readdir2(location, { withFileTypes: true }); if (content.length === 1 && content[0].isDirectory()) { return (0, import_path45.join)(base, content[0].name); } } catch (error3) { console.error(`Error detecting output directory: `, error3); } return base; }, defaultRoutes: [ { src: "^/[^./]+\\.[0-9a-f]{8}\\.(css|js)$", headers: { "cache-control": "max-age=31536000, immutable" }, continue: true }, { src: "^/assets/images/[^/]+-[0-9a-f]{32}\\.(ico|svg|jpg|jpeg|png|gif|webp)$", headers: { "cache-control": "max-age=31536000, immutable" }, continue: true }, { src: "^/assets/medias/[^/]+-[0-9a-f]{32}\\.(ogv|wav|mp3|m4a|aac|oga|flac)$", headers: { "cache-control": "max-age=31536000, immutable" }, continue: true }, { src: "^/assets/files/[^/]+-[0-9a-f]{32}\\.(pdf|doc|docx|xls|xlsx|zip|rar)$", headers: { "cache-control": "max-age=31536000, immutable" }, continue: true }, { src: "^/ideal-img/[^/]+\\.[0-9a-f]{7}\\.\\d+\\.(png|jpe?g|gif)$", headers: { "cache-control": "max-age=31536000, immutable" }, continue: true }, { handle: "filesystem" }, { src: ".*", status: 404, dest: "404.html" } ] }, { name: "Docusaurus (v1)", slug: "docusaurus", demo: "https://docusaurus-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/docusaurus.svg", tagline: "Docusaurus makes it easy to maintain Open Source documentation websites.", description: "A static Docusaurus site that makes it easy to maintain OSS documentation.", website: "https://docusaurus.io/", detectors: { some: [ { matchPackage: "docusaurus" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `docusaurus-build`", value: "docusaurus-build" }, devCommand: { value: "docusaurus-start --port $PORT", placeholder: "docusaurus-start" }, outputDirectory: { value: "build" } }, dependency: "docusaurus", getOutputDirName: async (dirPrefix) => { const base = "build"; try { const location = (0, import_path45.join)(dirPrefix, base); const content = await readdir2(location, { withFileTypes: true }); if (content.length === 1 && content[0].isDirectory()) { return (0, import_path45.join)(base, content[0].name); } } catch (error3) { console.error(`Error detecting output directory: `, error3); } return base; } }, { name: "Preact", slug: "preact", demo: "https://preact-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/preact.svg", tagline: "Preact is a fast 3kB alternative to React with the same modern API.", description: "A Preact app, created with the Preact CLI.", website: "https://preactjs.com", detectors: { every: [ // Intentionally does not detect "preact" package because that can be // used to power other frameworks. { matchPackage: "preact-cli" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `preact build`", value: "preact build" }, devCommand: { value: "preact watch --port $PORT", placeholder: "preact watch" }, outputDirectory: { value: "build" } }, dependency: "preact-cli", getOutputDirName: async () => "build", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "SolidStart (v1)", slug: "solidstart-1", demo: "https://solid-start-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/solid.svg", tagline: "Simple and performant reactivity for building user interfaces.", description: "A Solid app, created with SolidStart.", website: "https://start.solidjs.com", envPrefix: "VITE_", detectors: { every: [ { matchPackage: "solid-js" }, { matchPackage: "@solidjs/start" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `vinxi build`", value: "vinxi build" }, devCommand: { value: "vinxi dev" }, outputDirectory: { value: ".output" } }, getOutputDirName: async () => ".output" }, { name: "SolidStart (v0)", slug: "solidstart", demo: "https://solid-start-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/solid.svg", tagline: "Simple and performant reactivity for building user interfaces.", description: "A Solid app, created with SolidStart.", website: "https://solidjs.com", envPrefix: "VITE_", sort: 98, detectors: { every: [ { matchPackage: "solid-js" }, { matchPackage: "solid-start" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `solid-start build`", value: "solid-start build" }, devCommand: { value: "solid-start dev" }, outputDirectory: { value: ".output" } }, getOutputDirName: async () => ".output" }, { name: "Dojo", slug: "dojo", demo: "https://dojo-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/dojo.png", tagline: "Dojo is a modern progressive, TypeScript first framework.", description: "A Dojo app, created with the Dojo CLI's cli-create-app command.", website: "https://dojo.io", detectors: { some: [ { matchPackage: "@dojo/framework" }, { path: ".dojorc" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `dojo build`", value: "dojo build" }, devCommand: { value: "dojo build -m dev -w -s -p $PORT", placeholder: "dojo build -m dev -w -s" }, outputDirectory: { value: "output/dist" } }, dependency: "@dojo/cli", getOutputDirName: async () => (0, import_path45.join)("output", "dist"), defaultRoutes: [ { handle: "filesystem" }, { src: "/service-worker.js", headers: { "cache-control": "s-maxage=0" }, continue: true }, { src: "/(.*)", dest: "/index.html" } ], defaulHeaders: [ { source: "/service-worker.js", regex: "/service-worker.js", headers: { "cache-control": "s-maxage=0" }, continue: true } ] }, { name: "Ember.js", slug: "ember", demo: "https://ember-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/ember.svg", tagline: "Ember.js helps webapp developers be more productive out of the box.", description: "An Ember app, created with the Ember CLI.", website: "https://emberjs.com/", detectors: { some: [ { matchPackage: "ember-source" }, { matchPackage: "ember-cli" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `ember build`", value: "ember build" }, devCommand: { value: "ember serve --port $PORT", placeholder: "ember serve" }, outputDirectory: { value: "dist" } }, dependency: "ember-cli", getOutputDirName: async () => "dist", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "Vue.js", slug: "vue", demo: "https://vue-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/vue.svg", tagline: "Vue.js is a versatile JavaScript framework that is as approachable as it is performant.", description: "A Vue.js app, created with the Vue CLI.", website: "https://vuejs.org", envPrefix: "VUE_APP_", detectors: { every: [ { matchPackage: "@vue/cli-service" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `vue-cli-service build`", value: "vue-cli-service build" }, devCommand: { value: "vue-cli-service serve --port $PORT", placeholder: "vue-cli-service serve" }, outputDirectory: { value: "dist" } }, dependency: "@vue/cli-service", getOutputDirName: async () => "dist", defaultRoutes: [ { src: "^/[^/]*\\.(js|txt|ico|json)", headers: { "cache-control": "max-age=300" }, continue: true }, { src: "^/(img|js|css|fonts|media)/[^/]+\\.[0-9a-f]{8}\\.*", headers: { "cache-control": "max-age=31536000, immutable" }, continue: true }, { handle: "filesystem" }, { src: "^.*", dest: "/index.html" } ] }, { name: "Scully", slug: "scully", demo: "https://scully-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/scullyio-logo.png", tagline: "Scully is a static site generator for Angular.", description: "The Static Site Generator for Angular apps.", website: "https://github.com/scullyio/scully", detectors: { every: [ { matchPackage: "@scullyio/init" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `ng build && scully`", value: "ng build && scully" }, devCommand: { value: "ng serve --port $PORT", placeholder: "ng serve" }, outputDirectory: { value: "dist" } }, dependency: "@scullyio/init", getOutputDirName: async () => "dist/static" }, { name: "Ionic Angular", slug: "ionic-angular", demo: "https://ionic-angular-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/ionic.svg", tagline: "Ionic Angular allows you to build mobile PWAs with Angular and the Ionic Framework.", description: "An Ionic Angular site, created with the Ionic CLI.", website: "https://ionicframework.com", detectors: { every: [ { matchPackage: "@ionic/angular" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `ng build`", value: "ng build" }, devCommand: { value: "ng serve --port $PORT" }, outputDirectory: { value: "www" } }, dependency: "@ionic/angular", getOutputDirName: async () => "www", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "Angular", slug: "angular", demo: "https://angular-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/angular.svg", tagline: "Angular is a TypeScript-based cross-platform framework from Google.", description: "An Angular app, created with the Angular CLI.", website: "https://angular.io", detectors: { every: [ { matchPackage: "@angular/cli" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `ng build`", value: "ng build" }, devCommand: { value: "ng serve --port $PORT", placeholder: "ng serve" }, outputDirectory: { value: "dist" } }, dependency: "@angular/cli", getOutputDirName: async (dirPrefix) => { const base = "dist"; try { const location = (0, import_path45.join)(dirPrefix, base); const content = await readdir2(location, { withFileTypes: true }); if (content.length === 1 && content[0].isDirectory()) { const potentialOutDir = (0, import_path45.join)(base, content[0].name); const potentialOutDirWithBrowser = (0, import_path45.join)(potentialOutDir, "browser"); return (0, import_fs11.existsSync)(potentialOutDirWithBrowser) ? potentialOutDirWithBrowser : potentialOutDir; } } catch (error3) { console.error(`Error detecting output directory: `, error3); } return base; }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "Polymer", slug: "polymer", demo: "https://polymer-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/polymer.svg", tagline: "Polymer is an open-source webapps library from Google, for building using Web Components.", description: "A Polymer app, created with the Polymer CLI.", website: "https://www.polymer-project.org/", detectors: { every: [ { matchPackage: "polymer-cli" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `polymer build`", value: "polymer build" }, devCommand: { value: "polymer serve --port $PORT", placeholder: "polymer serve" }, outputDirectory: { value: "build" } }, dependency: "polymer-cli", getOutputDirName: async (dirPrefix) => { const base = "build"; try { const location = (0, import_path45.join)(dirPrefix, base); const content = await readdir2(location); const paths = content.filter((item) => !item.includes(".")); return (0, import_path45.join)(base, paths[0]); } catch (error3) { console.error(`Error detecting output directory: `, error3); } return base; }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "Svelte", slug: "svelte", demo: "https://svelte.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/svelte.svg", tagline: "Svelte lets you write high performance reactive apps with significantly less boilerplate.", description: "A basic Svelte app using the default template.", website: "https://svelte.dev", sort: 3, detectors: { every: [ { matchPackage: "svelte" }, { matchPackage: "sirv-cli" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `rollup -c`", value: "rollup -c" }, devCommand: { value: "rollup -c -w" }, outputDirectory: { value: "public" } }, dependency: "sirv-cli", getOutputDirName: async () => "public", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { // TODO: fix detected as "sveltekit-1" name: "SvelteKit (v0)", slug: "sveltekit", demo: "https://sveltekit-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/svelte.svg", screenshot: "https://assets.vercel.com/image/upload/v1647366075/front/import/sveltekit.png", tagline: "SvelteKit is a framework for building web applications of all sizes.", description: "A SvelteKit legacy app optimized Edge-first.", website: "https://kit.svelte.dev", sort: 99, envPrefix: "VITE_", detectors: { every: [ { path: "package.json", matchContent: '"(dev)?(d|D)ependencies":\\s*{[^}]*"@sveltejs\\/kit":\\s*"1\\.0\\.0-next\\.(\\d+)"[^}]*}' } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `svelte-kit build`", value: "svelte-kit build" }, devCommand: { value: "svelte-kit dev --port $PORT", placeholder: "svelte-kit dev" }, outputDirectory: { value: "public" } }, getOutputDirName: async () => "public" }, { name: "SvelteKit", slug: "sveltekit-1", demo: "https://sveltekit-1-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/svelte.svg", screenshot: "https://assets.vercel.com/image/upload/v1647366075/front/import/sveltekit.png", tagline: "SvelteKit is a framework for building web applications of all sizes.", description: "A SvelteKit app optimized Edge-first.", website: "https://kit.svelte.dev", detectors: { every: [ { path: "package.json", matchContent: '"(dev)?(d|D)ependencies":\\s*{[^}]*"@sveltejs\\/kit":\\s*".+?"[^}]*}' } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "vite build", value: "vite build" }, devCommand: { placeholder: "vite dev", value: "vite dev --port $PORT" }, outputDirectory: { value: "public" } }, getOutputDirName: async () => "public" }, { name: "Ionic React", slug: "ionic-react", demo: "https://ionic-react-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/ionic.svg", tagline: "Ionic React allows you to build mobile PWAs with React and the Ionic Framework.", description: "An Ionic React site, created with the Ionic CLI.", website: "https://ionicframework.com", detectors: { every: [ { matchPackage: "@ionic/react" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `react-scripts build`", value: "react-scripts build" }, devCommand: { value: "react-scripts start" }, outputDirectory: { value: "build" } }, dependency: "@ionic/react", getOutputDirName: async () => "build", defaultRoutes: [ { src: "/static/(.*)", headers: { "cache-control": "s-maxage=31536000, immutable" }, continue: true }, { src: "/service-worker.js", headers: { "cache-control": "s-maxage=0" }, continue: true }, { src: "/sockjs-node/(.*)", dest: "/sockjs-node/$1" }, { handle: "filesystem" }, { src: "/static/(.*)", status: 404, dest: "/404.html" }, { src: "/(.*)", headers: { "cache-control": "s-maxage=0" }, dest: "/index.html" } ] }, { name: "Create React App", slug: "create-react-app", demo: "https://create-react-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/react.svg", tagline: "Create React App allows you to get going with React in no time.", description: "A client-side React app created with create-react-app.", website: "https://create-react-app.dev", sort: 4, envPrefix: "REACT_APP_", detectors: { some: [ { matchPackage: "react-scripts" }, { matchPackage: "react-dev-utils" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `react-scripts build`", value: "react-scripts build" }, devCommand: { value: "react-scripts start" }, outputDirectory: { value: "build" } }, dependency: "react-scripts", getOutputDirName: async () => "build", defaultRoutes: [ { src: "/static/(.*)", headers: { "cache-control": "s-maxage=31536000, immutable" }, continue: true }, { src: "/service-worker.js", headers: { "cache-control": "s-maxage=0" }, continue: true }, { src: "/sockjs-node/(.*)", dest: "/sockjs-node/$1" }, { handle: "filesystem" }, { src: "/static/(.*)", status: 404, dest: "/404.html" }, { src: "/(.*)", headers: { "cache-control": "s-maxage=0" }, dest: "/index.html" } ] }, { name: "Gridsome", slug: "gridsome", demo: "https://gridsome-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/gridsome.svg", tagline: "Gridsome is a Vue.js-powered framework for building websites & apps that are fast by default.", description: "A Gridsome app, created with the Gridsome CLI.", website: "https://gridsome.org/", detectors: { every: [ { matchPackage: "gridsome" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `gridsome build`", value: "gridsome build" }, devCommand: { value: "gridsome develop -p $PORT", placeholder: "gridsome develop" }, outputDirectory: { value: "dist" } }, dependency: "gridsome", getOutputDirName: async () => "dist" }, { name: "UmiJS", slug: "umijs", demo: "https://umijs-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/umi.svg", tagline: "UmiJS is an extensible enterprise-level React application framework.", description: "An UmiJS app, created using the Umi CLI.", website: "https://umijs.org", detectors: { every: [ { matchPackage: "umi" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `umi build`", value: "umi build" }, devCommand: { value: "umi dev --port $PORT", placeholder: "umi dev" }, outputDirectory: { value: "dist" } }, dependency: "umi", getOutputDirName: async () => "dist", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "Sapper", slug: "sapper", demo: "https://sapper-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/svelte.svg", tagline: "Sapper is a framework for building high-performance universal web apps with Svelte.", description: "A Sapper app, using the Sapper template.", website: "https://sapper.svelte.dev", detectors: { every: [ { matchPackage: "sapper" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `sapper export`", value: "sapper export" }, devCommand: { value: "sapper dev --port $PORT", placeholder: "sapper dev" }, outputDirectory: { value: "__sapper__/export" } }, dependency: "sapper", getOutputDirName: async () => "__sapper__/export" }, { name: "Saber", slug: "saber", logo: "https://api-frameworks.vercel.sh/framework-logos/saber.svg", tagline: "Saber is a framework for building static sites in Vue.js that supports data from any source.", description: "A Saber site, created with npm init.", website: "https://saber.egoist.dev", detectors: { every: [ { matchPackage: "saber" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `saber build`", value: "saber build" }, devCommand: { value: "saber --port $PORT", placeholder: "saber" }, outputDirectory: { value: "public" } }, dependency: "saber", getOutputDirName: async () => "public", defaultRoutes: [ { src: "/_saber/.*", headers: { "cache-control": "max-age=31536000, immutable" } }, { handle: "filesystem" }, { src: ".*", status: 404, dest: "404.html" } ] }, { name: "Stencil", slug: "stencil", demo: "https://stencil.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/stencil.svg", tagline: "Stencil is a powerful toolchain for building Progressive Web Apps and Design Systems.", description: "A Stencil site, created with the Stencil CLI.", website: "https://stenciljs.com/", detectors: { every: [ { matchPackage: "@stencil/core" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `stencil build`", value: "stencil build" }, devCommand: { value: "stencil build --dev --watch --serve --port $PORT", placeholder: "stencil build --dev --watch --serve" }, outputDirectory: { value: "www" } }, dependency: "@stencil/core", getOutputDirName: async () => "www", defaultRoutes: [ { src: "/assets/(.*)", headers: { "cache-control": "max-age=2592000" }, continue: true }, { src: "/build/p-.*", headers: { "cache-control": "max-age=31536000, immutable" }, continue: true }, { src: "/sw.js", headers: { "cache-control": "no-cache" }, continue: true }, { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "Nuxt", slug: "nuxtjs", demo: "https://nuxtjs-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/nuxt.svg", screenshot: "https://assets.vercel.com/image/upload/v1647366075/front/import/nuxtjs.png", tagline: "Nuxt is the open source framework that makes full-stack development with Vue.js intuitive.", description: "A Nuxt app, bootstrapped with create-nuxt-app.", website: "https://nuxt.com", sort: 2, envPrefix: "NUXT_ENV_", supersedes: ["nitro"], detectors: { some: [ { matchPackage: "nuxt" }, { matchPackage: "nuxt3" }, { matchPackage: "nuxt-edge" }, { matchPackage: "nuxt-nightly" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `nuxt build`", value: "nuxt build" }, devCommand: { value: "nuxt dev" }, outputDirectory: { value: "dist" } }, dependency: "nuxt", getOutputDirName: async () => "dist", cachePattern: ".nuxt/**", defaultRoutes: [ { src: "/sw.js", headers: { "cache-control": "no-cache" }, continue: true }, { src: "/_nuxt/(.*)", headers: { "cache-control": "public,max-age=31536000,immutable" }, continue: true }, { handle: "filesystem" }, { src: "/(.*)", dest: "/200.html" } ] }, { name: "RedwoodJS", slug: "redwoodjs", demo: "https://redwood-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/redwoodjs.svg", tagline: "RedwoodJS is a full-stack framework for the Jamstack.", description: "A RedwoodJS app, bootstraped with create-redwood-app.", website: "https://redwoodjs.com", envPrefix: "REDWOOD_ENV_", useRuntime: { src: "package.json", use: "@vercel/redwood" }, ignoreRuntimes: ["@vercel/node"], detectors: { every: [ { matchPackage: "@redwoodjs/core" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { value: "yarn rw deploy vercel" }, devCommand: { value: 'yarn rw dev --fwd="--port=$PORT --open=false"', placeholder: "yarn rw dev" }, outputDirectory: { placeholder: "RedwoodJS default" } }, getOutputDirName: async () => "public" }, { name: "Hugo", slug: "hugo", demo: "https://hugo-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/hugo.svg", tagline: "Hugo is the world\u2019s fastest framework for building websites, written in Go.", description: "A Hugo site, created with the Hugo CLI.", website: "https://gohugo.io", detectors: { some: [ { path: "config.yaml", matchContent: "baseURL" }, { path: "config.toml", matchContent: "baseURL" }, { path: "config.json", matchContent: "baseURL" } ] }, settings: { installCommand: { placeholder: "None" }, buildCommand: { placeholder: "`npm run build` or `hugo --gc`", value: "hugo --gc" }, devCommand: { value: "hugo server -D -w -p $PORT", placeholder: "hugo server -D" }, outputDirectory: { placeholder: "`public` or `publishDir` from the `config` file" } }, getOutputDirName: async (dirPrefix) => { const config2 = await (0, import_read_config_file.readConfigFile)( ["config.json", "config.yaml", "config.toml"].map((fileName) => { return (0, import_path45.join)(dirPrefix, fileName); }) ); return config2 && config2.publishDir || "public"; }, defaultVersion: "0.58.2" // Must match the build image }, { name: "Jekyll", slug: "jekyll", demo: "https://jekyll-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/jekyll.svg", tagline: "Jekyll makes it super easy to transform your plain text into static websites and blogs.", description: "A Jekyll site, created with the Jekyll CLI.", website: "https://jekyllrb.com/", detectors: { every: [ { path: "_config.yml" } ] }, settings: { installCommand: { value: "bundle install" }, buildCommand: { placeholder: "`npm run build` or `jekyll build`", value: "jekyll build" }, devCommand: { value: "bundle exec jekyll serve --watch --port $PORT", placeholder: "bundle exec jekyll serve" }, outputDirectory: { placeholder: "`_site` or `destination` from `_config.yml`" } }, getOutputDirName: async (dirPrefix) => { const config2 = await (0, import_read_config_file.readConfigFile)( (0, import_path45.join)(dirPrefix, "_config.yml") ); return config2 && config2.destination || "_site"; }, cachePattern: "{vendor/bin,vendor/cache,vendor/bundle}/**" }, { name: "Brunch", slug: "brunch", demo: "https://brunch-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/brunch.svg", tagline: "Brunch is a fast and simple webapp build tool with seamless incremental compilation for rapid development.", description: "A Brunch app, created with the Brunch CLI.", website: "https://brunch.io/", detectors: { some: [ { matchPackage: "brunch" }, { path: "brunch-config.js" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `brunch build --production`", value: "brunch build --production" }, devCommand: { value: "brunch watch --server --port $PORT", placeholder: "brunch watch --server" }, outputDirectory: { value: "public" } }, getOutputDirName: async () => "public" }, { name: "Middleman", slug: "middleman", demo: "https://middleman-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/middleman.svg", tagline: "Middleman is a static site generator that uses all the shortcuts and tools in modern web development.", description: "A Middleman app, created with the Middleman CLI.", website: "https://middlemanapp.com/", detectors: { every: [ { path: "config.rb" } ] }, settings: { installCommand: { value: "bundle install" }, buildCommand: { placeholder: "`npm run build` or `bundle exec middleman build`", value: "bundle exec middleman build" }, devCommand: { placeholder: "bundle exec middleman server", value: "bundle exec middleman server -p $PORT" }, outputDirectory: { value: "build" } }, getOutputDirName: async () => "build", cachePattern: "{vendor/bin,vendor/cache,vendor/bundle}/**" }, { name: "Zola", slug: "zola", demo: "https://zola-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/zola.png", tagline: "Everything you need to make a static site engine in one binary.", description: 'A Zola app, created with the "Getting Started" tutorial.', website: "https://www.getzola.org", detectors: { every: [ { path: "config.toml", matchContent: "base_url" } ] }, settings: { installCommand: { placeholder: "None" }, buildCommand: { value: "zola build" }, devCommand: { placeholder: "zola serve", value: "zola serve --port $PORT" }, outputDirectory: { value: "public" } }, getOutputDirName: async () => "public", defaultVersion: "0.13.0" // Must match the build image }, { name: "Hydrogen (v1)", slug: "hydrogen", demo: "https://hydrogen-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/hydrogen.svg", tagline: "React framework for headless commerce", description: "React framework for headless commerce", website: "https://hydrogen.shopify.dev", supersedes: ["vite"], useRuntime: { src: "package.json", use: "@vercel/hydrogen" }, envPrefix: "PUBLIC_", detectors: { some: [ { matchPackage: "@shopify/hydrogen" }, { path: "hydrogen.config.js" }, { path: "hydrogen.config.ts" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { value: "shopify hydrogen build", placeholder: "`npm run build` or `shopify hydrogen build`" }, devCommand: { value: "shopify hydrogen dev", placeholder: "shopify hydrogen dev" }, outputDirectory: { value: "dist" } }, dependency: "@shopify/hydrogen", getOutputDirName: async () => "dist" }, { name: "Vite", slug: "vite", demo: "https://vite-vue-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/vite.svg", tagline: "Vite is a new breed of frontend build tool that significantly improves the frontend development experience.", description: "A Vue.js app, created with Vite.", website: "https://vitejs.dev", supersedes: ["ionic-react"], envPrefix: "VITE_", detectors: { every: [ { matchPackage: "vite" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `vite build`", value: "vite build" }, devCommand: { placeholder: "vite", value: "vite --port $PORT" }, outputDirectory: { value: "dist" } }, dependency: "vite", getOutputDirName: async () => "dist" }, { name: "TanStack Start", slug: "tanstack-start", logo: "https://api-frameworks.vercel.sh/framework-logos/tanstack-start.svg", darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/tanstack-start-dark.svg", tagline: "Full-stack Framework powered by TanStack Router for React and Solid.", description: "Full-document SSR, Streaming, Server Functions, bundling and more, powered by TanStack Router and Vite - Ready to deploy to your favorite hosting provider.", website: "https://tanstack.com/start", supersedes: ["ionic-react", "vite"], detectors: { every: [ { matchPackage: "@tanstack/router-plugin" }, { matchPackage: "nitro" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `vite build`", value: "vite build" }, devCommand: { placeholder: "vite", value: "vite --port $PORT" }, outputDirectory: { value: "dist" } }, getOutputDirName: async () => "dist" }, { name: "VitePress", slug: "vitepress", demo: "https://vitepress-starter-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/vite.svg", tagline: "VitePress is VuePress' little brother, built on top of Vite.", description: "VuePress on top of Vite", website: "https://vitepress.vuejs.org/", detectors: { every: [ { matchPackage: "vitepress" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `vitepress build docs`", value: "vitepress build docs" }, devCommand: { value: "vitepress dev docs --port $PORT" }, outputDirectory: { value: "docs/.vitepress/dist" } }, getOutputDirName: async () => "docs/.vitepress/dist" }, { name: "VuePress", slug: "vuepress", demo: "https://vuepress-starter-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/vuepress.png", tagline: "Vue-powered Static Site Generator", description: "Vue-powered Static Site Generator", website: "https://vuepress.vuejs.org/", detectors: { every: [ { matchPackage: "vuepress" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `vuepress build src`", value: "vuepress build src" }, devCommand: { value: "vuepress dev src --port $PORT" }, outputDirectory: { value: "src/.vuepress/dist" } }, getOutputDirName: async () => "src/.vuepress/dist" }, { name: "Parcel", slug: "parcel", demo: "https://parcel-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/parcel.png", tagline: "Parcel is a zero configuration build tool for the web that scales to projects of any size and complexity.", description: "A vanilla web app built with Parcel.", website: "https://parceljs.org", detectors: { every: [ { matchPackage: "parcel" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `parcel build`", value: "parcel build" }, devCommand: { placeholder: "parcel", value: "parcel" }, outputDirectory: { value: "dist" } }, dependency: "parcel", getOutputDirName: async () => "dist", defaultRoutes: [ { src: "^/[^./]+\\.[0-9a-f]{8}\\.(css|js|png|jpg|webp|avif|svg)$", headers: { "cache-control": "s-maxage=31536000, immutable" }, continue: true }, { handle: "filesystem" } ] }, { name: "FastAPI", slug: "fastapi", demo: "https://vercel-fastapi-gamma-smoky.vercel.app/", logo: "https://api-frameworks.vercel.sh/framework-logos/fastapi.svg", darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/fastapi.svg", tagline: "FastAPI framework, high performance, easy to learn, fast to code, ready for production", description: "FastAPI framework, high performance, easy to learn, fast to code, ready for production", website: "https://fastapi.tiangolo.com", supersedes: ["python"], useRuntime: { src: "index.py", use: "@vercel/python" }, ignoreRuntimes: ["@vercel/python"], detectors: { some: [ { path: "requirements.txt", matchContent: "fastapi" }, { path: "pyproject.toml", matchContent: "fastapi" }, { path: "Pipfile", matchContent: "fastapi" } ] }, settings: { installCommand: { placeholder: "`pip install -r requirements.txt`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ] }, { name: "Flask", slug: "flask", logo: "https://api-frameworks.vercel.sh/framework-logos/flask.svg", tagline: "The Python micro web framework", description: "A Flask app, ready for production", website: "https://flask.palletsprojects.com", supersedes: ["python"], useRuntime: { src: "index.py", use: "@vercel/python" }, ignoreRuntimes: ["@vercel/python"], detectors: { some: [ { path: "requirements.txt", matchContent: "[Ff]lask" }, { path: "pyproject.toml", matchContent: "[Ff]lask" }, { path: "Pipfile", matchContent: "[Ff]lask" } ] }, settings: { installCommand: { placeholder: "`pip install -r requirements.txt`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ] }, { name: "FastHTML", slug: "fasthtml", demo: "https://fasthtml-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/fasthtml.png", darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/fasthtml-dark.png", tagline: "The fastest way to create an HTML app", description: "A library for writing fast and scalable Starlette-powered web applications", website: "https://fastht.ml", supersedes: ["python"], useRuntime: { src: "main.py", use: "@vercel/python" }, detectors: { every: [ { path: "requirements.txt", matchContent: "python-fasthtml" } ] }, settings: { installCommand: { placeholder: "`pip install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { value: "uvicorn main:app --reload" }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/main" } ] }, { name: "Sanity (v3)", slug: "sanity-v3", demo: "https://sanity-studio-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/sanity.svg", tagline: "The structured content platform.", description: "A Sanity Studio", website: "https://www.sanity.io", envPrefix: "SANITY_STUDIO_", detectors: { some: [ { path: "sanity.json" }, { path: "sanity.config.js" }, { path: "sanity.config.jsx" }, { path: "sanity.config.ts" }, { path: "sanity.config.tsx" } ], every: [ { path: "package.json", matchContent: '"(dev)?(d|D)ependencies":\\s*{[^}]*"sanity":\\s*"\\^?3\\..*"[^}]*}' } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `sanity build`", value: "sanity build" }, devCommand: { value: "sanity dev --port $PORT" }, outputDirectory: { value: "dist" } }, getOutputDirName: async () => "dist", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "Sanity", slug: "sanity", demo: "https://sanity-studio-template.vercel.app", logo: "https://api-frameworks.vercel.sh/framework-logos/sanity.svg", tagline: "The structured content platform.", description: "A Sanity Studio", website: "https://www.sanity.io", envPrefix: "SANITY_STUDIO_", detectors: { some: [ { path: "sanity.json" }, { path: "sanity.config.js" }, { path: "sanity.config.jsx" }, { path: "sanity.config.ts" }, { path: "sanity.config.tsx" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `sanity build`", value: "sanity build" }, devCommand: { value: "sanity start --port $PORT" }, outputDirectory: { value: "dist" } }, dependency: "@sanity/cli", getOutputDirName: async () => "dist", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/index.html" } ] }, { name: "Storybook", slug: "storybook", logo: "https://api-frameworks.vercel.sh/framework-logos/storybook.svg", tagline: "Frontend workshop for UI development", description: "Storybook is a frontend workshop for building UI components and pages in isolation.", website: "https://storybook.js.org", ignoreRuntimes: ["@vercel/next", "@vercel/node"], disableRootMiddleware: true, detectors: { every: [ { matchPackage: "storybook" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { value: "storybook build", ignorePackageJsonScript: true }, devCommand: { value: `storybook dev -p $PORT` }, outputDirectory: { value: "storybook-static" } }, getOutputDirName: async () => "storybook-static" }, { name: "Nitro", slug: "nitro", logo: "https://api-frameworks.vercel.sh/framework-logos/nitro.svg", demo: "https://nitro-template.vercel.app", tagline: "Nitro is a next generation server toolkit.", description: "Nitro lets you create web servers that run on multiple platforms.", website: "https://nitro.build/", detectors: { some: [{ matchPackage: "nitropack" }, { matchPackage: "nitro" }] }, supersedes: ["vite"], settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `nitro build`", value: "nitro build" }, devCommand: { value: "nitro dev" }, outputDirectory: { value: "dist" } }, getOutputDirName: async () => "public" }, { name: "Hono", slug: "hono", logo: "https://api-frameworks.vercel.sh/framework-logos/hono.svg", demo: "https://hono.vercel.dev", tagline: "Web framework built on Web Standards", description: "Fast, lightweight, built on Web Standards. Support for any JavaScript runtime.", website: "https://hono.dev", useRuntime: { src: "index.js", use: "@vercel/hono" }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ], detectors: { every: [{ matchPackage: "hono" }], some: [ { path: "app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` }, { path: "src/server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?` } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, dependency: "hono", getOutputDirName: async () => "public" }, { name: "Express", slug: "express", logo: "https://api-frameworks.vercel.sh/framework-logos/express.svg", demo: "https://express-vercel-example-demo.vercel.app/", darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/express-dark.svg", tagline: "Fast, unopinionated, minimalist web framework for Node.js", description: "Fast, unopinionated, minimalist web framework for Node.js", website: "https://expressjs.com", useRuntime: { src: "index.js", use: "@vercel/express" }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ], detectors: { every: [{ matchPackage: "express" }], some: [ { path: "app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` }, { path: "src/server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?` } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, dependency: "express", getOutputDirName: async () => "public" }, { name: "H3", slug: "h3", logo: "https://api-frameworks.vercel.sh/framework-logos/h3.svg", tagline: "Universal, Tiny, and Fast Servers", description: "H(TTP) server framework built on top of web standards for high performance and composability.", website: "https://h3.dev/", useRuntime: { src: "index.js", use: "@vercel/h3" }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ], detectors: { every: [{ matchPackage: "h3" }], some: [ { path: "app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` }, { path: "src/server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?` } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, dependency: "h3", getOutputDirName: async () => "public" }, { name: "Koa", slug: "koa", logo: "https://api-frameworks.vercel.sh/framework-logos/koa.svg", tagline: "Expressive middleware for Node.js using ES2017 async functions", description: "Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.", website: "https://koajs.com", useRuntime: { src: "index.js", use: "@vercel/koa" }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ], detectors: { every: [{ matchPackage: "koa" }], some: [ { path: "app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` }, { path: "src/server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?` } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, dependency: "koa", getOutputDirName: async () => "public" }, { name: "NestJS", slug: "nestjs", logo: "https://api-frameworks.vercel.sh/framework-logos/nestjs.svg", tagline: "Framework for building efficient, scalable Node.js server-side applications", description: "A progressive Node.js framework for building efficient, reliable and scalable server-side applications.", website: "https://nestjs.com/", useRuntime: { src: "index.js", use: "@vercel/nestjs" }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ], detectors: { every: [{ matchPackage: "@nestjs/core" }], some: [ { path: "src/main.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/main.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/main.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/main.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/main.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/main.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "main.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "main.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "main.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "main.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "main.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "main.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` }, { path: "src/server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?` } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, dependency: "nestjs", getOutputDirName: async () => "public" }, { name: "Elysia", slug: "elysia", logo: "https://api-frameworks.vercel.sh/framework-logos/elysia.svg", tagline: "Ergonomic framework for humans", description: "TypeScript with End-to-End Type Safety, type integrity, and exceptional developer experience. Supercharged by Bun.", website: "https://elysiajs.com/", useRuntime: { src: "index.js", use: "@vercel/elysia" }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ], detectors: { every: [{ matchPackage: "elysia" }], some: [ { path: "app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` }, { path: "src/server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?` } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public" }, { name: "Fastify", slug: "fastify", logo: "https://api-frameworks.vercel.sh/framework-logos/fastify.svg", darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/fastify-dark.svg", tagline: "Fast and low overhead web framework, for Node.js", description: "Fastify is a web framework highly focused on providing the best developer experience with the least overhead and a powerful plugin architecture.", website: "https://fastify.dev/", useRuntime: { src: "index.js", use: "@vercel/fastify" }, defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ], detectors: { every: [{ matchPackage: "fastify" }], some: [ { path: "app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/index.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/index.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/index.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/index.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/index.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/index.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/app.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/app.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/app.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/app.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/app.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/app.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/server.cjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/server.js", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/server.mjs", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/server.mts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/server.ts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` }, { path: "src/server.cts", matchContent: `(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?` } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public" }, { name: "xmcp", slug: "xmcp", logo: "https://api-frameworks.vercel.sh/framework-logos/xmcp.svg", demo: "https://xmcp-template.vercel.app/", tagline: "The MCP framework for building AI-powered tools", description: "A framework for building Model Context Protocol servers with zero configuration.", website: "https://xmcp.dev", detectors: { some: [ { path: "xmcp.config.ts" }, { path: "xmcp.config.js" }, { matchPackage: "xmcp" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run build` or `xmcp build`", value: "xmcp build --vercel" }, devCommand: { value: "xmcp dev", placeholder: "xmcp dev" }, outputDirectory: { value: "dist" } }, dependency: "xmcp", getOutputDirName: async () => "dist" }, { name: "Python", slug: "python", experimental: true, runtimeFramework: true, logo: "https://api-frameworks.vercel.sh/framework-logos/python.svg", tagline: "Python is a programming language that lets you work quickly and integrate systems more effectively.", description: "A generic Python application deployed as a serverless function.", website: "https://python.org", useRuntime: { src: "index.py", use: "@vercel/python" }, ignoreRuntimes: ["@vercel/python"], detectors: { some: [ { path: "requirements.txt" }, { path: "pyproject.toml" }, { path: "Pipfile" } ] }, settings: { installCommand: { placeholder: "`pip install -r requirements.txt`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ] }, { name: "Ruby", slug: "ruby", experimental: true, runtimeFramework: true, logo: "https://api-frameworks.vercel.sh/framework-logos/ruby.svg", tagline: "A dynamic, open source programming language with a focus on simplicity and productivity.", description: "A generic Ruby application deployed as a serverless function.", website: "https://www.ruby-lang.org", useRuntime: { src: "config.ru", use: "@vercel/ruby" }, ignoreRuntimes: ["@vercel/ruby"], detectors: { every: [ { path: "config.ru" }, { path: "Gemfile" } ] }, settings: { installCommand: { placeholder: "`bundle install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/config" } ] }, { name: "Rust", slug: "rust", experimental: true, runtimeFramework: true, logo: "https://api-frameworks.vercel.sh/framework-logos/rust.svg", tagline: "A language empowering everyone to build reliable and efficient software.", description: "A generic Rust application deployed as a serverless function.", website: "https://www.rust-lang.org", useRuntime: { src: "src/main.rs", use: "@vercel/rust" }, ignoreRuntimes: ["@vercel/rust"], detectors: { every: [ { path: "Cargo.toml" }, { path: "src/main.rs" } ] }, settings: { installCommand: { placeholder: "None" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "`cargo run`", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/src/main" } ] }, { name: "Node", slug: "node", experimental: true, runtimeFramework: true, logo: "https://api-frameworks.vercel.sh/framework-logos/node.svg", tagline: "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.", description: "A generic Node.js application deployed as a serverless function.", website: "https://nodejs.org", useRuntime: { src: "server.ts", use: "@vercel/backends" }, ignoreRuntimes: ["@vercel/node"], detectors: { every: [ { path: "server.ts" }, { path: "package.json" } ] }, settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "`npm run dev` or `npx ts-node server.ts`", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public", defaultRoutes: [ { handle: "filesystem" }, { src: "/(.*)", dest: "/" } ] }, { name: "Services", slug: "services", experimental: true, logo: "https://api-frameworks.vercel.sh/framework-logos/other.svg", tagline: "Multiple services deployed as serverless functions within your project.", description: "Multiple services deployed as serverless functions within your project.", website: "https://vercel.com", detectors: {}, settings: { installCommand: { placeholder: "None" }, buildCommand: { placeholder: "None", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { value: "N/A" } }, getOutputDirName: async () => "public" }, { name: "Other", slug: null, logo: "https://api-frameworks.vercel.sh/framework-logos/other.svg", description: "No framework or an unoptimized framework.", settings: { installCommand: { placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`" }, buildCommand: { placeholder: "`npm run vercel-build` or `npm run build`", value: null }, devCommand: { placeholder: "None", value: null }, outputDirectory: { placeholder: "`public` if it exists, or `.`" } }, getOutputDirName: async () => "public" } ]; var frameworkList9 = frameworks; var frameworks_default = frameworkList9; } }); // ../../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js var require_concat_map = __commonJS2({ "../../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js"(exports2, module2) { module2.exports = function(xs, fn2) { var res = []; for (var i = 0; i < xs.length; i++) { var x = fn2(xs[i], i); if (isArray(x)) res.push.apply(res, x); else res.push(x); } return res; }; var isArray = Array.isArray || function(xs) { return Object.prototype.toString.call(xs) === "[object Array]"; }; } }); // ../../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js var require_brace_expansion2 = __commonJS2({ "../../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js"(exports2, module2) { var concatMap = require_concat_map(); var balanced = require_balanced_match(); module2.exports = expandTop; var escSlash = "\0SLASH" + Math.random() + "\0"; var escOpen = "\0OPEN" + Math.random() + "\0"; var escClose = "\0CLOSE" + Math.random() + "\0"; var escComma = "\0COMMA" + Math.random() + "\0"; var escPeriod = "\0PERIOD" + Math.random() + "\0"; function numeric(str) { return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); } function escapeBraces(str) { return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); } function unescapeBraces(str) { return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); } function parseCommaParts(str) { if (!str) return [""]; var parts = []; var m = balanced("{", "}", str); if (!m) return str.split(","); var pre = m.pre; var body = m.body; var post = m.post; var p = pre.split(","); p[p.length - 1] += "{" + body + "}"; var postParts = parseCommaParts(post); if (post.length) { p[p.length - 1] += postParts.shift(); p.push.apply(p, postParts); } parts.push.apply(parts, p); return parts; } function expandTop(str) { if (!str) return []; if (str.substr(0, 2) === "{}") { str = "\\{\\}" + str.substr(2); } return expand(escapeBraces(str), true).map(unescapeBraces); } function embrace(str) { return "{" + str + "}"; } function isPadded(el) { return /^-?0\d/.test(el); } function lte(i, y) { return i <= y; } function gte(i, y) { return i >= y; } function expand(str, isTop) { var expansions = []; var m = balanced("{", "}", str); if (!m || /\$$/.test(m.pre)) return [str]; var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); var isSequence = isNumericSequence || isAlphaSequence; var isOptions = m.body.indexOf(",") >= 0; if (!isSequence && !isOptions) { if (m.post.match(/,.*\}/)) { str = m.pre + "{" + m.body + escClose + m.post; return expand(str); } return [str]; } var n; if (isSequence) { n = m.body.split(/\.\./); } else { n = parseCommaParts(m.body); if (n.length === 1) { n = expand(n[0], false).map(embrace); if (n.length === 1) { var post = m.post.length ? expand(m.post, false) : [""]; return post.map(function(p) { return m.pre + n[0] + p; }); } } } var pre = m.pre; var post = m.post.length ? expand(m.post, false) : [""]; var N; if (isSequence) { var x = numeric(n[0]); var y = numeric(n[1]); var width = Math.max(n[0].length, n[1].length); var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; var test = lte; var reverse = y < x; if (reverse) { incr *= -1; test = gte; } var pad = n.some(isPadded); N = []; for (var i = x; test(i, y); i += incr) { var c; if (isAlphaSequence) { c = String.fromCharCode(i); if (c === "\\") c = ""; } else { c = String(i); if (pad) { var need = width - c.length; if (need > 0) { var z = new Array(need + 1).join("0"); if (i < 0) c = "-" + z + c.slice(1); else c = z + c; } } } N.push(c); } } else { N = concatMap(n, function(el) { return expand(el, false); }); } for (var j = 0; j < N.length; j++) { for (var k = 0; k < post.length; k++) { var expansion = pre + N[j] + post[k]; if (!isTop || isSequence || expansion) expansions.push(expansion); } } return expansions; } } }); // ../../node_modules/.pnpm/minimatch@3.1.2/node_modules/minimatch/minimatch.js var require_minimatch2 = __commonJS2({ "../../node_modules/.pnpm/minimatch@3.1.2/node_modules/minimatch/minimatch.js"(exports2, module2) { module2.exports = minimatch5; minimatch5.Minimatch = Minimatch; var path11 = function() { try { return __require("path"); } catch (e2) { } }() || { sep: "/" }; minimatch5.sep = path11.sep; var GLOBSTAR = minimatch5.GLOBSTAR = Minimatch.GLOBSTAR = {}; var expand = require_brace_expansion2(); var plTypes = { "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, "?": { open: "(?:", close: ")?" }, "+": { open: "(?:", close: ")+" }, "*": { open: "(?:", close: ")*" }, "@": { open: "(?:", close: ")" } }; var qmark = "[^/]"; var star = qmark + "*?"; var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; var reSpecials = charSet("().*{}+?[]^$\\!"); function charSet(s) { return s.split("").reduce(function(set2, c) { set2[c] = true; return set2; }, {}); } var slashSplit = /\/+/; minimatch5.filter = filter; function filter(pattern, options) { options = options || {}; return function(p, i, list10) { return minimatch5(p, pattern, options); }; } function ext(a, b) { b = b || {}; var t = {}; Object.keys(a).forEach(function(k) { t[k] = a[k]; }); Object.keys(b).forEach(function(k) { t[k] = b[k]; }); return t; } minimatch5.defaults = function(def) { if (!def || typeof def !== "object" || !Object.keys(def).length) { return minimatch5; } var orig = minimatch5; var m = function minimatch6(p, pattern, options) { return orig(p, pattern, ext(def, options)); }; m.Minimatch = function Minimatch2(pattern, options) { return new orig.Minimatch(pattern, ext(def, options)); }; m.Minimatch.defaults = function defaults(options) { return orig.defaults(ext(def, options)).Minimatch; }; m.filter = function filter2(pattern, options) { return orig.filter(pattern, ext(def, options)); }; m.defaults = function defaults(options) { return orig.defaults(ext(def, options)); }; m.makeRe = function makeRe2(pattern, options) { return orig.makeRe(pattern, ext(def, options)); }; m.braceExpand = function braceExpand2(pattern, options) { return orig.braceExpand(pattern, ext(def, options)); }; m.match = function(list10, pattern, options) { return orig.match(list10, pattern, ext(def, options)); }; return m; }; Minimatch.defaults = function(def) { return minimatch5.defaults(def).Minimatch; }; function minimatch5(p, pattern, options) { assertValidPattern(pattern); if (!options) options = {}; if (!options.nocomment && pattern.charAt(0) === "#") { return false; } return new Minimatch(pattern, options).match(p); } function Minimatch(pattern, options) { if (!(this instanceof Minimatch)) { return new Minimatch(pattern, options); } assertValidPattern(pattern); if (!options) options = {}; pattern = pattern.trim(); if (!options.allowWindowsEscape && path11.sep !== "/") { pattern = pattern.split(path11.sep).join("/"); } this.options = options; this.set = []; this.pattern = pattern; this.regexp = null; this.negate = false; this.comment = false; this.empty = false; this.partial = !!options.partial; this.make(); } Minimatch.prototype.debug = function() { }; Minimatch.prototype.make = make; function make() { var pattern = this.pattern; var options = this.options; if (!options.nocomment && pattern.charAt(0) === "#") { this.comment = true; return; } if (!pattern) { this.empty = true; return; } this.parseNegate(); var set2 = this.globSet = this.braceExpand(); if (options.debug) this.debug = function debug2() { console.error.apply(console, arguments); }; this.debug(this.pattern, set2); set2 = this.globParts = set2.map(function(s) { return s.split(slashSplit); }); this.debug(this.pattern, set2); set2 = set2.map(function(s, si, set3) { return s.map(this.parse, this); }, this); this.debug(this.pattern, set2); set2 = set2.filter(function(s) { return s.indexOf(false) === -1; }); this.debug(this.pattern, set2); this.set = set2; } Minimatch.prototype.parseNegate = parseNegate; function parseNegate() { var pattern = this.pattern; var negate = false; var options = this.options; var negateOffset = 0; if (options.nonegate) return; for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === "!"; i++) { negate = !negate; negateOffset++; } if (negateOffset) this.pattern = pattern.substr(negateOffset); this.negate = negate; } minimatch5.braceExpand = function(pattern, options) { return braceExpand(pattern, options); }; Minimatch.prototype.braceExpand = braceExpand; function braceExpand(pattern, options) { if (!options) { if (this instanceof Minimatch) { options = this.options; } else { options = {}; } } pattern = typeof pattern === "undefined" ? this.pattern : pattern; assertValidPattern(pattern); if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { return [pattern]; } return expand(pattern); } var MAX_PATTERN_LENGTH = 1024 * 64; var assertValidPattern = function(pattern) { if (typeof pattern !== "string") { throw new TypeError("invalid pattern"); } if (pattern.length > MAX_PATTERN_LENGTH) { throw new TypeError("pattern is too long"); } }; Minimatch.prototype.parse = parse11; var SUBPARSE = {}; function parse11(pattern, isSub) { assertValidPattern(pattern); var options = this.options; if (pattern === "**") { if (!options.noglobstar) return GLOBSTAR; else pattern = "*"; } if (pattern === "") return ""; var re = ""; var hasMagic = !!options.nocase; var escaping = false; var patternListStack = []; var negativeLists = []; var stateChar; var inClass = false; var reClassStart = -1; var classStart = -1; var patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; var self2 = this; function clearStateChar() { if (stateChar) { switch (stateChar) { case "*": re += star; hasMagic = true; break; case "?": re += qmark; hasMagic = true; break; default: re += "\\" + stateChar; break; } self2.debug("clearStateChar %j %j", stateChar, re); stateChar = false; } } for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) { this.debug("%s %s %s %j", pattern, i, re, c); if (escaping && reSpecials[c]) { re += "\\" + c; escaping = false; continue; } switch (c) { case "/": { return false; } case "\\": clearStateChar(); escaping = true; continue; case "?": case "*": case "+": case "@": case "!": this.debug("%s %s %s %j <-- stateChar", pattern, i, re, c); if (inClass) { this.debug(" in class"); if (c === "!" && i === classStart + 1) c = "^"; re += c; continue; } self2.debug("call clearStateChar %j", stateChar); clearStateChar(); stateChar = c; if (options.noext) clearStateChar(); continue; case "(": if (inClass) { re += "("; continue; } if (!stateChar) { re += "\\("; continue; } patternListStack.push({ type: stateChar, start: i - 1, reStart: re.length, open: plTypes[stateChar].open, close: plTypes[stateChar].close }); re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; this.debug("plType %j %j", stateChar, re); stateChar = false; continue; case ")": if (inClass || !patternListStack.length) { re += "\\)"; continue; } clearStateChar(); hasMagic = true; var pl = patternListStack.pop(); re += pl.close; if (pl.type === "!") { negativeLists.push(pl); } pl.reEnd = re.length; continue; case "|": if (inClass || !patternListStack.length || escaping) { re += "\\|"; escaping = false; continue; } clearStateChar(); re += "|"; continue; case "[": clearStateChar(); if (inClass) { re += "\\" + c; continue; } inClass = true; classStart = i; reClassStart = re.length; re += c; continue; case "]": if (i === classStart + 1 || !inClass) { re += "\\" + c; escaping = false; continue; } var cs = pattern.substring(classStart + 1, i); try { RegExp("[" + cs + "]"); } catch (er) { var sp = this.parse(cs, SUBPARSE); re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; hasMagic = hasMagic || sp[1]; inClass = false; continue; } hasMagic = true; inClass = false; re += c; continue; default: clearStateChar(); if (escaping) { escaping = false; } else if (reSpecials[c] && !(c === "^" && inClass)) { re += "\\"; } re += c; } } if (inClass) { cs = pattern.substr(classStart + 1); sp = this.parse(cs, SUBPARSE); re = re.substr(0, reClassStart) + "\\[" + sp[0]; hasMagic = hasMagic || sp[1]; } for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { var tail = re.slice(pl.reStart + pl.open.length); this.debug("setting tail", re, pl); tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function(_, $1, $2) { if (!$2) { $2 = "\\"; } return $1 + $1 + $2 + "|"; }); this.debug("tail=%j\n %s", tail, tail, pl, re); var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; hasMagic = true; re = re.slice(0, pl.reStart) + t + "\\(" + tail; } clearStateChar(); if (escaping) { re += "\\\\"; } var addPatternStart = false; switch (re.charAt(0)) { case "[": case ".": case "(": addPatternStart = true; } for (var n = negativeLists.length - 1; n > -1; n--) { var nl = negativeLists[n]; var nlBefore = re.slice(0, nl.reStart); var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); var nlAfter = re.slice(nl.reEnd); nlLast += nlAfter; var openParensBefore = nlBefore.split("(").length - 1; var cleanAfter = nlAfter; for (i = 0; i < openParensBefore; i++) { cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); } nlAfter = cleanAfter; var dollar = ""; if (nlAfter === "" && isSub !== SUBPARSE) { dollar = "$"; } var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; re = newRe; } if (re !== "" && hasMagic) { re = "(?=.)" + re; } if (addPatternStart) { re = patternStart + re; } if (isSub === SUBPARSE) { return [re, hasMagic]; } if (!hasMagic) { return globUnescape(pattern); } var flags = options.nocase ? "i" : ""; try { var regExp = new RegExp("^" + re + "$", flags); } catch (er) { return new RegExp("$."); } regExp._glob = pattern; regExp._src = re; return regExp; } minimatch5.makeRe = function(pattern, options) { return new Minimatch(pattern, options || {}).makeRe(); }; Minimatch.prototype.makeRe = makeRe; function makeRe() { if (this.regexp || this.regexp === false) return this.regexp; var set2 = this.set; if (!set2.length) { this.regexp = false; return this.regexp; } var options = this.options; var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; var flags = options.nocase ? "i" : ""; var re = set2.map(function(pattern) { return pattern.map(function(p) { return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; }).join("\\/"); }).join("|"); re = "^(?:" + re + ")$"; if (this.negate) re = "^(?!" + re + ").*$"; try { this.regexp = new RegExp(re, flags); } catch (ex) { this.regexp = false; } return this.regexp; } minimatch5.match = function(list10, pattern, options) { options = options || {}; var mm = new Minimatch(pattern, options); list10 = list10.filter(function(f) { return mm.match(f); }); if (mm.options.nonull && !list10.length) { list10.push(pattern); } return list10; }; Minimatch.prototype.match = function match(f, partial) { if (typeof partial === "undefined") partial = this.partial; this.debug("match", f, this.pattern); if (this.comment) return false; if (this.empty) return f === ""; if (f === "/" && partial) return true; var options = this.options; if (path11.sep !== "/") { f = f.split(path11.sep).join("/"); } f = f.split(slashSplit); this.debug(this.pattern, "split", f); var set2 = this.set; this.debug(this.pattern, "set", set2); var filename; var i; for (i = f.length - 1; i >= 0; i--) { filename = f[i]; if (filename) break; } for (i = 0; i < set2.length; i++) { var pattern = set2[i]; var file = f; if (options.matchBase && pattern.length === 1) { file = [filename]; } var hit = this.matchOne(file, pattern, partial); if (hit) { if (options.flipNegate) return true; return !this.negate; } } if (options.flipNegate) return false; return this.negate; }; Minimatch.prototype.matchOne = function(file, pattern, partial) { var options = this.options; this.debug( "matchOne", { "this": this, file, pattern } ); this.debug("matchOne", file.length, pattern.length); for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { this.debug("matchOne loop"); var p = pattern[pi]; var f = file[fi]; this.debug(pattern, p, f); if (p === false) return false; if (p === GLOBSTAR) { this.debug("GLOBSTAR", [pattern, p, f]); var fr = fi; var pr = pi + 1; if (pr === pl) { this.debug("** at the end"); for (; fi < fl; fi++) { if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") return false; } return true; } while (fr < fl) { var swallowee = file[fr]; this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { this.debug("globstar found match!", fr, fl, swallowee); return true; } else { if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { this.debug("dot detected!", file, fr, pattern, pr); break; } this.debug("globstar swallow a segment, and continue"); fr++; } } if (partial) { this.debug("\n>>> no match, partial?", file, fr, pattern, pr); if (fr === fl) return true; } return false; } var hit; if (typeof p === "string") { hit = f === p; this.debug("string match", p, f, hit); } else { hit = f.match(p); this.debug("pattern match", p, f, hit); } if (!hit) return false; } if (fi === fl && pi === pl) { return true; } else if (fi === fl) { return partial; } else if (pi === pl) { return fi === fl - 1 && file[fi] === ""; } throw new Error("wtf?"); }; function globUnescape(s) { return s.replace(/\\(.)/g, "$1"); } function regExpEscape(s) { return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } } }); // ../../node_modules/.pnpm/semver@6.3.1/node_modules/semver/semver.js var require_semver2 = __commonJS2({ "../../node_modules/.pnpm/semver@6.3.1/node_modules/semver/semver.js"(exports2, module2) { exports2 = module2.exports = SemVer; var debug2; if (typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG)) { debug2 = function() { var args2 = Array.prototype.slice.call(arguments, 0); args2.unshift("SEMVER"); console.log.apply(console, args2); }; } else { debug2 = function() { }; } exports2.SEMVER_SPEC_VERSION = "2.0.0"; var MAX_LENGTH = 256; var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ 9007199254740991; var MAX_SAFE_COMPONENT_LENGTH = 16; var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; var re = exports2.re = []; var safeRe = exports2.safeRe = []; var src = exports2.src = []; var t = exports2.tokens = {}; var R = 0; function tok(n) { t[n] = R++; } var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; var safeRegexReplacements = [ ["\\s", 1], ["\\d", MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] ]; function makeSafeRe(value) { for (var i2 = 0; i2 < safeRegexReplacements.length; i2++) { var token = safeRegexReplacements[i2][0]; var max = safeRegexReplacements[i2][1]; value = value.split(token + "*").join(token + "{0," + max + "}").split(token + "+").join(token + "{1," + max + "}"); } return value; } tok("NUMERICIDENTIFIER"); src[t.NUMERICIDENTIFIER] = "0|[1-9]\\d*"; tok("NUMERICIDENTIFIERLOOSE"); src[t.NUMERICIDENTIFIERLOOSE] = "\\d+"; tok("NONNUMERICIDENTIFIER"); src[t.NONNUMERICIDENTIFIER] = "\\d*[a-zA-Z-]" + LETTERDASHNUMBER + "*"; tok("MAINVERSION"); src[t.MAINVERSION] = "(" + src[t.NUMERICIDENTIFIER] + ")\\.(" + src[t.NUMERICIDENTIFIER] + ")\\.(" + src[t.NUMERICIDENTIFIER] + ")"; tok("MAINVERSIONLOOSE"); src[t.MAINVERSIONLOOSE] = "(" + src[t.NUMERICIDENTIFIERLOOSE] + ")\\.(" + src[t.NUMERICIDENTIFIERLOOSE] + ")\\.(" + src[t.NUMERICIDENTIFIERLOOSE] + ")"; tok("PRERELEASEIDENTIFIER"); src[t.PRERELEASEIDENTIFIER] = "(?:" + src[t.NUMERICIDENTIFIER] + "|" + src[t.NONNUMERICIDENTIFIER] + ")"; tok("PRERELEASEIDENTIFIERLOOSE"); src[t.PRERELEASEIDENTIFIERLOOSE] = "(?:" + src[t.NUMERICIDENTIFIERLOOSE] + "|" + src[t.NONNUMERICIDENTIFIER] + ")"; tok("PRERELEASE"); src[t.PRERELEASE] = "(?:-(" + src[t.PRERELEASEIDENTIFIER] + "(?:\\." + src[t.PRERELEASEIDENTIFIER] + ")*))"; tok("PRERELEASELOOSE"); src[t.PRERELEASELOOSE] = "(?:-?(" + src[t.PRERELEASEIDENTIFIERLOOSE] + "(?:\\." + src[t.PRERELEASEIDENTIFIERLOOSE] + ")*))"; tok("BUILDIDENTIFIER"); src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + "+"; tok("BUILD"); src[t.BUILD] = "(?:\\+(" + src[t.BUILDIDENTIFIER] + "(?:\\." + src[t.BUILDIDENTIFIER] + ")*))"; tok("FULL"); tok("FULLPLAIN"); src[t.FULLPLAIN] = "v?" + src[t.MAINVERSION] + src[t.PRERELEASE] + "?" + src[t.BUILD] + "?"; src[t.FULL] = "^" + src[t.FULLPLAIN] + "$"; tok("LOOSEPLAIN"); src[t.LOOSEPLAIN] = "[v=\\s]*" + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + "?" + src[t.BUILD] + "?"; tok("LOOSE"); src[t.LOOSE] = "^" + src[t.LOOSEPLAIN] + "$"; tok("GTLT"); src[t.GTLT] = "((?:<|>)?=?)"; tok("XRANGEIDENTIFIERLOOSE"); src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + "|x|X|\\*"; tok("XRANGEIDENTIFIER"); src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + "|x|X|\\*"; tok("XRANGEPLAIN"); src[t.XRANGEPLAIN] = "[v=\\s]*(" + src[t.XRANGEIDENTIFIER] + ")(?:\\.(" + src[t.XRANGEIDENTIFIER] + ")(?:\\.(" + src[t.XRANGEIDENTIFIER] + ")(?:" + src[t.PRERELEASE] + ")?" + src[t.BUILD] + "?)?)?"; tok("XRANGEPLAINLOOSE"); src[t.XRANGEPLAINLOOSE] = "[v=\\s]*(" + src[t.XRANGEIDENTIFIERLOOSE] + ")(?:\\.(" + src[t.XRANGEIDENTIFIERLOOSE] + ")(?:\\.(" + src[t.XRANGEIDENTIFIERLOOSE] + ")(?:" + src[t.PRERELEASELOOSE] + ")?" + src[t.BUILD] + "?)?)?"; tok("XRANGE"); src[t.XRANGE] = "^" + src[t.GTLT] + "\\s*" + src[t.XRANGEPLAIN] + "$"; tok("XRANGELOOSE"); src[t.XRANGELOOSE] = "^" + src[t.GTLT] + "\\s*" + src[t.XRANGEPLAINLOOSE] + "$"; tok("COERCE"); src[t.COERCE] = "(^|[^\\d])(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "})(?:\\.(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "}))?(?:\\.(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "}))?(?:$|[^\\d])"; tok("COERCERTL"); re[t.COERCERTL] = new RegExp(src[t.COERCE], "g"); safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), "g"); tok("LONETILDE"); src[t.LONETILDE] = "(?:~>?)"; tok("TILDETRIM"); src[t.TILDETRIM] = "(\\s*)" + src[t.LONETILDE] + "\\s+"; re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], "g"); safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), "g"); var tildeTrimReplace = "$1~"; tok("TILDE"); src[t.TILDE] = "^" + src[t.LONETILDE] + src[t.XRANGEPLAIN] + "$"; tok("TILDELOOSE"); src[t.TILDELOOSE] = "^" + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + "$"; tok("LONECARET"); src[t.LONECARET] = "(?:\\^)"; tok("CARETTRIM"); src[t.CARETTRIM] = "(\\s*)" + src[t.LONECARET] + "\\s+"; re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], "g"); safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), "g"); var caretTrimReplace = "$1^"; tok("CARET"); src[t.CARET] = "^" + src[t.LONECARET] + src[t.XRANGEPLAIN] + "$"; tok("CARETLOOSE"); src[t.CARETLOOSE] = "^" + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + "$"; tok("COMPARATORLOOSE"); src[t.COMPARATORLOOSE] = "^" + src[t.GTLT] + "\\s*(" + src[t.LOOSEPLAIN] + ")$|^$"; tok("COMPARATOR"); src[t.COMPARATOR] = "^" + src[t.GTLT] + "\\s*(" + src[t.FULLPLAIN] + ")$|^$"; tok("COMPARATORTRIM"); src[t.COMPARATORTRIM] = "(\\s*)" + src[t.GTLT] + "\\s*(" + src[t.LOOSEPLAIN] + "|" + src[t.XRANGEPLAIN] + ")"; re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], "g"); safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), "g"); var comparatorTrimReplace = "$1$2$3"; tok("HYPHENRANGE"); src[t.HYPHENRANGE] = "^\\s*(" + src[t.XRANGEPLAIN] + ")\\s+-\\s+(" + src[t.XRANGEPLAIN] + ")\\s*$"; tok("HYPHENRANGELOOSE"); src[t.HYPHENRANGELOOSE] = "^\\s*(" + src[t.XRANGEPLAINLOOSE] + ")\\s+-\\s+(" + src[t.XRANGEPLAINLOOSE] + ")\\s*$"; tok("STAR"); src[t.STAR] = "(<|>)?=?\\s*\\*"; for (i = 0; i < R; i++) { debug2(i, src[i]); if (!re[i]) { re[i] = new RegExp(src[i]); safeRe[i] = new RegExp(makeSafeRe(src[i])); } } var i; exports2.parse = parse11; function parse11(version2, options) { if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } if (version2 instanceof SemVer) { return version2; } if (typeof version2 !== "string") { return null; } if (version2.length > MAX_LENGTH) { return null; } var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]; if (!r.test(version2)) { return null; } try { return new SemVer(version2, options); } catch (er) { return null; } } exports2.valid = valid; function valid(version2, options) { var v = parse11(version2, options); return v ? v.version : null; } exports2.clean = clean; function clean(version2, options) { var s = parse11(version2.trim().replace(/^[=v]+/, ""), options); return s ? s.version : null; } exports2.SemVer = SemVer; function SemVer(version2, options) { if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } if (version2 instanceof SemVer) { if (version2.loose === options.loose) { return version2; } else { version2 = version2.version; } } else if (typeof version2 !== "string") { throw new TypeError("Invalid Version: " + version2); } if (version2.length > MAX_LENGTH) { throw new TypeError("version is longer than " + MAX_LENGTH + " characters"); } if (!(this instanceof SemVer)) { return new SemVer(version2, options); } debug2("SemVer", version2, options); this.options = options; this.loose = !!options.loose; var m = version2.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]); if (!m) { throw new TypeError("Invalid Version: " + version2); } this.raw = version2; this.major = +m[1]; this.minor = +m[2]; this.patch = +m[3]; if (this.major > MAX_SAFE_INTEGER || this.major < 0) { throw new TypeError("Invalid major version"); } if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { throw new TypeError("Invalid minor version"); } if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { throw new TypeError("Invalid patch version"); } if (!m[4]) { this.prerelease = []; } else { this.prerelease = m[4].split(".").map(function(id) { if (/^[0-9]+$/.test(id)) { var num = +id; if (num >= 0 && num < MAX_SAFE_INTEGER) { return num; } } return id; }); } this.build = m[5] ? m[5].split(".") : []; this.format(); } SemVer.prototype.format = function() { this.version = this.major + "." + this.minor + "." + this.patch; if (this.prerelease.length) { this.version += "-" + this.prerelease.join("."); } return this.version; }; SemVer.prototype.toString = function() { return this.version; }; SemVer.prototype.compare = function(other) { debug2("SemVer.compare", this.version, this.options, other); if (!(other instanceof SemVer)) { other = new SemVer(other, this.options); } return this.compareMain(other) || this.comparePre(other); }; SemVer.prototype.compareMain = function(other) { if (!(other instanceof SemVer)) { other = new SemVer(other, this.options); } return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch); }; SemVer.prototype.comparePre = function(other) { if (!(other instanceof SemVer)) { other = new SemVer(other, this.options); } if (this.prerelease.length && !other.prerelease.length) { return -1; } else if (!this.prerelease.length && other.prerelease.length) { return 1; } else if (!this.prerelease.length && !other.prerelease.length) { return 0; } var i2 = 0; do { var a = this.prerelease[i2]; var b = other.prerelease[i2]; debug2("prerelease compare", i2, a, b); if (a === void 0 && b === void 0) { return 0; } else if (b === void 0) { return 1; } else if (a === void 0) { return -1; } else if (a === b) { continue; } else { return compareIdentifiers(a, b); } } while (++i2); }; SemVer.prototype.compareBuild = function(other) { if (!(other instanceof SemVer)) { other = new SemVer(other, this.options); } var i2 = 0; do { var a = this.build[i2]; var b = other.build[i2]; debug2("prerelease compare", i2, a, b); if (a === void 0 && b === void 0) { return 0; } else if (b === void 0) { return 1; } else if (a === void 0) { return -1; } else if (a === b) { continue; } else { return compareIdentifiers(a, b); } } while (++i2); }; SemVer.prototype.inc = function(release, identifier) { switch (release) { case "premajor": this.prerelease.length = 0; this.patch = 0; this.minor = 0; this.major++; this.inc("pre", identifier); break; case "preminor": this.prerelease.length = 0; this.patch = 0; this.minor++; this.inc("pre", identifier); break; case "prepatch": this.prerelease.length = 0; this.inc("patch", identifier); this.inc("pre", identifier); break; case "prerelease": if (this.prerelease.length === 0) { this.inc("patch", identifier); } this.inc("pre", identifier); break; case "major": if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { this.major++; } this.minor = 0; this.patch = 0; this.prerelease = []; break; case "minor": if (this.patch !== 0 || this.prerelease.length === 0) { this.minor++; } this.patch = 0; this.prerelease = []; break; case "patch": if (this.prerelease.length === 0) { this.patch++; } this.prerelease = []; break; case "pre": if (this.prerelease.length === 0) { this.prerelease = [0]; } else { var i2 = this.prerelease.length; while (--i2 >= 0) { if (typeof this.prerelease[i2] === "number") { this.prerelease[i2]++; i2 = -2; } } if (i2 === -1) { this.prerelease.push(0); } } if (identifier) { if (this.prerelease[0] === identifier) { if (isNaN(this.prerelease[1])) { this.prerelease = [identifier, 0]; } } else { this.prerelease = [identifier, 0]; } } break; default: throw new Error("invalid increment argument: " + release); } this.format(); this.raw = this.version; return this; }; exports2.inc = inc; function inc(version2, release, loose, identifier) { if (typeof loose === "string") { identifier = loose; loose = void 0; } try { return new SemVer(version2, loose).inc(release, identifier).version; } catch (er) { return null; } } exports2.diff = diff; function diff(version1, version2) { if (eq(version1, version2)) { return null; } else { var v1 = parse11(version1); var v2 = parse11(version2); var prefix = ""; if (v1.prerelease.length || v2.prerelease.length) { prefix = "pre"; var defaultResult = "prerelease"; } for (var key in v1) { if (key === "major" || key === "minor" || key === "patch") { if (v1[key] !== v2[key]) { return prefix + key; } } } return defaultResult; } } exports2.compareIdentifiers = compareIdentifiers; var numeric = /^[0-9]+$/; function compareIdentifiers(a, b) { var anum = numeric.test(a); var bnum = numeric.test(b); if (anum && bnum) { a = +a; b = +b; } return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; } exports2.rcompareIdentifiers = rcompareIdentifiers; function rcompareIdentifiers(a, b) { return compareIdentifiers(b, a); } exports2.major = major; function major(a, loose) { return new SemVer(a, loose).major; } exports2.minor = minor; function minor(a, loose) { return new SemVer(a, loose).minor; } exports2.patch = patch; function patch(a, loose) { return new SemVer(a, loose).patch; } exports2.compare = compare; function compare(a, b, loose) { return new SemVer(a, loose).compare(new SemVer(b, loose)); } exports2.compareLoose = compareLoose; function compareLoose(a, b) { return compare(a, b, true); } exports2.compareBuild = compareBuild; function compareBuild(a, b, loose) { var versionA = new SemVer(a, loose); var versionB = new SemVer(b, loose); return versionA.compare(versionB) || versionA.compareBuild(versionB); } exports2.rcompare = rcompare; function rcompare(a, b, loose) { return compare(b, a, loose); } exports2.sort = sort; function sort(list10, loose) { return list10.sort(function(a, b) { return exports2.compareBuild(a, b, loose); }); } exports2.rsort = rsort; function rsort(list10, loose) { return list10.sort(function(a, b) { return exports2.compareBuild(b, a, loose); }); } exports2.gt = gt; function gt(a, b, loose) { return compare(a, b, loose) > 0; } exports2.lt = lt; function lt(a, b, loose) { return compare(a, b, loose) < 0; } exports2.eq = eq; function eq(a, b, loose) { return compare(a, b, loose) === 0; } exports2.neq = neq; function neq(a, b, loose) { return compare(a, b, loose) !== 0; } exports2.gte = gte; function gte(a, b, loose) { return compare(a, b, loose) >= 0; } exports2.lte = lte; function lte(a, b, loose) { return compare(a, b, loose) <= 0; } exports2.cmp = cmp; function cmp(a, op, b, loose) { switch (op) { case "===": if (typeof a === "object") a = a.version; if (typeof b === "object") b = b.version; return a === b; case "!==": if (typeof a === "object") a = a.version; if (typeof b === "object") b = b.version; return a !== b; case "": case "=": case "==": return eq(a, b, loose); case "!=": return neq(a, b, loose); case ">": return gt(a, b, loose); case ">=": return gte(a, b, loose); case "<": return lt(a, b, loose); case "<=": return lte(a, b, loose); default: throw new TypeError("Invalid operator: " + op); } } exports2.Comparator = Comparator; function Comparator(comp, options) { if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } if (comp instanceof Comparator) { if (comp.loose === !!options.loose) { return comp; } else { comp = comp.value; } } if (!(this instanceof Comparator)) { return new Comparator(comp, options); } comp = comp.trim().split(/\s+/).join(" "); debug2("comparator", comp, options); this.options = options; this.loose = !!options.loose; this.parse(comp); if (this.semver === ANY) { this.value = ""; } else { this.value = this.operator + this.semver.version; } debug2("comp", this); } var ANY = {}; Comparator.prototype.parse = function(comp) { var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]; var m = comp.match(r); if (!m) { throw new TypeError("Invalid comparator: " + comp); } this.operator = m[1] !== void 0 ? m[1] : ""; if (this.operator === "=") { this.operator = ""; } if (!m[2]) { this.semver = ANY; } else { this.semver = new SemVer(m[2], this.options.loose); } }; Comparator.prototype.toString = function() { return this.value; }; Comparator.prototype.test = function(version2) { debug2("Comparator.test", version2, this.options.loose); if (this.semver === ANY || version2 === ANY) { return true; } if (typeof version2 === "string") { try { version2 = new SemVer(version2, this.options); } catch (er) { return false; } } return cmp(version2, this.operator, this.semver, this.options); }; Comparator.prototype.intersects = function(comp, options) { if (!(comp instanceof Comparator)) { throw new TypeError("a Comparator is required"); } if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } var rangeTmp; if (this.operator === "") { if (this.value === "") { return true; } rangeTmp = new Range(comp.value, options); return satisfies2(this.value, rangeTmp, options); } else if (comp.operator === "") { if (comp.value === "") { return true; } rangeTmp = new Range(this.value, options); return satisfies2(comp.semver, rangeTmp, options); } var sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">"); var sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<"); var sameSemVer = this.semver.version === comp.semver.version; var differentDirectionsInclusive = (this.operator === ">=" || this.operator === "<=") && (comp.operator === ">=" || comp.operator === "<="); var oppositeDirectionsLessThan = cmp(this.semver, "<", comp.semver, options) && ((this.operator === ">=" || this.operator === ">") && (comp.operator === "<=" || comp.operator === "<")); var oppositeDirectionsGreaterThan = cmp(this.semver, ">", comp.semver, options) && ((this.operator === "<=" || this.operator === "<") && (comp.operator === ">=" || comp.operator === ">")); return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan; }; exports2.Range = Range; function Range(range, options) { if (!options || typeof options !== "object") { options = { loose: !!options, includePrerelease: false }; } if (range instanceof Range) { if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { return range; } else { return new Range(range.raw, options); } } if (range instanceof Comparator) { return new Range(range.value, options); } if (!(this instanceof Range)) { return new Range(range, options); } this.options = options; this.loose = !!options.loose; this.includePrerelease = !!options.includePrerelease; this.raw = range.trim().split(/\s+/).join(" "); this.set = this.raw.split("||").map(function(range2) { return this.parseRange(range2.trim()); }, this).filter(function(c) { return c.length; }); if (!this.set.length) { throw new TypeError("Invalid SemVer Range: " + this.raw); } this.format(); } Range.prototype.format = function() { this.range = this.set.map(function(comps) { return comps.join(" ").trim(); }).join("||").trim(); return this.range; }; Range.prototype.toString = function() { return this.range; }; Range.prototype.parseRange = function(range) { var loose = this.options.loose; var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE]; range = range.replace(hr, hyphenReplace); debug2("hyphen replace", range); range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace); debug2("comparator trim", range, safeRe[t.COMPARATORTRIM]); range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace); range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace); range = range.split(/\s+/).join(" "); var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]; var set2 = range.split(" ").map(function(comp) { return parseComparator(comp, this.options); }, this).join(" ").split(/\s+/); if (this.options.loose) { set2 = set2.filter(function(comp) { return !!comp.match(compRe); }); } set2 = set2.map(function(comp) { return new Comparator(comp, this.options); }, this); return set2; }; Range.prototype.intersects = function(range, options) { if (!(range instanceof Range)) { throw new TypeError("a Range is required"); } return this.set.some(function(thisComparators) { return isSatisfiable(thisComparators, options) && range.set.some(function(rangeComparators) { return isSatisfiable(rangeComparators, options) && thisComparators.every(function(thisComparator) { return rangeComparators.every(function(rangeComparator) { return thisComparator.intersects(rangeComparator, options); }); }); }); }); }; function isSatisfiable(comparators, options) { var result = true; var remainingComparators = comparators.slice(); var testComparator = remainingComparators.pop(); while (result && remainingComparators.length) { result = remainingComparators.every(function(otherComparator) { return testComparator.intersects(otherComparator, options); }); testComparator = remainingComparators.pop(); } return result; } exports2.toComparators = toComparators; function toComparators(range, options) { return new Range(range, options).set.map(function(comp) { return comp.map(function(c) { return c.value; }).join(" ").trim().split(" "); }); } function parseComparator(comp, options) { debug2("comp", comp, options); comp = replaceCarets(comp, options); debug2("caret", comp); comp = replaceTildes(comp, options); debug2("tildes", comp); comp = replaceXRanges(comp, options); debug2("xrange", comp); comp = replaceStars(comp, options); debug2("stars", comp); return comp; } function isX(id) { return !id || id.toLowerCase() === "x" || id === "*"; } function replaceTildes(comp, options) { return comp.trim().split(/\s+/).map(function(comp2) { return replaceTilde(comp2, options); }).join(" "); } function replaceTilde(comp, options) { var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE]; return comp.replace(r, function(_, M, m, p, pr) { debug2("tilde", comp, _, M, m, p, pr); var ret; if (isX(M)) { ret = ""; } else if (isX(m)) { ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0"; } else if (isX(p)) { ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0"; } else if (pr) { debug2("replaceTilde pr", pr); ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + (+m + 1) + ".0"; } else { ret = ">=" + M + "." + m + "." + p + " <" + M + "." + (+m + 1) + ".0"; } debug2("tilde return", ret); return ret; }); } function replaceCarets(comp, options) { return comp.trim().split(/\s+/).map(function(comp2) { return replaceCaret(comp2, options); }).join(" "); } function replaceCaret(comp, options) { debug2("caret", comp, options); var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET]; return comp.replace(r, function(_, M, m, p, pr) { debug2("caret", comp, _, M, m, p, pr); var ret; if (isX(M)) { ret = ""; } else if (isX(m)) { ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0"; } else if (isX(p)) { if (M === "0") { ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0"; } else { ret = ">=" + M + "." + m + ".0 <" + (+M + 1) + ".0.0"; } } else if (pr) { debug2("replaceCaret pr", pr); if (M === "0") { if (m === "0") { ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + m + "." + (+p + 1); } else { ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + (+m + 1) + ".0"; } } else { ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + (+M + 1) + ".0.0"; } } else { debug2("no pr"); if (M === "0") { if (m === "0") { ret = ">=" + M + "." + m + "." + p + " <" + M + "." + m + "." + (+p + 1); } else { ret = ">=" + M + "." + m + "." + p + " <" + M + "." + (+m + 1) + ".0"; } } else { ret = ">=" + M + "." + m + "." + p + " <" + (+M + 1) + ".0.0"; } } debug2("caret return", ret); return ret; }); } function replaceXRanges(comp, options) { debug2("replaceXRanges", comp, options); return comp.split(/\s+/).map(function(comp2) { return replaceXRange(comp2, options); }).join(" "); } function replaceXRange(comp, options) { comp = comp.trim(); var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE]; return comp.replace(r, function(ret, gtlt, M, m, p, pr) { debug2("xRange", comp, ret, gtlt, M, m, p, pr); var xM = isX(M); var xm = xM || isX(m); var xp = xm || isX(p); var anyX = xp; if (gtlt === "=" && anyX) { gtlt = ""; } pr = options.includePrerelease ? "-0" : ""; if (xM) { if (gtlt === ">" || gtlt === "<") { ret = "<0.0.0-0"; } else { ret = "*"; } } else if (gtlt && anyX) { if (xm) { m = 0; } p = 0; if (gtlt === ">") { gtlt = ">="; if (xm) { M = +M + 1; m = 0; p = 0; } else { m = +m + 1; p = 0; } } else if (gtlt === "<=") { gtlt = "<"; if (xm) { M = +M + 1; } else { m = +m + 1; } } ret = gtlt + M + "." + m + "." + p + pr; } else if (xm) { ret = ">=" + M + ".0.0" + pr + " <" + (+M + 1) + ".0.0" + pr; } else if (xp) { ret = ">=" + M + "." + m + ".0" + pr + " <" + M + "." + (+m + 1) + ".0" + pr; } debug2("xRange return", ret); return ret; }); } function replaceStars(comp, options) { debug2("replaceStars", comp, options); return comp.trim().replace(safeRe[t.STAR], ""); } function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) { if (isX(fM)) { from = ""; } else if (isX(fm)) { from = ">=" + fM + ".0.0"; } else if (isX(fp)) { from = ">=" + fM + "." + fm + ".0"; } else { from = ">=" + from; } if (isX(tM)) { to = ""; } else if (isX(tm)) { to = "<" + (+tM + 1) + ".0.0"; } else if (isX(tp)) { to = "<" + tM + "." + (+tm + 1) + ".0"; } else if (tpr) { to = "<=" + tM + "." + tm + "." + tp + "-" + tpr; } else { to = "<=" + to; } return (from + " " + to).trim(); } Range.prototype.test = function(version2) { if (!version2) { return false; } if (typeof version2 === "string") { try { version2 = new SemVer(version2, this.options); } catch (er) { return false; } } for (var i2 = 0; i2 < this.set.length; i2++) { if (testSet(this.set[i2], version2, this.options)) { return true; } } return false; }; function testSet(set2, version2, options) { for (var i2 = 0; i2 < set2.length; i2++) { if (!set2[i2].test(version2)) { return false; } } if (version2.prerelease.length && !options.includePrerelease) { for (i2 = 0; i2 < set2.length; i2++) { debug2(set2[i2].semver); if (set2[i2].semver === ANY) { continue; } if (set2[i2].semver.prerelease.length > 0) { var allowed = set2[i2].semver; if (allowed.major === version2.major && allowed.minor === version2.minor && allowed.patch === version2.patch) { return true; } } } return false; } return true; } exports2.satisfies = satisfies2; function satisfies2(version2, range, options) { try { range = new Range(range, options); } catch (er) { return false; } return range.test(version2); } exports2.maxSatisfying = maxSatisfying; function maxSatisfying(versions, range, options) { var max = null; var maxSV = null; try { var rangeObj = new Range(range, options); } catch (er) { return null; } versions.forEach(function(v) { if (rangeObj.test(v)) { if (!max || maxSV.compare(v) === -1) { max = v; maxSV = new SemVer(max, options); } } }); return max; } exports2.minSatisfying = minSatisfying; function minSatisfying(versions, range, options) { var min = null; var minSV = null; try { var rangeObj = new Range(range, options); } catch (er) { return null; } versions.forEach(function(v) { if (rangeObj.test(v)) { if (!min || minSV.compare(v) === 1) { min = v; minSV = new SemVer(min, options); } } }); return min; } exports2.minVersion = minVersion; function minVersion(range, loose) { range = new Range(range, loose); var minver = new SemVer("0.0.0"); if (range.test(minver)) { return minver; } minver = new SemVer("0.0.0-0"); if (range.test(minver)) { return minver; } minver = null; for (var i2 = 0; i2 < range.set.length; ++i2) { var comparators = range.set[i2]; comparators.forEach(function(comparator) { var compver = new SemVer(comparator.semver.version); switch (comparator.operator) { case ">": if (compver.prerelease.length === 0) { compver.patch++; } else { compver.prerelease.push(0); } compver.raw = compver.format(); case "": case ">=": if (!minver || gt(minver, compver)) { minver = compver; } break; case "<": case "<=": break; default: throw new Error("Unexpected operation: " + comparator.operator); } }); } if (minver && range.test(minver)) { return minver; } return null; } exports2.validRange = validRange; function validRange(range, options) { try { return new Range(range, options).range || "*"; } catch (er) { return null; } } exports2.ltr = ltr; function ltr(version2, range, options) { return outside(version2, range, "<", options); } exports2.gtr = gtr; function gtr(version2, range, options) { return outside(version2, range, ">", options); } exports2.outside = outside; function outside(version2, range, hilo, options) { version2 = new SemVer(version2, options); range = new Range(range, options); var gtfn, ltefn, ltfn, comp, ecomp; switch (hilo) { case ">": gtfn = gt; ltefn = lte; ltfn = lt; comp = ">"; ecomp = ">="; break; case "<": gtfn = lt; ltefn = gte; ltfn = gt; comp = "<"; ecomp = "<="; break; default: throw new TypeError('Must provide a hilo val of "<" or ">"'); } if (satisfies2(version2, range, options)) { return false; } for (var i2 = 0; i2 < range.set.length; ++i2) { var comparators = range.set[i2]; var high = null; var low = null; comparators.forEach(function(comparator) { if (comparator.semver === ANY) { comparator = new Comparator(">=0.0.0"); } high = high || comparator; low = low || comparator; if (gtfn(comparator.semver, high.semver, options)) { high = comparator; } else if (ltfn(comparator.semver, low.semver, options)) { low = comparator; } }); if (high.operator === comp || high.operator === ecomp) { return false; } if ((!low.operator || low.operator === comp) && ltefn(version2, low.semver)) { return false; } else if (low.operator === ecomp && ltfn(version2, low.semver)) { return false; } } return true; } exports2.prerelease = prerelease; function prerelease(version2, options) { var parsed = parse11(version2, options); return parsed && parsed.prerelease.length ? parsed.prerelease : null; } exports2.intersects = intersects; function intersects(r1, r2, options) { r1 = new Range(r1, options); r2 = new Range(r2, options); return r1.intersects(r2); } exports2.coerce = coerce; function coerce(version2, options) { if (version2 instanceof SemVer) { return version2; } if (typeof version2 === "number") { version2 = String(version2); } if (typeof version2 !== "string") { return null; } options = options || {}; var match = null; if (!options.rtl) { match = version2.match(safeRe[t.COERCE]); } else { var next; while ((next = safeRe[t.COERCERTL].exec(version2)) && (!match || match.index + match[0].length !== version2.length)) { if (!match || next.index + next[0].length !== match.index + match[0].length) { match = next; } safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length; } safeRe[t.COERCERTL].lastIndex = -1; } if (match === null) { return null; } return parse11(match[2] + "." + (match[3] || "0") + "." + (match[4] || "0"), options); } } }); // ../fs-detectors/dist/is-official-runtime.js var require_is_official_runtime = __commonJS2({ "../fs-detectors/dist/is-official-runtime.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var is_official_runtime_exports = {}; __export4(is_official_runtime_exports, { isOfficialRuntime: () => isOfficialRuntime3, isStaticRuntime: () => isStaticRuntime4 }); module2.exports = __toCommonJS4(is_official_runtime_exports); var isOfficialRuntime3 = (desired, name) => { if (typeof name !== "string") { return false; } return name === `@vercel/${desired}` || name === `@now/${desired}` || name.startsWith(`@vercel/${desired}@`) || name.startsWith(`@now/${desired}@`); }; var isStaticRuntime4 = (name) => { return isOfficialRuntime3("static", name); }; } }); // ../fs-detectors/dist/services/types.js var require_types4 = __commonJS2({ "../fs-detectors/dist/services/types.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var types_exports = {}; __export4(types_exports, { ENTRYPOINT_EXTENSIONS: () => ENTRYPOINT_EXTENSIONS, RUNTIME_BUILDERS: () => RUNTIME_BUILDERS, STATIC_BUILDERS: () => STATIC_BUILDERS }); module2.exports = __toCommonJS4(types_exports); var RUNTIME_BUILDERS = { node: "@vercel/node", python: "@vercel/python", go: "@vercel/go", rust: "@vercel/rust", ruby: "@vercel/ruby" }; var ENTRYPOINT_EXTENSIONS = { ".ts": "node", ".mts": "node", ".js": "node", ".mjs": "node", ".cjs": "node", ".py": "python", ".go": "go", ".rs": "rust", ".rb": "ruby", ".ru": "ruby" }; var STATIC_BUILDERS = /* @__PURE__ */ new Set([ "@vercel/static-build", "@vercel/static" ]); } }); // ../fs-detectors/dist/services/utils.js var require_utils15 = __commonJS2({ "../fs-detectors/dist/services/utils.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var utils_exports = {}; __export4(utils_exports, { getBuilderForRuntime: () => getBuilderForRuntime, inferServiceRuntime: () => inferServiceRuntime, readVercelConfig: () => readVercelConfig }); module2.exports = __toCommonJS4(utils_exports); var import_framework_helpers = __require("@vercel/build-utils/dist/framework-helpers"); var import_types3 = require_types4(); function getBuilderForRuntime(runtime) { const builder = import_types3.RUNTIME_BUILDERS[runtime]; if (!builder) { throw new Error(`Unknown runtime: ${runtime}`); } return builder; } function inferServiceRuntime(config2) { if (config2.runtime && config2.runtime in import_types3.RUNTIME_BUILDERS) { return config2.runtime; } if ((0, import_framework_helpers.isPythonFramework)(config2.framework)) { return "python"; } if ((0, import_framework_helpers.isBackendFramework)(config2.framework)) { return "node"; } if (config2.builder) { for (const [runtime, builderName] of Object.entries(import_types3.RUNTIME_BUILDERS)) { if (config2.builder === builderName) { return runtime; } } } if (config2.entrypoint) { for (const [ext, runtime] of Object.entries(import_types3.ENTRYPOINT_EXTENSIONS)) { if (config2.entrypoint.endsWith(ext)) { return runtime; } } } return void 0; } async function readVercelConfig(fs15) { const hasVercelJson = await fs15.hasPath("vercel.json"); if (!hasVercelJson) { return { config: null, error: null }; } try { const content = await fs15.readFile("vercel.json"); const config2 = JSON.parse(content.toString()); return { config: config2, error: null }; } catch { return { config: null, error: { code: "INVALID_VERCEL_JSON", message: "Failed to parse vercel.json. Ensure it contains valid JSON." } }; } } } }); // ../fs-detectors/dist/services/resolve.js var require_resolve2 = __commonJS2({ "../fs-detectors/dist/services/resolve.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var resolve_exports = {}; __export4(resolve_exports, { resolveAllConfiguredServices: () => resolveAllConfiguredServices, resolveConfiguredService: () => resolveConfiguredService, validateServiceConfig: () => validateServiceConfig }); module2.exports = __toCommonJS4(resolve_exports); var import_path45 = __require("path"); var import_types3 = require_types4(); var import_utils9 = require_utils15(); var import_frameworks9 = __toESM4(require_frameworks()); var frameworksBySlug = new Map(import_frameworks9.default.map((f) => [f.slug, f])); function validateServiceConfig(name, config2) { if (!config2 || typeof config2 !== "object") { return { code: "INVALID_SERVICE_CONFIG", message: `Service "${name}" has an invalid configuration. Expected an object.`, serviceName: name }; } const serviceType = config2.type || "web"; if (serviceType === "web" && !config2.routePrefix) { return { code: "MISSING_ROUTE_PREFIX", message: `Web service "${name}" must specify "routePrefix".`, serviceName: name }; } if ((serviceType === "worker" || serviceType === "cron") && config2.routePrefix) { return { code: "INVALID_ROUTE_PREFIX", message: `${serviceType === "worker" ? "Worker" : "Cron"} service "${name}" cannot have "routePrefix". Only web services should specify "routePrefix".`, serviceName: name }; } if (serviceType === "cron" && !config2.schedule) { return { code: "MISSING_CRON_SCHEDULE", message: `Cron service "${name}" is missing required "schedule" field.`, serviceName: name }; } if (config2.runtime && !(config2.runtime in import_types3.RUNTIME_BUILDERS)) { return { code: "INVALID_RUNTIME", message: `Service "${name}" has invalid runtime "${config2.runtime}".`, serviceName: name }; } if (config2.framework && !frameworksBySlug.has(config2.framework)) { return { code: "INVALID_FRAMEWORK", message: `Service "${name}" has invalid framework "${config2.framework}".`, serviceName: name }; } const hasFramework = Boolean(config2.framework); const hasBuilderOrRuntime = Boolean(config2.builder || config2.runtime); const hasEntrypoint = Boolean(config2.entrypoint); if (!hasFramework && !hasBuilderOrRuntime && !hasEntrypoint) { return { code: "MISSING_SERVICE_CONFIG", message: `Service "${name}" must specify "framework", "entrypoint", or both "builder"/"runtime" with "entrypoint".`, serviceName: name }; } if (hasBuilderOrRuntime && !hasFramework && !hasEntrypoint) { return { code: "MISSING_ENTRYPOINT", message: `Service "${name}" must specify "entrypoint" when using "${config2.builder ? "builder" : "runtime"}".`, serviceName: name }; } if (hasEntrypoint && !hasBuilderOrRuntime && !hasFramework) { const runtime = (0, import_utils9.inferServiceRuntime)({ entrypoint: config2.entrypoint }); if (!runtime) { const supported = Object.keys(import_types3.ENTRYPOINT_EXTENSIONS).join(", "); return { code: "UNSUPPORTED_ENTRYPOINT", message: `Service "${name}" has unsupported entrypoint "${config2.entrypoint}". Use a supported extension (${supported}) or specify "builder", "framework", or "runtime".`, serviceName: name }; } } return null; } function resolveConfiguredService(name, config2, group) { const type = config2.type || "web"; const workspace = config2.workspace || "."; const topic = type === "worker" ? config2.topic || "default" : config2.topic; const consumer = type === "worker" ? config2.consumer || "default" : config2.consumer; const inferredRuntime = (0, import_utils9.inferServiceRuntime)(config2); let builderUse; let builderSrc; if (config2.framework) { const framework = frameworksBySlug.get(config2.framework); builderUse = framework?.useRuntime?.use || "@vercel/static-build"; builderSrc = config2.entrypoint || framework?.useRuntime?.src || "package.json"; } else if (config2.builder) { builderUse = config2.builder; builderSrc = config2.entrypoint; } else { builderUse = (0, import_utils9.getBuilderForRuntime)(inferredRuntime); builderSrc = config2.entrypoint; } const routePrefix = type === "web" ? config2.routePrefix : void 0; const isRoot = workspace === "."; if (!isRoot && !builderSrc.startsWith(workspace + "/")) { builderSrc = import_path45.posix.join(workspace, builderSrc); } const builderConfig = {}; if (config2.memory) builderConfig.memory = config2.memory; if (config2.maxDuration) builderConfig.maxDuration = config2.maxDuration; if (config2.includeFiles) builderConfig.includeFiles = config2.includeFiles; if (config2.excludeFiles) builderConfig.excludeFiles = config2.excludeFiles; const isStaticBuild = import_types3.STATIC_BUILDERS.has(builderUse); const runtime = isStaticBuild ? void 0 : inferredRuntime; return { name, type, group, workspace, entrypoint: config2.entrypoint, routePrefix, framework: config2.framework, builder: { src: builderSrc, use: builderUse, config: Object.keys(builderConfig).length > 0 ? builderConfig : void 0 }, runtime, buildCommand: config2.buildCommand, installCommand: config2.installCommand, schedule: config2.schedule, topic, consumer }; } function resolveAllConfiguredServices(services) { const resolved = []; const errors = []; for (const name of Object.keys(services)) { const serviceConfig = services[name]; const validationError = validateServiceConfig(name, serviceConfig); if (validationError) { errors.push(validationError); continue; } const service = resolveConfiguredService(name, serviceConfig); resolved.push(service); } return { services: resolved, errors }; } } }); // ../fs-detectors/dist/services/detect-services.js var require_detect_services = __commonJS2({ "../fs-detectors/dist/services/detect-services.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var detect_services_exports = {}; __export4(detect_services_exports, { detectServices: () => detectServices2, generateServicesRoutes: () => generateServicesRoutes2 }); module2.exports = __toCommonJS4(detect_services_exports); var import_utils9 = require_utils15(); var import_resolve = require_resolve2(); async function detectServices2(options) { const { fs: fs15, workPath } = options; const scopedFs = workPath ? fs15.chdir(workPath) : fs15; const { config: vercelConfig, error: configError } = await (0, import_utils9.readVercelConfig)(scopedFs); if (configError) { return { services: [], routes: { rewrites: [], defaults: [], crons: [], workers: [] }, errors: [configError], warnings: [] }; } const configuredServices = vercelConfig?.experimentalServices; const hasConfiguredServices = configuredServices && Object.keys(configuredServices).length > 0; if (!hasConfiguredServices) { return { services: [], routes: { rewrites: [], defaults: [], crons: [], workers: [] }, errors: [ { code: "NO_SERVICES_CONFIGURED", message: "No services configured. Add `experimentalServices` to vercel.json." } ], warnings: [] }; } const result = (0, import_resolve.resolveAllConfiguredServices)(configuredServices); const routes2 = generateServicesRoutes2(result.services); return { services: result.services, routes: routes2, errors: result.errors, warnings: [] }; } function generateServicesRoutes2(services) { const rewrites = []; const defaults = []; const crons = []; const workers = []; const webServices = services.filter( (s) => s.type === "web" && typeof s.routePrefix === "string" ); const sortedWebServices = [...webServices].sort((a, b) => { if (a.routePrefix === "/") return 1; if (b.routePrefix === "/") return -1; return b.routePrefix.length - a.routePrefix.length; }); for (const service of sortedWebServices) { const { routePrefix, builder } = service; const builderSrc = builder.src || routePrefix; const functionPath = builderSrc.startsWith("/") ? builderSrc : `/${builderSrc}`; if (routePrefix === "/") { defaults.push({ src: "^/(.*)$", dest: functionPath, check: true }); } else { const normalizedPrefix = routePrefix.startsWith("/") ? routePrefix.slice(1) : routePrefix; rewrites.push({ src: `^/${normalizedPrefix}(?:/.*)?$`, dest: functionPath, check: true }); } } return { rewrites, defaults, crons, workers }; } } }); // ../fs-detectors/dist/detectors/filesystem.js var require_filesystem = __commonJS2({ "../fs-detectors/dist/detectors/filesystem.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var filesystem_exports = {}; __export4(filesystem_exports, { DetectorFilesystem: () => DetectorFilesystem2 }); module2.exports = __toCommonJS4(filesystem_exports); var import_path45 = __require("path"); var DetectorFilesystem2 = class { constructor() { this.hasPath = async (path11) => { let p = this.pathCache.get(path11); if (!p) { p = this._hasPath(path11); this.pathCache.set(path11, p); } return p; }; this.isFile = async (name) => { let p = this.fileCache.get(name); if (!p) { p = this._isFile(name); this.fileCache.set(name, p); } return p; }; this.readFile = async (name) => { let p = this.readFileCache.get(name); if (!p) { p = this._readFile(name); this.readFileCache.set(name, p); } return p; }; this.readdir = async (dirPath, options) => { let p = this.readdirCache.get(dirPath); if (!p) { p = this._readdir(dirPath); this.readdirCache.set(dirPath, p); } const directoryContent = await p; const directoryFiles = /* @__PURE__ */ new Set(); for (const file of directoryContent) { if (file.type === "file") { this.fileCache.set(file.path, Promise.resolve(true)); this.pathCache.set(file.path, Promise.resolve(true)); directoryFiles.add(file.name); } } if (options?.potentialFiles) { const filesInReaddirDir = options.potentialFiles.filter( (path11) => (0, import_path45.basename)(path11) === path11 ); const filesThatDoNotExist = filesInReaddirDir.filter( (path11) => !directoryFiles.has(path11) ); for (const filePath of filesThatDoNotExist) { const fullFilePath = dirPath === "/" ? filePath : import_path45.posix.join(dirPath, filePath); this.fileCache.set(fullFilePath, Promise.resolve(false)); this.pathCache.set(fullFilePath, Promise.resolve(false)); } } return p; }; this.chdir = (name) => { return this._chdir(name); }; this.writeFile = async (name, content) => { this.readFileCache.set(name, Promise.resolve(Buffer.from(content))); this.fileCache.set(name, Promise.resolve(true)); this.pathCache.set(name, Promise.resolve(true)); }; this.pathCache = /* @__PURE__ */ new Map(); this.fileCache = /* @__PURE__ */ new Map(); this.readFileCache = /* @__PURE__ */ new Map(); this.readdirCache = /* @__PURE__ */ new Map(); } }; } }); // ../fs-detectors/dist/detectors/local-file-system-detector.js var require_local_file_system_detector = __commonJS2({ "../fs-detectors/dist/detectors/local-file-system-detector.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var local_file_system_detector_exports = {}; __export4(local_file_system_detector_exports, { LocalFileSystemDetector: () => LocalFileSystemDetector5 }); module2.exports = __toCommonJS4(local_file_system_detector_exports); var import_promises7 = __toESM4(__require("fs/promises")); var import_path45 = __require("path"); var import_filesystem = require_filesystem(); var import_error_utils39 = require_dist2(); var LocalFileSystemDetector5 = class _LocalFileSystemDetector extends import_filesystem.DetectorFilesystem { constructor(rootPath) { super(); this.rootPath = rootPath; } async _hasPath(name) { try { await import_promises7.default.stat(this.getFilePath(name)); return true; } catch (err) { if ((0, import_error_utils39.isErrnoException)(err) && err.code === "ENOENT") { return false; } throw err; } } _readFile(name) { return import_promises7.default.readFile(this.getFilePath(name)); } async _isFile(name) { const stat2 = await import_promises7.default.stat(this.getFilePath(name)); return stat2.isFile(); } async _readdir(dir) { const dirPath = this.getFilePath(dir); const entries = await import_promises7.default.readdir(dirPath, { withFileTypes: true }); const result = []; for (const entry of entries) { let type; if (entry.isFile()) { type = "file"; } else if (entry.isDirectory()) { type = "dir"; } else { continue; } result.push({ name: entry.name, path: (0, import_path45.join)(this.getRelativeFilePath(dir), entry.name), type }); } return result; } _chdir(name) { return new _LocalFileSystemDetector(this.getFilePath(name)); } getRelativeFilePath(name) { return name.startsWith(this.rootPath) ? (0, import_path45.relative)(this.rootPath, name) : name; } getFilePath(name) { return (0, import_path45.join)(this.rootPath, this.getRelativeFilePath(name)); } }; } }); // ../fs-detectors/dist/services/get-services-builders.js var require_get_services_builders = __commonJS2({ "../fs-detectors/dist/services/get-services-builders.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var get_services_builders_exports = {}; __export4(get_services_builders_exports, { getServicesBuilders: () => getServicesBuilders2 }); module2.exports = __toCommonJS4(get_services_builders_exports); var import_detect_services = require_detect_services(); var import_local_file_system_detector = require_local_file_system_detector(); async function getServicesBuilders2(options) { const { workPath } = options; if (!workPath) { return { builders: null, errors: [ { code: "MISSING_WORK_PATH", message: "workPath is required for services detection." } ], warnings: [], defaultRoutes: null, redirectRoutes: null, rewriteRoutes: null, errorRoutes: null }; } const fs15 = new import_local_file_system_detector.LocalFileSystemDetector(workPath); const result = await (0, import_detect_services.detectServices)({ fs: fs15 }); const warningResponses = result.warnings.map((w) => ({ code: w.code, message: w.message })); if (result.errors.length > 0) { return { builders: null, errors: result.errors.map((e2) => ({ code: e2.code, message: e2.message })), warnings: warningResponses, defaultRoutes: null, redirectRoutes: null, rewriteRoutes: null, errorRoutes: null }; } if (result.services.length === 0) { return { builders: null, errors: [ { code: "NO_SERVICES_CONFIGURED", message: "No services configured. Add `experimentalServices` to vercel.json." } ], warnings: warningResponses, defaultRoutes: null, redirectRoutes: null, rewriteRoutes: null, errorRoutes: null }; } const builders = result.services.map((service) => service.builder); return { builders: builders.length > 0 ? builders : null, errors: null, warnings: warningResponses, defaultRoutes: result.routes.defaults.length > 0 ? result.routes.defaults : null, redirectRoutes: [], rewriteRoutes: result.routes.rewrites.length > 0 ? result.routes.rewrites : null, errorRoutes: [], services: result.services }; } } }); // ../fs-detectors/dist/detect-builders.js var require_detect_builders = __commonJS2({ "../fs-detectors/dist/detect-builders.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var detect_builders_exports = {}; __export4(detect_builders_exports, { REGEX_MIDDLEWARE_FILES: () => REGEX_MIDDLEWARE_FILES, REGEX_NON_VERCEL_PLATFORM_FILES: () => REGEX_NON_VERCEL_PLATFORM_FILES2, REGEX_VERCEL_PLATFORM_FILES: () => REGEX_VERCEL_PLATFORM_FILES, detectApiDirectory: () => detectApiDirectory3, detectApiExtensions: () => detectApiExtensions3, detectBuilders: () => detectBuilders4, detectOutputDirectory: () => detectOutputDirectory2, sortFiles: () => sortFiles }); module2.exports = __toCommonJS4(detect_builders_exports); var import_minimatch5 = __toESM4(require_minimatch2()); var import_semver4 = require_semver2(); var import_path45 = __require("path"); var import_frameworks9 = __toESM4(require_frameworks()); var import_is_official_runtime = require_is_official_runtime(); var import_build_utils20 = __require("@vercel/build-utils"); var import_get_services_builders = require_get_services_builders(); var REGEX_MIDDLEWARE_FILES = "middleware.[jt]s"; var REGEX_VERCEL_PLATFORM_FILES = `api/**,package.json,${REGEX_MIDDLEWARE_FILES}`; var REGEX_NON_VERCEL_PLATFORM_FILES2 = `!{${REGEX_VERCEL_PLATFORM_FILES}}`; var slugToFramework = new Map( import_frameworks9.default.map((f) => [f.slug, f]) ); function sortFiles(fileA, fileB) { return fileA.localeCompare(fileB); } function detectApiExtensions3(builders) { return new Set( builders.filter( (b) => Boolean(b.config && b.config.zeroConfig && b.src?.startsWith("api/")) ).map((b) => (0, import_path45.extname)(b.src)).filter(Boolean) ); } function detectApiDirectory3(builders) { const found = builders.some( (b) => b.config && b.config.zeroConfig && b.src?.startsWith("api/") ); return found ? "api" : null; } function getPublicBuilder(builders) { for (const builder of builders) { if (typeof builder.src === "string" && (0, import_is_official_runtime.isOfficialRuntime)("static", builder.use) && /^.*\/\*\*\/\*$/.test(builder.src) && builder.config?.zeroConfig === true) { return builder; } } return null; } function detectOutputDirectory2(builders) { const publicBuilder = getPublicBuilder(builders); return publicBuilder ? publicBuilder.src.replace("/**/*", "") : null; } async function detectBuilders4(files, pkg, options = {}) { const { projectSettings = {} } = options; const { framework } = projectSettings; if (framework === "services") { return (0, import_get_services_builders.getServicesBuilders)({ workPath: options.workPath }); } const errors = []; const warnings = []; let apiBuilders = []; let frontendBuilder = null; const functionError = validateFunctions(options); if (functionError) { return { builders: null, errors: [functionError], warnings, defaultRoutes: null, redirectRoutes: null, rewriteRoutes: null, errorRoutes: null }; } const sortedFiles = files.sort(sortFiles); const apiSortedFiles = files.sort(sortFilesBySegmentCount); const usedFunctions = /* @__PURE__ */ new Set(); const addToUsedFunctions = (builder) => { const key = Object.keys(builder.config.functions || {})[0]; if (key) usedFunctions.add(key); }; const absolutePathCache = /* @__PURE__ */ new Map(); const { buildCommand: buildCommand2, outputDirectory } = projectSettings; const frameworkConfig = slugToFramework.get(framework || ""); const ignoreRuntimes = new Set(frameworkConfig?.ignoreRuntimes); const withTag = options.tag ? `@${options.tag}` : ""; const apiMatches = getApiMatches().filter( (b) => ( // Root-level middleware is enabled, unless `disableRootMiddleware: true` b.config?.middleware && !frameworkConfig?.disableRootMiddleware || // "api" dir runtimes are enabled, unless opted-out via `ignoreRuntimes` !ignoreRuntimes.has(b.use) ) ).map((b) => { b.use = `${b.use}${withTag}`; return b; }); const makeFrontendStatic = buildCommand2 === "" || outputDirectory === ""; const usedOutputDirectory = outputDirectory || "public"; let hasUsedOutputDirectory = false; let hasNoneApiFiles = false; let hasNextApiFiles = false; let fallbackEntrypoint = null; const apiRoutes = []; const dynamicRoutes = []; for (const fileName of sortedFiles) { const apiBuilder = await maybeGetApiBuilder(fileName, apiMatches, options); if (apiBuilder) { const { routeError, apiRoute, isDynamic } = getApiRoute( fileName, apiSortedFiles, options, absolutePathCache ); if (routeError) { return { builders: null, errors: [routeError], warnings, defaultRoutes: null, redirectRoutes: null, rewriteRoutes: null, errorRoutes: null }; } if (apiRoute) { apiRoutes.push(apiRoute); if (isDynamic) { dynamicRoutes.push(apiRoute); } } addToUsedFunctions(apiBuilder); apiBuilders.push(apiBuilder); continue; } if (!hasUsedOutputDirectory && fileName.startsWith(`${usedOutputDirectory}/`)) { hasUsedOutputDirectory = true; } if (!hasNoneApiFiles && !fileName.startsWith("api/") && fileName !== "package.json") { hasNoneApiFiles = true; } if (!hasNextApiFiles && (fileName.startsWith("pages/api") || fileName.startsWith("src/pages/api"))) { hasNextApiFiles = true; } if (!fallbackEntrypoint && buildCommand2 && !fileName.includes("/") && fileName !== "now.json" && fileName !== "vercel.json") { fallbackEntrypoint = fileName; } } if (!makeFrontendStatic && (hasBuildScript(pkg) || buildCommand2 || framework)) { frontendBuilder = detectFrontBuilder( pkg, files, usedFunctions, fallbackEntrypoint, options ); } else { if (pkg && !makeFrontendStatic && !apiBuilders.length && !options.ignoreBuildScript) { errors.push(getMissingBuildScriptError()); return { errors, warnings, builders: null, redirectRoutes: null, defaultRoutes: null, rewriteRoutes: null, errorRoutes: null }; } if (hasUsedOutputDirectory && outputDirectory !== "") { frontendBuilder = { use: "@vercel/static", src: `${usedOutputDirectory}/**/*`, config: { zeroConfig: true, outputDirectory: usedOutputDirectory } }; } else if (apiBuilders.length && hasNoneApiFiles) { frontendBuilder = { use: "@vercel/static", src: REGEX_NON_VERCEL_PLATFORM_FILES2, config: { zeroConfig: true } }; } } const unusedFunctionError = checkUnusedFunctions( frontendBuilder, usedFunctions, options ); if (unusedFunctionError) { return { builders: null, errors: [unusedFunctionError], warnings, redirectRoutes: null, defaultRoutes: null, rewriteRoutes: null, errorRoutes: null }; } if (framework === null && frontendBuilder?.use === "@vercel/next" && apiBuilders.length > 0) { apiBuilders = apiBuilders.filter((builder) => { const isMiddlewareBuilder = builder.use === "@vercel/node" && builder.config?.middleware; return !isMiddlewareBuilder; }); } const builders = []; if (apiBuilders.length) { builders.push(...apiBuilders); } if (frontendBuilder) { if (frontendBuilder?.use === "@vercel/express" || frontendBuilder?.use === "@vercel/hono" || frontendBuilder?.use === "@vercel/python") { builders.push({ src: "public/**/*", use: "@vercel/static", config: { zeroConfig: true, outputDirectory: "public" } }); } builders.push(frontendBuilder); if (hasNextApiFiles && apiBuilders.some((b) => (0, import_is_official_runtime.isOfficialRuntime)("node", b.use))) { warnings.push({ code: "conflicting_files", message: "When using Next.js, it is recommended to place JavaScript Functions inside of the `pages/api` (provided by Next.js) directory instead of `api` (provided by Vercel). Other languages (Python, Go, etc) should still go in the `api` directory.", link: "https://nextjs.org/docs/api-routes/introduction", action: "Learn More" }); } } const routesResult = getRouteResult( apiRoutes, dynamicRoutes, usedOutputDirectory, apiBuilders, frontendBuilder, options ); return { warnings, builders: builders.length ? builders : null, errors: errors.length ? errors : null, redirectRoutes: routesResult.redirectRoutes, defaultRoutes: routesResult.defaultRoutes, rewriteRoutes: routesResult.rewriteRoutes, errorRoutes: routesResult.errorRoutes }; } async function maybeGetApiBuilder(fileName, apiMatches, options) { const middleware = fileName === "middleware.js" || fileName === "middleware.ts"; if (middleware && options.projectSettings?.framework === "nextjs") { return null; } if (!(fileName.startsWith("api/") || middleware)) { return null; } if (fileName.includes("/.")) { return null; } if (fileName.includes("/_")) { return null; } if (fileName.includes("/node_modules/")) { return null; } if (fileName.endsWith(".d.ts")) { return null; } if (fileName.endsWith(".py") && options.workPath) { const fsPath = (0, import_path45.join)(options.workPath, fileName); const isEntrypoint = await (0, import_build_utils20.isPythonEntrypoint)({ fsPath }); if (!isEntrypoint) { return null; } } const match = apiMatches.find(({ src = "**" }) => { return src === fileName || (0, import_minimatch5.default)(fileName, src); }); const { fnPattern, func } = getFunction(fileName, options); const use = func?.runtime || match?.use; if (!use) { return null; } const config2 = { zeroConfig: true }; if (middleware) { config2.middleware = true; } if (fnPattern && func) { config2.functions = { [fnPattern]: func }; if (func.includeFiles) { config2.includeFiles = func.includeFiles; } if (func.excludeFiles) { config2.excludeFiles = func.excludeFiles; } } if (options.bunVersion) { config2.bunVersion = options.bunVersion; } const builder = { use, src: fileName, config: config2 }; return builder; } function getFunction(fileName, { functions = {} }) { const keys = Object.keys(functions); if (!keys.length) { return { fnPattern: null, func: null }; } const func = keys.find((key) => key === fileName || (0, import_minimatch5.default)(fileName, key)); return func ? { fnPattern: func, func: functions[func] } : { fnPattern: null, func: null }; } function getApiMatches() { const config2 = { zeroConfig: true }; return [ { src: REGEX_MIDDLEWARE_FILES, use: `@vercel/node`, config: { ...config2, middleware: true } }, { src: "api/**/*.+(js|mjs|ts|tsx)", use: `@vercel/node`, config: config2 }, { src: "api/**/!(*_test).go", use: `@vercel/go`, config: config2 }, { src: "api/**/*.py", use: `@vercel/python`, config: config2 }, { src: "api/**/*.rb", use: `@vercel/ruby`, config: config2 }, { src: "api/**/*.rs", use: `@vercel/rust`, config: config2 } ]; } function hasBuildScript(pkg) { const { scripts = {} } = pkg || {}; return Boolean(scripts && scripts["build"]); } function detectFrontBuilder(pkg, files, usedFunctions, fallbackEntrypoint, options) { const { tag, projectSettings = {} } = options; const withTag = tag ? `@${tag}` : ""; const { createdAt = 0 } = projectSettings; let { framework } = projectSettings; const config2 = { zeroConfig: true }; if (framework) { config2.framework = framework; } if (projectSettings.devCommand) { config2.devCommand = projectSettings.devCommand; } if (typeof projectSettings.installCommand === "string") { config2.installCommand = projectSettings.installCommand; } if (projectSettings.buildCommand) { config2.buildCommand = projectSettings.buildCommand; } if (projectSettings.outputDirectory) { config2.outputDirectory = projectSettings.outputDirectory; } if (options.bunVersion) { config2.bunVersion = options.bunVersion; } if (pkg && (framework === void 0 || framework !== "storybook" && createdAt < Date.parse("2020-03-01"))) { const deps = { ...pkg.dependencies, ...pkg.devDependencies }; if (deps["next"]) { framework = "nextjs"; } } if (options.functions) { Object.entries(options.functions).forEach(([key, func]) => { if (!usedFunctions.has(key)) { if (!config2.functions) config2.functions = {}; config2.functions[key] = { ...func }; } }); } const f = slugToFramework.get(framework || ""); if (f && f.useRuntime) { const { src, use } = f.useRuntime; return { src, use: `${use}${withTag}`, config: config2 }; } const entrypoints = /* @__PURE__ */ new Set([ "package.json", "config.yaml", "config.toml", "config.json", "_config.yml", "config.yml", "config.rb" ]); const source = pkg ? "package.json" : files.find((file) => entrypoints.has(file)) || fallbackEntrypoint || "package.json"; return { src: source || "package.json", use: `@vercel/static-build${withTag}`, config: config2 }; } function getMissingBuildScriptError() { return { code: "missing_build_script", message: "Your `package.json` file is missing a `build` property inside the `scripts` property.\nLearn More: https://vercel.link/missing-build-script" }; } function validateFunctions({ functions = {} }) { for (const [path11, func] of Object.entries(functions)) { if (path11.length > 256) { return { code: "invalid_function_glob", message: "Function globs must be less than 256 characters long." }; } if (!func || typeof func !== "object") { return { code: "invalid_function", message: "Function must be an object." }; } if (Object.keys(func).length === 0) { return { code: "invalid_function", message: "Function must contain at least one property." }; } if (func.maxDuration !== void 0 && (func.maxDuration < 1 || func.maxDuration > 900 || !Number.isInteger(func.maxDuration))) { return { code: "invalid_function_duration", message: "Functions must have a duration between 1 and 900." }; } if (func.memory !== void 0 && (func.memory < 128 || func.memory > 10240)) { return { code: "invalid_function_memory", message: "Functions must have a memory value between 128 and 10240" }; } if (path11.startsWith("/")) { return { code: "invalid_function_source", message: `The function path "${path11}" is invalid. The path must be relative to your project root and therefore cannot start with a slash.` }; } if (func.runtime !== void 0) { const tag = `${func.runtime}`.split("@").pop(); if (!tag || !(0, import_semver4.valid)(tag)) { return { code: "invalid_function_runtime", message: "Function Runtimes must have a valid version, for example `now-php@1.0.0`." }; } } if (func.includeFiles !== void 0) { if (typeof func.includeFiles !== "string") { return { code: "invalid_function_property", message: `The property \`includeFiles\` must be a string.` }; } } if (func.excludeFiles !== void 0) { if (typeof func.excludeFiles !== "string") { return { code: "invalid_function_property", message: `The property \`excludeFiles\` must be a string.` }; } } } return null; } function checkUnusedFunctions(frontendBuilder, usedFunctions, options) { const unusedFunctions = new Set( Object.keys(options.functions || {}).filter((key) => !usedFunctions.has(key)) ); if (!unusedFunctions.size) { return null; } if (frontendBuilder && (0, import_is_official_runtime.isOfficialRuntime)("next", frontendBuilder.use)) { for (const fnKey of unusedFunctions.values()) { if (fnKey.startsWith("pages/") || fnKey.startsWith("src/pages") || fnKey.startsWith("app/") || fnKey.startsWith("src/app/") || fnKey.startsWith("middleware") || fnKey.startsWith("src/middleware")) { unusedFunctions.delete(fnKey); } else { return { code: "unused_function", message: `The pattern "${fnKey}" defined in \`functions\` doesn't match any Serverless Functions.`, action: "Learn More", link: "https://vercel.link/unmatched-function-pattern" }; } } } if (frontendBuilder && ((0, import_is_official_runtime.isOfficialRuntime)("express", frontendBuilder.use) || (0, import_is_official_runtime.isOfficialRuntime)("hono", frontendBuilder.use))) { const validFilenames = [ "app", "index", "server", "src/app", "src/index", "src/server" ]; const validExtensions = ["js", "cjs", "mjs", "ts", "cts", "mts"]; const validEntrypoints = validFilenames.flatMap( (filename) => validExtensions.map((extension) => `${filename}.${extension}`) ); for (const fnKey of unusedFunctions.values()) { if (validEntrypoints.includes(fnKey)) { unusedFunctions.delete(fnKey); } } } if (unusedFunctions.size) { const [fnKey] = Array.from(unusedFunctions); return { code: "unused_function", message: `The pattern "${fnKey}" defined in \`functions\` doesn't match any Serverless Functions inside the \`api\` directory.`, action: "Learn More", link: "https://vercel.link/unmatched-function-pattern" }; } return null; } function getApiRoute(fileName, sortedFiles, options, absolutePathCache) { const conflictingSegment = getConflictingSegment(fileName); if (conflictingSegment) { return { apiRoute: null, isDynamic: false, routeError: { code: "conflicting_path_segment", message: `The segment "${conflictingSegment}" occurs more than one time in your path "${fileName}". Please make sure that every segment in a path is unique.` } }; } const occurrences = pathOccurrences(fileName, sortedFiles, absolutePathCache); if (occurrences.length > 0) { const messagePaths = concatArrayOfText( occurrences.map((name) => `"${name}"`) ); return { apiRoute: null, isDynamic: false, routeError: { code: "conflicting_file_path", message: `Two or more files have conflicting paths or names. Please make sure path segments and filenames, without their extension, are unique. The path "${fileName}" has conflicts with ${messagePaths}.` } }; } const out = createRouteFromPath( fileName, Boolean(options.featHandleMiss), Boolean(options.cleanUrls) ); return { apiRoute: out.route, isDynamic: out.isDynamic, routeError: null }; } function getConflictingSegment(filePath) { const segments = /* @__PURE__ */ new Set(); for (const segment of filePath.split("/")) { const name = getSegmentName(segment); if (name !== null && segments.has(name)) { return name; } if (name) { segments.add(name); } } return null; } function getSegmentName(segment) { const { name } = (0, import_path45.parse)(segment); if (name.startsWith("[") && name.endsWith("]")) { return name.slice(1, -1); } return null; } function getAbsolutePath(unresolvedPath) { const { dir, name } = (0, import_path45.parse)(unresolvedPath); const parts = joinPath(dir, name).split("/"); return parts.map((part) => part.replace(/\[.*\]/, "1")).join("/"); } function pathOccurrences(fileName, files, absolutePathCache) { let currentAbsolutePath = absolutePathCache.get(fileName); if (!currentAbsolutePath) { currentAbsolutePath = getAbsolutePath(fileName); absolutePathCache.set(fileName, currentAbsolutePath); } const prev = []; for (const file of files) { if (file === fileName) { continue; } let absolutePath = absolutePathCache.get(file); if (!absolutePath) { absolutePath = getAbsolutePath(file); absolutePathCache.set(file, absolutePath); } if (absolutePath === currentAbsolutePath) { prev.push(file); } else if (partiallyMatches(fileName, file)) { prev.push(file); } } return prev; } function joinPath(...segments) { const joinedPath = segments.join("/"); return joinedPath.replace(/\/{2,}/g, "/"); } function escapeName(name) { const special = "[]^$.|?*+()".split(""); for (const char of special) { name = name.replace(new RegExp(`\\${char}`, "g"), `\\${char}`); } return name; } function concatArrayOfText(texts) { if (texts.length <= 2) { return texts.join(" and "); } const last = texts.pop(); return `${texts.join(", ")}, and ${last}`; } function partiallyMatches(pathA, pathB) { const partsA = pathA.split("/"); const partsB = pathB.split("/"); const long = partsA.length > partsB.length ? partsA : partsB; const short = long === partsA ? partsB : partsA; let index = 0; for (const segmentShort of short) { const segmentLong = long[index]; const nameLong = getSegmentName(segmentLong); const nameShort = getSegmentName(segmentShort); if (segmentShort !== segmentLong && (!nameLong || !nameShort)) { return false; } if (nameLong !== nameShort) { return true; } index += 1; } return false; } function createRouteFromPath(filePath, featHandleMiss, cleanUrls) { const parts = filePath.split("/"); let counter = 1; const query = []; let isDynamic = false; const srcParts = parts.map((segment, i) => { const name = getSegmentName(segment); const isLast = i === parts.length - 1; if (name !== null) { query.push(`${name}=$${counter++}`); isDynamic = true; return `([^/]+)`; } else if (isLast) { const { name: fileName2, ext: ext2 } = (0, import_path45.parse)(segment); const isIndex22 = fileName2 === "index"; const prefix = isIndex22 ? "/" : ""; const names = [ isIndex22 ? prefix : `${fileName2}/`, prefix + escapeName(fileName2), featHandleMiss && cleanUrls ? "" : prefix + escapeName(fileName2) + escapeName(ext2) ].filter(Boolean); return `(${names.join("|")})${isIndex22 ? "?" : ""}`; } return segment; }); const { name: fileName, ext } = (0, import_path45.parse)(filePath); const isIndex2 = fileName === "index"; const queryString = `${query.length ? "?" : ""}${query.join("&")}`; const src = isIndex2 ? `^/${srcParts.slice(0, -1).join("/")}${srcParts.slice(-1)[0]}$` : `^/${srcParts.join("/")}$`; let route; if (featHandleMiss) { const extensionless = ext ? filePath.slice(0, -ext.length) : filePath; route = { src, dest: `/${extensionless}${queryString}`, check: true }; } else { route = { src, dest: `/${filePath}${queryString}` }; } return { route, isDynamic }; } function getRouteResult(apiRoutes, dynamicRoutes, outputDirectory, apiBuilders, frontendBuilder, options) { const defaultRoutes = []; const redirectRoutes = []; const rewriteRoutes = []; const errorRoutes = []; const framework = frontendBuilder?.config?.framework || ""; const isGatsby = framework === "gatsby"; const isNextjs = framework === "nextjs" || (0, import_is_official_runtime.isOfficialRuntime)("next", frontendBuilder?.use); const ignoreRuntimes = slugToFramework.get(framework)?.ignoreRuntimes; if (apiRoutes && apiRoutes.length > 0) { if (options.featHandleMiss) { const extSet = detectApiExtensions3(apiBuilders); if (extSet.size > 0) { const extGroup = `(?:\\.(?:${Array.from(extSet).map((ext) => ext.slice(1)).join("|")}))`; if (options.cleanUrls) { redirectRoutes.push({ src: `^/(api(?:.+)?)/index${extGroup}?/?$`, headers: { Location: options.trailingSlash ? "/$1/" : "/$1" }, status: 308 }); redirectRoutes.push({ src: `^/api/(.+)${extGroup}/?$`, headers: { Location: options.trailingSlash ? "/api/$1/" : "/api/$1" }, status: 308 }); } else { defaultRoutes.push({ handle: "miss" }); defaultRoutes.push({ src: `^/api/(.+)${extGroup}$`, dest: "/api/$1", check: true }); } } rewriteRoutes.push(...dynamicRoutes); const hasApiBuild = apiBuilders.find((builder) => { return builder.src?.startsWith("api/"); }); if (typeof ignoreRuntimes === "undefined" && hasApiBuild) { rewriteRoutes.push({ src: "^/api(/.*)?$", status: 404 }); } } else { defaultRoutes.push(...apiRoutes); if (apiRoutes.length) { defaultRoutes.push({ status: 404, src: "^/api(/.*)?$" }); } } } if (outputDirectory && frontendBuilder && !options.featHandleMiss && (0, import_is_official_runtime.isOfficialRuntime)("static", frontendBuilder.use)) { defaultRoutes.push({ src: "/(.*)", dest: `/${outputDirectory}/$1` }); } if (options.featHandleMiss && !isNextjs && !isGatsby) { errorRoutes.push({ status: 404, src: "^(?!/api).*$", dest: options.cleanUrls ? "/404" : "/404.html" }); } return { defaultRoutes, redirectRoutes, rewriteRoutes, errorRoutes }; } function sortFilesBySegmentCount(fileA, fileB) { const lengthA = fileA.split("/").length; const lengthB = fileB.split("/").length; if (lengthA > lengthB) { return -1; } if (lengthA < lengthB) { return 1; } const countSegments = (prev, segment) => getSegmentName(segment) ? prev + 1 : 0; const segmentLengthA = fileA.split("/").reduce(countSegments, 0); const segmentLengthB = fileB.split("/").reduce(countSegments, 0); if (segmentLengthA > segmentLengthB) { return 1; } if (segmentLengthA < segmentLengthB) { return -1; } return fileA.localeCompare(fileB); } } }); // ../fs-detectors/dist/detect-file-system-api.js var require_detect_file_system_api = __commonJS2({ "../fs-detectors/dist/detect-file-system-api.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var detect_file_system_api_exports = {}; __export4(detect_file_system_api_exports, { detectFileSystemAPI: () => detectFileSystemAPI2 }); module2.exports = __toCommonJS4(detect_file_system_api_exports); var import_semver4 = __toESM4(require_semver2()); var import__109 = require_dist8(); async function detectFileSystemAPI2({ files, projectSettings, builders, vercelConfig, pkg, tag, enableFlag = false }) { const framework = projectSettings.framework || ""; const deps = Object.assign({}, pkg?.dependencies, pkg?.devDependencies); const plugins = Object.keys(deps).filter( (dep) => dep.startsWith("vercel-plugin-") ); const hasDotOutput = Object.keys(files).some( (file) => file.startsWith(".output/") ); const hasMiddleware = Boolean( files["_middleware.js"] || files["_middleware.ts"] ); const metadata = { plugins, hasDotOutput, hasMiddleware }; const isEnabled = enableFlag || hasMiddleware || hasDotOutput; if (!isEnabled) { return { metadata, fsApiBuilder: null, reason: "Flag not enabled." }; } if (vercelConfig?.builds && vercelConfig.builds.length > 0) { return { metadata, fsApiBuilder: null, reason: "Detected `builds` in vercel.json. Please remove it in favor of CLI plugins." }; } if (Object.values(vercelConfig?.functions || {}).some((fn2) => !!fn2.runtime)) { return { metadata, fsApiBuilder: null, reason: "Detected `functions.runtime` in vercel.json. Please remove it in favor of CLI plugins." }; } if (process.env.HUGO_VERSION) { return { metadata, fsApiBuilder: null, reason: "Detected `HUGO_VERSION` environment variable. Please remove it." }; } if (process.env.ZOLA_VERSION) { return { metadata, fsApiBuilder: null, reason: "Detected `ZOLA_VERSION` environment variable. Please remove it." }; } if (process.env.GUTENBERG_VERSION) { return { metadata, fsApiBuilder: null, reason: "Detected `GUTENBERG_VERSION` environment variable. Please remove it." }; } const invalidBuilder = builders.find(({ use }) => { const valid = (0, import__109.isOfficialRuntime)("go", use) || (0, import__109.isOfficialRuntime)("python", use) || (0, import__109.isOfficialRuntime)("ruby", use) || (0, import__109.isOfficialRuntime)("node", use) || (0, import__109.isOfficialRuntime)("next", use) || (0, import__109.isOfficialRuntime)("static", use) || (0, import__109.isOfficialRuntime)("static-build", use); return !valid; }); if (invalidBuilder) { return { metadata, fsApiBuilder: null, reason: `Detected \`${invalidBuilder.use}\` in vercel.json. Please remove it in favor of CLI plugins.` }; } for (const lang of ["go", "python", "ruby"]) { for (const { use } of builders) { const plugin = "vercel-plugin-" + lang; if ((0, import__109.isOfficialRuntime)(lang, use) && !deps[plugin]) { return { metadata, fsApiBuilder: null, reason: `Detected \`${lang}\` Serverless Function usage without plugin \`${plugin}\`. Please run \`npm i ${plugin}\`.` }; } } } if (framework === "nuxtjs" || framework === "sveltekit" || framework === "redwoodjs") { return { metadata, fsApiBuilder: null, reason: `Detected framework \`${framework}\` that only supports legacy File System API. Please contact the framework author.` }; } if (framework === "nextjs" && !hasDotOutput) { if (projectSettings?.outputDirectory) { return { metadata, fsApiBuilder: null, reason: `Detected Next.js with Output Directory \`${projectSettings.outputDirectory}\` override. Please change it back to the default.` }; } const nextVersion = deps["next"]; if (!nextVersion) { return { metadata, fsApiBuilder: null, reason: `Detected Next.js in Project Settings but missing \`next\` package.json dependencies. Please run \`npm i next\`.` }; } if (nextVersion !== "latest" && nextVersion !== "canary") { const fixedVersion = import_semver4.default.valid(import_semver4.default.coerce(nextVersion) || ""); if (!fixedVersion || !import_semver4.default.gte(fixedVersion, "12.0.0")) { return { metadata, fsApiBuilder: null, reason: `Detected legacy Next.js version "${nextVersion}" in package.json. Please run \`npm i next@latest\` to upgrade.` }; } } } if (!hasDotOutput) { const vercelCliVersion = deps["vercel"]; if (vercelCliVersion && vercelCliVersion !== "latest" && vercelCliVersion !== "canary") { const fixedVersion = import_semver4.default.valid(import_semver4.default.coerce(vercelCliVersion) || ""); if (!fixedVersion || !import_semver4.default.gte(fixedVersion, "23.1.3-canary.68")) { return { metadata, fsApiBuilder: null, reason: `Detected legacy Vercel CLI version "${vercelCliVersion}" in package.json. Please run \`npm i vercel@latest\` to upgrade.` }; } } } const frontendBuilder = builders.find( ({ use }) => (0, import__109.isOfficialRuntime)("next", use) || (0, import__109.isOfficialRuntime)("static", use) || (0, import__109.isOfficialRuntime)("static-build", use) ); const config2 = frontendBuilder?.config || {}; const withTag = tag ? `@${tag}` : ""; const fsApiBuilder = { use: `@vercelruntimes/file-system-api${withTag}`, src: "**", config: { ...config2, fileSystemAPI: true, framework: config2.framework || framework || null, projectSettings, hasMiddleware, hasDotOutput } }; return { metadata, fsApiBuilder, reason: null }; } } }); // ../fs-detectors/dist/detect-framework.js var require_detect_framework = __commonJS2({ "../fs-detectors/dist/detect-framework.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var detect_framework_exports = {}; __export4(detect_framework_exports, { detectFramework: () => detectFramework2, detectFrameworkRecord: () => detectFrameworkRecord3, detectFrameworkVersion: () => detectFrameworkVersion3, detectFrameworks: () => detectFrameworks3, removeSupersededFrameworks: () => removeSupersededFrameworks }); module2.exports = __toCommonJS4(detect_framework_exports); var import_child_process9 = __require("child_process"); function shouldIncludeExperimentalFrameworks(useExperimentalFrameworks) { if (typeof useExperimentalFrameworks === "boolean") { return useExperimentalFrameworks; } const experimentalEnv = process.env.VERCEL_USE_EXPERIMENTAL_FRAMEWORKS; const isEnabled = (val) => val === "1" || typeof val === "string" && val.toLowerCase() === "true"; return isEnabled(experimentalEnv); } function filterFrameworkList(frameworkList9, useExperimentalFrameworks) { if (shouldIncludeExperimentalFrameworks(useExperimentalFrameworks)) { return frameworkList9; } return frameworkList9.filter((f) => { const experimental = f.experimental; return !experimental; }); } async function matches(fs15, framework) { const { detectors } = framework; if (!detectors) { return; } const { every, some } = detectors; if (every !== void 0 && !Array.isArray(every)) { return; } if (some !== void 0 && !Array.isArray(some)) { return; } const check2 = async ({ path: path11, matchContent, matchPackage }) => { if (matchPackage && matchContent) { throw new Error( `Cannot specify "matchPackage" and "matchContent" in the same detector for "${framework.slug}"` ); } if (matchPackage && path11) { throw new Error( `Cannot specify "matchPackage" and "path" in the same detector for "${framework.slug}" because "path" is assumed to be "package.json".` ); } if (!path11 && !matchPackage) { throw new Error( `Must specify either "path" or "matchPackage" in detector for "${framework.slug}".` ); } if (!path11) { path11 = "package.json"; } if (matchPackage) { matchContent = `"(dev)?(d|D)ependencies":\\s*{[^}]*"${matchPackage}":\\s*"(.+?)"[^}]*}`; } if (await fs15.hasPath(path11) === false) { return; } if (matchContent) { if (await fs15.isFile(path11) === false) { return; } const regex = new RegExp(matchContent, "m"); const content = await fs15.readFile(path11); const match = content.toString().match(regex); if (!match) { return; } if (matchPackage && match[3]) { return { framework, detectedVersion: match[3] }; } } return { framework }; }; const result = []; if (every) { const everyResult = await Promise.all(every.map((item) => check2(item))); result.push(...everyResult); } if (some) { let someResult; for (const item of some) { const itemResult = await check2(item); if (itemResult) { someResult = itemResult; break; } } result.push(someResult); } if (!result.every((res) => !!res)) { return; } const detectedVersion = result.find( (r) => typeof r === "object" && r.detectedVersion )?.detectedVersion; return { framework, detectedVersion }; } function removeSupersededFramework(matches2, slug) { const index = matches2.findIndex((f) => f?.slug === slug); const framework = matches2[index]; if (framework) { if (framework.supersedes) { for (const slug2 of framework.supersedes) { removeSupersededFramework(matches2, slug2); } } matches2.splice(index, 1); } } function removeSupersededFrameworks(matches2) { for (const match of matches2.slice()) { if (match?.supersedes) { for (const slug of match.supersedes) { removeSupersededFramework(matches2, slug); } } } } async function detectFramework2({ fs: fs15, frameworkList: frameworkList9, useExperimentalFrameworks }) { const filteredList = filterFrameworkList( frameworkList9, useExperimentalFrameworks ); const result = await Promise.all( filteredList.map(async (frameworkMatch) => { if (await matches(fs15, frameworkMatch)) { return frameworkMatch; } return null; }) ); removeSupersededFrameworks(result); return result.find((res) => res !== null)?.slug ?? null; } async function detectFrameworks3({ fs: fs15, frameworkList: frameworkList9, useExperimentalFrameworks }) { const filteredList = filterFrameworkList( frameworkList9, useExperimentalFrameworks ); const result = await Promise.all( filteredList.map(async (frameworkMatch) => { if (await matches(fs15, frameworkMatch)) { return frameworkMatch; } return null; }) ); removeSupersededFrameworks(result); return result.filter((res) => res !== null); } async function detectFrameworkRecord3({ fs: fs15, frameworkList: frameworkList9, useExperimentalFrameworks }) { const filteredList = filterFrameworkList( frameworkList9, useExperimentalFrameworks ); const result = await Promise.all( filteredList.map(async (frameworkMatch) => { const matchResult = await matches(fs15, frameworkMatch); if (matchResult) { return { ...frameworkMatch, detectedVersion: matchResult?.detectedVersion }; } return null; }) ); removeSupersededFrameworks(result); return result.find((res) => res !== null) ?? null; } function detectFrameworkVersion3(frameworkRecord) { const allDetectors = [ ...frameworkRecord.detectors?.every || [], ...frameworkRecord.detectors?.some || [] ]; const firstMatchPackage = allDetectors.find((d) => d.matchPackage); if (!firstMatchPackage?.matchPackage) { return; } return lookupInstalledVersion( process.execPath, firstMatchPackage.matchPackage ); } function lookupInstalledVersion(cwd, packageName2) { try { const script = `require('${packageName2}/package.json').version`; return (0, import_child_process9.spawnSync)(cwd, ["-p", script], { encoding: "utf-8" }).stdout.trim(); } catch (error3) { console.debug( `Error looking up version of installed package "${packageName2}": ${error3}` ); } return; } } }); // ../fs-detectors/dist/get-project-paths.js var require_get_project_paths = __commonJS2({ "../fs-detectors/dist/get-project-paths.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var get_project_paths_exports = {}; __export4(get_project_paths_exports, { getProjectPaths: () => getProjectPaths2 }); module2.exports = __toCommonJS4(get_project_paths_exports); var import_detect_framework = require_detect_framework(); var import_frameworks9 = __toESM4(require_frameworks()); var MAX_DEPTH_TRAVERSE = 3; var getProjectPaths2 = async ({ fs: fs15, path: path11, skipPaths, depth = MAX_DEPTH_TRAVERSE }) => { if (depth === 0) return []; const allPaths = []; const topPath = path11 ?? "./"; if (path11 && skipPaths?.includes(path11)) { return allPaths; } const framework = await (0, import_detect_framework.detectFramework)({ fs: fs15.chdir(topPath), frameworkList: import_frameworks9.default }); if (framework !== null) allPaths.push(topPath); if (depth > 1) { const directoryContents = await fs15.readdir(topPath); const childDirectories = directoryContents.filter( (stat2) => stat2.type === "dir" && !skipPaths?.includes(stat2.path) ); const paths = (await Promise.all( childDirectories.map(({ path: path22 }) => { return getProjectPaths2({ fs: fs15, path: path22, depth: depth - 1, skipPaths }); }) )).flat(); return [...paths, ...allPaths]; } return allPaths; }; } }); // ../fs-detectors/dist/workspaces/workspace-managers.js var require_workspace_managers = __commonJS2({ "../fs-detectors/dist/workspaces/workspace-managers.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var workspace_managers_exports = {}; __export4(workspace_managers_exports, { default: () => workspace_managers_default, workspaceManagers: () => workspaceManagers2 }); module2.exports = __toCommonJS4(workspace_managers_exports); var workspaceManagers2 = [ { name: "Yarn", slug: "yarn", detectors: { every: [ { path: "package.json", matchContent: '"workspaces":\\s*(?:\\[[^\\]]*]|{[^}]*"packages":[^}]*})' }, { path: "yarn.lock" } ] } }, { name: "pnpm", slug: "pnpm", detectors: { every: [ { path: "pnpm-workspace.yaml" } ] } }, { name: "npm", slug: "npm", detectors: { every: [ { path: "package.json", matchContent: '"workspaces":\\s*(?:\\[[^\\]]*]|{[^}]*"packages":[^}]*})' }, { path: "package-lock.json" } ] } }, { name: "nx", slug: "nx", detectors: { every: [ { path: "workspace.json", matchContent: '"projects":\\s*{[^}]' } ] } }, { name: "rush", slug: "rush", detectors: { every: [ { path: "rush.json" } ] } }, { name: "default", slug: "yarn", detectors: { every: [ { path: "package.json", matchContent: '"workspaces":\\s*(?:\\[[^\\]]*]|{[^}]*"packages":[^}]*})' } ] } } ]; var workspace_managers_default = workspaceManagers2; } }); // ../fs-detectors/dist/workspaces/get-workspaces.js var require_get_workspaces = __commonJS2({ "../fs-detectors/dist/workspaces/get-workspaces.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var get_workspaces_exports = {}; __export4(get_workspaces_exports, { getWorkspaces: () => getWorkspaces3 }); module2.exports = __toCommonJS4(get_workspaces_exports); var import_path45 = __toESM4(__require("path")); var import_workspace_managers = require_workspace_managers(); var import_detect_framework = require_detect_framework(); var MAX_DEPTH_TRAVERSE = 3; var posixPath = import_path45.default.posix; async function getWorkspaces3({ fs: fs15, depth = MAX_DEPTH_TRAVERSE, cwd = "/" }) { if (depth === 0) return []; const workspaceType = await (0, import_detect_framework.detectFramework)({ fs: fs15, frameworkList: import_workspace_managers.workspaceManagers }); if (workspaceType === null) { const directoryContents = await fs15.readdir("./"); const childDirectories = directoryContents.filter( (stat2) => stat2.type === "dir" ); return (await Promise.all( childDirectories.map( (childDirectory) => getWorkspaces3({ fs: fs15.chdir(childDirectory.path), depth: depth - 1, cwd: posixPath.join(cwd, childDirectory.path) }) ) )).flat(); } return [ { type: workspaceType, rootPath: cwd } ]; } } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/common.js var require_common6 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/common.js"(exports2, module2) { "use strict"; function isNothing(subject) { return typeof subject === "undefined" || subject === null; } function isObject2(subject) { return typeof subject === "object" && subject !== null; } function toArray(sequence) { if (Array.isArray(sequence)) return sequence; else if (isNothing(sequence)) return []; return [sequence]; } function extend(target, source) { var index, length, key, sourceKeys; if (source) { sourceKeys = Object.keys(source); for (index = 0, length = sourceKeys.length; index < length; index += 1) { key = sourceKeys[index]; target[key] = source[key]; } } return target; } function repeat2(string, count) { var result = "", cycle; for (cycle = 0; cycle < count; cycle += 1) { result += string; } return result; } function isNegativeZero(number) { return number === 0 && Number.NEGATIVE_INFINITY === 1 / number; } module2.exports.isNothing = isNothing; module2.exports.isObject = isObject2; module2.exports.toArray = toArray; module2.exports.repeat = repeat2; module2.exports.isNegativeZero = isNegativeZero; module2.exports.extend = extend; } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/exception.js var require_exception2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/exception.js"(exports2, module2) { "use strict"; function formatError(exception, compact) { var where = "", message2 = exception.reason || "(unknown reason)"; if (!exception.mark) return message2; if (exception.mark.name) { where += 'in "' + exception.mark.name + '" '; } where += "(" + (exception.mark.line + 1) + ":" + (exception.mark.column + 1) + ")"; if (!compact && exception.mark.snippet) { where += "\n\n" + exception.mark.snippet; } return message2 + " " + where; } function YAMLException(reason, mark) { Error.call(this); this.name = "YAMLException"; this.reason = reason; this.mark = mark; this.message = formatError(this, false); if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } else { this.stack = new Error().stack || ""; } } YAMLException.prototype = Object.create(Error.prototype); YAMLException.prototype.constructor = YAMLException; YAMLException.prototype.toString = function toString2(compact) { return this.name + ": " + formatError(this, compact); }; module2.exports = YAMLException; } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/snippet.js var require_snippet = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/snippet.js"(exports2, module2) { "use strict"; var common2 = require_common6(); function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { var head = ""; var tail = ""; var maxHalfLength = Math.floor(maxLineLength / 2) - 1; if (position - lineStart > maxHalfLength) { head = " ... "; lineStart = position - maxHalfLength + head.length; } if (lineEnd - position > maxHalfLength) { tail = " ..."; lineEnd = position + maxHalfLength - tail.length; } return { str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, "\u2192") + tail, pos: position - lineStart + head.length // relative position }; } function padStart(string, max) { return common2.repeat(" ", max - string.length) + string; } function makeSnippet(mark, options) { options = Object.create(options || null); if (!mark.buffer) return null; if (!options.maxLength) options.maxLength = 79; if (typeof options.indent !== "number") options.indent = 1; if (typeof options.linesBefore !== "number") options.linesBefore = 3; if (typeof options.linesAfter !== "number") options.linesAfter = 2; var re = /\r?\n|\r|\0/g; var lineStarts = [0]; var lineEnds = []; var match; var foundLineNo = -1; while (match = re.exec(mark.buffer)) { lineEnds.push(match.index); lineStarts.push(match.index + match[0].length); if (mark.position <= match.index && foundLineNo < 0) { foundLineNo = lineStarts.length - 2; } } if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; var result = "", i, line; var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); for (i = 1; i <= options.linesBefore; i++) { if (foundLineNo - i < 0) break; line = getLine( mark.buffer, lineStarts[foundLineNo - i], lineEnds[foundLineNo - i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), maxLineLength ); result = common2.repeat(" ", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + " | " + line.str + "\n" + result; } line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); result += common2.repeat(" ", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + " | " + line.str + "\n"; result += common2.repeat("-", options.indent + lineNoLength + 3 + line.pos) + "^\n"; for (i = 1; i <= options.linesAfter; i++) { if (foundLineNo + i >= lineEnds.length) break; line = getLine( mark.buffer, lineStarts[foundLineNo + i], lineEnds[foundLineNo + i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), maxLineLength ); result += common2.repeat(" ", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + " | " + line.str + "\n"; } return result.replace(/\n$/, ""); } module2.exports = makeSnippet; } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type.js var require_type2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type.js"(exports2, module2) { "use strict"; var YAMLException = require_exception2(); var TYPE_CONSTRUCTOR_OPTIONS = [ "kind", "multi", "resolve", "construct", "instanceOf", "predicate", "represent", "representName", "defaultStyle", "styleAliases" ]; var YAML_NODE_KINDS = [ "scalar", "sequence", "mapping" ]; function compileStyleAliases(map) { var result = {}; if (map !== null) { Object.keys(map).forEach(function(style) { map[style].forEach(function(alias2) { result[String(alias2)] = style; }); }); } return result; } function Type(tag, options) { options = options || {}; Object.keys(options).forEach(function(name) { if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); } }); this.options = options; this.tag = tag; this.kind = options["kind"] || null; this.resolve = options["resolve"] || function() { return true; }; this.construct = options["construct"] || function(data) { return data; }; this.instanceOf = options["instanceOf"] || null; this.predicate = options["predicate"] || null; this.represent = options["represent"] || null; this.representName = options["representName"] || null; this.defaultStyle = options["defaultStyle"] || null; this.multi = options["multi"] || false; this.styleAliases = compileStyleAliases(options["styleAliases"] || null); if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); } } module2.exports = Type; } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema.js var require_schema2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema.js"(exports2, module2) { "use strict"; var YAMLException = require_exception2(); var Type = require_type2(); function compileList(schema, name) { var result = []; schema[name].forEach(function(currentType) { var newIndex = result.length; result.forEach(function(previousType, previousIndex) { if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) { newIndex = previousIndex; } }); result[newIndex] = currentType; }); return result; } function compileMap() { var result = { scalar: {}, sequence: {}, mapping: {}, fallback: {}, multi: { scalar: [], sequence: [], mapping: [], fallback: [] } }, index, length; function collectType(type) { if (type.multi) { result.multi[type.kind].push(type); result.multi["fallback"].push(type); } else { result[type.kind][type.tag] = result["fallback"][type.tag] = type; } } for (index = 0, length = arguments.length; index < length; index += 1) { arguments[index].forEach(collectType); } return result; } function Schema(definition) { return this.extend(definition); } Schema.prototype.extend = function extend(definition) { var implicit = []; var explicit = []; if (definition instanceof Type) { explicit.push(definition); } else if (Array.isArray(definition)) { explicit = explicit.concat(definition); } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { if (definition.implicit) implicit = implicit.concat(definition.implicit); if (definition.explicit) explicit = explicit.concat(definition.explicit); } else { throw new YAMLException("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })"); } implicit.forEach(function(type) { if (!(type instanceof Type)) { throw new YAMLException("Specified list of YAML types (or a single Type object) contains a non-Type object."); } if (type.loadKind && type.loadKind !== "scalar") { throw new YAMLException("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported."); } if (type.multi) { throw new YAMLException("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit."); } }); explicit.forEach(function(type) { if (!(type instanceof Type)) { throw new YAMLException("Specified list of YAML types (or a single Type object) contains a non-Type object."); } }); var result = Object.create(Schema.prototype); result.implicit = (this.implicit || []).concat(implicit); result.explicit = (this.explicit || []).concat(explicit); result.compiledImplicit = compileList(result, "implicit"); result.compiledExplicit = compileList(result, "explicit"); result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); return result; }; module2.exports = Schema; } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/str.js var require_str2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/str.js"(exports2, module2) { "use strict"; var Type = require_type2(); module2.exports = new Type("tag:yaml.org,2002:str", { kind: "scalar", construct: function(data) { return data !== null ? data : ""; } }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/seq.js var require_seq2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/seq.js"(exports2, module2) { "use strict"; var Type = require_type2(); module2.exports = new Type("tag:yaml.org,2002:seq", { kind: "sequence", construct: function(data) { return data !== null ? data : []; } }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/map.js var require_map2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/map.js"(exports2, module2) { "use strict"; var Type = require_type2(); module2.exports = new Type("tag:yaml.org,2002:map", { kind: "mapping", construct: function(data) { return data !== null ? data : {}; } }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/failsafe.js var require_failsafe2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/failsafe.js"(exports2, module2) { "use strict"; var Schema = require_schema2(); module2.exports = new Schema({ explicit: [ require_str2(), require_seq2(), require_map2() ] }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/null.js var require_null2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/null.js"(exports2, module2) { "use strict"; var Type = require_type2(); function resolveYamlNull(data) { if (data === null) return true; var max = data.length; return max === 1 && data === "~" || max === 4 && (data === "null" || data === "Null" || data === "NULL"); } function constructYamlNull() { return null; } function isNull(object) { return object === null; } module2.exports = new Type("tag:yaml.org,2002:null", { kind: "scalar", resolve: resolveYamlNull, construct: constructYamlNull, predicate: isNull, represent: { canonical: function() { return "~"; }, lowercase: function() { return "null"; }, uppercase: function() { return "NULL"; }, camelcase: function() { return "Null"; }, empty: function() { return ""; } }, defaultStyle: "lowercase" }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/bool.js var require_bool2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/bool.js"(exports2, module2) { "use strict"; var Type = require_type2(); function resolveYamlBoolean(data) { if (data === null) return false; var max = data.length; return max === 4 && (data === "true" || data === "True" || data === "TRUE") || max === 5 && (data === "false" || data === "False" || data === "FALSE"); } function constructYamlBoolean(data) { return data === "true" || data === "True" || data === "TRUE"; } function isBoolean(object) { return Object.prototype.toString.call(object) === "[object Boolean]"; } module2.exports = new Type("tag:yaml.org,2002:bool", { kind: "scalar", resolve: resolveYamlBoolean, construct: constructYamlBoolean, predicate: isBoolean, represent: { lowercase: function(object) { return object ? "true" : "false"; }, uppercase: function(object) { return object ? "TRUE" : "FALSE"; }, camelcase: function(object) { return object ? "True" : "False"; } }, defaultStyle: "lowercase" }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/int.js var require_int2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/int.js"(exports2, module2) { "use strict"; var common2 = require_common6(); var Type = require_type2(); function isHexCode(c) { return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102; } function isOctCode(c) { return 48 <= c && c <= 55; } function isDecCode(c) { return 48 <= c && c <= 57; } function resolveYamlInteger(data) { if (data === null) return false; var max = data.length, index = 0, hasDigits = false, ch; if (!max) return false; ch = data[index]; if (ch === "-" || ch === "+") { ch = data[++index]; } if (ch === "0") { if (index + 1 === max) return true; ch = data[++index]; if (ch === "b") { index++; for (; index < max; index++) { ch = data[index]; if (ch === "_") continue; if (ch !== "0" && ch !== "1") return false; hasDigits = true; } return hasDigits && ch !== "_"; } if (ch === "x") { index++; for (; index < max; index++) { ch = data[index]; if (ch === "_") continue; if (!isHexCode(data.charCodeAt(index))) return false; hasDigits = true; } return hasDigits && ch !== "_"; } if (ch === "o") { index++; for (; index < max; index++) { ch = data[index]; if (ch === "_") continue; if (!isOctCode(data.charCodeAt(index))) return false; hasDigits = true; } return hasDigits && ch !== "_"; } } if (ch === "_") return false; for (; index < max; index++) { ch = data[index]; if (ch === "_") continue; if (!isDecCode(data.charCodeAt(index))) { return false; } hasDigits = true; } if (!hasDigits || ch === "_") return false; return true; } function constructYamlInteger(data) { var value = data, sign = 1, ch; if (value.indexOf("_") !== -1) { value = value.replace(/_/g, ""); } ch = value[0]; if (ch === "-" || ch === "+") { if (ch === "-") sign = -1; value = value.slice(1); ch = value[0]; } if (value === "0") return 0; if (ch === "0") { if (value[1] === "b") return sign * parseInt(value.slice(2), 2); if (value[1] === "x") return sign * parseInt(value.slice(2), 16); if (value[1] === "o") return sign * parseInt(value.slice(2), 8); } return sign * parseInt(value, 10); } function isInteger2(object) { return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 === 0 && !common2.isNegativeZero(object)); } module2.exports = new Type("tag:yaml.org,2002:int", { kind: "scalar", resolve: resolveYamlInteger, construct: constructYamlInteger, predicate: isInteger2, represent: { binary: function(obj) { return obj >= 0 ? "0b" + obj.toString(2) : "-0b" + obj.toString(2).slice(1); }, octal: function(obj) { return obj >= 0 ? "0o" + obj.toString(8) : "-0o" + obj.toString(8).slice(1); }, decimal: function(obj) { return obj.toString(10); }, /* eslint-disable max-len */ hexadecimal: function(obj) { return obj >= 0 ? "0x" + obj.toString(16).toUpperCase() : "-0x" + obj.toString(16).toUpperCase().slice(1); } }, defaultStyle: "decimal", styleAliases: { binary: [2, "bin"], octal: [8, "oct"], decimal: [10, "dec"], hexadecimal: [16, "hex"] } }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/float.js var require_float2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/float.js"(exports2, module2) { "use strict"; var common2 = require_common6(); var Type = require_type2(); var YAML_FLOAT_PATTERN = new RegExp( // 2.5e4, 2.5 and integers "^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" ); function resolveYamlFloat(data) { if (data === null) return false; if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_` // Probably should update regexp & check speed data[data.length - 1] === "_") { return false; } return true; } function constructYamlFloat(data) { var value, sign; value = data.replace(/_/g, "").toLowerCase(); sign = value[0] === "-" ? -1 : 1; if ("+-".indexOf(value[0]) >= 0) { value = value.slice(1); } if (value === ".inf") { return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; } else if (value === ".nan") { return NaN; } return sign * parseFloat(value, 10); } var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; function representYamlFloat(object, style) { var res; if (isNaN(object)) { switch (style) { case "lowercase": return ".nan"; case "uppercase": return ".NAN"; case "camelcase": return ".NaN"; } } else if (Number.POSITIVE_INFINITY === object) { switch (style) { case "lowercase": return ".inf"; case "uppercase": return ".INF"; case "camelcase": return ".Inf"; } } else if (Number.NEGATIVE_INFINITY === object) { switch (style) { case "lowercase": return "-.inf"; case "uppercase": return "-.INF"; case "camelcase": return "-.Inf"; } } else if (common2.isNegativeZero(object)) { return "-0.0"; } res = object.toString(10); return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; } function isFloat2(object) { return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 !== 0 || common2.isNegativeZero(object)); } module2.exports = new Type("tag:yaml.org,2002:float", { kind: "scalar", resolve: resolveYamlFloat, construct: constructYamlFloat, predicate: isFloat2, represent: representYamlFloat, defaultStyle: "lowercase" }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/json.js var require_json4 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/json.js"(exports2, module2) { "use strict"; module2.exports = require_failsafe2().extend({ implicit: [ require_null2(), require_bool2(), require_int2(), require_float2() ] }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/core.js var require_core2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/core.js"(exports2, module2) { "use strict"; module2.exports = require_json4(); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/timestamp.js var require_timestamp2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/timestamp.js"(exports2, module2) { "use strict"; var Type = require_type2(); var YAML_DATE_REGEXP = new RegExp( "^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$" ); var YAML_TIMESTAMP_REGEXP = new RegExp( "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$" ); function resolveYamlTimestamp(data) { if (data === null) return false; if (YAML_DATE_REGEXP.exec(data) !== null) return true; if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; return false; } function constructYamlTimestamp(data) { var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date; match = YAML_DATE_REGEXP.exec(data); if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); if (match === null) throw new Error("Date resolve error"); year = +match[1]; month = +match[2] - 1; day = +match[3]; if (!match[4]) { return new Date(Date.UTC(year, month, day)); } hour = +match[4]; minute = +match[5]; second = +match[6]; if (match[7]) { fraction = match[7].slice(0, 3); while (fraction.length < 3) { fraction += "0"; } fraction = +fraction; } if (match[9]) { tz_hour = +match[10]; tz_minute = +(match[11] || 0); delta = (tz_hour * 60 + tz_minute) * 6e4; if (match[9] === "-") delta = -delta; } date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); if (delta) date.setTime(date.getTime() - delta); return date; } function representYamlTimestamp(object) { return object.toISOString(); } module2.exports = new Type("tag:yaml.org,2002:timestamp", { kind: "scalar", resolve: resolveYamlTimestamp, construct: constructYamlTimestamp, instanceOf: Date, represent: representYamlTimestamp }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/merge.js var require_merge3 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/merge.js"(exports2, module2) { "use strict"; var Type = require_type2(); function resolveYamlMerge(data) { return data === "<<" || data === null; } module2.exports = new Type("tag:yaml.org,2002:merge", { kind: "scalar", resolve: resolveYamlMerge }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/binary.js var require_binary2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/binary.js"(exports2, module2) { "use strict"; var Type = require_type2(); var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; function resolveYamlBinary(data) { if (data === null) return false; var code2, idx, bitlen = 0, max = data.length, map = BASE64_MAP; for (idx = 0; idx < max; idx++) { code2 = map.indexOf(data.charAt(idx)); if (code2 > 64) continue; if (code2 < 0) return false; bitlen += 6; } return bitlen % 8 === 0; } function constructYamlBinary(data) { var idx, tailbits, input = data.replace(/[\r\n=]/g, ""), max = input.length, map = BASE64_MAP, bits = 0, result = []; for (idx = 0; idx < max; idx++) { if (idx % 4 === 0 && idx) { result.push(bits >> 16 & 255); result.push(bits >> 8 & 255); result.push(bits & 255); } bits = bits << 6 | map.indexOf(input.charAt(idx)); } tailbits = max % 4 * 6; if (tailbits === 0) { result.push(bits >> 16 & 255); result.push(bits >> 8 & 255); result.push(bits & 255); } else if (tailbits === 18) { result.push(bits >> 10 & 255); result.push(bits >> 2 & 255); } else if (tailbits === 12) { result.push(bits >> 4 & 255); } return new Uint8Array(result); } function representYamlBinary(object) { var result = "", bits = 0, idx, tail, max = object.length, map = BASE64_MAP; for (idx = 0; idx < max; idx++) { if (idx % 3 === 0 && idx) { result += map[bits >> 18 & 63]; result += map[bits >> 12 & 63]; result += map[bits >> 6 & 63]; result += map[bits & 63]; } bits = (bits << 8) + object[idx]; } tail = max % 3; if (tail === 0) { result += map[bits >> 18 & 63]; result += map[bits >> 12 & 63]; result += map[bits >> 6 & 63]; result += map[bits & 63]; } else if (tail === 2) { result += map[bits >> 10 & 63]; result += map[bits >> 4 & 63]; result += map[bits << 2 & 63]; result += map[64]; } else if (tail === 1) { result += map[bits >> 2 & 63]; result += map[bits << 4 & 63]; result += map[64]; result += map[64]; } return result; } function isBinary(obj) { return Object.prototype.toString.call(obj) === "[object Uint8Array]"; } module2.exports = new Type("tag:yaml.org,2002:binary", { kind: "scalar", resolve: resolveYamlBinary, construct: constructYamlBinary, predicate: isBinary, represent: representYamlBinary }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/omap.js var require_omap2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/omap.js"(exports2, module2) { "use strict"; var Type = require_type2(); var _hasOwnProperty = Object.prototype.hasOwnProperty; var _toString = Object.prototype.toString; function resolveYamlOmap(data) { if (data === null) return true; var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data; for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; pairHasKey = false; if (_toString.call(pair) !== "[object Object]") return false; for (pairKey in pair) { if (_hasOwnProperty.call(pair, pairKey)) { if (!pairHasKey) pairHasKey = true; else return false; } } if (!pairHasKey) return false; if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); else return false; } return true; } function constructYamlOmap(data) { return data !== null ? data : []; } module2.exports = new Type("tag:yaml.org,2002:omap", { kind: "sequence", resolve: resolveYamlOmap, construct: constructYamlOmap }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/pairs.js var require_pairs2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/pairs.js"(exports2, module2) { "use strict"; var Type = require_type2(); var _toString = Object.prototype.toString; function resolveYamlPairs(data) { if (data === null) return true; var index, length, pair, keys, result, object = data; result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; if (_toString.call(pair) !== "[object Object]") return false; keys = Object.keys(pair); if (keys.length !== 1) return false; result[index] = [keys[0], pair[keys[0]]]; } return true; } function constructYamlPairs(data) { if (data === null) return []; var index, length, pair, keys, result, object = data; result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; keys = Object.keys(pair); result[index] = [keys[0], pair[keys[0]]]; } return result; } module2.exports = new Type("tag:yaml.org,2002:pairs", { kind: "sequence", resolve: resolveYamlPairs, construct: constructYamlPairs }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/set.js var require_set2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/set.js"(exports2, module2) { "use strict"; var Type = require_type2(); var _hasOwnProperty = Object.prototype.hasOwnProperty; function resolveYamlSet(data) { if (data === null) return true; var key, object = data; for (key in object) { if (_hasOwnProperty.call(object, key)) { if (object[key] !== null) return false; } } return true; } function constructYamlSet(data) { return data !== null ? data : {}; } module2.exports = new Type("tag:yaml.org,2002:set", { kind: "mapping", resolve: resolveYamlSet, construct: constructYamlSet }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/default.js var require_default = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/default.js"(exports2, module2) { "use strict"; module2.exports = require_core2().extend({ implicit: [ require_timestamp2(), require_merge3() ], explicit: [ require_binary2(), require_omap2(), require_pairs2(), require_set2() ] }); } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/loader.js var require_loader2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/loader.js"(exports2, module2) { "use strict"; var common2 = require_common6(); var YAMLException = require_exception2(); var makeSnippet = require_snippet(); var DEFAULT_SCHEMA = require_default(); var _hasOwnProperty = Object.prototype.hasOwnProperty; var CONTEXT_FLOW_IN = 1; var CONTEXT_FLOW_OUT = 2; var CONTEXT_BLOCK_IN = 3; var CONTEXT_BLOCK_OUT = 4; var CHOMPING_CLIP = 1; var CHOMPING_STRIP = 2; var CHOMPING_KEEP = 3; var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; function _class(obj) { return Object.prototype.toString.call(obj); } function is_EOL(c) { return c === 10 || c === 13; } function is_WHITE_SPACE(c) { return c === 9 || c === 32; } function is_WS_OR_EOL(c) { return c === 9 || c === 32 || c === 10 || c === 13; } function is_FLOW_INDICATOR(c) { return c === 44 || c === 91 || c === 93 || c === 123 || c === 125; } function fromHexCode(c) { var lc; if (48 <= c && c <= 57) { return c - 48; } lc = c | 32; if (97 <= lc && lc <= 102) { return lc - 97 + 10; } return -1; } function escapedHexLen(c) { if (c === 120) { return 2; } if (c === 117) { return 4; } if (c === 85) { return 8; } return 0; } function fromDecimalCode(c) { if (48 <= c && c <= 57) { return c - 48; } return -1; } function simpleEscapeSequence(c) { return c === 48 ? "\0" : c === 97 ? "\x07" : c === 98 ? "\b" : c === 116 ? " " : c === 9 ? " " : c === 110 ? "\n" : c === 118 ? "\v" : c === 102 ? "\f" : c === 114 ? "\r" : c === 101 ? "\x1B" : c === 32 ? " " : c === 34 ? '"' : c === 47 ? "/" : c === 92 ? "\\" : c === 78 ? "\x85" : c === 95 ? "\xA0" : c === 76 ? "\u2028" : c === 80 ? "\u2029" : ""; } function charFromCodepoint(c) { if (c <= 65535) { return String.fromCharCode(c); } return String.fromCharCode( (c - 65536 >> 10) + 55296, (c - 65536 & 1023) + 56320 ); } var simpleEscapeCheck = new Array(256); var simpleEscapeMap = new Array(256); for (i = 0; i < 256; i++) { simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; simpleEscapeMap[i] = simpleEscapeSequence(i); } var i; function State(input, options) { this.input = input; this.filename = options["filename"] || null; this.schema = options["schema"] || DEFAULT_SCHEMA; this.onWarning = options["onWarning"] || null; this.legacy = options["legacy"] || false; this.json = options["json"] || false; this.listener = options["listener"] || null; this.implicitTypes = this.schema.compiledImplicit; this.typeMap = this.schema.compiledTypeMap; this.length = input.length; this.position = 0; this.line = 0; this.lineStart = 0; this.lineIndent = 0; this.firstTabInLine = -1; this.documents = []; } function generateError(state, message2) { var mark = { name: state.filename, buffer: state.input.slice(0, -1), // omit trailing \0 position: state.position, line: state.line, column: state.position - state.lineStart }; mark.snippet = makeSnippet(mark); return new YAMLException(message2, mark); } function throwError(state, message2) { throw generateError(state, message2); } function throwWarning(state, message2) { if (state.onWarning) { state.onWarning.call(null, generateError(state, message2)); } } var directiveHandlers = { YAML: function handleYamlDirective(state, name, args2) { var match, major, minor; if (state.version !== null) { throwError(state, "duplication of %YAML directive"); } if (args2.length !== 1) { throwError(state, "YAML directive accepts exactly one argument"); } match = /^([0-9]+)\.([0-9]+)$/.exec(args2[0]); if (match === null) { throwError(state, "ill-formed argument of the YAML directive"); } major = parseInt(match[1], 10); minor = parseInt(match[2], 10); if (major !== 1) { throwError(state, "unacceptable YAML version of the document"); } state.version = args2[0]; state.checkLineBreaks = minor < 2; if (minor !== 1 && minor !== 2) { throwWarning(state, "unsupported YAML version of the document"); } }, TAG: function handleTagDirective(state, name, args2) { var handle, prefix; if (args2.length !== 2) { throwError(state, "TAG directive accepts exactly two arguments"); } handle = args2[0]; prefix = args2[1]; if (!PATTERN_TAG_HANDLE.test(handle)) { throwError(state, "ill-formed tag handle (first argument) of the TAG directive"); } if (_hasOwnProperty.call(state.tagMap, handle)) { throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); } if (!PATTERN_TAG_URI.test(prefix)) { throwError(state, "ill-formed tag prefix (second argument) of the TAG directive"); } try { prefix = decodeURIComponent(prefix); } catch (err) { throwError(state, "tag prefix is malformed: " + prefix); } state.tagMap[handle] = prefix; } }; function captureSegment(state, start, end, checkJson) { var _position, _length, _character, _result; if (start < end) { _result = state.input.slice(start, end); if (checkJson) { for (_position = 0, _length = _result.length; _position < _length; _position += 1) { _character = _result.charCodeAt(_position); if (!(_character === 9 || 32 <= _character && _character <= 1114111)) { throwError(state, "expected valid JSON character"); } } } else if (PATTERN_NON_PRINTABLE.test(_result)) { throwError(state, "the stream contains non-printable characters"); } state.result += _result; } } function mergeMappings(state, destination, source, overridableKeys) { var sourceKeys, key, index, quantity; if (!common2.isObject(source)) { throwError(state, "cannot merge mappings; the provided source object is unacceptable"); } sourceKeys = Object.keys(source); for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { key = sourceKeys[index]; if (!_hasOwnProperty.call(destination, key)) { destination[key] = source[key]; overridableKeys[key] = true; } } } function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) { var index, quantity; if (Array.isArray(keyNode)) { keyNode = Array.prototype.slice.call(keyNode); for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { if (Array.isArray(keyNode[index])) { throwError(state, "nested arrays are not supported inside keys"); } if (typeof keyNode === "object" && _class(keyNode[index]) === "[object Object]") { keyNode[index] = "[object Object]"; } } } if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") { keyNode = "[object Object]"; } keyNode = String(keyNode); if (_result === null) { _result = {}; } if (keyTag === "tag:yaml.org,2002:merge") { if (Array.isArray(valueNode)) { for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { mergeMappings(state, _result, valueNode[index], overridableKeys); } } else { mergeMappings(state, _result, valueNode, overridableKeys); } } else { if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) { state.line = startLine || state.line; state.lineStart = startLineStart || state.lineStart; state.position = startPos || state.position; throwError(state, "duplicated mapping key"); } if (keyNode === "__proto__") { Object.defineProperty(_result, keyNode, { configurable: true, enumerable: true, writable: true, value: valueNode }); } else { _result[keyNode] = valueNode; } delete overridableKeys[keyNode]; } return _result; } function readLineBreak(state) { var ch; ch = state.input.charCodeAt(state.position); if (ch === 10) { state.position++; } else if (ch === 13) { state.position++; if (state.input.charCodeAt(state.position) === 10) { state.position++; } } else { throwError(state, "a line break is expected"); } state.line += 1; state.lineStart = state.position; state.firstTabInLine = -1; } function skipSeparationSpace(state, allowComments, checkIndent) { var lineBreaks = 0, ch = state.input.charCodeAt(state.position); while (ch !== 0) { while (is_WHITE_SPACE(ch)) { if (ch === 9 && state.firstTabInLine === -1) { state.firstTabInLine = state.position; } ch = state.input.charCodeAt(++state.position); } if (allowComments && ch === 35) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 10 && ch !== 13 && ch !== 0); } if (is_EOL(ch)) { readLineBreak(state); ch = state.input.charCodeAt(state.position); lineBreaks++; state.lineIndent = 0; while (ch === 32) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } } else { break; } } if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { throwWarning(state, "deficient indentation"); } return lineBreaks; } function testDocumentSeparator(state) { var _position = state.position, ch; ch = state.input.charCodeAt(_position); if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { _position += 3; ch = state.input.charCodeAt(_position); if (ch === 0 || is_WS_OR_EOL(ch)) { return true; } } return false; } function writeFoldedLines(state, count) { if (count === 1) { state.result += " "; } else if (count > 1) { state.result += common2.repeat("\n", count - 1); } } function readPlainScalar(state, nodeIndent, withinFlowCollection) { var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch; ch = state.input.charCodeAt(state.position); if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) { return false; } if (ch === 63 || ch === 45) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { return false; } } state.kind = "scalar"; state.result = ""; captureStart = captureEnd = state.position; hasPendingContent = false; while (ch !== 0) { if (ch === 58) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { break; } } else if (ch === 35) { preceding = state.input.charCodeAt(state.position - 1); if (is_WS_OR_EOL(preceding)) { break; } } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { break; } else if (is_EOL(ch)) { _line = state.line; _lineStart = state.lineStart; _lineIndent = state.lineIndent; skipSeparationSpace(state, false, -1); if (state.lineIndent >= nodeIndent) { hasPendingContent = true; ch = state.input.charCodeAt(state.position); continue; } else { state.position = captureEnd; state.line = _line; state.lineStart = _lineStart; state.lineIndent = _lineIndent; break; } } if (hasPendingContent) { captureSegment(state, captureStart, captureEnd, false); writeFoldedLines(state, state.line - _line); captureStart = captureEnd = state.position; hasPendingContent = false; } if (!is_WHITE_SPACE(ch)) { captureEnd = state.position + 1; } ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, captureEnd, false); if (state.result) { return true; } state.kind = _kind; state.result = _result; return false; } function readSingleQuotedScalar(state, nodeIndent) { var ch, captureStart, captureEnd; ch = state.input.charCodeAt(state.position); if (ch !== 39) { return false; } state.kind = "scalar"; state.result = ""; state.position++; captureStart = captureEnd = state.position; while ((ch = state.input.charCodeAt(state.position)) !== 0) { if (ch === 39) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); if (ch === 39) { captureStart = state.position; state.position++; captureEnd = state.position; } else { return true; } } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, "unexpected end of the document within a single quoted scalar"); } else { state.position++; captureEnd = state.position; } } throwError(state, "unexpected end of the stream within a single quoted scalar"); } function readDoubleQuotedScalar(state, nodeIndent) { var captureStart, captureEnd, hexLength, hexResult, tmp, ch; ch = state.input.charCodeAt(state.position); if (ch !== 34) { return false; } state.kind = "scalar"; state.result = ""; state.position++; captureStart = captureEnd = state.position; while ((ch = state.input.charCodeAt(state.position)) !== 0) { if (ch === 34) { captureSegment(state, captureStart, state.position, true); state.position++; return true; } else if (ch === 92) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); if (is_EOL(ch)) { skipSeparationSpace(state, false, nodeIndent); } else if (ch < 256 && simpleEscapeCheck[ch]) { state.result += simpleEscapeMap[ch]; state.position++; } else if ((tmp = escapedHexLen(ch)) > 0) { hexLength = tmp; hexResult = 0; for (; hexLength > 0; hexLength--) { ch = state.input.charCodeAt(++state.position); if ((tmp = fromHexCode(ch)) >= 0) { hexResult = (hexResult << 4) + tmp; } else { throwError(state, "expected hexadecimal character"); } } state.result += charFromCodepoint(hexResult); state.position++; } else { throwError(state, "unknown escape sequence"); } captureStart = captureEnd = state.position; } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, "unexpected end of the document within a double quoted scalar"); } else { state.position++; captureEnd = state.position; } } throwError(state, "unexpected end of the stream within a double quoted scalar"); } function readFlowCollection(state, nodeIndent) { var readNext = true, _line, _lineStart, _pos, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch; ch = state.input.charCodeAt(state.position); if (ch === 91) { terminator = 93; isMapping = false; _result = []; } else if (ch === 123) { terminator = 125; isMapping = true; _result = {}; } else { return false; } if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(++state.position); while (ch !== 0) { skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if (ch === terminator) { state.position++; state.tag = _tag; state.anchor = _anchor; state.kind = isMapping ? "mapping" : "sequence"; state.result = _result; return true; } else if (!readNext) { throwError(state, "missed comma between flow collection entries"); } else if (ch === 44) { throwError(state, "expected the node content, but found ','"); } keyTag = keyNode = valueNode = null; isPair = isExplicitPair = false; if (ch === 63) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following)) { isPair = isExplicitPair = true; state.position++; skipSeparationSpace(state, true, nodeIndent); } } _line = state.line; _lineStart = state.lineStart; _pos = state.position; composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); keyTag = state.tag; keyNode = state.result; skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if ((isExplicitPair || state.line === _line) && ch === 58) { isPair = true; ch = state.input.charCodeAt(++state.position); skipSeparationSpace(state, true, nodeIndent); composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); valueNode = state.result; } if (isMapping) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); } else if (isPair) { _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); } else { _result.push(keyNode); } skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if (ch === 44) { readNext = true; ch = state.input.charCodeAt(++state.position); } else { readNext = false; } } throwError(state, "unexpected end of the stream within a flow collection"); } function readBlockScalar(state, nodeIndent) { var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch; ch = state.input.charCodeAt(state.position); if (ch === 124) { folding = false; } else if (ch === 62) { folding = true; } else { return false; } state.kind = "scalar"; state.result = ""; while (ch !== 0) { ch = state.input.charCodeAt(++state.position); if (ch === 43 || ch === 45) { if (CHOMPING_CLIP === chomping) { chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP; } else { throwError(state, "repeat of a chomping mode identifier"); } } else if ((tmp = fromDecimalCode(ch)) >= 0) { if (tmp === 0) { throwError(state, "bad explicit indentation width of a block scalar; it cannot be less than one"); } else if (!detectedIndent) { textIndent = nodeIndent + tmp - 1; detectedIndent = true; } else { throwError(state, "repeat of an indentation width identifier"); } } else { break; } } if (is_WHITE_SPACE(ch)) { do { ch = state.input.charCodeAt(++state.position); } while (is_WHITE_SPACE(ch)); if (ch === 35) { do { ch = state.input.charCodeAt(++state.position); } while (!is_EOL(ch) && ch !== 0); } } while (ch !== 0) { readLineBreak(state); state.lineIndent = 0; ch = state.input.charCodeAt(state.position); while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } if (!detectedIndent && state.lineIndent > textIndent) { textIndent = state.lineIndent; } if (is_EOL(ch)) { emptyLines++; continue; } if (state.lineIndent < textIndent) { if (chomping === CHOMPING_KEEP) { state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } else if (chomping === CHOMPING_CLIP) { if (didReadContent) { state.result += "\n"; } } break; } if (folding) { if (is_WHITE_SPACE(ch)) { atMoreIndented = true; state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } else if (atMoreIndented) { atMoreIndented = false; state.result += common2.repeat("\n", emptyLines + 1); } else if (emptyLines === 0) { if (didReadContent) { state.result += " "; } } else { state.result += common2.repeat("\n", emptyLines); } } else { state.result += common2.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } didReadContent = true; detectedIndent = true; emptyLines = 0; captureStart = state.position; while (!is_EOL(ch) && ch !== 0) { ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, state.position, false); } return true; } function readBlockSequence(state, nodeIndent) { var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch; if (state.firstTabInLine !== -1) return false; if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(state.position); while (ch !== 0) { if (state.firstTabInLine !== -1) { state.position = state.firstTabInLine; throwError(state, "tab characters must not be used in indentation"); } if (ch !== 45) { break; } following = state.input.charCodeAt(state.position + 1); if (!is_WS_OR_EOL(following)) { break; } detected = true; state.position++; if (skipSeparationSpace(state, true, -1)) { if (state.lineIndent <= nodeIndent) { _result.push(null); ch = state.input.charCodeAt(state.position); continue; } } _line = state.line; composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); _result.push(state.result); skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { throwError(state, "bad indentation of a sequence entry"); } else if (state.lineIndent < nodeIndent) { break; } } if (detected) { state.tag = _tag; state.anchor = _anchor; state.kind = "sequence"; state.result = _result; return true; } return false; } function readBlockMapping(state, nodeIndent, flowIndent) { var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state.tag, _anchor = state.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch; if (state.firstTabInLine !== -1) return false; if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(state.position); while (ch !== 0) { if (!atExplicitKey && state.firstTabInLine !== -1) { state.position = state.firstTabInLine; throwError(state, "tab characters must not be used in indentation"); } following = state.input.charCodeAt(state.position + 1); _line = state.line; if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) { if (ch === 63) { if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = true; allowCompact = true; } else if (atExplicitKey) { atExplicitKey = false; allowCompact = true; } else { throwError(state, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"); } state.position += 1; ch = following; } else { _keyLine = state.line; _keyLineStart = state.lineStart; _keyPos = state.position; if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { break; } if (state.line === _line) { ch = state.input.charCodeAt(state.position); while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (ch === 58) { ch = state.input.charCodeAt(++state.position); if (!is_WS_OR_EOL(ch)) { throwError(state, "a whitespace character is expected after the key-value separator within a block mapping"); } if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = false; allowCompact = false; keyTag = state.tag; keyNode = state.result; } else if (detected) { throwError(state, "can not read an implicit mapping pair; a colon is missed"); } else { state.tag = _tag; state.anchor = _anchor; return true; } } else if (detected) { throwError(state, "can not read a block mapping entry; a multiline key may not be an implicit key"); } else { state.tag = _tag; state.anchor = _anchor; return true; } } if (state.line === _line || state.lineIndent > nodeIndent) { if (atExplicitKey) { _keyLine = state.line; _keyLineStart = state.lineStart; _keyPos = state.position; } if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { if (atExplicitKey) { keyNode = state.result; } else { valueNode = state.result; } } if (!atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); keyTag = keyNode = valueNode = null; } skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); } if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { throwError(state, "bad indentation of a mapping entry"); } else if (state.lineIndent < nodeIndent) { break; } } if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); } if (detected) { state.tag = _tag; state.anchor = _anchor; state.kind = "mapping"; state.result = _result; } return detected; } function readTagProperty(state) { var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch; ch = state.input.charCodeAt(state.position); if (ch !== 33) return false; if (state.tag !== null) { throwError(state, "duplication of a tag property"); } ch = state.input.charCodeAt(++state.position); if (ch === 60) { isVerbatim = true; ch = state.input.charCodeAt(++state.position); } else if (ch === 33) { isNamed = true; tagHandle = "!!"; ch = state.input.charCodeAt(++state.position); } else { tagHandle = "!"; } _position = state.position; if (isVerbatim) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 0 && ch !== 62); if (state.position < state.length) { tagName = state.input.slice(_position, state.position); ch = state.input.charCodeAt(++state.position); } else { throwError(state, "unexpected end of the stream within a verbatim tag"); } } else { while (ch !== 0 && !is_WS_OR_EOL(ch)) { if (ch === 33) { if (!isNamed) { tagHandle = state.input.slice(_position - 1, state.position + 1); if (!PATTERN_TAG_HANDLE.test(tagHandle)) { throwError(state, "named tag handle cannot contain such characters"); } isNamed = true; _position = state.position + 1; } else { throwError(state, "tag suffix cannot contain exclamation marks"); } } ch = state.input.charCodeAt(++state.position); } tagName = state.input.slice(_position, state.position); if (PATTERN_FLOW_INDICATORS.test(tagName)) { throwError(state, "tag suffix cannot contain flow indicator characters"); } } if (tagName && !PATTERN_TAG_URI.test(tagName)) { throwError(state, "tag name cannot contain such characters: " + tagName); } try { tagName = decodeURIComponent(tagName); } catch (err) { throwError(state, "tag name is malformed: " + tagName); } if (isVerbatim) { state.tag = tagName; } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { state.tag = state.tagMap[tagHandle] + tagName; } else if (tagHandle === "!") { state.tag = "!" + tagName; } else if (tagHandle === "!!") { state.tag = "tag:yaml.org,2002:" + tagName; } else { throwError(state, 'undeclared tag handle "' + tagHandle + '"'); } return true; } function readAnchorProperty(state) { var _position, ch; ch = state.input.charCodeAt(state.position); if (ch !== 38) return false; if (state.anchor !== null) { throwError(state, "duplication of an anchor property"); } ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { throwError(state, "name of an anchor node must contain at least one character"); } state.anchor = state.input.slice(_position, state.position); return true; } function readAlias(state) { var _position, alias2, ch; ch = state.input.charCodeAt(state.position); if (ch !== 42) return false; ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { throwError(state, "name of an alias node must contain at least one character"); } alias2 = state.input.slice(_position, state.position); if (!_hasOwnProperty.call(state.anchorMap, alias2)) { throwError(state, 'unidentified alias "' + alias2 + '"'); } state.result = state.anchorMap[alias2]; skipSeparationSpace(state, true, -1); return true; } function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type, flowIndent, blockIndent; if (state.listener !== null) { state.listener("open", state); } state.tag = null; state.anchor = null; state.kind = null; state.result = null; allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext; if (allowToSeek) { if (skipSeparationSpace(state, true, -1)) { atNewLine = true; if (state.lineIndent > parentIndent) { indentStatus = 1; } else if (state.lineIndent === parentIndent) { indentStatus = 0; } else if (state.lineIndent < parentIndent) { indentStatus = -1; } } } if (indentStatus === 1) { while (readTagProperty(state) || readAnchorProperty(state)) { if (skipSeparationSpace(state, true, -1)) { atNewLine = true; allowBlockCollections = allowBlockStyles; if (state.lineIndent > parentIndent) { indentStatus = 1; } else if (state.lineIndent === parentIndent) { indentStatus = 0; } else if (state.lineIndent < parentIndent) { indentStatus = -1; } } else { allowBlockCollections = false; } } } if (allowBlockCollections) { allowBlockCollections = atNewLine || allowCompact; } if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { flowIndent = parentIndent; } else { flowIndent = parentIndent + 1; } blockIndent = state.position - state.lineStart; if (indentStatus === 1) { if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { hasContent = true; } else { if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { hasContent = true; } else if (readAlias(state)) { hasContent = true; if (state.tag !== null || state.anchor !== null) { throwError(state, "alias node should not have any properties"); } } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { hasContent = true; if (state.tag === null) { state.tag = "?"; } } if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } } } else if (indentStatus === 0) { hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); } } if (state.tag === null) { if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } } else if (state.tag === "?") { if (state.result !== null && state.kind !== "scalar") { throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); } for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { type = state.implicitTypes[typeIndex]; if (type.resolve(state.result)) { state.result = type.construct(state.result); state.tag = type.tag; if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } break; } } } else if (state.tag !== "!") { if (_hasOwnProperty.call(state.typeMap[state.kind || "fallback"], state.tag)) { type = state.typeMap[state.kind || "fallback"][state.tag]; } else { type = null; typeList = state.typeMap.multi[state.kind || "fallback"]; for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { type = typeList[typeIndex]; break; } } } if (!type) { throwError(state, "unknown tag !<" + state.tag + ">"); } if (state.result !== null && type.kind !== state.kind) { throwError(state, "unacceptable node kind for !<" + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); } if (!type.resolve(state.result, state.tag)) { throwError(state, "cannot resolve a node with !<" + state.tag + "> explicit tag"); } else { state.result = type.construct(state.result, state.tag); if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } } } if (state.listener !== null) { state.listener("close", state); } return state.tag !== null || state.anchor !== null || hasContent; } function readDocument(state) { var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch; state.version = null; state.checkLineBreaks = state.legacy; state.tagMap = /* @__PURE__ */ Object.create(null); state.anchorMap = /* @__PURE__ */ Object.create(null); while ((ch = state.input.charCodeAt(state.position)) !== 0) { skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); if (state.lineIndent > 0 || ch !== 37) { break; } hasDirectives = true; ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { ch = state.input.charCodeAt(++state.position); } directiveName = state.input.slice(_position, state.position); directiveArgs = []; if (directiveName.length < 1) { throwError(state, "directive name must not be less than one character in length"); } while (ch !== 0) { while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (ch === 35) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 0 && !is_EOL(ch)); break; } if (is_EOL(ch)) break; _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { ch = state.input.charCodeAt(++state.position); } directiveArgs.push(state.input.slice(_position, state.position)); } if (ch !== 0) readLineBreak(state); if (_hasOwnProperty.call(directiveHandlers, directiveName)) { directiveHandlers[directiveName](state, directiveName, directiveArgs); } else { throwWarning(state, 'unknown document directive "' + directiveName + '"'); } } skipSeparationSpace(state, true, -1); if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) { state.position += 3; skipSeparationSpace(state, true, -1); } else if (hasDirectives) { throwError(state, "directives end mark is expected"); } composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); skipSeparationSpace(state, true, -1); if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { throwWarning(state, "non-ASCII line breaks are interpreted as content"); } state.documents.push(state.result); if (state.position === state.lineStart && testDocumentSeparator(state)) { if (state.input.charCodeAt(state.position) === 46) { state.position += 3; skipSeparationSpace(state, true, -1); } return; } if (state.position < state.length - 1) { throwError(state, "end of the stream or a document separator is expected"); } else { return; } } function loadDocuments(input, options) { input = String(input); options = options || {}; if (input.length !== 0) { if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) { input += "\n"; } if (input.charCodeAt(0) === 65279) { input = input.slice(1); } } var state = new State(input, options); var nullpos = input.indexOf("\0"); if (nullpos !== -1) { state.position = nullpos; throwError(state, "null byte is not allowed in input"); } state.input += "\0"; while (state.input.charCodeAt(state.position) === 32) { state.lineIndent += 1; state.position += 1; } while (state.position < state.length - 1) { readDocument(state); } return state.documents; } function loadAll(input, iterator, options) { if (iterator !== null && typeof iterator === "object" && typeof options === "undefined") { options = iterator; iterator = null; } var documents = loadDocuments(input, options); if (typeof iterator !== "function") { return documents; } for (var index = 0, length = documents.length; index < length; index += 1) { iterator(documents[index]); } } function load3(input, options) { var documents = loadDocuments(input, options); if (documents.length === 0) { return void 0; } else if (documents.length === 1) { return documents[0]; } throw new YAMLException("expected a single document in the stream, but found more"); } module2.exports.loadAll = loadAll; module2.exports.load = load3; } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/dumper.js var require_dumper2 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/dumper.js"(exports2, module2) { "use strict"; var common2 = require_common6(); var YAMLException = require_exception2(); var DEFAULT_SCHEMA = require_default(); var _toString = Object.prototype.toString; var _hasOwnProperty = Object.prototype.hasOwnProperty; var CHAR_BOM = 65279; var CHAR_TAB = 9; var CHAR_LINE_FEED = 10; var CHAR_CARRIAGE_RETURN = 13; var CHAR_SPACE = 32; var CHAR_EXCLAMATION = 33; var CHAR_DOUBLE_QUOTE = 34; var CHAR_SHARP = 35; var CHAR_PERCENT = 37; var CHAR_AMPERSAND = 38; var CHAR_SINGLE_QUOTE = 39; var CHAR_ASTERISK = 42; var CHAR_COMMA2 = 44; var CHAR_MINUS = 45; var CHAR_COLON2 = 58; var CHAR_EQUALS2 = 61; var CHAR_GREATER_THAN = 62; var CHAR_QUESTION = 63; var CHAR_COMMERCIAL_AT = 64; var CHAR_LEFT_SQUARE_BRACKET = 91; var CHAR_RIGHT_SQUARE_BRACKET = 93; var CHAR_GRAVE_ACCENT = 96; var CHAR_LEFT_CURLY_BRACKET = 123; var CHAR_VERTICAL_LINE = 124; var CHAR_RIGHT_CURLY_BRACKET = 125; var ESCAPE_SEQUENCES = {}; ESCAPE_SEQUENCES[0] = "\\0"; ESCAPE_SEQUENCES[7] = "\\a"; ESCAPE_SEQUENCES[8] = "\\b"; ESCAPE_SEQUENCES[9] = "\\t"; ESCAPE_SEQUENCES[10] = "\\n"; ESCAPE_SEQUENCES[11] = "\\v"; ESCAPE_SEQUENCES[12] = "\\f"; ESCAPE_SEQUENCES[13] = "\\r"; ESCAPE_SEQUENCES[27] = "\\e"; ESCAPE_SEQUENCES[34] = '\\"'; ESCAPE_SEQUENCES[92] = "\\\\"; ESCAPE_SEQUENCES[133] = "\\N"; ESCAPE_SEQUENCES[160] = "\\_"; ESCAPE_SEQUENCES[8232] = "\\L"; ESCAPE_SEQUENCES[8233] = "\\P"; var DEPRECATED_BOOLEANS_SYNTAX = [ "y", "Y", "yes", "Yes", "YES", "on", "On", "ON", "n", "N", "no", "No", "NO", "off", "Off", "OFF" ]; var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; function compileStyleMap(schema, map) { var result, keys, index, length, tag, style, type; if (map === null) return {}; result = {}; keys = Object.keys(map); for (index = 0, length = keys.length; index < length; index += 1) { tag = keys[index]; style = String(map[tag]); if (tag.slice(0, 2) === "!!") { tag = "tag:yaml.org,2002:" + tag.slice(2); } type = schema.compiledTypeMap["fallback"][tag]; if (type && _hasOwnProperty.call(type.styleAliases, style)) { style = type.styleAliases[style]; } result[tag] = style; } return result; } function encodeHex(character) { var string, handle, length; string = character.toString(16).toUpperCase(); if (character <= 255) { handle = "x"; length = 2; } else if (character <= 65535) { handle = "u"; length = 4; } else if (character <= 4294967295) { handle = "U"; length = 8; } else { throw new YAMLException("code point within a string may not be greater than 0xFFFFFFFF"); } return "\\" + handle + common2.repeat("0", length - string.length) + string; } var QUOTING_TYPE_SINGLE = 1; var QUOTING_TYPE_DOUBLE = 2; function State(options) { this.schema = options["schema"] || DEFAULT_SCHEMA; this.indent = Math.max(1, options["indent"] || 2); this.noArrayIndent = options["noArrayIndent"] || false; this.skipInvalid = options["skipInvalid"] || false; this.flowLevel = common2.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"]; this.styleMap = compileStyleMap(this.schema, options["styles"] || null); this.sortKeys = options["sortKeys"] || false; this.lineWidth = options["lineWidth"] || 80; this.noRefs = options["noRefs"] || false; this.noCompatMode = options["noCompatMode"] || false; this.condenseFlow = options["condenseFlow"] || false; this.quotingType = options["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; this.forceQuotes = options["forceQuotes"] || false; this.replacer = typeof options["replacer"] === "function" ? options["replacer"] : null; this.implicitTypes = this.schema.compiledImplicit; this.explicitTypes = this.schema.compiledExplicit; this.tag = null; this.result = ""; this.duplicates = []; this.usedDuplicates = null; } function indentString(string, spaces) { var ind = common2.repeat(" ", spaces), position = 0, next = -1, result = "", line, length = string.length; while (position < length) { next = string.indexOf("\n", position); if (next === -1) { line = string.slice(position); position = length; } else { line = string.slice(position, next + 1); position = next + 1; } if (line.length && line !== "\n") result += ind; result += line; } return result; } function generateNextLine(state, level) { return "\n" + common2.repeat(" ", state.indent * level); } function testImplicitResolving(state, str) { var index, length, type; for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { type = state.implicitTypes[index]; if (type.resolve(str)) { return true; } } return false; } function isWhitespace(c) { return c === CHAR_SPACE || c === CHAR_TAB; } function isPrintable(c) { return 32 <= c && c <= 126 || 161 <= c && c <= 55295 && c !== 8232 && c !== 8233 || 57344 <= c && c <= 65533 && c !== CHAR_BOM || 65536 <= c && c <= 1114111; } function isNsCharOrWhitespace(c) { return isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED; } function isPlainSafe(c, prev, inblock) { var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); return ( // ns-plain-safe (inblock ? ( // c = flow-in cIsNsCharOrWhitespace ) : cIsNsCharOrWhitespace && c !== CHAR_COMMA2 && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON2 && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON2 && cIsNsChar ); } function isPlainSafeFirst(c) { return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON2 && c !== CHAR_COMMA2 && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS2 && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; } function isPlainSafeLast(c) { return !isWhitespace(c) && c !== CHAR_COLON2; } function codePointAt(string, pos) { var first = string.charCodeAt(pos), second; if (first >= 55296 && first <= 56319 && pos + 1 < string.length) { second = string.charCodeAt(pos + 1); if (second >= 56320 && second <= 57343) { return (first - 55296) * 1024 + second - 56320 + 65536; } } return first; } function needIndentIndicator(string) { var leadingSpaceRe = /^\n* /; return leadingSpaceRe.test(string); } var STYLE_PLAIN = 1; var STYLE_SINGLE = 2; var STYLE_LITERAL = 3; var STYLE_FOLDED = 4; var STYLE_DOUBLE = 5; function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) { var i; var char = 0; var prevChar = null; var hasLineBreak = false; var hasFoldableLine = false; var shouldTrackWidth = lineWidth !== -1; var previousLineBreak = -1; var plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1)); if (singleLineOnly || forceQuotes) { for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { char = codePointAt(string, i); if (!isPrintable(char)) { return STYLE_DOUBLE; } plain = plain && isPlainSafe(char, prevChar, inblock); prevChar = char; } } else { for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { char = codePointAt(string, i); if (char === CHAR_LINE_FEED) { hasLineBreak = true; if (shouldTrackWidth) { hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "; previousLineBreak = i; } } else if (!isPrintable(char)) { return STYLE_DOUBLE; } plain = plain && isPlainSafe(char, prevChar, inblock); prevChar = char; } hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "); } if (!hasLineBreak && !hasFoldableLine) { if (plain && !forceQuotes && !testAmbiguousType(string)) { return STYLE_PLAIN; } return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; } if (indentPerLevel > 9 && needIndentIndicator(string)) { return STYLE_DOUBLE; } if (!forceQuotes) { return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; } return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; } function writeScalar(state, string, level, iskey, inblock) { state.dump = function() { if (string.length === 0) { return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; } if (!state.noCompatMode) { if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { return state.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string + '"' : "'" + string + "'"; } } var indent = state.indent * Math.max(1, level); var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); var singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel; function testAmbiguity(string2) { return testImplicitResolving(state, string2); } switch (chooseScalarStyle( string, singleLineOnly, state.indent, lineWidth, testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock )) { case STYLE_PLAIN: return string; case STYLE_SINGLE: return "'" + string.replace(/'/g, "''") + "'"; case STYLE_LITERAL: return "|" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); case STYLE_FOLDED: return ">" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); case STYLE_DOUBLE: return '"' + escapeString(string, lineWidth) + '"'; default: throw new YAMLException("impossible error: invalid scalar style"); } }(); } function blockHeader(string, indentPerLevel) { var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ""; var clip = string[string.length - 1] === "\n"; var keep = clip && (string[string.length - 2] === "\n" || string === "\n"); var chomp = keep ? "+" : clip ? "" : "-"; return indentIndicator + chomp + "\n"; } function dropEndingNewline(string) { return string[string.length - 1] === "\n" ? string.slice(0, -1) : string; } function foldString(string, width) { var lineRe = /(\n+)([^\n]*)/g; var result = function() { var nextLF = string.indexOf("\n"); nextLF = nextLF !== -1 ? nextLF : string.length; lineRe.lastIndex = nextLF; return foldLine(string.slice(0, nextLF), width); }(); var prevMoreIndented = string[0] === "\n" || string[0] === " "; var moreIndented; var match; while (match = lineRe.exec(string)) { var prefix = match[1], line = match[2]; moreIndented = line[0] === " "; result += prefix + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + foldLine(line, width); prevMoreIndented = moreIndented; } return result; } function foldLine(line, width) { if (line === "" || line[0] === " ") return line; var breakRe = / [^ ]/g; var match; var start = 0, end, curr = 0, next = 0; var result = ""; while (match = breakRe.exec(line)) { next = match.index; if (next - start > width) { end = curr > start ? curr : next; result += "\n" + line.slice(start, end); start = end + 1; } curr = next; } result += "\n"; if (line.length - start > width && curr > start) { result += line.slice(start, curr) + "\n" + line.slice(curr + 1); } else { result += line.slice(start); } return result.slice(1); } function escapeString(string) { var result = ""; var char = 0; var escapeSeq; for (var i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { char = codePointAt(string, i); escapeSeq = ESCAPE_SEQUENCES[char]; if (!escapeSeq && isPrintable(char)) { result += string[i]; if (char >= 65536) result += string[i + 1]; } else { result += escapeSeq || encodeHex(char); } } return result; } function writeFlowSequence(state, level, object) { var _result = "", _tag = state.tag, index, length, value; for (index = 0, length = object.length; index < length; index += 1) { value = object[index]; if (state.replacer) { value = state.replacer.call(object, String(index), value); } if (writeNode(state, level, value, false, false) || typeof value === "undefined" && writeNode(state, level, null, false, false)) { if (_result !== "") _result += "," + (!state.condenseFlow ? " " : ""); _result += state.dump; } } state.tag = _tag; state.dump = "[" + _result + "]"; } function writeBlockSequence(state, level, object, compact) { var _result = "", _tag = state.tag, index, length, value; for (index = 0, length = object.length; index < length; index += 1) { value = object[index]; if (state.replacer) { value = state.replacer.call(object, String(index), value); } if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === "undefined" && writeNode(state, level + 1, null, true, true, false, true)) { if (!compact || _result !== "") { _result += generateNextLine(state, level); } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { _result += "-"; } else { _result += "- "; } _result += state.dump; } } state.tag = _tag; state.dump = _result || "[]"; } function writeFlowMapping(state, level, object) { var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, pairBuffer; for (index = 0, length = objectKeyList.length; index < length; index += 1) { pairBuffer = ""; if (_result !== "") pairBuffer += ", "; if (state.condenseFlow) pairBuffer += '"'; objectKey = objectKeyList[index]; objectValue = object[objectKey]; if (state.replacer) { objectValue = state.replacer.call(object, objectKey, objectValue); } if (!writeNode(state, level, objectKey, false, false)) { continue; } if (state.dump.length > 1024) pairBuffer += "? "; pairBuffer += state.dump + (state.condenseFlow ? '"' : "") + ":" + (state.condenseFlow ? "" : " "); if (!writeNode(state, level, objectValue, false, false)) { continue; } pairBuffer += state.dump; _result += pairBuffer; } state.tag = _tag; state.dump = "{" + _result + "}"; } function writeBlockMapping(state, level, object, compact) { var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, explicitPair, pairBuffer; if (state.sortKeys === true) { objectKeyList.sort(); } else if (typeof state.sortKeys === "function") { objectKeyList.sort(state.sortKeys); } else if (state.sortKeys) { throw new YAMLException("sortKeys must be a boolean or a function"); } for (index = 0, length = objectKeyList.length; index < length; index += 1) { pairBuffer = ""; if (!compact || _result !== "") { pairBuffer += generateNextLine(state, level); } objectKey = objectKeyList[index]; objectValue = object[objectKey]; if (state.replacer) { objectValue = state.replacer.call(object, objectKey, objectValue); } if (!writeNode(state, level + 1, objectKey, true, true, true)) { continue; } explicitPair = state.tag !== null && state.tag !== "?" || state.dump && state.dump.length > 1024; if (explicitPair) { if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { pairBuffer += "?"; } else { pairBuffer += "? "; } } pairBuffer += state.dump; if (explicitPair) { pairBuffer += generateNextLine(state, level); } if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { continue; } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { pairBuffer += ":"; } else { pairBuffer += ": "; } pairBuffer += state.dump; _result += pairBuffer; } state.tag = _tag; state.dump = _result || "{}"; } function detectType(state, object, explicit) { var _result, typeList, index, length, type, style; typeList = explicit ? state.explicitTypes : state.implicitTypes; for (index = 0, length = typeList.length; index < length; index += 1) { type = typeList[index]; if ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object === "object" && object instanceof type.instanceOf) && (!type.predicate || type.predicate(object))) { if (explicit) { if (type.multi && type.representName) { state.tag = type.representName(object); } else { state.tag = type.tag; } } else { state.tag = "?"; } if (type.represent) { style = state.styleMap[type.tag] || type.defaultStyle; if (_toString.call(type.represent) === "[object Function]") { _result = type.represent(object, style); } else if (_hasOwnProperty.call(type.represent, style)) { _result = type.represent[style](object, style); } else { throw new YAMLException("!<" + type.tag + '> tag resolver accepts not "' + style + '" style'); } state.dump = _result; } return true; } } return false; } function writeNode(state, level, object, block, compact, iskey, isblockseq) { state.tag = null; state.dump = object; if (!detectType(state, object, false)) { detectType(state, object, true); } var type = _toString.call(state.dump); var inblock = block; var tagStr; if (block) { block = state.flowLevel < 0 || state.flowLevel > level; } var objectOrArray = type === "[object Object]" || type === "[object Array]", duplicateIndex, duplicate; if (objectOrArray) { duplicateIndex = state.duplicates.indexOf(object); duplicate = duplicateIndex !== -1; } if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) { compact = false; } if (duplicate && state.usedDuplicates[duplicateIndex]) { state.dump = "*ref_" + duplicateIndex; } else { if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { state.usedDuplicates[duplicateIndex] = true; } if (type === "[object Object]") { if (block && Object.keys(state.dump).length !== 0) { writeBlockMapping(state, level, state.dump, compact); if (duplicate) { state.dump = "&ref_" + duplicateIndex + state.dump; } } else { writeFlowMapping(state, level, state.dump); if (duplicate) { state.dump = "&ref_" + duplicateIndex + " " + state.dump; } } } else if (type === "[object Array]") { if (block && state.dump.length !== 0) { if (state.noArrayIndent && !isblockseq && level > 0) { writeBlockSequence(state, level - 1, state.dump, compact); } else { writeBlockSequence(state, level, state.dump, compact); } if (duplicate) { state.dump = "&ref_" + duplicateIndex + state.dump; } } else { writeFlowSequence(state, level, state.dump); if (duplicate) { state.dump = "&ref_" + duplicateIndex + " " + state.dump; } } } else if (type === "[object String]") { if (state.tag !== "?") { writeScalar(state, state.dump, level, iskey, inblock); } } else if (type === "[object Undefined]") { return false; } else { if (state.skipInvalid) return false; throw new YAMLException("unacceptable kind of an object to dump " + type); } if (state.tag !== null && state.tag !== "?") { tagStr = encodeURI( state.tag[0] === "!" ? state.tag.slice(1) : state.tag ).replace(/!/g, "%21"); if (state.tag[0] === "!") { tagStr = "!" + tagStr; } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") { tagStr = "!!" + tagStr.slice(18); } else { tagStr = "!<" + tagStr + ">"; } state.dump = tagStr + " " + state.dump; } } return true; } function getDuplicateReferences(object, state) { var objects = [], duplicatesIndexes = [], index, length; inspectNode(object, objects, duplicatesIndexes); for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { state.duplicates.push(objects[duplicatesIndexes[index]]); } state.usedDuplicates = new Array(length); } function inspectNode(object, objects, duplicatesIndexes) { var objectKeyList, index, length; if (object !== null && typeof object === "object") { index = objects.indexOf(object); if (index !== -1) { if (duplicatesIndexes.indexOf(index) === -1) { duplicatesIndexes.push(index); } } else { objects.push(object); if (Array.isArray(object)) { for (index = 0, length = object.length; index < length; index += 1) { inspectNode(object[index], objects, duplicatesIndexes); } } else { objectKeyList = Object.keys(object); for (index = 0, length = objectKeyList.length; index < length; index += 1) { inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); } } } } } function dump(input, options) { options = options || {}; var state = new State(options); if (!state.noRefs) getDuplicateReferences(input, state); var value = input; if (state.replacer) { value = state.replacer.call({ "": value }, "", value); } if (writeNode(state, 0, value, true, true)) return state.dump + "\n"; return ""; } module2.exports.dump = dump; } }); // ../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/index.js var require_js_yaml3 = __commonJS2({ "../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/index.js"(exports2, module2) { "use strict"; var loader = require_loader2(); var dumper = require_dumper2(); function renamed(from, to) { return function() { throw new Error("Function yaml." + from + " is removed in js-yaml 4. Use yaml." + to + " instead, which is now safe by default."); }; } module2.exports.Type = require_type2(); module2.exports.Schema = require_schema2(); module2.exports.FAILSAFE_SCHEMA = require_failsafe2(); module2.exports.JSON_SCHEMA = require_json4(); module2.exports.CORE_SCHEMA = require_core2(); module2.exports.DEFAULT_SCHEMA = require_default(); module2.exports.load = loader.load; module2.exports.loadAll = loader.loadAll; module2.exports.dump = dumper.dump; module2.exports.YAMLException = require_exception2(); module2.exports.types = { binary: require_binary2(), float: require_float2(), map: require_map2(), null: require_null2(), pairs: require_pairs2(), set: require_set2(), timestamp: require_timestamp2(), bool: require_bool2(), int: require_int2(), merge: require_merge3(), omap: require_omap2(), seq: require_seq2(), str: require_str2() }; module2.exports.safeLoad = renamed("safeLoad", "load"); module2.exports.safeLoadAll = renamed("safeLoadAll", "loadAll"); module2.exports.safeDump = renamed("safeDump", "dump"); } }); // ../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js var require_old = __commonJS2({ "../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js"(exports2) { var pathModule = __require("path"); var isWindows = process.platform === "win32"; var fs15 = __require("fs"); var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); function rethrow() { var callback; if (DEBUG) { var backtrace = new Error(); callback = debugCallback; } else callback = missingCallback; return callback; function debugCallback(err) { if (err) { backtrace.message = err.message; err = backtrace; missingCallback(err); } } function missingCallback(err) { if (err) { if (process.throwDeprecation) throw err; else if (!process.noDeprecation) { var msg = "fs: missing callback " + (err.stack || err.message); if (process.traceDeprecation) console.trace(msg); else console.error(msg); } } } } function maybeCallback(cb) { return typeof cb === "function" ? cb : rethrow(); } var normalize4 = pathModule.normalize; if (isWindows) { nextPartRe = /(.*?)(?:[\/\\]+|$)/g; } else { nextPartRe = /(.*?)(?:[\/]+|$)/g; } var nextPartRe; if (isWindows) { splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; } else { splitRootRe = /^[\/]*/; } var splitRootRe; exports2.realpathSync = function realpathSync(p, cache) { p = pathModule.resolve(p); if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { return cache[p]; } var original = p, seenLinks = {}, knownHard = {}; var pos; var current; var base; var previous; start(); function start() { var m = splitRootRe.exec(p); pos = m[0].length; current = m[0]; base = m[0]; previous = ""; if (isWindows && !knownHard[base]) { fs15.lstatSync(base); knownHard[base] = true; } } while (pos < p.length) { nextPartRe.lastIndex = pos; var result = nextPartRe.exec(p); previous = current; current += result[0]; base = previous + result[1]; pos = nextPartRe.lastIndex; if (knownHard[base] || cache && cache[base] === base) { continue; } var resolvedLink; if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { resolvedLink = cache[base]; } else { var stat2 = fs15.lstatSync(base); if (!stat2.isSymbolicLink()) { knownHard[base] = true; if (cache) cache[base] = base; continue; } var linkTarget = null; if (!isWindows) { var id = stat2.dev.toString(32) + ":" + stat2.ino.toString(32); if (seenLinks.hasOwnProperty(id)) { linkTarget = seenLinks[id]; } } if (linkTarget === null) { fs15.statSync(base); linkTarget = fs15.readlinkSync(base); } resolvedLink = pathModule.resolve(previous, linkTarget); if (cache) cache[base] = resolvedLink; if (!isWindows) seenLinks[id] = linkTarget; } p = pathModule.resolve(resolvedLink, p.slice(pos)); start(); } if (cache) cache[original] = p; return p; }; exports2.realpath = function realpath3(p, cache, cb) { if (typeof cb !== "function") { cb = maybeCallback(cache); cache = null; } p = pathModule.resolve(p); if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { return process.nextTick(cb.bind(null, null, cache[p])); } var original = p, seenLinks = {}, knownHard = {}; var pos; var current; var base; var previous; start(); function start() { var m = splitRootRe.exec(p); pos = m[0].length; current = m[0]; base = m[0]; previous = ""; if (isWindows && !knownHard[base]) { fs15.lstat(base, function(err) { if (err) return cb(err); knownHard[base] = true; LOOP(); }); } else { process.nextTick(LOOP); } } function LOOP() { if (pos >= p.length) { if (cache) cache[original] = p; return cb(null, p); } nextPartRe.lastIndex = pos; var result = nextPartRe.exec(p); previous = current; current += result[0]; base = previous + result[1]; pos = nextPartRe.lastIndex; if (knownHard[base] || cache && cache[base] === base) { return process.nextTick(LOOP); } if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { return gotResolvedLink(cache[base]); } return fs15.lstat(base, gotStat); } function gotStat(err, stat2) { if (err) return cb(err); if (!stat2.isSymbolicLink()) { knownHard[base] = true; if (cache) cache[base] = base; return process.nextTick(LOOP); } if (!isWindows) { var id = stat2.dev.toString(32) + ":" + stat2.ino.toString(32); if (seenLinks.hasOwnProperty(id)) { return gotTarget(null, seenLinks[id], base); } } fs15.stat(base, function(err2) { if (err2) return cb(err2); fs15.readlink(base, function(err3, target) { if (!isWindows) seenLinks[id] = target; gotTarget(err3, target); }); }); } function gotTarget(err, target, base2) { if (err) return cb(err); var resolvedLink = pathModule.resolve(previous, target); if (cache) cache[base2] = resolvedLink; gotResolvedLink(resolvedLink); } function gotResolvedLink(resolvedLink) { p = pathModule.resolve(resolvedLink, p.slice(pos)); start(); } }; } }); // ../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js var require_fs7 = __commonJS2({ "../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js"(exports2, module2) { module2.exports = realpath3; realpath3.realpath = realpath3; realpath3.sync = realpathSync; realpath3.realpathSync = realpathSync; realpath3.monkeypatch = monkeypatch; realpath3.unmonkeypatch = unmonkeypatch; var fs15 = __require("fs"); var origRealpath = fs15.realpath; var origRealpathSync = fs15.realpathSync; var version2 = process.version; var ok = /^v[0-5]\./.test(version2); var old = require_old(); function newError(er) { return er && er.syscall === "realpath" && (er.code === "ELOOP" || er.code === "ENOMEM" || er.code === "ENAMETOOLONG"); } function realpath3(p, cache, cb) { if (ok) { return origRealpath(p, cache, cb); } if (typeof cache === "function") { cb = cache; cache = null; } origRealpath(p, cache, function(er, result) { if (newError(er)) { old.realpath(p, cache, cb); } else { cb(er, result); } }); } function realpathSync(p, cache) { if (ok) { return origRealpathSync(p, cache); } try { return origRealpathSync(p, cache); } catch (er) { if (newError(er)) { return old.realpathSync(p, cache); } else { throw er; } } } function monkeypatch() { fs15.realpath = realpath3; fs15.realpathSync = realpathSync; } function unmonkeypatch() { fs15.realpath = origRealpath; fs15.realpathSync = origRealpathSync; } } }); // ../../node_modules/.pnpm/glob@8.0.3/node_modules/glob/common.js var require_common7 = __commonJS2({ "../../node_modules/.pnpm/glob@8.0.3/node_modules/glob/common.js"(exports2) { exports2.setopts = setopts; exports2.ownProp = ownProp; exports2.makeAbs = makeAbs; exports2.finish = finish; exports2.mark = mark; exports2.isIgnored = isIgnored; exports2.childrenIgnored = childrenIgnored; function ownProp(obj, field) { return Object.prototype.hasOwnProperty.call(obj, field); } var fs15 = __require("fs"); var path11 = __require("path"); var minimatch5 = require_minimatch(); var isAbsolute2 = __require("path").isAbsolute; var Minimatch = minimatch5.Minimatch; function alphasort(a, b) { return a.localeCompare(b, "en"); } function setupIgnores(self2, options) { self2.ignore = options.ignore || []; if (!Array.isArray(self2.ignore)) self2.ignore = [self2.ignore]; if (self2.ignore.length) { self2.ignore = self2.ignore.map(ignoreMap); } } function ignoreMap(pattern) { var gmatcher = null; if (pattern.slice(-3) === "/**") { var gpattern = pattern.replace(/(\/\*\*)+$/, ""); gmatcher = new Minimatch(gpattern, { dot: true }); } return { matcher: new Minimatch(pattern, { dot: true }), gmatcher }; } function setopts(self2, pattern, options) { if (!options) options = {}; if (options.matchBase && -1 === pattern.indexOf("/")) { if (options.noglobstar) { throw new Error("base matching requires globstar"); } pattern = "**/" + pattern; } self2.silent = !!options.silent; self2.pattern = pattern; self2.strict = options.strict !== false; self2.realpath = !!options.realpath; self2.realpathCache = options.realpathCache || /* @__PURE__ */ Object.create(null); self2.follow = !!options.follow; self2.dot = !!options.dot; self2.mark = !!options.mark; self2.nodir = !!options.nodir; if (self2.nodir) self2.mark = true; self2.sync = !!options.sync; self2.nounique = !!options.nounique; self2.nonull = !!options.nonull; self2.nosort = !!options.nosort; self2.nocase = !!options.nocase; self2.stat = !!options.stat; self2.noprocess = !!options.noprocess; self2.absolute = !!options.absolute; self2.fs = options.fs || fs15; self2.maxLength = options.maxLength || Infinity; self2.cache = options.cache || /* @__PURE__ */ Object.create(null); self2.statCache = options.statCache || /* @__PURE__ */ Object.create(null); self2.symlinks = options.symlinks || /* @__PURE__ */ Object.create(null); setupIgnores(self2, options); self2.changedCwd = false; var cwd = process.cwd(); if (!ownProp(options, "cwd")) self2.cwd = path11.resolve(cwd); else { self2.cwd = path11.resolve(options.cwd); self2.changedCwd = self2.cwd !== cwd; } self2.root = options.root || path11.resolve(self2.cwd, "/"); self2.root = path11.resolve(self2.root); self2.cwdAbs = isAbsolute2(self2.cwd) ? self2.cwd : makeAbs(self2, self2.cwd); self2.nomount = !!options.nomount; if (process.platform === "win32") { self2.root = self2.root.replace(/\\/g, "/"); self2.cwd = self2.cwd.replace(/\\/g, "/"); self2.cwdAbs = self2.cwdAbs.replace(/\\/g, "/"); } options.nonegate = true; options.nocomment = true; options.allowWindowsEscape = true; self2.minimatch = new Minimatch(pattern, options); self2.options = self2.minimatch.options; } function finish(self2) { var nou = self2.nounique; var all = nou ? [] : /* @__PURE__ */ Object.create(null); for (var i = 0, l = self2.matches.length; i < l; i++) { var matches = self2.matches[i]; if (!matches || Object.keys(matches).length === 0) { if (self2.nonull) { var literal = self2.minimatch.globSet[i]; if (nou) all.push(literal); else all[literal] = true; } } else { var m = Object.keys(matches); if (nou) all.push.apply(all, m); else m.forEach(function(m2) { all[m2] = true; }); } } if (!nou) all = Object.keys(all); if (!self2.nosort) all = all.sort(alphasort); if (self2.mark) { for (var i = 0; i < all.length; i++) { all[i] = self2._mark(all[i]); } if (self2.nodir) { all = all.filter(function(e2) { var notDir = !/\/$/.test(e2); var c = self2.cache[e2] || self2.cache[makeAbs(self2, e2)]; if (notDir && c) notDir = c !== "DIR" && !Array.isArray(c); return notDir; }); } } if (self2.ignore.length) all = all.filter(function(m2) { return !isIgnored(self2, m2); }); self2.found = all; } function mark(self2, p) { var abs = makeAbs(self2, p); var c = self2.cache[abs]; var m = p; if (c) { var isDir = c === "DIR" || Array.isArray(c); var slash = p.slice(-1) === "/"; if (isDir && !slash) m += "/"; else if (!isDir && slash) m = m.slice(0, -1); if (m !== p) { var mabs = makeAbs(self2, m); self2.statCache[mabs] = self2.statCache[abs]; self2.cache[mabs] = self2.cache[abs]; } } return m; } function makeAbs(self2, f) { var abs = f; if (f.charAt(0) === "/") { abs = path11.join(self2.root, f); } else if (isAbsolute2(f) || f === "") { abs = f; } else if (self2.changedCwd) { abs = path11.resolve(self2.cwd, f); } else { abs = path11.resolve(f); } if (process.platform === "win32") abs = abs.replace(/\\/g, "/"); return abs; } function isIgnored(self2, path12) { if (!self2.ignore.length) return false; return self2.ignore.some(function(item) { return item.matcher.match(path12) || !!(item.gmatcher && item.gmatcher.match(path12)); }); } function childrenIgnored(self2, path12) { if (!self2.ignore.length) return false; return self2.ignore.some(function(item) { return !!(item.gmatcher && item.gmatcher.match(path12)); }); } } }); // ../../node_modules/.pnpm/glob@8.0.3/node_modules/glob/sync.js var require_sync7 = __commonJS2({ "../../node_modules/.pnpm/glob@8.0.3/node_modules/glob/sync.js"(exports2, module2) { module2.exports = globSync; globSync.GlobSync = GlobSync; var rp = require_fs7(); var minimatch5 = require_minimatch(); var Minimatch = minimatch5.Minimatch; var Glob = require_glob().Glob; var util = __require("util"); var path11 = __require("path"); var assert = __require("assert"); var isAbsolute2 = __require("path").isAbsolute; var common2 = require_common7(); var setopts = common2.setopts; var ownProp = common2.ownProp; var childrenIgnored = common2.childrenIgnored; var isIgnored = common2.isIgnored; function globSync(pattern, options) { if (typeof options === "function" || arguments.length === 3) throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); return new GlobSync(pattern, options).found; } function GlobSync(pattern, options) { if (!pattern) throw new Error("must provide pattern"); if (typeof options === "function" || arguments.length === 3) throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); if (!(this instanceof GlobSync)) return new GlobSync(pattern, options); setopts(this, pattern, options); if (this.noprocess) return this; var n = this.minimatch.set.length; this.matches = new Array(n); for (var i = 0; i < n; i++) { this._process(this.minimatch.set[i], i, false); } this._finish(); } GlobSync.prototype._finish = function() { assert.ok(this instanceof GlobSync); if (this.realpath) { var self2 = this; this.matches.forEach(function(matchset, index) { var set2 = self2.matches[index] = /* @__PURE__ */ Object.create(null); for (var p in matchset) { try { p = self2._makeAbs(p); var real = rp.realpathSync(p, self2.realpathCache); set2[real] = true; } catch (er) { if (er.syscall === "stat") set2[self2._makeAbs(p)] = true; else throw er; } } }); } common2.finish(this); }; GlobSync.prototype._process = function(pattern, index, inGlobStar) { assert.ok(this instanceof GlobSync); var n = 0; while (typeof pattern[n] === "string") { n++; } var prefix; switch (n) { case pattern.length: this._processSimple(pattern.join("/"), index); return; case 0: prefix = null; break; default: prefix = pattern.slice(0, n).join("/"); break; } var remain = pattern.slice(n); var read; if (prefix === null) read = "."; else if (isAbsolute2(prefix) || isAbsolute2(pattern.map(function(p) { return typeof p === "string" ? p : "[*]"; }).join("/"))) { if (!prefix || !isAbsolute2(prefix)) prefix = "/" + prefix; read = prefix; } else read = prefix; var abs = this._makeAbs(read); if (childrenIgnored(this, read)) return; var isGlobStar = remain[0] === minimatch5.GLOBSTAR; if (isGlobStar) this._processGlobStar(prefix, read, abs, remain, index, inGlobStar); else this._processReaddir(prefix, read, abs, remain, index, inGlobStar); }; GlobSync.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar) { var entries = this._readdir(abs, inGlobStar); if (!entries) return; var pn = remain[0]; var negate = !!this.minimatch.negate; var rawGlob = pn._glob; var dotOk = this.dot || rawGlob.charAt(0) === "."; var matchedEntries = []; for (var i = 0; i < entries.length; i++) { var e2 = entries[i]; if (e2.charAt(0) !== "." || dotOk) { var m; if (negate && !prefix) { m = !e2.match(pn); } else { m = e2.match(pn); } if (m) matchedEntries.push(e2); } } var len = matchedEntries.length; if (len === 0) return; if (remain.length === 1 && !this.mark && !this.stat) { if (!this.matches[index]) this.matches[index] = /* @__PURE__ */ Object.create(null); for (var i = 0; i < len; i++) { var e2 = matchedEntries[i]; if (prefix) { if (prefix.slice(-1) !== "/") e2 = prefix + "/" + e2; else e2 = prefix + e2; } if (e2.charAt(0) === "/" && !this.nomount) { e2 = path11.join(this.root, e2); } this._emitMatch(index, e2); } return; } remain.shift(); for (var i = 0; i < len; i++) { var e2 = matchedEntries[i]; var newPattern; if (prefix) newPattern = [prefix, e2]; else newPattern = [e2]; this._process(newPattern.concat(remain), index, inGlobStar); } }; GlobSync.prototype._emitMatch = function(index, e2) { if (isIgnored(this, e2)) return; var abs = this._makeAbs(e2); if (this.mark) e2 = this._mark(e2); if (this.absolute) { e2 = abs; } if (this.matches[index][e2]) return; if (this.nodir) { var c = this.cache[abs]; if (c === "DIR" || Array.isArray(c)) return; } this.matches[index][e2] = true; if (this.stat) this._stat(e2); }; GlobSync.prototype._readdirInGlobStar = function(abs) { if (this.follow) return this._readdir(abs, false); var entries; var lstat3; var stat2; try { lstat3 = this.fs.lstatSync(abs); } catch (er) { if (er.code === "ENOENT") { return null; } } var isSym = lstat3 && lstat3.isSymbolicLink(); this.symlinks[abs] = isSym; if (!isSym && lstat3 && !lstat3.isDirectory()) this.cache[abs] = "FILE"; else entries = this._readdir(abs, false); return entries; }; GlobSync.prototype._readdir = function(abs, inGlobStar) { var entries; if (inGlobStar && !ownProp(this.symlinks, abs)) return this._readdirInGlobStar(abs); if (ownProp(this.cache, abs)) { var c = this.cache[abs]; if (!c || c === "FILE") return null; if (Array.isArray(c)) return c; } try { return this._readdirEntries(abs, this.fs.readdirSync(abs)); } catch (er) { this._readdirError(abs, er); return null; } }; GlobSync.prototype._readdirEntries = function(abs, entries) { if (!this.mark && !this.stat) { for (var i = 0; i < entries.length; i++) { var e2 = entries[i]; if (abs === "/") e2 = abs + e2; else e2 = abs + "/" + e2; this.cache[e2] = true; } } this.cache[abs] = entries; return entries; }; GlobSync.prototype._readdirError = function(f, er) { switch (er.code) { case "ENOTSUP": case "ENOTDIR": var abs = this._makeAbs(f); this.cache[abs] = "FILE"; if (abs === this.cwdAbs) { var error3 = new Error(er.code + " invalid cwd " + this.cwd); error3.path = this.cwd; error3.code = er.code; throw error3; } break; case "ENOENT": case "ELOOP": case "ENAMETOOLONG": case "UNKNOWN": this.cache[this._makeAbs(f)] = false; break; default: this.cache[this._makeAbs(f)] = false; if (this.strict) throw er; if (!this.silent) console.error("glob error", er); break; } }; GlobSync.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar) { var entries = this._readdir(abs, inGlobStar); if (!entries) return; var remainWithoutGlobStar = remain.slice(1); var gspref = prefix ? [prefix] : []; var noGlobStar = gspref.concat(remainWithoutGlobStar); this._process(noGlobStar, index, false); var len = entries.length; var isSym = this.symlinks[abs]; if (isSym && inGlobStar) return; for (var i = 0; i < len; i++) { var e2 = entries[i]; if (e2.charAt(0) === "." && !this.dot) continue; var instead = gspref.concat(entries[i], remainWithoutGlobStar); this._process(instead, index, true); var below = gspref.concat(entries[i], remain); this._process(below, index, true); } }; GlobSync.prototype._processSimple = function(prefix, index) { var exists = this._stat(prefix); if (!this.matches[index]) this.matches[index] = /* @__PURE__ */ Object.create(null); if (!exists) return; if (prefix && isAbsolute2(prefix) && !this.nomount) { var trail = /[\/\\]$/.test(prefix); if (prefix.charAt(0) === "/") { prefix = path11.join(this.root, prefix); } else { prefix = path11.resolve(this.root, prefix); if (trail) prefix += "/"; } } if (process.platform === "win32") prefix = prefix.replace(/\\/g, "/"); this._emitMatch(index, prefix); }; GlobSync.prototype._stat = function(f) { var abs = this._makeAbs(f); var needDir = f.slice(-1) === "/"; if (f.length > this.maxLength) return false; if (!this.stat && ownProp(this.cache, abs)) { var c = this.cache[abs]; if (Array.isArray(c)) c = "DIR"; if (!needDir || c === "DIR") return c; if (needDir && c === "FILE") return false; } var exists; var stat2 = this.statCache[abs]; if (!stat2) { var lstat3; try { lstat3 = this.fs.lstatSync(abs); } catch (er) { if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { this.statCache[abs] = false; return false; } } if (lstat3 && lstat3.isSymbolicLink()) { try { stat2 = this.fs.statSync(abs); } catch (er) { stat2 = lstat3; } } else { stat2 = lstat3; } } this.statCache[abs] = stat2; var c = true; if (stat2) c = stat2.isDirectory() ? "DIR" : "FILE"; this.cache[abs] = this.cache[abs] || c; if (needDir && c === "FILE") return false; return c; }; GlobSync.prototype._mark = function(p) { return common2.mark(this, p); }; GlobSync.prototype._makeAbs = function(f) { return common2.makeAbs(this, f); }; } }); // ../../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js var require_inflight = __commonJS2({ "../../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js"(exports2, module2) { var wrappy = require_wrappy(); var reqs = /* @__PURE__ */ Object.create(null); var once2 = require_once(); module2.exports = wrappy(inflight); function inflight(key, cb) { if (reqs[key]) { reqs[key].push(cb); return null; } else { reqs[key] = [cb]; return makeres(key); } } function makeres(key) { return once2(function RES() { var cbs = reqs[key]; var len = cbs.length; var args2 = slice(arguments); try { for (var i = 0; i < len; i++) { cbs[i].apply(null, args2); } } finally { if (cbs.length > len) { cbs.splice(0, len); process.nextTick(function() { RES.apply(null, args2); }); } else { delete reqs[key]; } } }); } function slice(args2) { var length = args2.length; var array = []; for (var i = 0; i < length; i++) array[i] = args2[i]; return array; } } }); // ../../node_modules/.pnpm/glob@8.0.3/node_modules/glob/glob.js var require_glob = __commonJS2({ "../../node_modules/.pnpm/glob@8.0.3/node_modules/glob/glob.js"(exports2, module2) { module2.exports = glob; var rp = require_fs7(); var minimatch5 = require_minimatch(); var Minimatch = minimatch5.Minimatch; var inherits = require_inherits(); var EE = __require("events").EventEmitter; var path11 = __require("path"); var assert = __require("assert"); var isAbsolute2 = __require("path").isAbsolute; var globSync = require_sync7(); var common2 = require_common7(); var setopts = common2.setopts; var ownProp = common2.ownProp; var inflight = require_inflight(); var util = __require("util"); var childrenIgnored = common2.childrenIgnored; var isIgnored = common2.isIgnored; var once2 = require_once(); function glob(pattern, options, cb) { if (typeof options === "function") cb = options, options = {}; if (!options) options = {}; if (options.sync) { if (cb) throw new TypeError("callback provided to sync glob"); return globSync(pattern, options); } return new Glob(pattern, options, cb); } glob.sync = globSync; var GlobSync = glob.GlobSync = globSync.GlobSync; glob.glob = glob; function extend(origin, add9) { if (add9 === null || typeof add9 !== "object") { return origin; } var keys = Object.keys(add9); var i = keys.length; while (i--) { origin[keys[i]] = add9[keys[i]]; } return origin; } glob.hasMagic = function(pattern, options_) { var options = extend({}, options_); options.noprocess = true; var g = new Glob(pattern, options); var set2 = g.minimatch.set; if (!pattern) return false; if (set2.length > 1) return true; for (var j = 0; j < set2[0].length; j++) { if (typeof set2[0][j] !== "string") return true; } return false; }; glob.Glob = Glob; inherits(Glob, EE); function Glob(pattern, options, cb) { if (typeof options === "function") { cb = options; options = null; } if (options && options.sync) { if (cb) throw new TypeError("callback provided to sync glob"); return new GlobSync(pattern, options); } if (!(this instanceof Glob)) return new Glob(pattern, options, cb); setopts(this, pattern, options); this._didRealPath = false; var n = this.minimatch.set.length; this.matches = new Array(n); if (typeof cb === "function") { cb = once2(cb); this.on("error", cb); this.on("end", function(matches) { cb(null, matches); }); } var self2 = this; this._processing = 0; this._emitQueue = []; this._processQueue = []; this.paused = false; if (this.noprocess) return this; if (n === 0) return done(); var sync = true; for (var i = 0; i < n; i++) { this._process(this.minimatch.set[i], i, false, done); } sync = false; function done() { --self2._processing; if (self2._processing <= 0) { if (sync) { process.nextTick(function() { self2._finish(); }); } else { self2._finish(); } } } } Glob.prototype._finish = function() { assert(this instanceof Glob); if (this.aborted) return; if (this.realpath && !this._didRealpath) return this._realpath(); common2.finish(this); this.emit("end", this.found); }; Glob.prototype._realpath = function() { if (this._didRealpath) return; this._didRealpath = true; var n = this.matches.length; if (n === 0) return this._finish(); var self2 = this; for (var i = 0; i < this.matches.length; i++) this._realpathSet(i, next); function next() { if (--n === 0) self2._finish(); } }; Glob.prototype._realpathSet = function(index, cb) { var matchset = this.matches[index]; if (!matchset) return cb(); var found = Object.keys(matchset); var self2 = this; var n = found.length; if (n === 0) return cb(); var set2 = this.matches[index] = /* @__PURE__ */ Object.create(null); found.forEach(function(p, i) { p = self2._makeAbs(p); rp.realpath(p, self2.realpathCache, function(er, real) { if (!er) set2[real] = true; else if (er.syscall === "stat") set2[p] = true; else self2.emit("error", er); if (--n === 0) { self2.matches[index] = set2; cb(); } }); }); }; Glob.prototype._mark = function(p) { return common2.mark(this, p); }; Glob.prototype._makeAbs = function(f) { return common2.makeAbs(this, f); }; Glob.prototype.abort = function() { this.aborted = true; this.emit("abort"); }; Glob.prototype.pause = function() { if (!this.paused) { this.paused = true; this.emit("pause"); } }; Glob.prototype.resume = function() { if (this.paused) { this.emit("resume"); this.paused = false; if (this._emitQueue.length) { var eq = this._emitQueue.slice(0); this._emitQueue.length = 0; for (var i = 0; i < eq.length; i++) { var e2 = eq[i]; this._emitMatch(e2[0], e2[1]); } } if (this._processQueue.length) { var pq = this._processQueue.slice(0); this._processQueue.length = 0; for (var i = 0; i < pq.length; i++) { var p = pq[i]; this._processing--; this._process(p[0], p[1], p[2], p[3]); } } } }; Glob.prototype._process = function(pattern, index, inGlobStar, cb) { assert(this instanceof Glob); assert(typeof cb === "function"); if (this.aborted) return; this._processing++; if (this.paused) { this._processQueue.push([pattern, index, inGlobStar, cb]); return; } var n = 0; while (typeof pattern[n] === "string") { n++; } var prefix; switch (n) { case pattern.length: this._processSimple(pattern.join("/"), index, cb); return; case 0: prefix = null; break; default: prefix = pattern.slice(0, n).join("/"); break; } var remain = pattern.slice(n); var read; if (prefix === null) read = "."; else if (isAbsolute2(prefix) || isAbsolute2(pattern.map(function(p) { return typeof p === "string" ? p : "[*]"; }).join("/"))) { if (!prefix || !isAbsolute2(prefix)) prefix = "/" + prefix; read = prefix; } else read = prefix; var abs = this._makeAbs(read); if (childrenIgnored(this, read)) return cb(); var isGlobStar = remain[0] === minimatch5.GLOBSTAR; if (isGlobStar) this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb); else this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb); }; Glob.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar, cb) { var self2 = this; this._readdir(abs, inGlobStar, function(er, entries) { return self2._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb); }); }; Glob.prototype._processReaddir2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { if (!entries) return cb(); var pn = remain[0]; var negate = !!this.minimatch.negate; var rawGlob = pn._glob; var dotOk = this.dot || rawGlob.charAt(0) === "."; var matchedEntries = []; for (var i = 0; i < entries.length; i++) { var e2 = entries[i]; if (e2.charAt(0) !== "." || dotOk) { var m; if (negate && !prefix) { m = !e2.match(pn); } else { m = e2.match(pn); } if (m) matchedEntries.push(e2); } } var len = matchedEntries.length; if (len === 0) return cb(); if (remain.length === 1 && !this.mark && !this.stat) { if (!this.matches[index]) this.matches[index] = /* @__PURE__ */ Object.create(null); for (var i = 0; i < len; i++) { var e2 = matchedEntries[i]; if (prefix) { if (prefix !== "/") e2 = prefix + "/" + e2; else e2 = prefix + e2; } if (e2.charAt(0) === "/" && !this.nomount) { e2 = path11.join(this.root, e2); } this._emitMatch(index, e2); } return cb(); } remain.shift(); for (var i = 0; i < len; i++) { var e2 = matchedEntries[i]; var newPattern; if (prefix) { if (prefix !== "/") e2 = prefix + "/" + e2; else e2 = prefix + e2; } this._process([e2].concat(remain), index, inGlobStar, cb); } cb(); }; Glob.prototype._emitMatch = function(index, e2) { if (this.aborted) return; if (isIgnored(this, e2)) return; if (this.paused) { this._emitQueue.push([index, e2]); return; } var abs = isAbsolute2(e2) ? e2 : this._makeAbs(e2); if (this.mark) e2 = this._mark(e2); if (this.absolute) e2 = abs; if (this.matches[index][e2]) return; if (this.nodir) { var c = this.cache[abs]; if (c === "DIR" || Array.isArray(c)) return; } this.matches[index][e2] = true; var st = this.statCache[abs]; if (st) this.emit("stat", e2, st); this.emit("match", e2); }; Glob.prototype._readdirInGlobStar = function(abs, cb) { if (this.aborted) return; if (this.follow) return this._readdir(abs, false, cb); var lstatkey = "lstat\0" + abs; var self2 = this; var lstatcb = inflight(lstatkey, lstatcb_); if (lstatcb) self2.fs.lstat(abs, lstatcb); function lstatcb_(er, lstat3) { if (er && er.code === "ENOENT") return cb(); var isSym = lstat3 && lstat3.isSymbolicLink(); self2.symlinks[abs] = isSym; if (!isSym && lstat3 && !lstat3.isDirectory()) { self2.cache[abs] = "FILE"; cb(); } else self2._readdir(abs, false, cb); } }; Glob.prototype._readdir = function(abs, inGlobStar, cb) { if (this.aborted) return; cb = inflight("readdir\0" + abs + "\0" + inGlobStar, cb); if (!cb) return; if (inGlobStar && !ownProp(this.symlinks, abs)) return this._readdirInGlobStar(abs, cb); if (ownProp(this.cache, abs)) { var c = this.cache[abs]; if (!c || c === "FILE") return cb(); if (Array.isArray(c)) return cb(null, c); } var self2 = this; self2.fs.readdir(abs, readdirCb(this, abs, cb)); }; function readdirCb(self2, abs, cb) { return function(er, entries) { if (er) self2._readdirError(abs, er, cb); else self2._readdirEntries(abs, entries, cb); }; } Glob.prototype._readdirEntries = function(abs, entries, cb) { if (this.aborted) return; if (!this.mark && !this.stat) { for (var i = 0; i < entries.length; i++) { var e2 = entries[i]; if (abs === "/") e2 = abs + e2; else e2 = abs + "/" + e2; this.cache[e2] = true; } } this.cache[abs] = entries; return cb(null, entries); }; Glob.prototype._readdirError = function(f, er, cb) { if (this.aborted) return; switch (er.code) { case "ENOTSUP": case "ENOTDIR": var abs = this._makeAbs(f); this.cache[abs] = "FILE"; if (abs === this.cwdAbs) { var error3 = new Error(er.code + " invalid cwd " + this.cwd); error3.path = this.cwd; error3.code = er.code; this.emit("error", error3); this.abort(); } break; case "ENOENT": case "ELOOP": case "ENAMETOOLONG": case "UNKNOWN": this.cache[this._makeAbs(f)] = false; break; default: this.cache[this._makeAbs(f)] = false; if (this.strict) { this.emit("error", er); this.abort(); } if (!this.silent) console.error("glob error", er); break; } return cb(); }; Glob.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar, cb) { var self2 = this; this._readdir(abs, inGlobStar, function(er, entries) { self2._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb); }); }; Glob.prototype._processGlobStar2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { if (!entries) return cb(); var remainWithoutGlobStar = remain.slice(1); var gspref = prefix ? [prefix] : []; var noGlobStar = gspref.concat(remainWithoutGlobStar); this._process(noGlobStar, index, false, cb); var isSym = this.symlinks[abs]; var len = entries.length; if (isSym && inGlobStar) return cb(); for (var i = 0; i < len; i++) { var e2 = entries[i]; if (e2.charAt(0) === "." && !this.dot) continue; var instead = gspref.concat(entries[i], remainWithoutGlobStar); this._process(instead, index, true, cb); var below = gspref.concat(entries[i], remain); this._process(below, index, true, cb); } cb(); }; Glob.prototype._processSimple = function(prefix, index, cb) { var self2 = this; this._stat(prefix, function(er, exists) { self2._processSimple2(prefix, index, er, exists, cb); }); }; Glob.prototype._processSimple2 = function(prefix, index, er, exists, cb) { if (!this.matches[index]) this.matches[index] = /* @__PURE__ */ Object.create(null); if (!exists) return cb(); if (prefix && isAbsolute2(prefix) && !this.nomount) { var trail = /[\/\\]$/.test(prefix); if (prefix.charAt(0) === "/") { prefix = path11.join(this.root, prefix); } else { prefix = path11.resolve(this.root, prefix); if (trail) prefix += "/"; } } if (process.platform === "win32") prefix = prefix.replace(/\\/g, "/"); this._emitMatch(index, prefix); cb(); }; Glob.prototype._stat = function(f, cb) { var abs = this._makeAbs(f); var needDir = f.slice(-1) === "/"; if (f.length > this.maxLength) return cb(); if (!this.stat && ownProp(this.cache, abs)) { var c = this.cache[abs]; if (Array.isArray(c)) c = "DIR"; if (!needDir || c === "DIR") return cb(null, c); if (needDir && c === "FILE") return cb(); } var exists; var stat2 = this.statCache[abs]; if (stat2 !== void 0) { if (stat2 === false) return cb(null, stat2); else { var type = stat2.isDirectory() ? "DIR" : "FILE"; if (needDir && type === "FILE") return cb(); else return cb(null, type, stat2); } } var self2 = this; var statcb = inflight("stat\0" + abs, lstatcb_); if (statcb) self2.fs.lstat(abs, statcb); function lstatcb_(er, lstat3) { if (lstat3 && lstat3.isSymbolicLink()) { return self2.fs.stat(abs, function(er2, stat3) { if (er2) self2._stat2(f, abs, null, lstat3, cb); else self2._stat2(f, abs, er2, stat3, cb); }); } else { self2._stat2(f, abs, er, lstat3, cb); } } }; Glob.prototype._stat2 = function(f, abs, er, stat2, cb) { if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { this.statCache[abs] = false; return cb(); } var needDir = f.slice(-1) === "/"; this.statCache[abs] = stat2; if (abs.slice(-1) === "/" && stat2 && !stat2.isDirectory()) return cb(null, false, stat2); var c = true; if (stat2) c = stat2.isDirectory() ? "DIR" : "FILE"; this.cache[abs] = this.cache[abs] || c; if (needDir && c === "FILE") return cb(); return cb(null, c, stat2); }; } }); // ../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/unicode.js var require_unicode2 = __commonJS2({ "../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/unicode.js"(exports2, module2) { module2.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; module2.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; module2.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; } }); // ../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/util.js var require_util5 = __commonJS2({ "../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/util.js"(exports2, module2) { var unicode = require_unicode2(); module2.exports = { isSpaceSeparator(c) { return typeof c === "string" && unicode.Space_Separator.test(c); }, isIdStartChar(c) { return typeof c === "string" && (c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c === "$" || c === "_" || unicode.ID_Start.test(c)); }, isIdContinueChar(c) { return typeof c === "string" && (c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c >= "0" && c <= "9" || c === "$" || c === "_" || c === "\u200C" || c === "\u200D" || unicode.ID_Continue.test(c)); }, isDigit(c) { return typeof c === "string" && /[0-9]/.test(c); }, isHexDigit(c) { return typeof c === "string" && /[0-9A-Fa-f]/.test(c); } }; } }); // ../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/parse.js var require_parse5 = __commonJS2({ "../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/parse.js"(exports2, module2) { var util = require_util5(); var source; var parseState; var stack2; var pos; var line; var column; var token; var key; var root; module2.exports = function parse11(text, reviver) { source = String(text); parseState = "start"; stack2 = []; pos = 0; line = 1; column = 0; token = void 0; key = void 0; root = void 0; do { token = lex(); parseStates[parseState](); } while (token.type !== "eof"); if (typeof reviver === "function") { return internalize({ "": root }, "", reviver); } return root; }; function internalize(holder, name, reviver) { const value = holder[name]; if (value != null && typeof value === "object") { if (Array.isArray(value)) { for (let i = 0; i < value.length; i++) { const key2 = String(i); const replacement = internalize(value, key2, reviver); if (replacement === void 0) { delete value[key2]; } else { Object.defineProperty(value, key2, { value: replacement, writable: true, enumerable: true, configurable: true }); } } } else { for (const key2 in value) { const replacement = internalize(value, key2, reviver); if (replacement === void 0) { delete value[key2]; } else { Object.defineProperty(value, key2, { value: replacement, writable: true, enumerable: true, configurable: true }); } } } } return reviver.call(holder, name, value); } var lexState; var buffer; var doubleQuote; var sign; var c; function lex() { lexState = "default"; buffer = ""; doubleQuote = false; sign = 1; for (; ; ) { c = peek(); const token2 = lexStates[lexState](); if (token2) { return token2; } } } function peek() { if (source[pos]) { return String.fromCodePoint(source.codePointAt(pos)); } } function read() { const c2 = peek(); if (c2 === "\n") { line++; column = 0; } else if (c2) { column += c2.length; } else { column++; } if (c2) { pos += c2.length; } return c2; } var lexStates = { default() { switch (c) { case " ": case "\v": case "\f": case " ": case "\xA0": case "\uFEFF": case "\n": case "\r": case "\u2028": case "\u2029": read(); return; case "/": read(); lexState = "comment"; return; case void 0: read(); return newToken("eof"); } if (util.isSpaceSeparator(c)) { read(); return; } return lexStates[parseState](); }, comment() { switch (c) { case "*": read(); lexState = "multiLineComment"; return; case "/": read(); lexState = "singleLineComment"; return; } throw invalidChar(read()); }, multiLineComment() { switch (c) { case "*": read(); lexState = "multiLineCommentAsterisk"; return; case void 0: throw invalidChar(read()); } read(); }, multiLineCommentAsterisk() { switch (c) { case "*": read(); return; case "/": read(); lexState = "default"; return; case void 0: throw invalidChar(read()); } read(); lexState = "multiLineComment"; }, singleLineComment() { switch (c) { case "\n": case "\r": case "\u2028": case "\u2029": read(); lexState = "default"; return; case void 0: read(); return newToken("eof"); } read(); }, value() { switch (c) { case "{": case "[": return newToken("punctuator", read()); case "n": read(); literal("ull"); return newToken("null", null); case "t": read(); literal("rue"); return newToken("boolean", true); case "f": read(); literal("alse"); return newToken("boolean", false); case "-": case "+": if (read() === "-") { sign = -1; } lexState = "sign"; return; case ".": buffer = read(); lexState = "decimalPointLeading"; return; case "0": buffer = read(); lexState = "zero"; return; case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": buffer = read(); lexState = "decimalInteger"; return; case "I": read(); literal("nfinity"); return newToken("numeric", Infinity); case "N": read(); literal("aN"); return newToken("numeric", NaN); case '"': case "'": doubleQuote = read() === '"'; buffer = ""; lexState = "string"; return; } throw invalidChar(read()); }, identifierNameStartEscape() { if (c !== "u") { throw invalidChar(read()); } read(); const u = unicodeEscape(); switch (u) { case "$": case "_": break; default: if (!util.isIdStartChar(u)) { throw invalidIdentifier(); } break; } buffer += u; lexState = "identifierName"; }, identifierName() { switch (c) { case "$": case "_": case "\u200C": case "\u200D": buffer += read(); return; case "\\": read(); lexState = "identifierNameEscape"; return; } if (util.isIdContinueChar(c)) { buffer += read(); return; } return newToken("identifier", buffer); }, identifierNameEscape() { if (c !== "u") { throw invalidChar(read()); } read(); const u = unicodeEscape(); switch (u) { case "$": case "_": case "\u200C": case "\u200D": break; default: if (!util.isIdContinueChar(u)) { throw invalidIdentifier(); } break; } buffer += u; lexState = "identifierName"; }, sign() { switch (c) { case ".": buffer = read(); lexState = "decimalPointLeading"; return; case "0": buffer = read(); lexState = "zero"; return; case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": buffer = read(); lexState = "decimalInteger"; return; case "I": read(); literal("nfinity"); return newToken("numeric", sign * Infinity); case "N": read(); literal("aN"); return newToken("numeric", NaN); } throw invalidChar(read()); }, zero() { switch (c) { case ".": buffer += read(); lexState = "decimalPoint"; return; case "e": case "E": buffer += read(); lexState = "decimalExponent"; return; case "x": case "X": buffer += read(); lexState = "hexadecimal"; return; } return newToken("numeric", sign * 0); }, decimalInteger() { switch (c) { case ".": buffer += read(); lexState = "decimalPoint"; return; case "e": case "E": buffer += read(); lexState = "decimalExponent"; return; } if (util.isDigit(c)) { buffer += read(); return; } return newToken("numeric", sign * Number(buffer)); }, decimalPointLeading() { if (util.isDigit(c)) { buffer += read(); lexState = "decimalFraction"; return; } throw invalidChar(read()); }, decimalPoint() { switch (c) { case "e": case "E": buffer += read(); lexState = "decimalExponent"; return; } if (util.isDigit(c)) { buffer += read(); lexState = "decimalFraction"; return; } return newToken("numeric", sign * Number(buffer)); }, decimalFraction() { switch (c) { case "e": case "E": buffer += read(); lexState = "decimalExponent"; return; } if (util.isDigit(c)) { buffer += read(); return; } return newToken("numeric", sign * Number(buffer)); }, decimalExponent() { switch (c) { case "+": case "-": buffer += read(); lexState = "decimalExponentSign"; return; } if (util.isDigit(c)) { buffer += read(); lexState = "decimalExponentInteger"; return; } throw invalidChar(read()); }, decimalExponentSign() { if (util.isDigit(c)) { buffer += read(); lexState = "decimalExponentInteger"; return; } throw invalidChar(read()); }, decimalExponentInteger() { if (util.isDigit(c)) { buffer += read(); return; } return newToken("numeric", sign * Number(buffer)); }, hexadecimal() { if (util.isHexDigit(c)) { buffer += read(); lexState = "hexadecimalInteger"; return; } throw invalidChar(read()); }, hexadecimalInteger() { if (util.isHexDigit(c)) { buffer += read(); return; } return newToken("numeric", sign * Number(buffer)); }, string() { switch (c) { case "\\": read(); buffer += escape2(); return; case '"': if (doubleQuote) { read(); return newToken("string", buffer); } buffer += read(); return; case "'": if (!doubleQuote) { read(); return newToken("string", buffer); } buffer += read(); return; case "\n": case "\r": throw invalidChar(read()); case "\u2028": case "\u2029": separatorChar(c); break; case void 0: throw invalidChar(read()); } buffer += read(); }, start() { switch (c) { case "{": case "[": return newToken("punctuator", read()); } lexState = "value"; }, beforePropertyName() { switch (c) { case "$": case "_": buffer = read(); lexState = "identifierName"; return; case "\\": read(); lexState = "identifierNameStartEscape"; return; case "}": return newToken("punctuator", read()); case '"': case "'": doubleQuote = read() === '"'; lexState = "string"; return; } if (util.isIdStartChar(c)) { buffer += read(); lexState = "identifierName"; return; } throw invalidChar(read()); }, afterPropertyName() { if (c === ":") { return newToken("punctuator", read()); } throw invalidChar(read()); }, beforePropertyValue() { lexState = "value"; }, afterPropertyValue() { switch (c) { case ",": case "}": return newToken("punctuator", read()); } throw invalidChar(read()); }, beforeArrayValue() { if (c === "]") { return newToken("punctuator", read()); } lexState = "value"; }, afterArrayValue() { switch (c) { case ",": case "]": return newToken("punctuator", read()); } throw invalidChar(read()); }, end() { throw invalidChar(read()); } }; function newToken(type, value) { return { type, value, line, column }; } function literal(s) { for (const c2 of s) { const p = peek(); if (p !== c2) { throw invalidChar(read()); } read(); } } function escape2() { const c2 = peek(); switch (c2) { case "b": read(); return "\b"; case "f": read(); return "\f"; case "n": read(); return "\n"; case "r": read(); return "\r"; case "t": read(); return " "; case "v": read(); return "\v"; case "0": read(); if (util.isDigit(peek())) { throw invalidChar(read()); } return "\0"; case "x": read(); return hexEscape(); case "u": read(); return unicodeEscape(); case "\n": case "\u2028": case "\u2029": read(); return ""; case "\r": read(); if (peek() === "\n") { read(); } return ""; case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": throw invalidChar(read()); case void 0: throw invalidChar(read()); } return read(); } function hexEscape() { let buffer2 = ""; let c2 = peek(); if (!util.isHexDigit(c2)) { throw invalidChar(read()); } buffer2 += read(); c2 = peek(); if (!util.isHexDigit(c2)) { throw invalidChar(read()); } buffer2 += read(); return String.fromCodePoint(parseInt(buffer2, 16)); } function unicodeEscape() { let buffer2 = ""; let count = 4; while (count-- > 0) { const c2 = peek(); if (!util.isHexDigit(c2)) { throw invalidChar(read()); } buffer2 += read(); } return String.fromCodePoint(parseInt(buffer2, 16)); } var parseStates = { start() { if (token.type === "eof") { throw invalidEOF(); } push(); }, beforePropertyName() { switch (token.type) { case "identifier": case "string": key = token.value; parseState = "afterPropertyName"; return; case "punctuator": pop(); return; case "eof": throw invalidEOF(); } }, afterPropertyName() { if (token.type === "eof") { throw invalidEOF(); } parseState = "beforePropertyValue"; }, beforePropertyValue() { if (token.type === "eof") { throw invalidEOF(); } push(); }, beforeArrayValue() { if (token.type === "eof") { throw invalidEOF(); } if (token.type === "punctuator" && token.value === "]") { pop(); return; } push(); }, afterPropertyValue() { if (token.type === "eof") { throw invalidEOF(); } switch (token.value) { case ",": parseState = "beforePropertyName"; return; case "}": pop(); } }, afterArrayValue() { if (token.type === "eof") { throw invalidEOF(); } switch (token.value) { case ",": parseState = "beforeArrayValue"; return; case "]": pop(); } }, end() { } }; function push() { let value; switch (token.type) { case "punctuator": switch (token.value) { case "{": value = {}; break; case "[": value = []; break; } break; case "null": case "boolean": case "numeric": case "string": value = token.value; break; } if (root === void 0) { root = value; } else { const parent = stack2[stack2.length - 1]; if (Array.isArray(parent)) { parent.push(value); } else { Object.defineProperty(parent, key, { value, writable: true, enumerable: true, configurable: true }); } } if (value !== null && typeof value === "object") { stack2.push(value); if (Array.isArray(value)) { parseState = "beforeArrayValue"; } else { parseState = "beforePropertyName"; } } else { const current = stack2[stack2.length - 1]; if (current == null) { parseState = "end"; } else if (Array.isArray(current)) { parseState = "afterArrayValue"; } else { parseState = "afterPropertyValue"; } } } function pop() { stack2.pop(); const current = stack2[stack2.length - 1]; if (current == null) { parseState = "end"; } else if (Array.isArray(current)) { parseState = "afterArrayValue"; } else { parseState = "afterPropertyValue"; } } function invalidChar(c2) { if (c2 === void 0) { return syntaxError(`JSON5: invalid end of input at ${line}:${column}`); } return syntaxError(`JSON5: invalid character '${formatChar(c2)}' at ${line}:${column}`); } function invalidEOF() { return syntaxError(`JSON5: invalid end of input at ${line}:${column}`); } function invalidIdentifier() { column -= 5; return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`); } function separatorChar(c2) { console.warn(`JSON5: '${formatChar(c2)}' in strings is not valid ECMAScript; consider escaping`); } function formatChar(c2) { const replacements2 = { "'": "\\'", '"': '\\"', "\\": "\\\\", "\b": "\\b", "\f": "\\f", "\n": "\\n", "\r": "\\r", " ": "\\t", "\v": "\\v", "\0": "\\0", "\u2028": "\\u2028", "\u2029": "\\u2029" }; if (replacements2[c2]) { return replacements2[c2]; } if (c2 < " ") { const hexString = c2.charCodeAt(0).toString(16); return "\\x" + ("00" + hexString).substring(hexString.length); } return c2; } function syntaxError(message2) { const err = new SyntaxError(message2); err.lineNumber = line; err.columnNumber = column; return err; } } }); // ../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/stringify.js var require_stringify3 = __commonJS2({ "../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/stringify.js"(exports2, module2) { var util = require_util5(); module2.exports = function stringify2(value, replacer, space) { const stack2 = []; let indent = ""; let propertyList; let replacerFunc; let gap = ""; let quote; if (replacer != null && typeof replacer === "object" && !Array.isArray(replacer)) { space = replacer.space; quote = replacer.quote; replacer = replacer.replacer; } if (typeof replacer === "function") { replacerFunc = replacer; } else if (Array.isArray(replacer)) { propertyList = []; for (const v of replacer) { let item; if (typeof v === "string") { item = v; } else if (typeof v === "number" || v instanceof String || v instanceof Number) { item = String(v); } if (item !== void 0 && propertyList.indexOf(item) < 0) { propertyList.push(item); } } } if (space instanceof Number) { space = Number(space); } else if (space instanceof String) { space = String(space); } if (typeof space === "number") { if (space > 0) { space = Math.min(10, Math.floor(space)); gap = " ".substr(0, space); } } else if (typeof space === "string") { gap = space.substr(0, 10); } return serializeProperty("", { "": value }); function serializeProperty(key, holder) { let value2 = holder[key]; if (value2 != null) { if (typeof value2.toJSON5 === "function") { value2 = value2.toJSON5(key); } else if (typeof value2.toJSON === "function") { value2 = value2.toJSON(key); } } if (replacerFunc) { value2 = replacerFunc.call(holder, key, value2); } if (value2 instanceof Number) { value2 = Number(value2); } else if (value2 instanceof String) { value2 = String(value2); } else if (value2 instanceof Boolean) { value2 = value2.valueOf(); } switch (value2) { case null: return "null"; case true: return "true"; case false: return "false"; } if (typeof value2 === "string") { return quoteString(value2, false); } if (typeof value2 === "number") { return String(value2); } if (typeof value2 === "object") { return Array.isArray(value2) ? serializeArray(value2) : serializeObject(value2); } return void 0; } function quoteString(value2) { const quotes = { "'": 0.1, '"': 0.2 }; const replacements2 = { "'": "\\'", '"': '\\"', "\\": "\\\\", "\b": "\\b", "\f": "\\f", "\n": "\\n", "\r": "\\r", " ": "\\t", "\v": "\\v", "\0": "\\0", "\u2028": "\\u2028", "\u2029": "\\u2029" }; let product = ""; for (let i = 0; i < value2.length; i++) { const c = value2[i]; switch (c) { case "'": case '"': quotes[c]++; product += c; continue; case "\0": if (util.isDigit(value2[i + 1])) { product += "\\x00"; continue; } } if (replacements2[c]) { product += replacements2[c]; continue; } if (c < " ") { let hexString = c.charCodeAt(0).toString(16); product += "\\x" + ("00" + hexString).substring(hexString.length); continue; } product += c; } const quoteChar = quote || Object.keys(quotes).reduce((a, b) => quotes[a] < quotes[b] ? a : b); product = product.replace(new RegExp(quoteChar, "g"), replacements2[quoteChar]); return quoteChar + product + quoteChar; } function serializeObject(value2) { if (stack2.indexOf(value2) >= 0) { throw TypeError("Converting circular structure to JSON5"); } stack2.push(value2); let stepback = indent; indent = indent + gap; let keys = propertyList || Object.keys(value2); let partial = []; for (const key of keys) { const propertyString = serializeProperty(key, value2); if (propertyString !== void 0) { let member = serializeKey(key) + ":"; if (gap !== "") { member += " "; } member += propertyString; partial.push(member); } } let final; if (partial.length === 0) { final = "{}"; } else { let properties; if (gap === "") { properties = partial.join(","); final = "{" + properties + "}"; } else { let separator = ",\n" + indent; properties = partial.join(separator); final = "{\n" + indent + properties + ",\n" + stepback + "}"; } } stack2.pop(); indent = stepback; return final; } function serializeKey(key) { if (key.length === 0) { return quoteString(key, true); } const firstChar = String.fromCodePoint(key.codePointAt(0)); if (!util.isIdStartChar(firstChar)) { return quoteString(key, true); } for (let i = firstChar.length; i < key.length; i++) { if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { return quoteString(key, true); } } return key; } function serializeArray(value2) { if (stack2.indexOf(value2) >= 0) { throw TypeError("Converting circular structure to JSON5"); } stack2.push(value2); let stepback = indent; indent = indent + gap; let partial = []; for (let i = 0; i < value2.length; i++) { const propertyString = serializeProperty(String(i), value2); partial.push(propertyString !== void 0 ? propertyString : "null"); } let final; if (partial.length === 0) { final = "[]"; } else { if (gap === "") { let properties = partial.join(","); final = "[" + properties + "]"; } else { let separator = ",\n" + indent; let properties = partial.join(separator); final = "[\n" + indent + properties + ",\n" + stepback + "]"; } } stack2.pop(); indent = stepback; return final; } }; } }); // ../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/index.js var require_lib11 = __commonJS2({ "../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/index.js"(exports2, module2) { var parse11 = require_parse5(); var stringify2 = require_stringify3(); var JSON5 = { parse: parse11, stringify: stringify2 }; module2.exports = JSON5; } }); // ../fs-detectors/dist/workspaces/get-glob-fs.js var require_get_glob_fs = __commonJS2({ "../fs-detectors/dist/workspaces/get-glob-fs.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var get_glob_fs_exports = {}; __export4(get_glob_fs_exports, { getGlobFs: () => getGlobFs }); module2.exports = __toCommonJS4(get_glob_fs_exports); var import_fs11 = __toESM4(__require("fs")); function removeWindowsPrefix(path11) { return path11.replace(/^[a-zA-Z]:/, ""); } function getGlobFs(_fs) { const readdir2 = (path11, callback) => { _fs.readdir(removeWindowsPrefix(String(path11))).then( (stats) => callback( null, stats.map((stat22) => stat22.name) ) ).catch((err) => callback(err, [])); }; const stat2 = (path11, callback) => { _fs.isFile(removeWindowsPrefix(String(path11))).then((isPathAFile) => { callback(null, { ino: 0, mode: 0, nlink: 0, uid: 0, gid: 0, rdev: 0, size: 0, blksize: 0, blocks: 0, atimeMs: 0, mtimeMs: 0, ctimeMs: 0, birthtimeMs: 0, atime: /* @__PURE__ */ new Date(), mtime: /* @__PURE__ */ new Date(), ctime: /* @__PURE__ */ new Date(), birthtime: /* @__PURE__ */ new Date(), dev: 0, isBlockDevice: () => false, isCharacterDevice: () => false, isDirectory: () => !isPathAFile, isFIFO: () => false, isFile: () => isPathAFile, isSocket: () => false, isSymbolicLink: () => false }); }).catch((err) => callback(err, null)); }; return new Proxy(import_fs11.default, { get(_target, prop) { switch (prop) { case "readdir": return readdir2; case "lstat": case "stat": return stat2; default: throw new Error("Not Implemented"); } } }); } } }); // ../fs-detectors/dist/workspaces/get-workspace-package-paths.js var require_get_workspace_package_paths = __commonJS2({ "../fs-detectors/dist/workspaces/get-workspace-package-paths.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var get_workspace_package_paths_exports = {}; __export4(get_workspace_package_paths_exports, { getWorkspacePackagePaths: () => getWorkspacePackagePaths3 }); module2.exports = __toCommonJS4(get_workspace_package_paths_exports); var import_path45 = __toESM4(__require("path")); var import_js_yaml = __toESM4(require_js_yaml3()); var import_glob = __toESM4(require_glob()); var import_json5 = __toESM4(require_lib11()); var import_get_glob_fs = require_get_glob_fs(); var posixPath = import_path45.default.posix; async function getWorkspacePackagePaths3({ fs: fs15, workspace }) { const { type, rootPath } = workspace; const workspaceFs = fs15.chdir(rootPath); let results = []; switch (type) { case "yarn": case "npm": results = await getPackageJsonWorkspacePackagePaths({ fs: workspaceFs }); break; case "pnpm": results = await getPnpmWorkspacePackagePaths({ fs: workspaceFs }); break; case "nx": results = await getNxWorkspacePackagePaths({ fs: workspaceFs }); break; case "rush": results = await getRushWorkspacePackagePaths({ fs: workspaceFs }); break; default: throw new Error(`Unknown workspace implementation: ${type}`); } return results.map((packagePath) => { return posixPath.join(rootPath, posixPath.dirname(packagePath)); }); } var isWin = process.platform === "win32"; var normalizePath6 = (p) => isWin ? p.replace(/\\/g, "/") : p; async function getPackagePaths(packages, fs15) { return (await Promise.all( packages.map( (packageGlob) => new Promise((resolve14, reject) => { (0, import_glob.default)( normalizePath6(posixPath.join(packageGlob, "package.json")), { cwd: "/", fs: (0, import_get_glob_fs.getGlobFs)(fs15) }, (err, matches) => { if (err) reject(err); else resolve14(matches); } ); }) ) )).flat(); } async function getPackageJsonWorkspacePackagePaths({ fs: fs15 }) { const packageJsonAsBuffer = await fs15.readFile("package.json"); const { workspaces } = JSON.parse( packageJsonAsBuffer.toString() ); let packages = []; if (Array.isArray(workspaces)) { packages = workspaces; } else { packages = workspaces?.packages ?? []; } return getPackagePaths(packages, fs15); } async function getNxWorkspacePackagePaths({ fs: fs15 }) { const nxWorkspaceJsonAsBuffer = await fs15.readFile("workspace.json"); const { projects } = JSON.parse(nxWorkspaceJsonAsBuffer.toString()); const packages = Object.values(projects); return getPackagePaths(packages, fs15); } async function getPnpmWorkspacePackagePaths({ fs: fs15 }) { const pnpmWorkspaceAsBuffer = await fs15.readFile("pnpm-workspace.yaml"); const { packages = [] } = import_js_yaml.default.load( pnpmWorkspaceAsBuffer.toString() ); return getPackagePaths(packages, fs15); } async function getRushWorkspacePackagePaths({ fs: fs15 }) { const rushWorkspaceAsBuffer = await fs15.readFile("rush.json"); const { projects = [] } = import_json5.default.parse( rushWorkspaceAsBuffer.toString() ); if (Array.isArray(projects)) { const packages = projects.filter((proj) => proj.projectFolder).map((project) => project.projectFolder); return getPackagePaths(packages, fs15); } else { return []; } } } }); // ../fs-detectors/dist/monorepos/monorepo-managers.js var require_monorepo_managers = __commonJS2({ "../fs-detectors/dist/monorepos/monorepo-managers.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var monorepo_managers_exports = {}; __export4(monorepo_managers_exports, { default: () => monorepo_managers_default, monorepoManagers: () => monorepoManagers2 }); module2.exports = __toCommonJS4(monorepo_managers_exports); var monorepoManagers2 = [ { name: "Turborepo", slug: "turbo", logo: "https://api-frameworks.vercel.sh/monorepo-logos/turborepo.svg", darkModeLogo: "https://api-frameworks.vercel.sh/monorepo-logos/turborepo-dark.svg", detectors: { some: [ { path: "turbo.json" }, { path: "turbo.jsonc" }, { path: "package.json", matchContent: '"turbo":\\s*{[^}]*.+[^}]*}' } ] }, settings: { buildCommand: { placeholder: "Turborepo default", value: null }, outputDirectory: { value: null }, installCommand: { value: null }, devCommand: { value: null } } }, { name: "Nx", slug: "nx", logo: "https://api-frameworks.vercel.sh/monorepo-logos/nx.svg", detectors: { every: [ { path: "nx.json" } ] }, settings: { buildCommand: { placeholder: "Nx default", value: null }, outputDirectory: { value: null }, installCommand: { value: null }, devCommand: { value: null } } }, { name: "Rush", slug: "rush", logo: "https://api-frameworks.vercel.sh/monorepo-logos/rush.svg", detectors: { every: [ { path: "rush.json" } ] }, settings: { buildCommand: { placeholder: "Rush default", value: null }, outputDirectory: { value: null }, installCommand: { placeholder: "Rush default" }, devCommand: { value: null } } } ]; var monorepo_managers_default = monorepoManagers2; } }); // ../fs-detectors/dist/package-managers/package-managers.js var require_package_managers = __commonJS2({ "../fs-detectors/dist/package-managers/package-managers.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var package_managers_exports = {}; __export4(package_managers_exports, { packageManagers: () => packageManagers2 }); module2.exports = __toCommonJS4(package_managers_exports); var packageManagers2 = [ { name: "npm", slug: "npm", logo: "", darkModeLogo: "", detectors: { some: [ { path: "package-lock.json" }, { path: "package.json", matchContent: '"packageManager":\\s*"npm@.*"' } ] } }, { name: "pnpm", slug: "pnpm", logo: "", darkModeLogo: "", detectors: { some: [ { path: "pnpm-lock.yaml" }, { path: "package.json", matchContent: '"packageManager":\\s*"pnpm@.*"' } ] } }, { name: "bun", slug: "bun", logo: "", darkModeLogo: "", detectors: { some: [ { path: "bun.lockb" }, { path: "bun.lock" }, { path: "package.json", // Depends on https://github.com/nodejs/corepack/pull/307 matchContent: '"packageManager":\\s*"bun@.*"' } ] } }, { name: "yarn", slug: "yarn", logo: "", darkModeLogo: "", detectors: { some: [ { path: "yarn.lock" }, { path: "package.json", matchContent: '"packageManager":\\s*"yarn@.*"' }, { path: "package.json" } ] } } ]; } }); // ../fs-detectors/dist/monorepos/get-monorepo-default-settings.js var require_get_monorepo_default_settings = __commonJS2({ "../fs-detectors/dist/monorepos/get-monorepo-default-settings.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var get_monorepo_default_settings_exports = {}; __export4(get_monorepo_default_settings_exports, { MissingBuildPipeline: () => MissingBuildPipeline2, MissingBuildTarget: () => MissingBuildTarget2, getMonorepoDefaultSettings: () => getMonorepoDefaultSettings2 }); module2.exports = __toCommonJS4(get_monorepo_default_settings_exports); var import_path45 = __require("path"); var import_monorepo_managers = require_monorepo_managers(); var import_package_managers = require_package_managers(); var import_detect_framework = require_detect_framework(); var import_json5 = __toESM4(require_lib11()); var import_semver4 = __toESM4(require_semver2()); var MissingBuildPipeline2 = class extends Error { constructor(usesTasks) { const message2 = usesTasks ? "Missing required `build` task in turbo.json." : "Missing required `build` pipeline in turbo.json or package.json Turbo configuration."; super(message2); } }; var MissingBuildTarget2 = class extends Error { constructor() { super( "Missing required `build` target in either nx.json, project.json, or package.json Nx configuration." ); } }; function supportsRootCommand(turboSemVer) { if (!turboSemVer) { return false; } if (!import_semver4.default.validRange(turboSemVer)) { return false; } return !import_semver4.default.intersects(turboSemVer, "<1.8.0"); } async function getMonorepoDefaultSettings2(projectName, projectPath, relativeToRoot, detectorFilesystem) { const [monorepoManager, packageManager] = await Promise.all([ (0, import_detect_framework.detectFramework)({ fs: detectorFilesystem, frameworkList: import_monorepo_managers.monorepoManagers }), (0, import_detect_framework.detectFramework)({ fs: detectorFilesystem, frameworkList: import_package_managers.packageManagers }) ]); if (monorepoManager === "turbo") { const [turboJSONBuf, turboJSONCBuf, packageJSONBuf] = await Promise.all([ detectorFilesystem.readFile("turbo.json").catch(() => null), detectorFilesystem.readFile("turbo.jsonc").catch(() => null), detectorFilesystem.readFile("package.json").catch(() => null) ]); let hasBuildPipeline = false; let hasTurboTasks = false; let turboSemVer = null; const turboConfigBuf = turboJSONBuf || turboJSONCBuf; if (turboConfigBuf !== null) { const turboJSON = import_json5.default.parse(turboConfigBuf.toString("utf-8")); hasTurboTasks = "tasks" in (turboJSON || {}); if (turboJSON?.pipeline?.build || turboJSON?.tasks?.build) { hasBuildPipeline = true; } } if (packageJSONBuf !== null) { const packageJSON = JSON.parse(packageJSONBuf.toString("utf-8")); if (packageJSON?.turbo?.pipeline?.build) { hasBuildPipeline = true; } turboSemVer = packageJSON?.dependencies?.turbo || packageJSON?.devDependencies?.turbo || null; } if (!hasBuildPipeline) { throw new MissingBuildPipeline2(hasTurboTasks); } if (projectPath === "/") { return { monorepoManager: "turbo", buildCommand: "turbo run build", installCommand: packageManager ? `${packageManager} install` : null, commandForIgnoringBuildStep: "npx turbo-ignore" }; } let buildCommand2 = null; if (projectPath) { if (supportsRootCommand(turboSemVer)) { buildCommand2 = `turbo run build`; } else { buildCommand2 = `cd ${relativeToRoot} && turbo run build --filter={${projectPath}}...`; } } return { monorepoManager: "turbo", buildCommand: buildCommand2, installCommand: packageManager === "npm" ? `${packageManager} install --prefix=${relativeToRoot}` : packageManager ? `${packageManager} install` : null, commandForIgnoringBuildStep: "npx turbo-ignore" }; } else if (monorepoManager === "nx") { const nxJSONBuf = await detectorFilesystem.readFile("nx.json"); const nxJSON = import_json5.default.parse(nxJSONBuf.toString("utf-8")); if (!nxJSON?.targetDefaults?.build) { const [projectJSONBuf, packageJSONBuf] = await Promise.all([ detectorFilesystem.readFile((0, import_path45.join)(projectPath, "project.json")).catch(() => null), detectorFilesystem.readFile((0, import_path45.join)(projectPath, "package.json")).catch(() => null) ]); let hasBuildTarget = false; if (projectJSONBuf) { const projectJSON = import_json5.default.parse(projectJSONBuf.toString("utf-8")); if (projectJSON?.targets?.build) { hasBuildTarget = true; } } if (packageJSONBuf) { const packageJSON = import_json5.default.parse(packageJSONBuf.toString("utf-8")); if (packageJSON?.nx) { if (packageJSON.nx.targets?.build) { hasBuildTarget = true; } } } if (!hasBuildTarget) { throw new MissingBuildTarget2(); } } if (projectPath === "/") { return { monorepoManager: "nx", buildCommand: "npx nx build", installCommand: packageManager ? `${packageManager} install` : null }; } return { monorepoManager: "nx", buildCommand: projectName ? `cd ${relativeToRoot} && npx nx build ${projectName}` : null, installCommand: packageManager === "npm" ? `${packageManager} install --prefix=${relativeToRoot}` : packageManager ? `${packageManager} install` : null }; } return null; } } }); // ../fs-detectors/dist/detect-instrumentation.js var require_detect_instrumentation = __commonJS2({ "../fs-detectors/dist/detect-instrumentation.js"(exports2, module2) { "use strict"; var __create4 = Object.create; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __getProtoOf4 = Object.getPrototypeOf; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toESM4 = (mod, isNodeMode, target) => (target = mod != null ? __create4(__getProtoOf4(mod)) : {}, __copyProps4( // 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 ? __defProp4(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var detect_instrumentation_exports = {}; __export4(detect_instrumentation_exports, { detectInstrumentation: () => detectInstrumentation3 }); module2.exports = __toCommonJS4(detect_instrumentation_exports); var import_semver4 = __toESM4(require_semver2()); var VERCEL_OTEL = "@vercel/otel"; var OPENTELEMETRY_SDK_TRACE_NODE = "@opentelemetry/sdk-trace-node"; var OPENTELEMETRY_API = "@opentelemetry/api"; var tracingDependencies = [ { name: VERCEL_OTEL, minVersion: "1.11.0" }, { name: OPENTELEMETRY_SDK_TRACE_NODE, minVersion: "1.19.0" }, { name: OPENTELEMETRY_API, minVersion: "1.7.0" } ]; async function detectInstrumentation3(fs15) { if (await fs15.hasPath("package.json") === false) { return false; } if (await fs15.isFile("package.json") === false) { return false; } const content = await fs15.readFile("package.json"); const packageJsonContent = content.toString(); let hasInstrumentation = false; for (const dependency of tracingDependencies) { const regex = new RegExp( `"(dev)?(d|D)ependencies":\\s*{[^}]*"${dependency.name}":\\s*"(.+?)"[^}]*}`, "m" ); const match = packageJsonContent.match(regex); if (match && match[3]) { const detectedVersion = match[3]; const cleanVersion = detectedVersion.replace(/[\^~]/, ""); if (import_semver4.default.valid(cleanVersion) && import_semver4.default.gte(cleanVersion, dependency.minVersion)) { console.log( `Detected OpenTelemetry dependency: ${dependency.name}@${cleanVersion}, which meets the minimum version requirement of ${dependency.minVersion}` ); hasInstrumentation = true; break; } } } return hasInstrumentation; } } }); // ../fs-detectors/dist/index.js var require_dist8 = __commonJS2({ "../fs-detectors/dist/index.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __reExport = (target, mod, secondTarget) => (__copyProps4(target, mod, "default"), secondTarget && __copyProps4(secondTarget, mod, "default")); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var src_exports2 = {}; __export4(src_exports2, { DetectorFilesystem: () => import_filesystem.DetectorFilesystem, GetWorkspaceOptions: () => import_get_workspaces.GetWorkspaceOptions, GetWorkspacePackagePathsOptions: () => import_get_workspace_package_paths.GetWorkspacePackagePathsOptions, LocalFileSystemDetector: () => import_local_file_system_detector.LocalFileSystemDetector, REGEX_NON_VERCEL_PLATFORM_FILES: () => import_detect_builders2.REGEX_NON_VERCEL_PLATFORM_FILES, Workspace: () => import_get_workspaces.Workspace, WorkspaceType: () => import_get_workspaces.WorkspaceType, detectApiDirectory: () => import_detect_builders.detectApiDirectory, detectApiExtensions: () => import_detect_builders.detectApiExtensions, detectBuilders: () => import_detect_builders.detectBuilders, detectFileSystemAPI: () => import_detect_file_system_api.detectFileSystemAPI, detectFramework: () => import_detect_framework.detectFramework, detectFrameworkRecord: () => import_detect_framework.detectFrameworkRecord, detectFrameworkVersion: () => import_detect_framework.detectFrameworkVersion, detectFrameworks: () => import_detect_framework.detectFrameworks, detectInstrumentation: () => import_detect_instrumentation.detectInstrumentation, detectOutputDirectory: () => import_detect_builders.detectOutputDirectory, detectServices: () => import_detect_services.detectServices, generateServicesRoutes: () => import_detect_services.generateServicesRoutes, getProjectPaths: () => import_get_project_paths.getProjectPaths, getServicesBuilders: () => import_get_services_builders.getServicesBuilders, getWorkspacePackagePaths: () => import_get_workspace_package_paths.getWorkspacePackagePaths, getWorkspaces: () => import_get_workspaces.getWorkspaces, isOfficialRuntime: () => import_is_official_runtime.isOfficialRuntime, isStaticRuntime: () => import_is_official_runtime.isStaticRuntime, monorepoManagers: () => import_monorepo_managers.monorepoManagers, packageManagers: () => import_package_managers.packageManagers, workspaceManagers: () => import_workspace_managers.workspaceManagers }); module2.exports = __toCommonJS4(src_exports2); var import_detect_builders = require_detect_builders(); var import_detect_services = require_detect_services(); var import_get_services_builders = require_get_services_builders(); var import_detect_file_system_api = require_detect_file_system_api(); var import_detect_framework = require_detect_framework(); var import_get_project_paths = require_get_project_paths(); var import_filesystem = require_filesystem(); var import_local_file_system_detector = require_local_file_system_detector(); var import_workspace_managers = require_workspace_managers(); var import_get_workspaces = require_get_workspaces(); var import_get_workspace_package_paths = require_get_workspace_package_paths(); var import_monorepo_managers = require_monorepo_managers(); var import_is_official_runtime = require_is_official_runtime(); var import_package_managers = require_package_managers(); __reExport(src_exports2, require_get_monorepo_default_settings(), module2.exports); var import_detect_builders2 = require_detect_builders(); var import_detect_instrumentation = require_detect_instrumentation(); } }); // src/util/projects/detect-projects.ts import { join as join3 } from "path"; async function detectProjects(cwd) { const fs15 = new import_fs_detectors.LocalFileSystemDetector(cwd); const workspaces = await (0, import_fs_detectors.getWorkspaces)({ fs: fs15 }); const detectedProjects = /* @__PURE__ */ new Map(); const packagePaths = (await Promise.all( workspaces.map( (workspace) => (0, import_fs_detectors.getWorkspacePackagePaths)({ fs: fs15, workspace }) ) )).flat(); if (packagePaths.length === 0) { packagePaths.push("/"); } await Promise.all( packagePaths.map(async (p) => { const frameworks = await (0, import_fs_detectors.detectFrameworks)({ fs: fs15.chdir(join3(".", p)), frameworkList: import_frameworks.frameworkList }); if (frameworks.length === 0) return; detectedProjects.set(p.slice(1), frameworks); }) ); return detectedProjects; } var import_frameworks, import_fs_detectors; var init_detect_projects = __esm({ "src/util/projects/detect-projects.ts"() { "use strict"; import_frameworks = __toESM3(require_frameworks(), 1); import_fs_detectors = __toESM3(require_dist8(), 1); } }); // src/util/git/repo-info-to-url.ts function repoInfoToUrl(info) { return `https://${info.provider}.com/${info.org}/${info.repo}`; } var init_repo_info_to_url = __esm({ "src/util/git/repo-info-to-url.ts"() { "use strict"; } }); // src/util/input/list.ts function getLength(input) { let biggestLength = 0; for (const line of input.split("\n")) { const str = (0, import_strip_ansi3.default)(line); if (str.length > biggestLength) { biggestLength = str.length; } } return biggestLength; } async function list(client2, { message: message2 = "the question", // eslint-disable-line no-unused-vars choices: _choices = [ { name: "something\ndescription\ndetails\netc", value: "something unique", short: "generally the first line of `name`" } ], pageSize = 15, // Show 15 lines without scrolling (~4 credit cards) separator = false, // Puts a blank separator between each choice cancel = "end", // Whether the `cancel` option will be at the `start` or the `end`, eraseFinalAnswer = false // If true, the line with the final answer that inquirer prints will be erased before returning }) { let biggestLength = 0; let selected; for (const choice of _choices) { if ("name" in choice) { const length = getLength(choice.name); if (length > biggestLength) { biggestLength = length; } } } const choices = _choices.map((choice) => { if (choice instanceof Separator) { return choice; } if ("separator" in choice) { const prefix = `\u2500\u2500 ${choice.separator} `; const suffix = "\u2500".repeat(biggestLength - getLength(prefix)); return new Separator(`${prefix}${suffix}`); } if ("short" in choice) { if (choice.selected) { if (selected) throw new Error("Only one choice may be selected"); selected = choice.short; } return choice; } throw new Error("Invalid choice"); }); if (separator) { for (let i = 0; i < choices.length; i += 2) { choices.splice(i, 0, new Separator(" ")); } } const cancelSeparator = new Separator("\u2500".repeat(biggestLength)); const _cancel = { name: "Cancel", value: "", short: "" }; if (cancel === "start") { choices.unshift(_cancel, cancelSeparator); } else { choices.push(cancelSeparator, _cancel); } const answer = await client2.input.select({ message: message2, choices, pageSize, default: selected }); if (eraseFinalAnswer === true) { process.stdout.write(eraseLines(2)); } return answer; } var import_strip_ansi3; var init_list = __esm({ "src/util/input/list.ts"() { "use strict"; init_esm11(); import_strip_ansi3 = __toESM3(require_strip_ansi2(), 1); init_erase_lines(); } }); // src/util/git/connect-git-provider.ts import { URL as URL5 } from "url"; async function disconnectGitProvider(client2, org, projectId) { const fetchUrl = `/v9/projects/${projectId}/link`; return client2.fetch(fetchUrl, { method: "DELETE", headers: { "Content-Type": "application/json" } }); } async function connectGitProvider(client2, projectId, type, repo) { const fetchUrl = `/v9/projects/${projectId}/link`; try { return await client2.fetch(fetchUrl, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ type, repo }) }); } catch (err) { const apiError = isAPIError(err); if (apiError && (err.action === "Install GitHub App" || err.code === "repo_not_found")) { output_manager_default.error( `Failed to connect ${import_chalk20.default.cyan( repo )} to project. Make sure there aren't any typos and that you have access to the repository if it's private.` ); } else if (apiError && err.action === "Add a Login Connection") { output_manager_default.error( err.message.replace(repo, import_chalk20.default.cyan(repo)) + ` Visit ${link_default(err.link)} for more information.` ); } else { output_manager_default.error( `Failed to connect the ${formatProvider( type )} repository ${repo}. ${err}` ); } return 1; } } function formatProvider(type) { switch (type) { case "github": return "GitHub"; case "gitlab": return "GitLab"; case "bitbucket": return "Bitbucket"; default: return type; } } function buildRepoUrl(provider, org, repo) { switch (provider) { case "github": return `https://github.com/${org}/${repo}`; case "gitlab": return `https://gitlab.com/${org}/${repo}`; case "bitbucket": return `https://bitbucket.org/${org}/${repo}`; default: return null; } } function getURL(input) { let url3 = null; try { url3 = new URL5(input); } catch { } if (!url3) { try { url3 = new URL5(`ssh://${input.replace(":", "/")}`); } catch { } } return url3; } function parseRepoUrl(originUrl) { const url3 = getURL(originUrl); if (!url3) return null; const hostParts = url3.hostname.split("."); if (hostParts.length < 2) return null; const provider = hostParts[hostParts.length - 2]; const pathParts = url3.pathname.split("/").filter(Boolean); if (pathParts.length < 2) return null; const repo = pathParts.pop()?.replace(/\.git$/, ""); if (!repo) return null; const org = pathParts.join("/"); return { url: originUrl, provider, org, repo }; } function printRemoteUrls(remoteUrls) { for (const [name, url3] of Object.entries(remoteUrls)) { output_manager_default.print(` \u2022 ${name}: ${import_chalk20.default.cyan(url3)} `); } } async function selectRemoteUrl(client2, remoteUrls) { const choices = []; for (const [urlKey, urlValue] of Object.entries(remoteUrls)) { choices.push({ name: `${urlValue} ${import_chalk20.default.gray(`(${urlKey})`)}`, value: urlValue, short: urlKey }); } return await list(client2, { message: "Which remote do you want to connect?", choices }); } async function selectAndParseRemoteUrl(client2, remoteUrls) { let remoteUrl; if (Object.keys(remoteUrls).length > 1) { output_manager_default.log("Found multiple remote URLs."); remoteUrl = await selectRemoteUrl(client2, remoteUrls); } else { remoteUrl = Object.values(remoteUrls)[0]; } if (remoteUrl === "") { output_manager_default.log("Canceled"); return null; } const repoInfo = parseRepoUrl(remoteUrl); if (!repoInfo) { output_manager_default.log(`Connecting Git repository: ${import_chalk20.default.cyan(remoteUrl)}`); output_manager_default.error( `Failed to parse Git repo data from the following remote URL: ${link_default( remoteUrl )}` ); return null; } return repoInfo; } async function checkExistsAndConnect({ client: client2, confirm, org, project, gitProviderLink, provider, repoPath, gitOrg, repo }) { const displayUrl = buildRepoUrl(provider, gitOrg, repo) || repoPath; output_manager_default.log( `Connecting ${formatProvider(provider)} repository: ${import_chalk20.default.cyan(displayUrl)}` ); if (!gitProviderLink) { const connect2 = await connectGitProvider( client2, project.id, provider, repoPath ); if (typeof connect2 === "number") { return connect2; } } else { const connectedProvider = gitProviderLink.type; const connectedOrg = gitProviderLink.org; const connectedRepo = gitProviderLink.repo; const connectedRepoPath = `${connectedOrg}/${connectedRepo}`; const isSameRepo = connectedProvider === provider && connectedOrg === gitOrg && connectedRepo === repo; if (isSameRepo) { output_manager_default.log( `${import_chalk20.default.cyan(connectedRepoPath)} is already connected to your project.` ); return 1; } const shouldReplaceRepo = await confirmRepoConnect( client2, confirm, connectedProvider, connectedRepoPath ); if (!shouldReplaceRepo) { return 0; } await disconnectGitProvider(client2, org, project.id); const connect2 = await connectGitProvider( client2, project.id, provider, repoPath ); if (typeof connect2 === "number") { return connect2; } } output_manager_default.log("Connected"); } async function confirmRepoConnect(client2, yes, connectedProvider, connectedRepoPath) { let shouldReplaceProject = yes; if (!shouldReplaceProject) { shouldReplaceProject = await client2.input.confirm( `Looks like you already have a ${formatProvider( connectedProvider )} repository connected: ${import_chalk20.default.cyan( connectedRepoPath )}. Do you want to replace it?`, true ); if (!shouldReplaceProject) { output_manager_default.log("Canceled. Repo not connected."); } } return shouldReplaceProject; } var import_chalk20; var init_connect_git_provider = __esm({ "src/util/git/connect-git-provider.ts"() { "use strict"; import_chalk20 = __toESM3(require_source(), 1); init_link(); init_errors_ts(); init_output_manager(); init_list(); } }); // src/util/git-helpers.ts import { execSync } from "child_process"; function getGitDirectory(opts) { const { cwd, unsafe } = { ...DEFAULT_GIT_EXEC_OPTS, ...opts }; try { const gitConfigPath = execSync("git rev-parse --git-dir", { cwd, encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }); return gitConfigPath; } catch (error3) { if (unsafe) { throw error3; } return null; } } function isGitWorktreeOrSubmodule(opts) { const gitDir = getGitDirectory(opts); if (gitDir === null) { return false; } const isGitWorktree = gitDir.includes(".git/worktrees/"); const isGitSubmodule = gitDir.includes(".git/modules/"); return isGitWorktree || isGitSubmodule; } var DEFAULT_GIT_EXEC_OPTS; var init_git_helpers = __esm({ "src/util/git-helpers.ts"() { "use strict"; DEFAULT_GIT_EXEC_OPTS = { unsafe: false }; } }); // src/util/link/repo.ts import { homedir as homedir3 } from "os"; import { basename, join as join4, normalize } from "path"; import { normalizePath, traverseUpDirectories } from "@vercel/build-utils"; async function getRepoLink(client2, cwd) { const rootPath = await findRepoRoot(client2, cwd); if (!rootPath) return void 0; const repoConfigPath = join4(rootPath, VERCEL_DIR, VERCEL_DIR_REPO); const repoConfig = await (0, import_fs_extra4.readJSON)(repoConfigPath).catch( (err) => { if (err.code !== "ENOENT") throw err; } ); return { rootPath, repoConfig, repoConfigPath }; } async function ensureRepoLink(client2, cwd, { yes, overwrite }) { const repoLink = await getRepoLink(client2, cwd); if (repoLink) { output_manager_default.debug(`Found Git repository root directory: ${repoLink.rootPath}`); } else { throw new Error("Could not determine Git repository root directory"); } let { rootPath, repoConfig, repoConfigPath } = repoLink; if (overwrite || !repoConfig) { const detectedProjectsPromise = detectProjects(rootPath).catch((err) => { output_manager_default.debug(`Failed to detect local projects: ${err}`); return /* @__PURE__ */ new Map(); }); const shouldLink = yes || await client2.input.confirm( `Link Git repository at ${import_chalk21.default.cyan( `\u201C${humanizePath(rootPath)}\u201D` )} to your Project(s)?`, true ); if (!shouldLink) { output_manager_default.print(`Canceled. Repository not linked. `); return; } const org = await selectOrg( client2, "Which scope should contain your Project(s)?", yes ); client2.config.currentTeam = org.type === "team" ? org.id : void 0; const remoteUrls = await getRemoteUrls(join4(rootPath, ".git/config")); if (!remoteUrls) { throw new Error("Could not determine Git remote URLs"); } const remoteNames = Object.keys(remoteUrls).sort(); let remoteName; if (remoteNames.length === 1) { remoteName = remoteNames[0]; } else { const defaultRemote = remoteNames.includes("origin") ? "origin" : remoteNames[0]; if (yes) { remoteName = defaultRemote; } else { remoteName = await client2.input.select({ message: "Which Git remote should be used?", choices: remoteNames.map((name) => { return { name, value: name }; }), default: defaultRemote }); } } const repoUrl = remoteUrls[remoteName]; const parsedRepoUrl = parseRepoUrl(repoUrl); if (!parsedRepoUrl) { throw new Error(`Failed to parse Git URL: ${repoUrl}`); } const repoUrlLink = output_manager_default.link(repoUrl, repoInfoToUrl(parsedRepoUrl), { fallback: () => link_default(repoUrl) }); output_manager_default.spinner( `Fetching Projects for ${repoUrlLink} under ${import_chalk21.default.bold(org.slug)}\u2026` ); let projects = []; const query = new URLSearchParams({ repoUrl }); const projectsIterator = client2.fetchPaginated(`/v9/projects?${query}`); const detectedProjects = await detectedProjectsPromise; for await (const chunk of projectsIterator) { projects = projects.concat(chunk.projects); if (chunk.pagination.next) { output_manager_default.spinner(`Found ${import_chalk21.default.bold(projects.length)} Projects\u2026`, 0); } } if (projects.length === 0) { output_manager_default.log( `No Projects are linked to ${repoUrlLink} under ${import_chalk21.default.bold( org.slug )}.` ); } else { output_manager_default.log( `Found ${(0, import_pluralize.default)( "Project", projects.length, true )} linked to ${repoUrlLink} under ${import_chalk21.default.bold(org.slug)}` ); } for (const project of projects) { detectedProjects.delete(project.rootDirectory ?? ""); } const detectedProjectsCount = Array.from(detectedProjects.values()).reduce( (o, f) => o + f.length, 0 ); if (detectedProjectsCount > 0) { output_manager_default.log( `Detected ${(0, import_pluralize.default)( "new Project", detectedProjectsCount, true )} that may be created.` ); } let selected; if (yes) { selected = projects; } else { const addSeparators = projects.length > 0 && detectedProjectsCount > 0; selected = await client2.input.checkbox({ message: `Which Projects should be ${projects.length ? "linked to" : "created"}?`, choices: [ ...addSeparators ? [new Separator("----- Existing Projects -----")] : [], ...projects.map((project) => { return { name: `${org.slug}/${project.name}`, value: project, checked: true }; }), ...addSeparators ? [new Separator("----- New Projects to be created -----")] : [], ...Array.from(detectedProjects.entries()).flatMap( ([rootDirectory, frameworks]) => frameworks.map((framework, i) => { const name = (0, import_slugify.default)( [ basename(rootDirectory) || basename(rootPath), i > 0 ? framework.slug : "" ].filter(Boolean).join("-") ); return { name: `${org.slug}/${name} (${framework.name})`, value: { newProject: true, rootDirectory, name, framework }, // Checked by default when there are no other existing Projects checked: projects.length === 0 }; }) ) ] }); } if (selected.length === 0) { output_manager_default.print(`No Projects were selected. Repository not linked. `); return; } for (let i = 0; i < selected.length; i++) { const selection = selected[i]; if (!("newProject" in selection && selection.newProject)) continue; const orgAndName = `${org.slug}/${selection.name}`; output_manager_default.spinner(`Creating new Project: ${orgAndName}`); delete selection.newProject; if (!selection.rootDirectory) delete selection.rootDirectory; const project = selected[i] = await createProject(client2, { ...selection, framework: selection.framework.slug }); await connectGitProvider( client2, project.id, parsedRepoUrl.provider, `${parsedRepoUrl.org}/${parsedRepoUrl.repo}` ); output_manager_default.log( `Created new Project: ${output_manager_default.link( orgAndName, `https://vercel.com/${orgAndName}`, { fallback: false } )}` ); } repoConfig = { orgId: org.id, remoteName, projects: selected.map((project) => { if (!("id" in project)) { throw new TypeError(`Not a Project: ${JSON.stringify(project)}`); } return { id: project.id, name: project.name, directory: normalize(project.rootDirectory || "") }; }) }; await (0, import_fs_extra4.outputJSON)(repoConfigPath, repoConfig, { spaces: 2 }); await writeReadme(rootPath); const isGitIgnoreUpdated = await addToGitIgnore(rootPath); output_manager_default.print( prependEmoji( `Linked to ${(0, import_pluralize.default)( "Project", selected.length, true )} under ${import_chalk21.default.bold(org.slug)} (created ${VERCEL_DIR}${isGitIgnoreUpdated ? " and added it to .gitignore" : ""})`, emoji("link") ) + "\n" ); } return { repoConfig, repoConfigPath, rootPath }; } async function findRepoRoot(client2, start) { const { debug: debug2 } = output_manager_default; const REPO_JSON_PATH = join4(VERCEL_DIR, VERCEL_DIR_REPO); const GIT_PATH = isGitWorktreeOrSubmodule({ cwd: client2.cwd }) ? normalize(".git") : normalize(".git/config"); for (const current of traverseUpDirectories({ start })) { if (current === home) { debug2("Arrived at home directory"); break; } const repoConfigPath = join4(current, REPO_JSON_PATH); let stat2 = await (0, import_fs_extra4.lstat)(repoConfigPath).catch((err) => { if (err.code !== "ENOENT") throw err; }); if (stat2) { debug2(`Found "${REPO_JSON_PATH}" - detected "${current}" as repo root`); return current; } const gitConfigPath = join4(current, GIT_PATH); stat2 = await (0, import_fs_extra4.lstat)(gitConfigPath).catch((err) => { if (err.code !== "ENOENT") throw err; }); if (stat2) { debug2(`Found "${GIT_PATH}" - detected "${current}" as repo root`); return current; } } debug2("Aborting search for repo root"); } function sortByDirectory(a, b) { const aParts = a.directory.split("/"); const bParts = b.directory.split("/"); return bParts.length - aParts.length; } function findProjectsFromPath(projects, path11) { const normalizedPath = normalizePath(path11); const matches = projects.slice().sort(sortByDirectory).filter((project) => { if (project.directory === ".") { return true; } return normalizedPath === project.directory || normalizedPath.startsWith(`${project.directory}/`); }); const firstMatch = matches[0]; return matches.filter((match) => match.directory === firstMatch.directory); } var import_chalk21, import_pluralize, import_slugify, import_fs_extra4, home; var init_repo = __esm({ "src/util/link/repo.ts"() { "use strict"; import_chalk21 = __toESM3(require_source(), 1); init_esm4(); import_pluralize = __toESM3(require_pluralize(), 1); import_slugify = __toESM3(require_slugify(), 1); import_fs_extra4 = __toESM3(require_lib(), 1); init_humanize_path(); init_link2(); init_create_git_meta(); init_link(); init_emoji(); init_select_org(); init_add_to_gitignore(); init_create_project(); init_detect_projects(); init_repo_info_to_url(); init_connect_git_provider(); init_git_helpers(); init_output_manager(); home = homedir3(); } }); // src/util/output/elapsed.ts function elapsed(time, ago = false) { return import_chalk22.default.gray( `[${time < 1e3 ? `${time}ms` : (0, import_ms.default)(time)}${ago ? " ago" : ""}]` ); } var import_ms, import_chalk22; var init_elapsed = __esm({ "src/util/output/elapsed.ts"() { "use strict"; import_ms = __toESM3(require_ms(), 1); import_chalk22 = __toESM3(require_source(), 1); } }); // src/util/output/stamp.ts var stamp_default; var init_stamp = __esm({ "src/util/output/stamp.ts"() { "use strict"; init_elapsed(); stamp_default = (start = Date.now()) => { return () => elapsed(Date.now() - start); }; } }); // src/util/env/get-env-records.ts import { URLSearchParams as URLSearchParams3 } from "url"; async function getEnvRecords(client2, projectId, source, { target, gitBranch, decrypt } = {}) { output_manager_default.debug( `Fetching Environment Variables of project ${projectId} and target ${target}` ); const query = new URLSearchParams3(); if (target) { let targetParam = "target"; if (target !== "production" && target !== "preview" && target !== "development") { targetParam = "customEnvironmentId"; } query.set(targetParam, target); } if (gitBranch) { query.set("gitBranch", gitBranch); } if (decrypt) { query.set("decrypt", decrypt.toString()); } if (source) { query.set("source", source); } const url3 = `/v10/projects/${projectId}/env?${query}`; return client2.fetch(url3); } async function pullEnvRecords(client2, projectId, source, { target, gitBranch } = {}) { output_manager_default.debug( `Fetching Environment Variables of project ${projectId} and target ${target}` ); const query = new URLSearchParams3(); let url3 = `/v3/env/pull/${projectId}`; if (target) { url3 += `/${encodeURIComponent(target)}`; if (gitBranch) { url3 += `/${encodeURIComponent(gitBranch)}`; } } if (source) { query.set("source", source); } if (Array.from(query).length > 0) { url3 += `?${query}`; } return client2.fetch(url3); } var init_get_env_records = __esm({ "src/util/env/get-env-records.ts"() { "use strict"; init_output_manager(); } }); // src/util/parse-env.ts var parseEnv; var init_parse_env = __esm({ "src/util/parse-env.ts"() { "use strict"; parseEnv = (env) => { if (!env) { return {}; } if (typeof env === "string") { env = [env]; } if (Array.isArray(env)) { const startingDict = {}; return env.reduce((o, e2) => { let key; let value; const equalsSign = e2.indexOf("="); if (equalsSign === -1) { key = e2; } else { key = e2.slice(0, equalsSign); value = e2.slice(equalsSign + 1); } o[key] = value; return o; }, startingDict); } return env; }; } }); // src/util/env/diff-env-files.ts async function createEnvObject(envPath) { const envArr = (await (0, import_fs_extra5.readFile)(envPath, "utf-8")).replace(/"/g, "").split(/\r?\n|\r/).filter((line) => /^[^#]/.test(line)).filter((line) => /=/i.test(line)); const parsedEnv = parseEnv(envArr); if (Object.keys(parsedEnv).length === 0) { output_manager_default.debug("Failed to parse env file."); return; } return parsedEnv; } function findChanges(oldEnv, newEnv) { const added = []; const changed = []; for (const key of Object.keys(newEnv)) { if (oldEnv[key] === void 0) { added.push(key); } else if (oldEnv[key] !== newEnv[key]) { changed.push(key); } delete oldEnv[key]; } const removed = Object.keys(oldEnv); return { added, changed, removed }; } function buildDeltaString(oldEnv, newEnv) { const { added, changed, removed } = findChanges(oldEnv, newEnv); let deltaString = ""; deltaString += import_chalk23.default.green(addDeltaSection("+", changed, true)); deltaString += import_chalk23.default.green(addDeltaSection("+", added)); deltaString += import_chalk23.default.red(addDeltaSection("-", removed)); return deltaString ? import_chalk23.default.gray("Changes:\n") + deltaString + "\n" : deltaString; } function addDeltaSection(prefix, arr, changed = false) { if (arr.length === 0) return ""; return arr.sort().map((item) => `${prefix} ${item}${changed ? " (Updated)" : ""}`).join("\n") + "\n"; } var import_fs_extra5, import_chalk23; var init_diff_env_files = __esm({ "src/util/env/diff-env-files.ts"() { "use strict"; import_fs_extra5 = __toESM3(require_lib(), 1); init_parse_env(); import_chalk23 = __toESM3(require_source(), 1); init_output_manager(); } }); // ../../node_modules/.pnpm/json-parse-better-errors@1.0.2/node_modules/json-parse-better-errors/index.js var require_json_parse_better_errors = __commonJS2({ "../../node_modules/.pnpm/json-parse-better-errors@1.0.2/node_modules/json-parse-better-errors/index.js"(exports2, module2) { "use strict"; module2.exports = parseJson; function parseJson(txt, reviver, context) { context = context || 20; try { return JSON.parse(txt, reviver); } catch (e2) { if (typeof txt !== "string") { const isEmptyArray = Array.isArray(txt) && txt.length === 0; const errorMessage = "Cannot parse " + (isEmptyArray ? "an empty array" : String(txt)); throw new TypeError(errorMessage); } const syntaxErr = e2.message.match(/^Unexpected token.*position\s+(\d+)/i); const errIdx = syntaxErr ? +syntaxErr[1] : e2.message.match(/^Unexpected end of JSON.*/i) ? txt.length - 1 : null; if (errIdx != null) { const start = errIdx <= context ? 0 : errIdx - context; const end = errIdx + context >= txt.length ? txt.length : errIdx + context; e2.message += ` while parsing near '${start === 0 ? "" : "..."}${txt.slice(start, end)}${end === txt.length ? "" : "..."}'`; } else { e2.message += ` while parsing '${txt.slice(0, context * 2)}'`; } throw e2; } } } }); // src/util/projects/format-project.ts function formatProject(orgSlug, projectSlug, options) { const orgProjectSlug = `${orgSlug}/${projectSlug}`; const projectUrl = `https://vercel.com/${orgProjectSlug}`; const projectSlugLink = output_manager_default.link(import_chalk24.default.bold(orgProjectSlug), projectUrl, { fallback: () => import_chalk24.default.bold(orgProjectSlug), color: false, ...options }); return projectSlugLink; } var import_chalk24; var init_format_project = __esm({ "src/util/projects/format-project.ts"() { "use strict"; import_chalk24 = __toESM3(require_source(), 1); init_output_manager(); } }); // src/util/target/standard-environments.ts var STANDARD_ENVIRONMENTS; var init_standard_environments = __esm({ "src/util/target/standard-environments.ts"() { "use strict"; STANDARD_ENVIRONMENTS = [ "production", "preview", "development" ]; } }); // src/util/telemetry/commands/env/pull.ts var EnvPullTelemetryClient; var init_pull = __esm({ "src/util/telemetry/commands/env/pull.ts"() { "use strict"; init_telemetry(); init_standard_environments(); EnvPullTelemetryClient = class extends TelemetryClient { trackCliArgumentFilename(filename) { if (filename) { this.trackCliArgument({ arg: "filename", value: this.redactedValue }); } } trackCliOptionEnvironment(environment) { if (environment) { this.trackCliOption({ option: "environment", value: STANDARD_ENVIRONMENTS.includes( environment ) ? environment : this.redactedValue }); } } trackCliOptionGitBranch(gitBranch) { if (gitBranch) { this.trackCliOption({ option: "git-branch", value: this.redactedValue }); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/util/parse-target.ts function parseTarget({ flagName, flags }) { const targetFlagName = `--${flagName}`; const targetFlagValue = flags[targetFlagName]; const prodFlagValue = flags["--prod"]; if (prodFlagValue && targetFlagValue) { output_manager_default.warn( `Both \`--prod\` and \`${targetFlagName}\` detected. Ignoring \`--prod\`.` ); } if (typeof targetFlagValue === "string") { output_manager_default.debug(`Setting target to ${targetFlagValue}`); return targetFlagValue; } if (prodFlagValue) { output_manager_default.debug("Setting target to production"); return "production"; } return void 0; } var init_parse_target = __esm({ "src/util/parse-target.ts"() { "use strict"; init_output_manager(); } }); // src/commands/env/pull.ts import { closeSync, openSync, readSync } from "fs"; import { resolve as resolve2 } from "path"; function readHeadSync(path11, length) { const buffer = Buffer.alloc(length); const fd = openSync(path11, "r"); try { readSync(fd, buffer, 0, buffer.length, null); } finally { closeSync(fd); } return buffer.toString(); } function tryReadHeadSync(path11, length) { try { return readHeadSync(path11, length); } catch (err) { if (!(0, import_error_utils4.isErrnoException)(err) || err.code !== "ENOENT") { throw err; } } } async function pull(client2, argv, source = "vercel-cli:env:pull") { const telemetryClient = new EnvPullTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(pullSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArgs; if (args2.length > 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${getCommandName(`env pull `)}` ); return 1; } const [rawFilename] = args2; const filename = rawFilename || ".env.local"; const skipConfirmation = opts["--yes"]; const gitBranch = opts["--git-branch"]; telemetryClient.trackCliArgumentFilename(args2[0]); telemetryClient.trackCliFlagYes(skipConfirmation); telemetryClient.trackCliOptionGitBranch(gitBranch); telemetryClient.trackCliOptionEnvironment(opts["--environment"]); const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } else if (link4.status === "not_linked") { output_manager_default.error( `Your codebase isn\u2019t linked to a project on Vercel. Run ${getCommandName( "link" )} to begin.` ); return 1; } client2.config.currentTeam = link4.org.type === "team" ? link4.org.id : void 0; const environment = parseTarget({ flagName: "environment", flags: opts }) || "development"; await envPullCommandLogic( client2, filename, !!skipConfirmation, environment, link4, gitBranch, client2.cwd, source ); return 0; } async function envPullCommandLogic(client2, filename, skipConfirmation, environment, link4, gitBranch, cwd, source) { const fullPath = resolve2(cwd, filename); const head = tryReadHeadSync(fullPath, Buffer.byteLength(CONTENTS_PREFIX)); const exists = typeof head !== "undefined"; if (head === CONTENTS_PREFIX) { output_manager_default.log(`Overwriting existing ${import_chalk25.default.bold(filename)} file`); } else if (exists && !skipConfirmation && !await client2.input.confirm( `Found existing file ${param(filename)}. Do you want to overwrite?`, false )) { output_manager_default.log("Canceled"); return; } const projectSlugLink = formatProject(link4.org.slug, link4.project.name); const downloadMessage = gitBranch ? `Downloading \`${import_chalk25.default.cyan( environment )}\` Environment Variables for ${projectSlugLink} and any overrides for branch ${import_chalk25.default.cyan( gitBranch )}` : `Downloading \`${import_chalk25.default.cyan( environment )}\` Environment Variables for ${projectSlugLink}`; output_manager_default.log(downloadMessage); const pullStamp = stamp_default(); output_manager_default.spinner("Downloading"); const records = (await pullEnvRecords(client2, link4.project.id, source, { target: environment || "development", gitBranch })).env; let deltaString = ""; let oldEnv; if (exists) { oldEnv = await createEnvObject(fullPath); if (oldEnv) { const newEnv = (0, import_json_parse_better_errors.default)(JSON.stringify(records).replace(/\\"/g, "")); deltaString = buildDeltaString(oldEnv, newEnv); } } const contents = CONTENTS_PREFIX + Object.keys(records).sort().filter((key) => !VARIABLES_TO_IGNORE.includes(key)).map((key) => `${key}="${escapeValue(records[key])}"`).join("\n") + "\n"; await (0, import_fs_extra6.outputFile)(fullPath, contents, "utf8"); if (deltaString) { output_manager_default.print("\n" + deltaString); } else if (oldEnv && exists) { output_manager_default.log("No changes found."); } let isGitIgnoreUpdated = false; if (filename === ".env.local") { const rootPath = link4.repoRoot ?? cwd; isGitIgnoreUpdated = await addToGitIgnore(rootPath, ".env*.local"); } output_manager_default.print( `${prependEmoji( `${exists ? "Updated" : "Created"} ${import_chalk25.default.bold(filename)} file ${isGitIgnoreUpdated ? "and added it to .gitignore" : ""} ${import_chalk25.default.gray(pullStamp())}`, emoji("success") )} ` ); } function escapeValue(value) { return value ? value.replace(new RegExp("\n", "g"), "\\n").replace(new RegExp("\r", "g"), "\\r") : ""; } var import_chalk25, import_fs_extra6, import_error_utils4, import_json_parse_better_errors, CONTENTS_PREFIX, VARIABLES_TO_IGNORE; var init_pull2 = __esm({ "src/commands/env/pull.ts"() { "use strict"; import_chalk25 = __toESM3(require_source(), 1); import_fs_extra6 = __toESM3(require_lib(), 1); init_emoji(); init_param(); init_stamp(); init_pkg_name(); init_get_env_records(); init_diff_env_files(); import_error_utils4 = __toESM3(require_dist2(), 1); init_add_to_gitignore(); import_json_parse_better_errors = __toESM3(require_json_parse_better_errors(), 1); init_format_project(); init_output_manager(); init_pull(); init_command12(); init_get_args(); init_get_flags_specification(); init_error2(); init_parse_target(); init_link2(); CONTENTS_PREFIX = "# Created by Vercel CLI\n"; VARIABLES_TO_IGNORE = [ "VERCEL_ANALYTICS_ID", "VERCEL_SPEED_INSIGHTS_ID", "VERCEL_WEB_ANALYTICS_ID" ]; } }); // src/util/projects/link.ts var link_exports = {}; __export3(link_exports, { VERCEL_DIR: () => VERCEL_DIR, VERCEL_DIR_FALLBACK: () => VERCEL_DIR_FALLBACK, VERCEL_DIR_PROJECT: () => VERCEL_DIR_PROJECT, VERCEL_DIR_README: () => VERCEL_DIR_README, VERCEL_DIR_REPO: () => VERCEL_DIR_REPO, getLinkFromDir: () => getLinkFromDir, getLinkedProject: () => getLinkedProject, getProjectLink: () => getProjectLink, getVercelDirectory: () => getVercelDirectory, linkFolderToProject: () => linkFolderToProject, writeReadme: () => writeReadme }); import fs3 from "fs"; import { join as join5, relative as relative2 } from "path"; import { promisify } from "util"; import { NowBuildError as NowBuildError2, getPlatformEnv } from "@vercel/build-utils"; function getVercelDirectory(cwd) { const possibleDirs = [join5(cwd, VERCEL_DIR), join5(cwd, VERCEL_DIR_FALLBACK)]; const existingDirs = possibleDirs.filter((d) => isDirectory(d)); if (existingDirs.length > 1) { throw new NowBuildError2({ code: "CONFLICTING_CONFIG_DIRECTORIES", message: "Both `.vercel` and `.now` directories exist. Please remove the `.now` directory.", link: "https://vercel.link/combining-old-and-new-config" }); } return existingDirs[0] || possibleDirs[0]; } async function getProjectLink(client2, path11) { return await getProjectLinkFromRepoLink(client2, path11) || await getLinkFromDir(getVercelDirectory(path11)); } async function getProjectLinkFromRepoLink(client2, path11) { const repoLink = await getRepoLink(client2, path11); if (!repoLink?.repoConfig) { return null; } const projects = findProjectsFromPath( repoLink.repoConfig.projects, relative2(repoLink.rootPath, path11) ); let project; if (projects.length === 1) { project = projects[0]; } else { const selectableProjects = projects.length > 0 ? projects : repoLink.repoConfig.projects; project = await client2.input.select({ message: `Please select a Project:`, choices: selectableProjects.map((p) => ({ value: p, name: p.name })) }); } if (project) { return { repoRoot: repoLink.rootPath, orgId: repoLink.repoConfig.orgId, projectId: project.id, projectRootDirectory: project.directory }; } return null; } async function getLinkFromDir(dir) { try { const json = await readFile3(join5(dir, VERCEL_DIR_PROJECT), "utf8"); const ajv2 = new import_ajv.default(); const link4 = JSON.parse(json); if (!ajv2.validate(linkSchema, link4)) { throw new Error( `Project Settings are invalid. To link your project again, remove the ${dir} directory.` ); } return link4; } catch (err) { if ((0, import_error_utils5.isErrnoException)(err) && err.code && ["ENOENT", "ENOTDIR"].includes(err.code)) { return null; } if ((0, import_error_utils5.isError)(err) && err.name === "SyntaxError") { throw new Error( `Project Settings could not be retrieved. To link your project again, remove the ${dir} directory.` ); } throw err; } } async function getOrgById(client2, orgId) { if (orgId.startsWith("team_")) { const team = await getTeamById(client2, orgId); if (!team) return null; return { type: "team", id: team.id, slug: team.slug }; } const user = await getUser(client2); if (user.id !== orgId) return null; return { type: "user", id: orgId, slug: user.username }; } async function hasProjectLink(client2, projectLink, path11) { const VERCEL_ORG_ID = getPlatformEnv("ORG_ID"); const VERCEL_PROJECT_ID = getPlatformEnv("PROJECT_ID"); if (VERCEL_ORG_ID === projectLink.orgId && VERCEL_PROJECT_ID === projectLink.projectId) { return true; } const repoLink = await getRepoLink(client2, path11); if (repoLink?.repoConfig?.orgId === projectLink.orgId && repoLink.repoConfig.projects.find((p) => p.id === projectLink.projectId)) { return true; } const link4 = await getLinkFromDir(getVercelDirectory(path11)); if (link4 && link4.orgId === projectLink.orgId && link4.projectId === projectLink.projectId) { return true; } return false; } async function getLinkedProject(client2, path11 = client2.cwd) { const VERCEL_ORG_ID = getPlatformEnv("ORG_ID"); const VERCEL_PROJECT_ID = getPlatformEnv("PROJECT_ID"); const shouldUseEnv = Boolean(VERCEL_ORG_ID && VERCEL_PROJECT_ID); if ((VERCEL_ORG_ID || VERCEL_PROJECT_ID) && !shouldUseEnv) { output_manager_default.error( `You specified ${VERCEL_ORG_ID ? "`VERCEL_ORG_ID`" : "`VERCEL_PROJECT_ID`"} but you forgot to specify ${VERCEL_ORG_ID ? "`VERCEL_PROJECT_ID`" : "`VERCEL_ORG_ID`"}. You need to specify both to deploy to a custom project. ` ); return { status: "error", exitCode: 1 }; } const link4 = VERCEL_ORG_ID && VERCEL_PROJECT_ID ? { orgId: VERCEL_ORG_ID, projectId: VERCEL_PROJECT_ID } : await getProjectLink(client2, path11); if (!link4) { return { status: "not_linked", org: null, project: null }; } output_manager_default.spinner("Retrieving project\u2026", 1e3); let org = null; let project = null; try { [org, project] = await Promise.all([ getOrgById(client2, link4.orgId), getProjectByNameOrId(client2, link4.projectId, link4.orgId) ]); } catch (err) { if (isAPIError(err) && err.status === 403) { output_manager_default.stopSpinner(); if (err.missingToken || err.invalidToken) { throw new InvalidToken(); } else if (err.code === "forbidden" || err.code === "team_unauthorized") { throw new NowBuildError2({ message: `Could not retrieve Project Settings. To link your Project, remove the ${code( VERCEL_DIR )} directory and deploy again.`, code: "PROJECT_UNAUTHORIZED", link: "https://vercel.link/cannot-load-project-settings" }); } } throw err; } finally { output_manager_default.stopSpinner(); } if (!org || !project || project instanceof ProjectNotFound) { if (shouldUseEnv) { output_manager_default.error( `Project not found (${JSON.stringify({ VERCEL_PROJECT_ID, VERCEL_ORG_ID })}) ` ); return { status: "error", exitCode: 1 }; } output_manager_default.print( prependEmoji( "Your Project was either deleted, transferred to a new Team, or you don\u2019t have access to it anymore.\n", emoji("warning") ) ); return { status: "not_linked", org: null, project: null }; } return { status: "linked", org, project, repoRoot: link4.repoRoot }; } async function writeReadme(path11) { await writeFile2( join5(path11, VERCEL_DIR, VERCEL_DIR_README), await readFile3(join5(__dirname, "VERCEL_DIR_README.txt"), "utf8") ); } async function linkFolderToProject(client2, path11, projectLink, projectName, orgSlug, successEmoji = "link", autoConfirm = false, shouldPullEnv = true) { if (await hasProjectLink(client2, projectLink, path11)) { return; } try { await (0, import_fs_extra7.ensureDir)(join5(path11, VERCEL_DIR)); } catch (err) { if ((0, import_error_utils5.isErrnoException)(err) && err.code === "ENOTDIR") { return; } throw err; } await writeFile2( join5(path11, VERCEL_DIR, VERCEL_DIR_PROJECT), JSON.stringify({ ...projectLink, projectName }) ); await writeReadme(path11); const isGitIgnoreUpdated = await addToGitIgnore(path11); output_manager_default.print( prependEmoji( `Linked to ${import_chalk26.default.bold( `${orgSlug}/${projectName}` )} (created ${VERCEL_DIR}${isGitIgnoreUpdated ? " and added it to .gitignore" : ""})`, emoji(successEmoji) ) + "\n" ); if (!shouldPullEnv) { return; } const pullEnvConfirmed = autoConfirm || await client2.input.confirm( "Would you like to pull environment variables now?", true ); if (pullEnvConfirmed) { const originalCwd = client2.cwd; try { client2.cwd = path11; const args2 = autoConfirm ? ["--yes"] : []; const exitCode2 = await pull(client2, args2, "vercel-cli:link"); if (exitCode2 !== 0) { output_manager_default.error( "Failed to pull environment variables. You can run `vc env pull` manually." ); } } catch (error3) { output_manager_default.error( "Failed to pull environment variables. You can run `vc env pull` manually." ); } finally { client2.cwd = originalCwd; } } } var import_ajv, import_chalk26, import_fs_extra7, import_error_utils5, readFile3, writeFile2, VERCEL_DIR, VERCEL_DIR_FALLBACK, VERCEL_DIR_README, VERCEL_DIR_PROJECT, VERCEL_DIR_REPO, linkSchema; var init_link2 = __esm({ "src/util/projects/link.ts"() { "use strict"; import_ajv = __toESM3(require_ajv(), 1); import_chalk26 = __toESM3(require_source(), 1); import_fs_extra7 = __toESM3(require_lib(), 1); init_get_project_by_id_or_name(); init_errors_ts(); init_get_user(); init_get_team_by_id(); init_emoji(); init_global_path(); init_code(); import_error_utils5 = __toESM3(require_dist2(), 1); init_repo(); init_add_to_gitignore(); init_output_manager(); init_pull2(); readFile3 = promisify(fs3.readFile); writeFile2 = promisify(fs3.writeFile); VERCEL_DIR = ".vercel"; VERCEL_DIR_FALLBACK = ".now"; VERCEL_DIR_README = "README.txt"; VERCEL_DIR_PROJECT = "project.json"; VERCEL_DIR_REPO = "repo.json"; linkSchema = { type: "object", required: ["projectId", "orgId"], properties: { projectId: { type: "string", minLength: 1 }, orgId: { type: "string", minLength: 1 }, projectName: { type: "string", minLength: 1 } } }; } }); // src/util/config/local-path.ts import path2 from "path"; import { existsSync as existsSync2 } from "fs"; function getLocalPathConfig(prefix) { const argv = getArgs(process.argv.slice(2), {}, { permissive: true }); const customPath = argv["--local-config"]; if (customPath) { if (typeof customPath !== "string") { throw new InvalidLocalConfig(customPath); } return path2.resolve(prefix, customPath); } const vercelConfigPath = path2.join(prefix, "vercel.json"); const nowConfigPath = path2.join(prefix, "now.json"); const vercelConfigExists = existsSync2(vercelConfigPath); const nowConfigExists = existsSync2(nowConfigPath); if (nowConfigExists && vercelConfigExists) { throw new ConflictingConfigFiles([vercelConfigPath, nowConfigPath]); } const compiledConfigPath = path2.join(prefix, VERCEL_DIR, "vercel.json"); const compiledConfigExists = existsSync2(compiledConfigPath); if (compiledConfigExists) { return compiledConfigPath; } if (nowConfigExists) { return nowConfigPath; } return vercelConfigPath; } var init_local_path = __esm({ "src/util/config/local-path.ts"() { "use strict"; init_errors_ts(); init_errors_ts(); init_get_args(); init_link2(); } }); // ../../node_modules/.pnpm/dotenv@4.0.0/node_modules/dotenv/lib/main.js var require_main = __commonJS2({ "../../node_modules/.pnpm/dotenv@4.0.0/node_modules/dotenv/lib/main.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); function parse11(src) { var obj = {}; src.toString().split("\n").forEach(function(line) { var keyValueArr = line.match(/^\s*([\w\.\-]+)\s*=\s*(.*)?\s*$/); if (keyValueArr != null) { var key = keyValueArr[1]; var value = keyValueArr[2] ? keyValueArr[2] : ""; var len = value ? value.length : 0; if (len > 0 && value.charAt(0) === '"' && value.charAt(len - 1) === '"') { value = value.replace(/\\n/gm, "\n"); } value = value.replace(/(^['"]|['"]$)/g, "").trim(); obj[key] = value; } }); return obj; } function config2(options) { var path11 = ".env"; var encoding = "utf8"; if (options) { if (options.path) { path11 = options.path; } if (options.encoding) { encoding = options.encoding; } } try { var parsedObj = parse11(fs15.readFileSync(path11, { encoding })); Object.keys(parsedObj).forEach(function(key) { process.env[key] = process.env[key] || parsedObj[key]; }); return { parsed: parsedObj }; } catch (e2) { return { error: e2 }; } } module2.exports.config = config2; module2.exports.load = config2; module2.exports.parse = parse11; } }); // src/util/compile-vercel-config.ts var compile_vercel_config_exports = {}; __export3(compile_vercel_config_exports, { DEFAULT_VERCEL_CONFIG_FILENAME: () => DEFAULT_VERCEL_CONFIG_FILENAME, VERCEL_CONFIG_EXTENSIONS: () => VERCEL_CONFIG_EXTENSIONS, compileVercelConfig: () => compileVercelConfig, findSourceVercelConfigFile: () => findSourceVercelConfigFile, getVercelConfigPath: () => getVercelConfigPath, normalizeConfig: () => normalizeConfig }); import { mkdir, writeFile as writeFile3, unlink, access } from "fs/promises"; import { join as join6, basename as basename2 } from "path"; import { fork } from "child_process"; import { NowBuildError as NowBuildError3 } from "@vercel/build-utils"; function toRouteFormat(item) { if ("src" in item) return item; const { source, destination, headers, statusCode, permanent, ...rest } = item; const route = { src: source, ...rest }; if (destination) route.dest = destination; if (headers) route.headers = Object.fromEntries(headers.map((h) => [h.key, h.value])); if (statusCode !== void 0) { route.status = statusCode; } else if (permanent !== void 0) { route.status = permanent ? 308 : 307; } return route; } function normalizeConfig(config2) { const normalized = { ...config2 }; const { rewrites, redirects, headers } = normalized; let allRoutes = normalized.routes || []; const hasRoutes = allRoutes.length > 0; const hasRewrites = (rewrites?.length ?? 0) > 0; const hasRedirects = (redirects?.length ?? 0) > 0; const hasHeaders = (headers?.length ?? 0) > 0; function hasRouteFormat(items) { return items?.some((item) => "src" in item) ?? false; } if (hasRoutes && (hasRewrites || hasRedirects || hasHeaders)) { return normalized; } const shouldConvertRewrites = hasRewrites && hasRouteFormat(rewrites); const shouldConvertRedirects = hasRedirects && hasRouteFormat(redirects); const shouldConvertHeaders = hasHeaders && hasRouteFormat(headers); const someWillConvert = shouldConvertRewrites || shouldConvertRedirects || shouldConvertHeaders; const someWontConvert = hasRewrites && !shouldConvertRewrites || hasRedirects && !shouldConvertRedirects || hasHeaders && !shouldConvertHeaders; if (someWillConvert && someWontConvert) { throw new NowBuildError3({ code: "INVALID_VERCEL_CONFIG", message: "Transforms (e.g., requestHeaders) require the `routes` format, which cannot be used alongside `rewrites`, `redirects`, or `headers`. Move everything into the `routes` array instead.", link: "https://vercel.com/docs/projects/project-configuration#routes" }); } if (rewrites && shouldConvertRewrites) { allRoutes = [...allRoutes, ...rewrites.map(toRouteFormat)]; delete normalized.rewrites; } if (redirects && shouldConvertRedirects) { allRoutes = [...allRoutes, ...redirects.map(toRouteFormat)]; delete normalized.redirects; } if (headers && shouldConvertHeaders) { allRoutes = [...allRoutes, ...headers.map(toRouteFormat)]; delete normalized.headers; } if (allRoutes.length > 0) { normalized.routes = allRoutes.map(toRouteFormat); } return normalized; } async function fileExists(filePath) { try { await access(filePath); return true; } catch { return false; } } async function findAllVercelConfigFiles(workPath) { const foundFiles = []; for (const ext of VERCEL_CONFIG_EXTENSIONS) { const configPath = join6(workPath, `vercel.${ext}`); if (await fileExists(configPath)) { foundFiles.push(configPath); } } return foundFiles; } async function findSourceVercelConfigFile(workPath) { for (const ext of VERCEL_CONFIG_EXTENSIONS) { const configPath = join6(workPath, `vercel.${ext}`); if (await fileExists(configPath)) { return basename2(configPath); } } return null; } async function findVercelConfigFile(workPath) { const foundFiles = await findAllVercelConfigFiles(workPath); if (foundFiles.length > 1) { throw new ConflictingConfigFiles( foundFiles, "Multiple vercel config files found. Please use only one configuration file.", "https://vercel.com/docs/projects/project-configuration" ); } return foundFiles[0] || null; } function parseConfigLoaderError(stderr) { if (!stderr.trim()) { return ""; } const moduleNotFoundMatch = stderr.match( /Error \[ERR_MODULE_NOT_FOUND\]: Cannot find package '([^']+)'/ ); if (moduleNotFoundMatch) { const packageName2 = moduleNotFoundMatch[1]; return `Cannot find package '${packageName2}'. Make sure it's installed in your project dependencies.`; } const syntaxErrorMatch = stderr.match(/SyntaxError: (.+?)(?:\n|$)/); if (syntaxErrorMatch) { return `Syntax error: ${syntaxErrorMatch[1]}`; } const errorMatch = stderr.match( /^(?:Error|TypeError|ReferenceError): (.+?)(?:\n|$)/m ); if (errorMatch) { return errorMatch[1]; } return stderr.trim(); } async function compileVercelConfig(workPath) { const vercelJsonPath = join6(workPath, "vercel.json"); const nowJsonPath = join6(workPath, "now.json"); const hasVercelJson = await fileExists(vercelJsonPath); const hasNowJson = await fileExists(nowJsonPath); if (hasVercelJson && hasNowJson) { throw new ConflictingConfigFiles([vercelJsonPath, nowJsonPath]); } const vercelConfigPath = await findVercelConfigFile(workPath); const vercelDir = join6(workPath, VERCEL_DIR); const compiledConfigPath = join6(vercelDir, "vercel.json"); if (vercelConfigPath && hasNowJson) { throw new ConflictingConfigFiles( [vercelConfigPath, nowJsonPath], `Both ${basename2(vercelConfigPath)} and now.json exist in your project. Please use only one configuration method.`, "https://vercel.com/docs/projects/project-configuration" ); } if (vercelConfigPath && hasVercelJson) { throw new ConflictingConfigFiles( [vercelConfigPath, vercelJsonPath], `Both ${basename2(vercelConfigPath)} and vercel.json exist in your project. Please use only one configuration method.`, "https://vercel.com/docs/projects/project-configuration" ); } if (!vercelConfigPath) { if (hasVercelJson) { return { configPath: vercelJsonPath, wasCompiled: false }; } if (hasNowJson) { return { configPath: nowJsonPath, wasCompiled: false }; } if (await fileExists(compiledConfigPath)) { return { configPath: compiledConfigPath, wasCompiled: true, sourceFile: await findSourceVercelConfigFile(workPath) ?? void 0 }; } return { configPath: null, wasCompiled: false }; } (0, import_dotenv.config)({ path: join6(workPath, ".env") }); (0, import_dotenv.config)({ path: join6(workPath, ".env.local") }); const tempOutPath = join6(vercelDir, "vercel-temp.mjs"); const loaderPath = join6(vercelDir, "vercel-loader.mjs"); try { const { build: build2 } = await import("esbuild"); await mkdir(vercelDir, { recursive: true }); await build2({ entryPoints: [vercelConfigPath], bundle: true, platform: "node", format: "esm", outfile: tempOutPath, packages: "external", target: "node20", sourcemap: "inline" }); const loaderScript = ` import { pathToFileURL } from 'url'; const configModule = await import(pathToFileURL(process.argv[2]).href); const config = ('default' in configModule) ? configModule.default : ('config' in configModule) ? configModule.config : configModule; process.send(config); `; await writeFile3(loaderPath, loaderScript, "utf-8"); const config2 = await new Promise((resolve14, reject) => { const child = fork(loaderPath, [tempOutPath], { stdio: ["pipe", "pipe", "pipe", "ipc"] }); let stderrOutput = ""; let stdoutOutput = ""; if (child.stderr) { child.stderr.on("data", (data) => { stderrOutput += data.toString(); }); } if (child.stdout) { child.stdout.on("data", (data) => { stdoutOutput += data.toString(); }); } const timeout = setTimeout(() => { child.kill(); reject(new Error("Config loader timed out after 10 seconds")); }, 1e4); child.on("message", (message2) => { clearTimeout(timeout); child.kill(); resolve14(message2); }); child.on("error", (err) => { clearTimeout(timeout); reject(err); }); child.on("exit", (code2) => { clearTimeout(timeout); if (code2 !== 0) { if (stderrOutput.trim()) { output_manager_default.log(stderrOutput); } if (stdoutOutput.trim()) { output_manager_default.log(stdoutOutput); } const parsedError = parseConfigLoaderError(stderrOutput); if (parsedError) { reject(new Error(parsedError)); } else if (stdoutOutput.trim()) { reject(new Error(stdoutOutput.trim())); } else { reject(new Error(`Config loader exited with code ${code2}`)); } } }); }); const normalizedConfig = normalizeConfig(config2); await writeFile3( compiledConfigPath, JSON.stringify(normalizedConfig, null, 2), "utf-8" ); output_manager_default.debug(`Compiled ${vercelConfigPath} -> ${compiledConfigPath}`); return { configPath: compiledConfigPath, wasCompiled: true, sourceFile: await findSourceVercelConfigFile(workPath) ?? void 0 }; } catch (error3) { throw new NowBuildError3({ code: error3.code ?? "vercel_ts_compilation_failed", message: `Failed to compile ${basename2(vercelConfigPath)}: ${error3.message}`, link: error3.link ?? "https://vercel.com/docs/projects/project-configuration" }); } finally { await Promise.all([ unlink(tempOutPath).catch((err) => { if (err.code !== "ENOENT") { output_manager_default.debug(`Failed to cleanup temp file: ${err}`); } }), unlink(loaderPath).catch((err) => { if (err.code !== "ENOENT") { output_manager_default.debug(`Failed to cleanup loader file: ${err}`); } }) ]); } } async function getVercelConfigPath(workPath) { const vercelJsonPath = join6(workPath, "vercel.json"); const nowJsonPath = join6(workPath, "now.json"); const compiledConfigPath = join6(workPath, VERCEL_DIR, "vercel.json"); if (await fileExists(vercelJsonPath)) { return vercelJsonPath; } if (await fileExists(nowJsonPath)) { return nowJsonPath; } if (await fileExists(compiledConfigPath)) { return compiledConfigPath; } return nowJsonPath; } var import_dotenv, VERCEL_CONFIG_EXTENSIONS, DEFAULT_VERCEL_CONFIG_FILENAME; var init_compile_vercel_config = __esm({ "src/util/compile-vercel-config.ts"() { "use strict"; import_dotenv = __toESM3(require_main(), 1); init_output_manager(); init_link2(); init_errors_ts(); VERCEL_CONFIG_EXTENSIONS = [ "ts", "mts", "js", "mjs", "cjs" ]; DEFAULT_VERCEL_CONFIG_FILENAME = "Vercel config"; } }); // src/util/config/files.ts import { join as join7, basename as basename3, dirname as dirname2 } from "path"; import { accessSync, constants } from "fs"; function getConfigFilePath() { return CONFIG_FILE_PATH; } function getAuthConfigFilePath() { return AUTH_CONFIG_FILE_PATH; } function readLocalConfig(prefix = process.cwd()) { let config2 = void 0; let target = ""; try { target = getLocalPathConfig(prefix); } catch (err) { if (err instanceof NowError) { output_manager_default.error(err.message); process.exit(1); } else { throw err; } } if (!target) { return; } try { try { accessSync(target, constants.F_OK); config2 = import_load_json_file.default.sync(target); } catch { } } catch (err) { if ((0, import_error_utils6.isError)(err) && err.name === "JSONError") { output_manager_default.error(err.message); } else if ((0, import_error_utils6.isErrnoException)(err)) { const code2 = err.code ? ` (${err.code})` : ""; output_manager_default.error(`Failed to read config file: ${target}${code2}`); } else { output_manager_default.prettyError(err); } process.exit(1); } if (!config2) { return; } const isCompiledConfig = basename3(target) === "vercel.json" && basename3(dirname2(target)) === VERCEL_DIR; if (isCompiledConfig) { const workPath = dirname2(dirname2(target)); let sourceFile = null; for (const ext of VERCEL_CONFIG_EXTENSIONS) { const configPath = join7(workPath, `vercel.${ext}`); try { accessSync(configPath, constants.F_OK); sourceFile = basename3(configPath); break; } catch { } } config2[import_client.fileNameSymbol] = sourceFile || DEFAULT_VERCEL_CONFIG_FILENAME; } else { config2[import_client.fileNameSymbol] = basename3(target); } return config2; } var import_load_json_file, import_write_json_file, import_client, import_error_utils6, VERCEL_DIR2, CONFIG_FILE_PATH, AUTH_CONFIG_FILE_PATH, readConfigFile, writeToConfigFile, readAuthConfigFile, writeToAuthConfigFile; var init_files = __esm({ "src/util/config/files.ts"() { "use strict"; import_load_json_file = __toESM3(require_load_json_file(), 1); import_write_json_file = __toESM3(require_write_json_file(), 1); import_client = __toESM3(require_dist7(), 1); init_global_path(); init_local_path(); init_now_error(); init_highlight(); import_error_utils6 = __toESM3(require_dist2(), 1); init_link2(); init_compile_vercel_config(); init_output_manager(); VERCEL_DIR2 = global_path_default(); CONFIG_FILE_PATH = join7(VERCEL_DIR2, "config.json"); AUTH_CONFIG_FILE_PATH = join7(VERCEL_DIR2, "auth.json"); readConfigFile = () => { const config2 = import_load_json_file.default.sync(CONFIG_FILE_PATH); return config2; }; writeToConfigFile = (stuff) => { try { return import_write_json_file.default.sync(CONFIG_FILE_PATH, stuff, { indent: 2 }); } catch (err) { if ((0, import_error_utils6.isErrnoException)(err)) { if ((0, import_error_utils6.isErrnoException)(err) && err.code === "EPERM") { output_manager_default.error( `Not able to create ${highlight( CONFIG_FILE_PATH )} (operation not permitted).` ); process.exit(1); } else if (err.code === "EBADF") { output_manager_default.error( `Not able to create ${highlight( CONFIG_FILE_PATH )} (bad file descriptor).` ); process.exit(1); } } throw err; } }; readAuthConfigFile = () => { const config2 = import_load_json_file.default.sync(AUTH_CONFIG_FILE_PATH); return config2; }; writeToAuthConfigFile = (authConfig) => { if (authConfig.skipWrite) { return; } try { return import_write_json_file.default.sync(AUTH_CONFIG_FILE_PATH, authConfig, { indent: 2, mode: 384 }); } catch (err) { if ((0, import_error_utils6.isErrnoException)(err)) { if (err.code === "EPERM") { output_manager_default.error( `Not able to create ${highlight( AUTH_CONFIG_FILE_PATH )} (operation not permitted).` ); process.exit(1); } else if (err.code === "EBADF") { output_manager_default.error( `Not able to create ${highlight( AUTH_CONFIG_FILE_PATH )} (bad file descriptor).` ); process.exit(1); } } throw err; } }; } }); // src/util/promise.ts function sharedPromise(fn2) { let promise = null; return function(...args2) { if (!promise) { promise = fn2.apply(this, args2); promise.finally(() => { promise = null; }); } return promise; }; } var init_promise = __esm({ "src/util/promise.ts"() { "use strict"; } }); // src/util/sleep.ts function sleep(ms34) { return new Promise((resolve14) => { setTimeout(resolve14, ms34); }); } var init_sleep = __esm({ "src/util/sleep.ts"() { "use strict"; } }); // src/util/client.ts import { EventEmitter } from "events"; import { URL as URL6 } from "url"; function isValidAccessToken(authConfig) { if (!authConfig.token) return false; if (typeof authConfig.expiresAt !== "number") return true; const nowInSeconds = Math.floor(Date.now() / 1e3); return authConfig.expiresAt >= nowInSeconds; } function hasRefreshToken(authConfig) { return "refreshToken" in authConfig; } var import_chalk27, import_async_retry, import_node_fetch2, import_error_utils7, isSAMLError, isJSONObject, Client; var init_client = __esm({ "src/util/client.ts"() { "use strict"; import_chalk27 = __toESM3(require_source(), 1); init_esm4(); init_esm5(); init_esm6(); init_esm7(); init_esm8(); init_esm10(); init_esm11(); import_async_retry = __toESM3(require_dist5(), 1); import_node_fetch2 = __toESM3(require_lib7(), 1); init_ua(); init_response_error(); init_print_indications(); init_reauthenticate(); init_files(); init_promise(); init_errors_ts(); import_error_utils7 = __toESM3(require_dist2(), 1); init_sleep(); init_output_manager(); init_oauth(); isSAMLError = (v) => { return v && v.saml; }; isJSONObject = (v) => { return v && typeof v == "object" && v.constructor === Object; }; Client = class extends EventEmitter { constructor(opts) { super(); this.reauthenticate = sharedPromise(async function(error3) { const result = await reauthenticate(this, error3); if (typeof result === "number") { if (error3 instanceof APIError) { output_manager_default.prettyError(error3); } else { output_manager_default.error( `Failed to re-authenticate for ${(0, import_chalk27.bold)(error3.scope)} scope` ); } throw error3; } }); this._onRetry = (error3) => { output_manager_default.debug(`Retrying: ${error3} ${error3.stack}`); }; this.agent = opts.agent; this.argv = opts.argv; this.apiUrl = opts.apiUrl; this.authConfig = opts.authConfig; this.stdin = opts.stdin; this.stdout = opts.stdout; this.stderr = opts.stderr; this.config = opts.config; this.localConfig = opts.localConfig; this.localConfigPath = opts.localConfigPath; this.requestIdCounter = 1; this.telemetryEventStore = opts.telemetryEventStore; this.isAgent = opts.isAgent ?? false; this.agentName = opts.agentName; this.dangerouslySkipPermissions = opts.dangerouslySkipPermissions ?? false; const theme = { prefix: (0, import_chalk27.gray)("?"), style: { answer: import_chalk27.gray } }; this.input = { text: (opts2) => esm_default5({ theme, ...opts2 }, { input: this.stdin, output: this.stderr }), password: (opts2) => esm_default6( { theme, ...opts2 }, { input: this.stdin, output: this.stderr } ), checkbox: (opts2) => esm_default2( { theme, ...opts2 }, { input: this.stdin, output: this.stderr } ), expand: (opts2) => esm_default4({ theme, ...opts2 }, { input: this.stdin, output: this.stderr }), confirm: (message2, default_value) => esm_default3( { theme, message: message2, default: default_value }, { input: this.stdin, output: this.stderr } ), select: (opts2) => esm_default8( { theme, ...opts2 }, { input: this.stdin, output: this.stderr } ), search: (opts2) => esm_default7( { theme, ...opts2 }, { input: this.stdin, output: this.stderr } ) }; } retry(fn2, { retries = 3, maxTimeout = Infinity } = {}) { return (0, import_async_retry.default)(fn2, { retries, maxTimeout, onRetry: this._onRetry }); } /** * This method silently tries to refresh the access_token if it is expired. * * If the refresh_token is also expired, it will not attempt to refresh it. * If there is any error during the refresh process, it will not throw an error. */ async ensureAuthorized() { const { authConfig } = this; if (isValidAccessToken(authConfig)) { output_manager_default.debug("Valid access token, skipping token refresh."); return; } if (!hasRefreshToken(authConfig)) { output_manager_default.debug("No refresh token found, emptying auth config."); this.emptyAuthConfig(); this.writeToAuthConfigFile(); return; } const tokenResponse = await refreshTokenRequest({ refresh_token: authConfig.refreshToken }); const [tokensError, tokens] = await processTokenResponse(tokenResponse); if (tokensError) { output_manager_default.debug("Error refreshing token, emptying auth config."); this.emptyAuthConfig(); this.writeToAuthConfigFile(); return; } this.updateAuthConfig({ token: tokens.access_token, expiresAt: Math.floor(Date.now() / 1e3) + tokens.expires_in }); if (tokens.refresh_token) { this.updateAuthConfig({ refreshToken: tokens.refresh_token }); } this.writeToAuthConfigFile(); this.writeToConfigFile(); output_manager_default.debug("Tokens refreshed successfully."); } updateConfig(config2) { this.config = { ...this.config, ...config2 }; } writeToConfigFile() { writeToConfigFile(this.config); } updateAuthConfig(authConfig) { this.authConfig = { ...this.authConfig, ...authConfig }; } emptyAuthConfig() { this.authConfig = {}; } writeToAuthConfigFile() { writeToAuthConfigFile(this.authConfig); } /** * Confirms DELETE operations with the user. * * - DELETE operations always require confirmation (unless --dangerously-skip-permissions is used) * - When running under an AI agent with --dangerously-skip-permissions, * a warning is displayed for visibility * * @returns true if the operation should proceed, false if canceled */ async confirmMutatingOperation(url3, method) { const normalizedMethod = (method || "GET").toUpperCase(); const isDelete = normalizedMethod === "DELETE"; if (!isDelete) { return true; } if (this.isAgent && this.dangerouslySkipPermissions) { const agentInfo = this.agentName ? ` (${this.agentName})` : ""; output_manager_default.print("\n"); output_manager_default.print( (0, import_chalk27.bgRed)((0, import_chalk27.white)((0, import_chalk27.bold)(" \u26A0 WARNING "))) + (0, import_chalk27.red)((0, import_chalk27.bold)(" AGENT MODE - DELETE CONFIRMATION BYPASSED\n")) ); output_manager_default.print( (0, import_chalk27.yellow)( ` An AI agent${agentInfo} is executing a ${(0, import_chalk27.bold)("DELETE")} request with --dangerously-skip-permissions flag. ` ) ); output_manager_default.print((0, import_chalk27.yellow)(` This operation will delete data: ${(0, import_chalk27.bold)(url3)} `)); output_manager_default.print( (0, import_chalk27.yellow)( ` The --dangerously-skip-permissions flag has bypassed the confirmation prompt. ` ) ); } if (this.dangerouslySkipPermissions) { return true; } if (!this.stdin.isTTY) { output_manager_default.error( `DELETE operations require confirmation. Use ${(0, import_chalk27.bold)("--dangerously-skip-permissions")} to skip confirmation in non-interactive mode.` ); return false; } const message2 = `You are about to perform a ${(0, import_chalk27.red)((0, import_chalk27.bold)("DELETE"))} operation on: ${(0, import_chalk27.bold)(url3)} Are you sure you want to proceed?`; output_manager_default.print("\n"); const confirmed = await this.input.confirm(message2, false); output_manager_default.print("\n"); if (!confirmed) { output_manager_default.log("Operation canceled by user."); } return confirmed; } async _fetch(_url, opts = {}) { const url3 = new URL6(_url, this.apiUrl); if (opts.accountId || opts.useCurrentTeam !== false) { if (opts.accountId) { if (opts.accountId.startsWith("team_")) { url3.searchParams.set("teamId", opts.accountId); } else { url3.searchParams.delete("teamId"); } } else if (opts.useCurrentTeam !== false && this.config.currentTeam) { url3.searchParams.set("teamId", this.config.currentTeam); } } const headers = new import_node_fetch2.Headers(opts.headers); headers.set("user-agent", ua_default); await this.ensureAuthorized(); if (this.authConfig.token) { headers.set("authorization", `Bearer ${this.authConfig.token}`); } let body; if (isJSONObject(opts.body)) { body = JSON.stringify(opts.body); headers.set("content-type", "application/json; charset=utf-8"); } else { body = opts.body; } const requestId = this.requestIdCounter++; return output_manager_default.time( (res) => { if (res) { return `#${requestId} \u2190 ${res.status} ${res.statusText}: ${res.headers.get("x-vercel-id")}`; } else { return `#${requestId} \u2192 ${opts.method || "GET"} ${url3.href}`; } }, (0, import_node_fetch2.default)(url3, { agent: this.agent, ...opts, headers, body }) ); } fetch(url3, opts = {}) { return this.retry(async (bail) => { const res = await this._fetch(url3, opts); printIndications(res); if (!res.ok) { const error3 = await responseError(res); if (isSAMLError(error3) && error3.teamId) { try { await this.reauthenticate(error3); } catch (reauthError) { return bail((0, import_error_utils7.normalizeError)(reauthError)); } } else if (typeof error3.retryAfterMs === "number") { const randomSkewMs = 3e4 * Math.random(); await sleep(error3.retryAfterMs + randomSkewMs); } else if (res.status >= 400 && res.status < 500) { return bail(error3); } throw error3; } if (opts.json === false) { return res; } const contentType2 = res.headers.get("content-type"); if (!contentType2) { return null; } return contentType2.includes("application/json") ? res.json() : res; }, opts.retry); } async *fetchPaginated(url3, opts) { const endpoint = typeof url3 === "string" ? new URL6(url3, this.apiUrl) : new URL6(url3.href); if (!endpoint.searchParams.has("limit")) { endpoint.searchParams.set("limit", "100"); } let next; do { if (next) { await sleep(100); endpoint.searchParams.set("until", String(next)); } const res = await this.fetch( endpoint.href, opts ); yield res; next = res.pagination?.next; } while (next); } get cwd() { return process.cwd(); } set cwd(v) { process.chdir(v); } }; } }); // src/util/get-scope.ts async function getScope(client2, opts = {}) { const user = await getUser(client2); let contextName = user.username || user.email; let team = null; const defaultTeamId = user.version === "northstar" ? user.defaultTeamId : void 0; const currentTeamOrDefaultTeamId = client2.config.currentTeam || defaultTeamId; if (currentTeamOrDefaultTeamId && opts.getTeam !== false) { team = await getTeamById(client2, currentTeamOrDefaultTeamId); if (!team) { throw new TeamDeleted(); } contextName = team.slug; } return { contextName, team, user }; } var init_get_scope = __esm({ "src/util/get-scope.ts"() { "use strict"; init_get_user(); init_get_team_by_id(); init_errors_ts(); } }); // src/util/read-json-file.ts async function readJSONFile(file) { const content = await readFileSafe(file); if (content === null) { return content; } try { const json = (0, import_json_parse_better_errors2.default)(content); return json; } catch (error3) { return new CantParseJSONFile(file, (0, import_error_utils9.errorToString)(error3)); } } async function readFileSafe(file) { try { return await import_fs_extra8.default.readFile(file, "utf8"); } catch (_) { return null; } } var import_fs_extra8, import_json_parse_better_errors2, import_error_utils9; var init_read_json_file = __esm({ "src/util/read-json-file.ts"() { "use strict"; import_fs_extra8 = __toESM3(require_lib(), 1); init_errors_ts(); import_json_parse_better_errors2 = __toESM3(require_json_parse_better_errors(), 1); import_error_utils9 = __toESM3(require_dist2(), 1); } }); // src/util/get-update-command.ts import { sep, dirname as dirname3, join as join8, resolve as resolve3 } from "path"; import { scanParentDirs } from "@vercel/build-utils"; async function getConfigPrefix() { const paths = [ process.env.npm_config_userconfig || process.env.NPM_CONFIG_USERCONFIG, join8(process.env.HOME || "/", ".npmrc"), process.env.npm_config_globalconfig || process.env.NPM_CONFIG_GLOBALCONFIG ].filter(Boolean); for (const configPath of paths) { if (!configPath) { continue; } const content = await (0, import_fs_extra9.readFile)(configPath).then((buffer) => buffer.toString()).catch(() => null); if (content) { const [prefix] = content.split("\n").map((line) => line && line.trim()).filter((line) => line && line.startsWith("prefix")).map((line) => line.slice(line.indexOf("=") + 1).trim()); if (prefix) { return prefix; } } } return null; } async function isGlobal() { try { if (dirname3(process.argv[0]) === dirname3(process.argv[1])) { return true; } const isWindows = process.platform === "win32"; const defaultPath = isWindows ? process.env.APPDATA : "/usr/local/lib"; const installPath = await (0, import_fs_extra9.realpath)(resolve3(__dirname)); if (installPath.includes(["", "yarn", "global", "node_modules", ""].join(sep))) { return true; } if (installPath.includes(["", "pnpm", "global", ""].join(sep))) { return true; } if (installPath.includes(["", "fnm", "node-versions", ""].join(sep))) { return true; } const prefixPath = process.env.PREFIX || process.env.npm_config_prefix || process.env.NPM_CONFIG_PREFIX || await getConfigPrefix() || defaultPath; if (!prefixPath) { return true; } return installPath.startsWith(await (0, import_fs_extra9.realpath)(prefixPath)); } catch (_) { return true; } } async function getUpdateCommand() { const pkgAndVersion = `${packageName}@latest`; const entrypoint = await (0, import_fs_extra9.realpath)(process.argv[1]); let { cliType, lockfilePath } = await scanParentDirs( dirname3(dirname3(entrypoint)) ); if (!lockfilePath) { cliType = "npm"; } const yarn = cliType === "yarn"; let install2 = yarn ? "add" : "i"; if (await isGlobal()) { if (yarn) { install2 = "global add"; } else { install2 = "i -g"; } } return `${cliType} ${install2} ${pkgAndVersion}`; } var import_fs_extra9; var init_get_update_command = __esm({ "src/util/get-update-command.ts"() { "use strict"; import_fs_extra9 = __toESM3(require_lib(), 1); init_pkg_name(); } }); // src/util/upgrade.ts import { spawn as spawn3 } from "child_process"; async function executeUpgrade() { const updateCommand = await getUpdateCommand(); const [command, ...args2] = updateCommand.split(" "); output_manager_default.log(`Upgrading Vercel CLI...`); output_manager_default.debug(`Executing: ${updateCommand}`); return new Promise((resolve14) => { const stdout = []; const stderr = []; const upgradeProcess = spawn3(command, args2, { stdio: ["inherit", "pipe", "pipe"], shell: false }); upgradeProcess.stdout?.on("data", (data) => { stdout.push(data); }); upgradeProcess.stderr?.on("data", (data) => { stderr.push(data); }); upgradeProcess.on("error", (err) => { output_manager_default.error(`Failed to execute upgrade command: ${err.message}`); output_manager_default.log(`You can try running the command manually: ${updateCommand}`); resolve14(1); }); upgradeProcess.on("close", (code2) => { if (code2 === 0) { output_manager_default.success("Vercel CLI has been upgraded successfully!"); } else { const stdoutStr = Buffer.concat(stdout).toString(); const stderrStr = Buffer.concat(stderr).toString(); if (stdoutStr) { output_manager_default.print(stdoutStr); } if (stderrStr) { output_manager_default.print(stderrStr); } output_manager_default.error(`Upgrade failed with exit code ${code2 ?? "unknown"}`); output_manager_default.log( `You can try running the command manually: ${updateCommand}` ); } resolve14(code2 ?? 1); }); }); } var init_upgrade = __esm({ "src/util/upgrade.ts"() { "use strict"; init_get_update_command(); init_output_manager(); } }); // ../../node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.js var require_lru_cache = __commonJS2({ "../../node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.js"(exports2, module2) { var perf = typeof performance === "object" && performance && typeof performance.now === "function" ? performance : Date; var hasAbortController = typeof AbortController === "function"; var AC = hasAbortController ? AbortController : class AbortController { constructor() { this.signal = new AS(); } abort(reason = new Error("This operation was aborted")) { this.signal.reason = this.signal.reason || reason; this.signal.aborted = true; this.signal.dispatchEvent({ type: "abort", target: this.signal }); } }; var hasAbortSignal = typeof AbortSignal === "function"; var hasACAbortSignal = typeof AC.AbortSignal === "function"; var AS = hasAbortSignal ? AbortSignal : hasACAbortSignal ? AC.AbortController : class AbortSignal { constructor() { this.reason = void 0; this.aborted = false; this._listeners = []; } dispatchEvent(e2) { if (e2.type === "abort") { this.aborted = true; this.onabort(e2); this._listeners.forEach((f) => f(e2), this); } } onabort() { } addEventListener(ev, fn2) { if (ev === "abort") { this._listeners.push(fn2); } } removeEventListener(ev, fn2) { if (ev === "abort") { this._listeners = this._listeners.filter((f) => f !== fn2); } } }; var warned = /* @__PURE__ */ new Set(); var deprecatedOption = (opt, instead) => { const code2 = `LRU_CACHE_OPTION_${opt}`; if (shouldWarn(code2)) { warn(code2, `${opt} option`, `options.${instead}`, LRUCache); } }; var deprecatedMethod = (method, instead) => { const code2 = `LRU_CACHE_METHOD_${method}`; if (shouldWarn(code2)) { const { prototype } = LRUCache; const { get } = Object.getOwnPropertyDescriptor(prototype, method); warn(code2, `${method} method`, `cache.${instead}()`, get); } }; var deprecatedProperty = (field, instead) => { const code2 = `LRU_CACHE_PROPERTY_${field}`; if (shouldWarn(code2)) { const { prototype } = LRUCache; const { get } = Object.getOwnPropertyDescriptor(prototype, field); warn(code2, `${field} property`, `cache.${instead}`, get); } }; var emitWarning = (...a) => { typeof process === "object" && process && typeof process.emitWarning === "function" ? process.emitWarning(...a) : console.error(...a); }; var shouldWarn = (code2) => !warned.has(code2); var warn = (code2, what, instead, fn2) => { warned.add(code2); const msg = `The ${what} is deprecated. Please use ${instead} instead.`; emitWarning(msg, "DeprecationWarning", code2, fn2); }; var isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); var getUintArray = (max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array : max <= Math.pow(2, 32) ? Uint32Array : max <= Number.MAX_SAFE_INTEGER ? ZeroArray : null; var ZeroArray = class extends Array { constructor(size) { super(size); this.fill(0); } }; var Stack = class { constructor(max) { if (max === 0) { return []; } const UintArray = getUintArray(max); this.heap = new UintArray(max); this.length = 0; } push(n) { this.heap[this.length++] = n; } pop() { return this.heap[--this.length]; } }; var LRUCache = class _LRUCache { constructor(options = {}) { const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, fetchContext, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort } = options; const { length, maxAge, stale } = options instanceof _LRUCache ? {} : options; if (max !== 0 && !isPosInt(max)) { throw new TypeError("max option must be a nonnegative integer"); } const UintArray = max ? getUintArray(max) : Array; if (!UintArray) { throw new Error("invalid max value: " + max); } this.max = max; this.maxSize = maxSize; this.maxEntrySize = maxEntrySize || this.maxSize; this.sizeCalculation = sizeCalculation || length; if (this.sizeCalculation) { if (!this.maxSize && !this.maxEntrySize) { throw new TypeError( "cannot set sizeCalculation without setting maxSize or maxEntrySize" ); } if (typeof this.sizeCalculation !== "function") { throw new TypeError("sizeCalculation set to non-function"); } } this.fetchMethod = fetchMethod || null; if (this.fetchMethod && typeof this.fetchMethod !== "function") { throw new TypeError( "fetchMethod must be a function if specified" ); } this.fetchContext = fetchContext; if (!this.fetchMethod && fetchContext !== void 0) { throw new TypeError( "cannot set fetchContext without fetchMethod" ); } this.keyMap = /* @__PURE__ */ new Map(); this.keyList = new Array(max).fill(null); this.valList = new Array(max).fill(null); this.next = new UintArray(max); this.prev = new UintArray(max); this.head = 0; this.tail = 0; this.free = new Stack(max); this.initialFill = 1; this.size = 0; if (typeof dispose === "function") { this.dispose = dispose; } if (typeof disposeAfter === "function") { this.disposeAfter = disposeAfter; this.disposed = []; } else { this.disposeAfter = null; this.disposed = null; } this.noDisposeOnSet = !!noDisposeOnSet; this.noUpdateTTL = !!noUpdateTTL; this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection; this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection; this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort; this.ignoreFetchAbort = !!ignoreFetchAbort; if (this.maxEntrySize !== 0) { if (this.maxSize !== 0) { if (!isPosInt(this.maxSize)) { throw new TypeError( "maxSize must be a positive integer if specified" ); } } if (!isPosInt(this.maxEntrySize)) { throw new TypeError( "maxEntrySize must be a positive integer if specified" ); } this.initializeSizeTracking(); } this.allowStale = !!allowStale || !!stale; this.noDeleteOnStaleGet = !!noDeleteOnStaleGet; this.updateAgeOnGet = !!updateAgeOnGet; this.updateAgeOnHas = !!updateAgeOnHas; this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1; this.ttlAutopurge = !!ttlAutopurge; this.ttl = ttl || maxAge || 0; if (this.ttl) { if (!isPosInt(this.ttl)) { throw new TypeError( "ttl must be a positive integer if specified" ); } this.initializeTTLTracking(); } if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) { throw new TypeError( "At least one of max, maxSize, or ttl is required" ); } if (!this.ttlAutopurge && !this.max && !this.maxSize) { const code2 = "LRU_CACHE_UNBOUNDED"; if (shouldWarn(code2)) { warned.add(code2); const msg = "TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption."; emitWarning(msg, "UnboundedCacheWarning", code2, _LRUCache); } } if (stale) { deprecatedOption("stale", "allowStale"); } if (maxAge) { deprecatedOption("maxAge", "ttl"); } if (length) { deprecatedOption("length", "sizeCalculation"); } } getRemainingTTL(key) { return this.has(key, { updateAgeOnHas: false }) ? Infinity : 0; } initializeTTLTracking() { this.ttls = new ZeroArray(this.max); this.starts = new ZeroArray(this.max); this.setItemTTL = (index, ttl, start = perf.now()) => { this.starts[index] = ttl !== 0 ? start : 0; this.ttls[index] = ttl; if (ttl !== 0 && this.ttlAutopurge) { const t = setTimeout(() => { if (this.isStale(index)) { this.delete(this.keyList[index]); } }, ttl + 1); if (t.unref) { t.unref(); } } }; this.updateItemAge = (index) => { this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0; }; this.statusTTL = (status3, index) => { if (status3) { status3.ttl = this.ttls[index]; status3.start = this.starts[index]; status3.now = cachedNow || getNow(); status3.remainingTTL = status3.now + status3.ttl - status3.start; } }; let cachedNow = 0; const getNow = () => { const n = perf.now(); if (this.ttlResolution > 0) { cachedNow = n; const t = setTimeout( () => cachedNow = 0, this.ttlResolution ); if (t.unref) { t.unref(); } } return n; }; this.getRemainingTTL = (key) => { const index = this.keyMap.get(key); if (index === void 0) { return 0; } return this.ttls[index] === 0 || this.starts[index] === 0 ? Infinity : this.starts[index] + this.ttls[index] - (cachedNow || getNow()); }; this.isStale = (index) => { return this.ttls[index] !== 0 && this.starts[index] !== 0 && (cachedNow || getNow()) - this.starts[index] > this.ttls[index]; }; } updateItemAge(_index) { } statusTTL(_status, _index) { } setItemTTL(_index, _ttl, _start) { } isStale(_index) { return false; } initializeSizeTracking() { this.calculatedSize = 0; this.sizes = new ZeroArray(this.max); this.removeItemSize = (index) => { this.calculatedSize -= this.sizes[index]; this.sizes[index] = 0; }; this.requireSize = (k, v, size, sizeCalculation) => { if (this.isBackgroundFetch(v)) { return 0; } if (!isPosInt(size)) { if (sizeCalculation) { if (typeof sizeCalculation !== "function") { throw new TypeError("sizeCalculation must be a function"); } size = sizeCalculation(v, k); if (!isPosInt(size)) { throw new TypeError( "sizeCalculation return invalid (expect positive integer)" ); } } else { throw new TypeError( "invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set." ); } } return size; }; this.addItemSize = (index, size, status3) => { this.sizes[index] = size; if (this.maxSize) { const maxSize = this.maxSize - this.sizes[index]; while (this.calculatedSize > maxSize) { this.evict(true); } } this.calculatedSize += this.sizes[index]; if (status3) { status3.entrySize = size; status3.totalCalculatedSize = this.calculatedSize; } }; } removeItemSize(_index) { } addItemSize(_index, _size) { } requireSize(_k, _v, size, sizeCalculation) { if (size || sizeCalculation) { throw new TypeError( "cannot set size without setting maxSize or maxEntrySize on cache" ); } } *indexes({ allowStale = this.allowStale } = {}) { if (this.size) { for (let i = this.tail; true; ) { if (!this.isValidIndex(i)) { break; } if (allowStale || !this.isStale(i)) { yield i; } if (i === this.head) { break; } else { i = this.prev[i]; } } } } *rindexes({ allowStale = this.allowStale } = {}) { if (this.size) { for (let i = this.head; true; ) { if (!this.isValidIndex(i)) { break; } if (allowStale || !this.isStale(i)) { yield i; } if (i === this.tail) { break; } else { i = this.next[i]; } } } } isValidIndex(index) { return index !== void 0 && this.keyMap.get(this.keyList[index]) === index; } *entries() { for (const i of this.indexes()) { if (this.valList[i] !== void 0 && this.keyList[i] !== void 0 && !this.isBackgroundFetch(this.valList[i])) { yield [this.keyList[i], this.valList[i]]; } } } *rentries() { for (const i of this.rindexes()) { if (this.valList[i] !== void 0 && this.keyList[i] !== void 0 && !this.isBackgroundFetch(this.valList[i])) { yield [this.keyList[i], this.valList[i]]; } } } *keys() { for (const i of this.indexes()) { if (this.keyList[i] !== void 0 && !this.isBackgroundFetch(this.valList[i])) { yield this.keyList[i]; } } } *rkeys() { for (const i of this.rindexes()) { if (this.keyList[i] !== void 0 && !this.isBackgroundFetch(this.valList[i])) { yield this.keyList[i]; } } } *values() { for (const i of this.indexes()) { if (this.valList[i] !== void 0 && !this.isBackgroundFetch(this.valList[i])) { yield this.valList[i]; } } } *rvalues() { for (const i of this.rindexes()) { if (this.valList[i] !== void 0 && !this.isBackgroundFetch(this.valList[i])) { yield this.valList[i]; } } } [Symbol.iterator]() { return this.entries(); } find(fn2, getOptions) { for (const i of this.indexes()) { const v = this.valList[i]; const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; if (value === void 0) continue; if (fn2(value, this.keyList[i], this)) { return this.get(this.keyList[i], getOptions); } } } forEach(fn2, thisp = this) { for (const i of this.indexes()) { const v = this.valList[i]; const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; if (value === void 0) continue; fn2.call(thisp, value, this.keyList[i], this); } } rforEach(fn2, thisp = this) { for (const i of this.rindexes()) { const v = this.valList[i]; const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; if (value === void 0) continue; fn2.call(thisp, value, this.keyList[i], this); } } get prune() { deprecatedMethod("prune", "purgeStale"); return this.purgeStale; } purgeStale() { let deleted = false; for (const i of this.rindexes({ allowStale: true })) { if (this.isStale(i)) { this.delete(this.keyList[i]); deleted = true; } } return deleted; } dump() { const arr = []; for (const i of this.indexes({ allowStale: true })) { const key = this.keyList[i]; const v = this.valList[i]; const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; if (value === void 0) continue; const entry = { value }; if (this.ttls) { entry.ttl = this.ttls[i]; const age = perf.now() - this.starts[i]; entry.start = Math.floor(Date.now() - age); } if (this.sizes) { entry.size = this.sizes[i]; } arr.unshift([key, entry]); } return arr; } load(arr) { this.clear(); for (const [key, entry] of arr) { if (entry.start) { const age = Date.now() - entry.start; entry.start = perf.now() - age; } this.set(key, entry.value, entry); } } dispose(_v, _k, _reason) { } set(k, v, { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, status: status3 } = {}) { size = this.requireSize(k, v, size, sizeCalculation); if (this.maxEntrySize && size > this.maxEntrySize) { if (status3) { status3.set = "miss"; status3.maxEntrySizeExceeded = true; } this.delete(k); return this; } let index = this.size === 0 ? void 0 : this.keyMap.get(k); if (index === void 0) { index = this.newIndex(); this.keyList[index] = k; this.valList[index] = v; this.keyMap.set(k, index); this.next[this.tail] = index; this.prev[index] = this.tail; this.tail = index; this.size++; this.addItemSize(index, size, status3); if (status3) { status3.set = "add"; } noUpdateTTL = false; } else { this.moveToTail(index); const oldVal = this.valList[index]; if (v !== oldVal) { if (this.isBackgroundFetch(oldVal)) { oldVal.__abortController.abort(new Error("replaced")); } else { if (!noDisposeOnSet) { this.dispose(oldVal, k, "set"); if (this.disposeAfter) { this.disposed.push([oldVal, k, "set"]); } } } this.removeItemSize(index); this.valList[index] = v; this.addItemSize(index, size, status3); if (status3) { status3.set = "replace"; const oldValue = oldVal && this.isBackgroundFetch(oldVal) ? oldVal.__staleWhileFetching : oldVal; if (oldValue !== void 0) status3.oldValue = oldValue; } } else if (status3) { status3.set = "update"; } } if (ttl !== 0 && this.ttl === 0 && !this.ttls) { this.initializeTTLTracking(); } if (!noUpdateTTL) { this.setItemTTL(index, ttl, start); } this.statusTTL(status3, index); if (this.disposeAfter) { while (this.disposed.length) { this.disposeAfter(...this.disposed.shift()); } } return this; } newIndex() { if (this.size === 0) { return this.tail; } if (this.size === this.max && this.max !== 0) { return this.evict(false); } if (this.free.length !== 0) { return this.free.pop(); } return this.initialFill++; } pop() { if (this.size) { const val = this.valList[this.head]; this.evict(true); return val; } } evict(free) { const head = this.head; const k = this.keyList[head]; const v = this.valList[head]; if (this.isBackgroundFetch(v)) { v.__abortController.abort(new Error("evicted")); } else { this.dispose(v, k, "evict"); if (this.disposeAfter) { this.disposed.push([v, k, "evict"]); } } this.removeItemSize(head); if (free) { this.keyList[head] = null; this.valList[head] = null; this.free.push(head); } this.head = this.next[head]; this.keyMap.delete(k); this.size--; return head; } has(k, { updateAgeOnHas = this.updateAgeOnHas, status: status3 } = {}) { const index = this.keyMap.get(k); if (index !== void 0) { if (!this.isStale(index)) { if (updateAgeOnHas) { this.updateItemAge(index); } if (status3) status3.has = "hit"; this.statusTTL(status3, index); return true; } else if (status3) { status3.has = "stale"; this.statusTTL(status3, index); } } else if (status3) { status3.has = "miss"; } return false; } // like get(), but without any LRU updating or TTL expiration peek(k, { allowStale = this.allowStale } = {}) { const index = this.keyMap.get(k); if (index !== void 0 && (allowStale || !this.isStale(index))) { const v = this.valList[index]; return this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; } } backgroundFetch(k, index, options, context) { const v = index === void 0 ? void 0 : this.valList[index]; if (this.isBackgroundFetch(v)) { return v; } const ac = new AC(); if (options.signal) { options.signal.addEventListener( "abort", () => ac.abort(options.signal.reason) ); } const fetchOpts = { signal: ac.signal, options, context }; const cb = (v2, updateCache = false) => { const { aborted } = ac.signal; const ignoreAbort = options.ignoreFetchAbort && v2 !== void 0; if (options.status) { if (aborted && !updateCache) { options.status.fetchAborted = true; options.status.fetchError = ac.signal.reason; if (ignoreAbort) options.status.fetchAbortIgnored = true; } else { options.status.fetchResolved = true; } } if (aborted && !ignoreAbort && !updateCache) { return fetchFail(ac.signal.reason); } if (this.valList[index] === p) { if (v2 === void 0) { if (p.__staleWhileFetching) { this.valList[index] = p.__staleWhileFetching; } else { this.delete(k); } } else { if (options.status) options.status.fetchUpdated = true; this.set(k, v2, fetchOpts.options); } } return v2; }; const eb = (er) => { if (options.status) { options.status.fetchRejected = true; options.status.fetchError = er; } return fetchFail(er); }; const fetchFail = (er) => { const { aborted } = ac.signal; const allowStaleAborted = aborted && options.allowStaleOnFetchAbort; const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection; const noDelete = allowStale || options.noDeleteOnFetchRejection; if (this.valList[index] === p) { const del3 = !noDelete || p.__staleWhileFetching === void 0; if (del3) { this.delete(k); } else if (!allowStaleAborted) { this.valList[index] = p.__staleWhileFetching; } } if (allowStale) { if (options.status && p.__staleWhileFetching !== void 0) { options.status.returnedStale = true; } return p.__staleWhileFetching; } else if (p.__returned === p) { throw er; } }; const pcall = (res, rej) => { this.fetchMethod(k, v, fetchOpts).then((v2) => res(v2), rej); ac.signal.addEventListener("abort", () => { if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) { res(); if (options.allowStaleOnFetchAbort) { res = (v2) => cb(v2, true); } } }); }; if (options.status) options.status.fetchDispatched = true; const p = new Promise(pcall).then(cb, eb); p.__abortController = ac; p.__staleWhileFetching = v; p.__returned = null; if (index === void 0) { this.set(k, p, { ...fetchOpts.options, status: void 0 }); index = this.keyMap.get(k); } else { this.valList[index] = p; } return p; } isBackgroundFetch(p) { return p && typeof p === "object" && typeof p.then === "function" && Object.prototype.hasOwnProperty.call( p, "__staleWhileFetching" ) && Object.prototype.hasOwnProperty.call(p, "__returned") && (p.__returned === p || p.__returned === null); } // this takes the union of get() and set() opts, because it does both async fetch(k, { // get options allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, // set options ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, // fetch exclusive options noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, fetchContext = this.fetchContext, forceRefresh = false, status: status3, signal } = {}) { if (!this.fetchMethod) { if (status3) status3.fetch = "get"; return this.get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet, status: status3 }); } const options = { allowStale, updateAgeOnGet, noDeleteOnStaleGet, ttl, noDisposeOnSet, size, sizeCalculation, noUpdateTTL, noDeleteOnFetchRejection, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, status: status3, signal }; let index = this.keyMap.get(k); if (index === void 0) { if (status3) status3.fetch = "miss"; const p = this.backgroundFetch(k, index, options, fetchContext); return p.__returned = p; } else { const v = this.valList[index]; if (this.isBackgroundFetch(v)) { const stale = allowStale && v.__staleWhileFetching !== void 0; if (status3) { status3.fetch = "inflight"; if (stale) status3.returnedStale = true; } return stale ? v.__staleWhileFetching : v.__returned = v; } const isStale = this.isStale(index); if (!forceRefresh && !isStale) { if (status3) status3.fetch = "hit"; this.moveToTail(index); if (updateAgeOnGet) { this.updateItemAge(index); } this.statusTTL(status3, index); return v; } const p = this.backgroundFetch(k, index, options, fetchContext); const hasStale = p.__staleWhileFetching !== void 0; const staleVal = hasStale && allowStale; if (status3) { status3.fetch = hasStale && isStale ? "stale" : "refresh"; if (staleVal && isStale) status3.returnedStale = true; } return staleVal ? p.__staleWhileFetching : p.__returned = p; } } get(k, { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status: status3 } = {}) { const index = this.keyMap.get(k); if (index !== void 0) { const value = this.valList[index]; const fetching = this.isBackgroundFetch(value); this.statusTTL(status3, index); if (this.isStale(index)) { if (status3) status3.get = "stale"; if (!fetching) { if (!noDeleteOnStaleGet) { this.delete(k); } if (status3) status3.returnedStale = allowStale; return allowStale ? value : void 0; } else { if (status3) { status3.returnedStale = allowStale && value.__staleWhileFetching !== void 0; } return allowStale ? value.__staleWhileFetching : void 0; } } else { if (status3) status3.get = "hit"; if (fetching) { return value.__staleWhileFetching; } this.moveToTail(index); if (updateAgeOnGet) { this.updateItemAge(index); } return value; } } else if (status3) { status3.get = "miss"; } } connect(p, n) { this.prev[n] = p; this.next[p] = n; } moveToTail(index) { if (index !== this.tail) { if (index === this.head) { this.head = this.next[index]; } else { this.connect(this.prev[index], this.next[index]); } this.connect(this.tail, index); this.tail = index; } } get del() { deprecatedMethod("del", "delete"); return this.delete; } delete(k) { let deleted = false; if (this.size !== 0) { const index = this.keyMap.get(k); if (index !== void 0) { deleted = true; if (this.size === 1) { this.clear(); } else { this.removeItemSize(index); const v = this.valList[index]; if (this.isBackgroundFetch(v)) { v.__abortController.abort(new Error("deleted")); } else { this.dispose(v, k, "delete"); if (this.disposeAfter) { this.disposed.push([v, k, "delete"]); } } this.keyMap.delete(k); this.keyList[index] = null; this.valList[index] = null; if (index === this.tail) { this.tail = this.prev[index]; } else if (index === this.head) { this.head = this.next[index]; } else { this.next[this.prev[index]] = this.next[index]; this.prev[this.next[index]] = this.prev[index]; } this.size--; this.free.push(index); } } } if (this.disposed) { while (this.disposed.length) { this.disposeAfter(...this.disposed.shift()); } } return deleted; } clear() { for (const index of this.rindexes({ allowStale: true })) { const v = this.valList[index]; if (this.isBackgroundFetch(v)) { v.__abortController.abort(new Error("deleted")); } else { const k = this.keyList[index]; this.dispose(v, k, "delete"); if (this.disposeAfter) { this.disposed.push([v, k, "delete"]); } } } this.keyMap.clear(); this.valList.fill(null); this.keyList.fill(null); if (this.ttls) { this.ttls.fill(0); this.starts.fill(0); } if (this.sizes) { this.sizes.fill(0); } this.head = 0; this.tail = 0; this.initialFill = 1; this.free.length = 0; this.calculatedSize = 0; this.size = 0; if (this.disposed) { while (this.disposed.length) { this.disposeAfter(...this.disposed.shift()); } } } get reset() { deprecatedMethod("reset", "clear"); return this.clear; } get length() { deprecatedProperty("length", "size"); return this.size; } static get AbortController() { return AC; } static get AbortSignal() { return AS; } }; module2.exports = LRUCache; } }); // ../../node_modules/.pnpm/agent-base@7.1.3/node_modules/agent-base/dist/helpers.js var require_helpers = __commonJS2({ "../../node_modules/.pnpm/agent-base@7.1.3/node_modules/agent-base/dist/helpers.js"(exports2) { "use strict"; 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.req = exports2.json = exports2.toBuffer = void 0; var http3 = __importStar2(__require("http")); var https = __importStar2(__require("https")); async function toBuffer(stream) { let length = 0; const chunks = []; for await (const chunk of stream) { length += chunk.length; chunks.push(chunk); } return Buffer.concat(chunks, length); } exports2.toBuffer = toBuffer; async function json(stream) { const buf = await toBuffer(stream); const str = buf.toString("utf8"); try { return JSON.parse(str); } catch (_err) { const err = _err; err.message += ` (input: ${str})`; throw err; } } exports2.json = json; function req(url3, opts = {}) { const href = typeof url3 === "string" ? url3 : url3.href; const req2 = (href.startsWith("https:") ? https : http3).request(url3, opts); const promise = new Promise((resolve14, reject) => { req2.once("response", resolve14).once("error", reject).end(); }); req2.then = promise.then.bind(promise); return req2; } exports2.req = req; } }); // ../../node_modules/.pnpm/agent-base@7.1.3/node_modules/agent-base/dist/index.js var require_dist9 = __commonJS2({ "../../node_modules/.pnpm/agent-base@7.1.3/node_modules/agent-base/dist/index.js"(exports2) { "use strict"; 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 __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.Agent = void 0; var net = __importStar2(__require("net")); var http3 = __importStar2(__require("http")); var https_1 = __require("https"); __exportStar2(require_helpers(), exports2); var INTERNAL = Symbol("AgentBaseInternalState"); var Agent = class extends http3.Agent { constructor(opts) { super(opts); this[INTERNAL] = {}; } /** * Determine whether this is an `http` or `https` request. */ isSecureEndpoint(options) { if (options) { if (typeof options.secureEndpoint === "boolean") { return options.secureEndpoint; } if (typeof options.protocol === "string") { return options.protocol === "https:"; } } const { stack: stack2 } = new Error(); if (typeof stack2 !== "string") return false; return stack2.split("\n").some((l) => l.indexOf("(https.js:") !== -1 || l.indexOf("node:https:") !== -1); } // In order to support async signatures in `connect()` and Node's native // connection pooling in `http.Agent`, the array of sockets for each origin // has to be updated synchronously. This is so the length of the array is // accurate when `addRequest()` is next called. We achieve this by creating a // fake socket and adding it to `sockets[origin]` and incrementing // `totalSocketCount`. incrementSockets(name) { if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) { return null; } if (!this.sockets[name]) { this.sockets[name] = []; } const fakeSocket = new net.Socket({ writable: false }); this.sockets[name].push(fakeSocket); this.totalSocketCount++; return fakeSocket; } decrementSockets(name, socket) { if (!this.sockets[name] || socket === null) { return; } const sockets = this.sockets[name]; const index = sockets.indexOf(socket); if (index !== -1) { sockets.splice(index, 1); this.totalSocketCount--; if (sockets.length === 0) { delete this.sockets[name]; } } } // In order to properly update the socket pool, we need to call `getName()` on // the core `https.Agent` if it is a secureEndpoint. getName(options) { const secureEndpoint = typeof options.secureEndpoint === "boolean" ? options.secureEndpoint : this.isSecureEndpoint(options); if (secureEndpoint) { return https_1.Agent.prototype.getName.call(this, options); } return super.getName(options); } createSocket(req, options, cb) { const connectOpts = { ...options, secureEndpoint: this.isSecureEndpoint(options) }; const name = this.getName(connectOpts); const fakeSocket = this.incrementSockets(name); Promise.resolve().then(() => this.connect(req, connectOpts)).then((socket) => { this.decrementSockets(name, fakeSocket); if (socket instanceof http3.Agent) { try { return socket.addRequest(req, connectOpts); } catch (err) { return cb(err); } } this[INTERNAL].currentSocket = socket; super.createSocket(req, options, cb); }, (err) => { this.decrementSockets(name, fakeSocket); cb(err); }); } createConnection() { const socket = this[INTERNAL].currentSocket; this[INTERNAL].currentSocket = void 0; if (!socket) { throw new Error("No socket was returned in the `connect()` function"); } return socket; } get defaultPort() { return this[INTERNAL].defaultPort ?? (this.protocol === "https:" ? 443 : 80); } set defaultPort(v) { if (this[INTERNAL]) { this[INTERNAL].defaultPort = v; } } get protocol() { return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? "https:" : "http:"); } set protocol(v) { if (this[INTERNAL]) { this[INTERNAL].protocol = v; } } }; exports2.Agent = Agent; } }); // ../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js var require_ms2 = __commonJS2({ "../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js"(exports2, module2) { 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 parse11(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 parse11(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(ms34) { var msAbs = Math.abs(ms34); if (msAbs >= d) { return Math.round(ms34 / d) + "d"; } if (msAbs >= h) { return Math.round(ms34 / h) + "h"; } if (msAbs >= m) { return Math.round(ms34 / m) + "m"; } if (msAbs >= s) { return Math.round(ms34 / s) + "s"; } return ms34 + "ms"; } function fmtLong(ms34) { var msAbs = Math.abs(ms34); if (msAbs >= d) { return plural15(ms34, msAbs, d, "day"); } if (msAbs >= h) { return plural15(ms34, msAbs, h, "hour"); } if (msAbs >= m) { return plural15(ms34, msAbs, m, "minute"); } if (msAbs >= s) { return plural15(ms34, msAbs, s, "second"); } return ms34 + " ms"; } function plural15(ms34, msAbs, n, name) { var isPlural = msAbs >= n * 1.5; return Math.round(ms34 / n) + " " + name + (isPlural ? "s" : ""); } } }); // ../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/common.js var require_common8 = __commonJS2({ "../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/common.js"(exports2, module2) { function setup(env) { createDebug.debug = createDebug; createDebug.default = createDebug; createDebug.coerce = coerce; createDebug.disable = disable3; createDebug.enable = enable3; createDebug.enabled = enabled; createDebug.humanize = require_ms2(); createDebug.destroy = destroy; Object.keys(env).forEach((key) => { createDebug[key] = env[key]; }); createDebug.names = []; createDebug.skips = []; createDebug.formatters = {}; function selectColor(namespace) { let hash = 0; for (let i = 0; i < namespace.length; i++) { hash = (hash << 5) - hash + namespace.charCodeAt(i); hash |= 0; } return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; } createDebug.selectColor = selectColor; function createDebug(namespace) { let prevTime; let enableOverride = null; let namespacesCache; let enabledCache; function debug2(...args2) { if (!debug2.enabled) { return; } const self2 = debug2; const curr = Number(/* @__PURE__ */ new Date()); const ms34 = curr - (prevTime || curr); self2.diff = ms34; self2.prev = prevTime; self2.curr = curr; prevTime = curr; args2[0] = createDebug.coerce(args2[0]); if (typeof args2[0] !== "string") { args2.unshift("%O"); } let index = 0; args2[0] = args2[0].replace(/%([a-zA-Z%])/g, (match, format8) => { if (match === "%%") { return "%"; } index++; const formatter = createDebug.formatters[format8]; if (typeof formatter === "function") { const val = args2[index]; match = formatter.call(self2, val); args2.splice(index, 1); index--; } return match; }); createDebug.formatArgs.call(self2, args2); const logFn = self2.log || createDebug.log; logFn.apply(self2, args2); } debug2.namespace = namespace; debug2.useColors = createDebug.useColors(); debug2.color = createDebug.selectColor(namespace); debug2.extend = extend; debug2.destroy = createDebug.destroy; Object.defineProperty(debug2, "enabled", { enumerable: true, configurable: false, get: () => { if (enableOverride !== null) { return enableOverride; } if (namespacesCache !== createDebug.namespaces) { namespacesCache = createDebug.namespaces; enabledCache = createDebug.enabled(namespace); } return enabledCache; }, set: (v) => { enableOverride = v; } }); if (typeof createDebug.init === "function") { createDebug.init(debug2); } return debug2; } function extend(namespace, delimiter3) { const newDebug = createDebug(this.namespace + (typeof delimiter3 === "undefined" ? ":" : delimiter3) + namespace); newDebug.log = this.log; return newDebug; } function enable3(namespaces) { createDebug.save(namespaces); createDebug.namespaces = namespaces; createDebug.names = []; createDebug.skips = []; const split4 = (typeof namespaces === "string" ? namespaces : "").trim().replace(" ", ",").split(",").filter(Boolean); for (const ns of split4) { if (ns[0] === "-") { createDebug.skips.push(ns.slice(1)); } else { createDebug.names.push(ns); } } } function matchesTemplate(search, template) { let searchIndex = 0; let templateIndex = 0; let starIndex = -1; let matchIndex = 0; while (searchIndex < search.length) { if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) { if (template[templateIndex] === "*") { starIndex = templateIndex; matchIndex = searchIndex; templateIndex++; } else { searchIndex++; templateIndex++; } } else if (starIndex !== -1) { templateIndex = starIndex + 1; matchIndex++; searchIndex = matchIndex; } else { return false; } } while (templateIndex < template.length && template[templateIndex] === "*") { templateIndex++; } return templateIndex === template.length; } function disable3() { const namespaces = [ ...createDebug.names, ...createDebug.skips.map((namespace) => "-" + namespace) ].join(","); createDebug.enable(""); return namespaces; } function enabled(name) { for (const skip of createDebug.skips) { if (matchesTemplate(name, skip)) { return false; } } for (const ns of createDebug.names) { if (matchesTemplate(name, ns)) { return true; } } return false; } function coerce(val) { if (val instanceof Error) { return val.stack || val.message; } return val; } function destroy() { console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); } createDebug.enable(createDebug.load()); return createDebug; } module2.exports = setup; } }); // ../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/browser.js var require_browser2 = __commonJS2({ "../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/browser.js"(exports2, module2) { exports2.formatArgs = formatArgs; exports2.save = save; exports2.load = load3; exports2.useColors = useColors; exports2.storage = localstorage(); exports2.destroy = (() => { let warned = false; return () => { if (!warned) { warned = true; console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); } }; })(); exports2.colors = [ "#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33" ]; function useColors() { if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { return true; } if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } let m; 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 && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[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+)/); } function formatArgs(args2) { args2[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args2[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); if (!this.useColors) { return; } const c = "color: " + this.color; args2.splice(1, 0, c, "color: inherit"); let index = 0; let lastC = 0; args2[0].replace(/%[a-zA-Z%]/g, (match) => { if (match === "%%") { return; } index++; if (match === "%c") { lastC = index; } }); args2.splice(lastC, 0, c); } exports2.log = console.debug || console.log || (() => { }); function save(namespaces) { try { if (namespaces) { exports2.storage.setItem("debug", namespaces); } else { exports2.storage.removeItem("debug"); } } catch (error3) { } } function load3() { let r; try { r = exports2.storage.getItem("debug"); } catch (error3) { } if (!r && typeof process !== "undefined" && "env" in process) { r = process.env.DEBUG; } return r; } function localstorage() { try { return localStorage; } catch (error3) { } } module2.exports = require_common8()(exports2); var { formatters } = module2.exports; formatters.j = function(v) { try { return JSON.stringify(v); } catch (error3) { return "[UnexpectedJSONParseError]: " + error3.message; } }; } }); // ../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/node.js var require_node3 = __commonJS2({ "../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/node.js"(exports2, module2) { var tty = __require("tty"); var util = __require("util"); exports2.init = init2; exports2.log = log2; exports2.formatArgs = formatArgs; exports2.save = save; exports2.load = load3; exports2.useColors = useColors; exports2.destroy = util.deprecate( () => { }, "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." ); exports2.colors = [6, 2, 3, 4, 5, 1]; try { const supportsColor = require_supports_color(); if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { exports2.colors = [ 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221 ]; } } catch (error3) { } exports2.inspectOpts = Object.keys(process.env).filter((key) => { return /^debug_/i.test(key); }).reduce((obj, key) => { const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { return k.toUpperCase(); }); let 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; }, {}); function useColors() { return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(process.stderr.fd); } function formatArgs(args2) { const { namespace: name, useColors: useColors2 } = this; if (useColors2) { const c = this.color; const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); const prefix = ` ${colorCode};1m${name} \x1B[0m`; args2[0] = prefix + args2[0].split("\n").join("\n" + prefix); args2.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m"); } else { args2[0] = getDate() + name + " " + args2[0]; } } function getDate() { if (exports2.inspectOpts.hideDate) { return ""; } return (/* @__PURE__ */ new Date()).toISOString() + " "; } function log2(...args2) { return process.stderr.write(util.formatWithOptions(exports2.inspectOpts, ...args2) + "\n"); } function save(namespaces) { if (namespaces) { process.env.DEBUG = namespaces; } else { delete process.env.DEBUG; } } function load3() { return process.env.DEBUG; } function init2(debug2) { debug2.inspectOpts = {}; const keys = Object.keys(exports2.inspectOpts); for (let i = 0; i < keys.length; i++) { debug2.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]]; } } module2.exports = require_common8()(exports2); var { formatters } = module2.exports; formatters.o = function(v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); }; formatters.O = function(v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts); }; } }); // ../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/index.js var require_src = __commonJS2({ "../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/index.js"(exports2, module2) { if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { module2.exports = require_browser2(); } else { module2.exports = require_node3(); } } }); // ../../node_modules/.pnpm/proxy-from-env@1.1.0/node_modules/proxy-from-env/index.js var require_proxy_from_env = __commonJS2({ "../../node_modules/.pnpm/proxy-from-env@1.1.0/node_modules/proxy-from-env/index.js"(exports2) { "use strict"; var parseUrl2 = __require("url").parse; var DEFAULT_PORTS = { ftp: 21, gopher: 70, http: 80, https: 443, ws: 80, wss: 443 }; var stringEndsWith = String.prototype.endsWith || function(s) { return s.length <= this.length && this.indexOf(s, this.length - s.length) !== -1; }; function getProxyForUrl(url3) { var parsedUrl = typeof url3 === "string" ? parseUrl2(url3) : url3 || {}; var proto = parsedUrl.protocol; var hostname3 = parsedUrl.host; var port = parsedUrl.port; if (typeof hostname3 !== "string" || !hostname3 || typeof proto !== "string") { return ""; } proto = proto.split(":", 1)[0]; hostname3 = hostname3.replace(/:\d*$/, ""); port = parseInt(port) || DEFAULT_PORTS[proto] || 0; if (!shouldProxy(hostname3, port)) { return ""; } var proxy = getEnv("npm_config_" + proto + "_proxy") || getEnv(proto + "_proxy") || getEnv("npm_config_proxy") || getEnv("all_proxy"); if (proxy && proxy.indexOf("://") === -1) { proxy = proto + "://" + proxy; } return proxy; } function shouldProxy(hostname3, port) { var NO_PROXY = (getEnv("npm_config_no_proxy") || getEnv("no_proxy")).toLowerCase(); if (!NO_PROXY) { return true; } if (NO_PROXY === "*") { return false; } return NO_PROXY.split(/[,\s]/).every(function(proxy) { if (!proxy) { return true; } var parsedProxy = proxy.match(/^(.+):(\d+)$/); var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; if (parsedProxyPort && parsedProxyPort !== port) { return true; } if (!/^[.*]/.test(parsedProxyHostname)) { return hostname3 !== parsedProxyHostname; } if (parsedProxyHostname.charAt(0) === "*") { parsedProxyHostname = parsedProxyHostname.slice(1); } return !stringEndsWith.call(hostname3, parsedProxyHostname); }); } function getEnv(key) { return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ""; } exports2.getProxyForUrl = getProxyForUrl; } }); // ../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/common.js var require_common9 = __commonJS2({ "../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/common.js"(exports2, module2) { function setup(env) { createDebug.debug = createDebug; createDebug.default = createDebug; createDebug.coerce = coerce; createDebug.disable = disable3; createDebug.enable = enable3; createDebug.enabled = enabled; createDebug.humanize = require_ms2(); createDebug.destroy = destroy; Object.keys(env).forEach((key) => { createDebug[key] = env[key]; }); createDebug.names = []; createDebug.skips = []; createDebug.formatters = {}; function selectColor(namespace) { let hash = 0; for (let i = 0; i < namespace.length; i++) { hash = (hash << 5) - hash + namespace.charCodeAt(i); hash |= 0; } return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; } createDebug.selectColor = selectColor; function createDebug(namespace) { let prevTime; let enableOverride = null; let namespacesCache; let enabledCache; function debug2(...args2) { if (!debug2.enabled) { return; } const self2 = debug2; const curr = Number(/* @__PURE__ */ new Date()); const ms34 = curr - (prevTime || curr); self2.diff = ms34; self2.prev = prevTime; self2.curr = curr; prevTime = curr; args2[0] = createDebug.coerce(args2[0]); if (typeof args2[0] !== "string") { args2.unshift("%O"); } let index = 0; args2[0] = args2[0].replace(/%([a-zA-Z%])/g, (match, format8) => { if (match === "%%") { return "%"; } index++; const formatter = createDebug.formatters[format8]; if (typeof formatter === "function") { const val = args2[index]; match = formatter.call(self2, val); args2.splice(index, 1); index--; } return match; }); createDebug.formatArgs.call(self2, args2); const logFn = self2.log || createDebug.log; logFn.apply(self2, args2); } debug2.namespace = namespace; debug2.useColors = createDebug.useColors(); debug2.color = createDebug.selectColor(namespace); debug2.extend = extend; debug2.destroy = createDebug.destroy; Object.defineProperty(debug2, "enabled", { enumerable: true, configurable: false, get: () => { if (enableOverride !== null) { return enableOverride; } if (namespacesCache !== createDebug.namespaces) { namespacesCache = createDebug.namespaces; enabledCache = createDebug.enabled(namespace); } return enabledCache; }, set: (v) => { enableOverride = v; } }); if (typeof createDebug.init === "function") { createDebug.init(debug2); } return debug2; } function extend(namespace, delimiter3) { const newDebug = createDebug(this.namespace + (typeof delimiter3 === "undefined" ? ":" : delimiter3) + namespace); newDebug.log = this.log; return newDebug; } function enable3(namespaces) { createDebug.save(namespaces); createDebug.namespaces = namespaces; createDebug.names = []; createDebug.skips = []; const split4 = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean); for (const ns of split4) { if (ns[0] === "-") { createDebug.skips.push(ns.slice(1)); } else { createDebug.names.push(ns); } } } function matchesTemplate(search, template) { let searchIndex = 0; let templateIndex = 0; let starIndex = -1; let matchIndex = 0; while (searchIndex < search.length) { if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) { if (template[templateIndex] === "*") { starIndex = templateIndex; matchIndex = searchIndex; templateIndex++; } else { searchIndex++; templateIndex++; } } else if (starIndex !== -1) { templateIndex = starIndex + 1; matchIndex++; searchIndex = matchIndex; } else { return false; } } while (templateIndex < template.length && template[templateIndex] === "*") { templateIndex++; } return templateIndex === template.length; } function disable3() { const namespaces = [ ...createDebug.names, ...createDebug.skips.map((namespace) => "-" + namespace) ].join(","); createDebug.enable(""); return namespaces; } function enabled(name) { for (const skip of createDebug.skips) { if (matchesTemplate(name, skip)) { return false; } } for (const ns of createDebug.names) { if (matchesTemplate(name, ns)) { return true; } } return false; } function coerce(val) { if (val instanceof Error) { return val.stack || val.message; } return val; } function destroy() { console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); } createDebug.enable(createDebug.load()); return createDebug; } module2.exports = setup; } }); // ../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/browser.js var require_browser3 = __commonJS2({ "../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/browser.js"(exports2, module2) { exports2.formatArgs = formatArgs; exports2.save = save; exports2.load = load3; exports2.useColors = useColors; exports2.storage = localstorage(); exports2.destroy = (() => { let warned = false; return () => { if (!warned) { warned = true; console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); } }; })(); exports2.colors = [ "#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33" ]; function useColors() { if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { return true; } if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } let m; 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 && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[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+)/); } function formatArgs(args2) { args2[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args2[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); if (!this.useColors) { return; } const c = "color: " + this.color; args2.splice(1, 0, c, "color: inherit"); let index = 0; let lastC = 0; args2[0].replace(/%[a-zA-Z%]/g, (match) => { if (match === "%%") { return; } index++; if (match === "%c") { lastC = index; } }); args2.splice(lastC, 0, c); } exports2.log = console.debug || console.log || (() => { }); function save(namespaces) { try { if (namespaces) { exports2.storage.setItem("debug", namespaces); } else { exports2.storage.removeItem("debug"); } } catch (error3) { } } function load3() { let r; try { r = exports2.storage.getItem("debug") || exports2.storage.getItem("DEBUG"); } catch (error3) { } if (!r && typeof process !== "undefined" && "env" in process) { r = process.env.DEBUG; } return r; } function localstorage() { try { return localStorage; } catch (error3) { } } module2.exports = require_common9()(exports2); var { formatters } = module2.exports; formatters.j = function(v) { try { return JSON.stringify(v); } catch (error3) { return "[UnexpectedJSONParseError]: " + error3.message; } }; } }); // ../../node_modules/.pnpm/supports-color@8.1.1/node_modules/supports-color/index.js var require_supports_color3 = __commonJS2({ "../../node_modules/.pnpm/supports-color@8.1.1/node_modules/supports-color/index.js"(exports2, module2) { "use strict"; var os4 = __require("os"); var tty = __require("tty"); var hasFlag = require_has_flag(); var { env } = process; var flagForceColor; if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) { flagForceColor = 0; } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { flagForceColor = 1; } function envForceColor() { if ("FORCE_COLOR" in env) { if (env.FORCE_COLOR === "true") { return 1; } if (env.FORCE_COLOR === "false") { return 0; } return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); } } function translateLevel(level) { if (level === 0) { return false; } return { level, hasBasic: true, has256: level >= 2, has16m: level >= 3 }; } function supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) { const noFlagForceColor = envForceColor(); if (noFlagForceColor !== void 0) { flagForceColor = noFlagForceColor; } const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; if (forceColor === 0) { return 0; } if (sniffFlags) { if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { return 3; } if (hasFlag("color=256")) { return 2; } } if (haveStream && !streamIsTTY && forceColor === void 0) { return 0; } const min = forceColor || 0; if (env.TERM === "dumb") { return min; } if (process.platform === "win32") { const osRelease = os4.release().split("."); if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { return Number(osRelease[2]) >= 14931 ? 3 : 2; } return 1; } if ("CI" in env) { if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { return 1; } return min; } if ("TEAMCITY_VERSION" in env) { return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; } if (env.COLORTERM === "truecolor") { return 3; } if ("TERM_PROGRAM" in env) { const version2 = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); switch (env.TERM_PROGRAM) { case "iTerm.app": return version2 >= 3 ? 3 : 2; case "Apple_Terminal": return 2; } } if (/-256(color)?$/i.test(env.TERM)) { return 2; } if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { return 1; } if ("COLORTERM" in env) { return 1; } return min; } function getSupportLevel(stream, options = {}) { const level = supportsColor(stream, { streamIsTTY: stream && stream.isTTY, ...options }); return translateLevel(level); } module2.exports = { supportsColor: getSupportLevel, stdout: getSupportLevel({ isTTY: tty.isatty(1) }), stderr: getSupportLevel({ isTTY: tty.isatty(2) }) }; } }); // ../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/node.js var require_node4 = __commonJS2({ "../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/node.js"(exports2, module2) { var tty = __require("tty"); var util = __require("util"); exports2.init = init2; exports2.log = log2; exports2.formatArgs = formatArgs; exports2.save = save; exports2.load = load3; exports2.useColors = useColors; exports2.destroy = util.deprecate( () => { }, "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." ); exports2.colors = [6, 2, 3, 4, 5, 1]; try { const supportsColor = require_supports_color3(); if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { exports2.colors = [ 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221 ]; } } catch (error3) { } exports2.inspectOpts = Object.keys(process.env).filter((key) => { return /^debug_/i.test(key); }).reduce((obj, key) => { const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { return k.toUpperCase(); }); let 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; }, {}); function useColors() { return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(process.stderr.fd); } function formatArgs(args2) { const { namespace: name, useColors: useColors2 } = this; if (useColors2) { const c = this.color; const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); const prefix = ` ${colorCode};1m${name} \x1B[0m`; args2[0] = prefix + args2[0].split("\n").join("\n" + prefix); args2.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m"); } else { args2[0] = getDate() + name + " " + args2[0]; } } function getDate() { if (exports2.inspectOpts.hideDate) { return ""; } return (/* @__PURE__ */ new Date()).toISOString() + " "; } function log2(...args2) { return process.stderr.write(util.formatWithOptions(exports2.inspectOpts, ...args2) + "\n"); } function save(namespaces) { if (namespaces) { process.env.DEBUG = namespaces; } else { delete process.env.DEBUG; } } function load3() { return process.env.DEBUG; } function init2(debug2) { debug2.inspectOpts = {}; const keys = Object.keys(exports2.inspectOpts); for (let i = 0; i < keys.length; i++) { debug2.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]]; } } module2.exports = require_common9()(exports2); var { formatters } = module2.exports; formatters.o = function(v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); }; formatters.O = function(v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts); }; } }); // ../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/index.js var require_src2 = __commonJS2({ "../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/index.js"(exports2, module2) { if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { module2.exports = require_browser3(); } else { module2.exports = require_node4(); } } }); // ../../node_modules/.pnpm/data-uri-to-buffer@6.0.2/node_modules/data-uri-to-buffer/dist/common.js var require_common10 = __commonJS2({ "../../node_modules/.pnpm/data-uri-to-buffer@6.0.2/node_modules/data-uri-to-buffer/dist/common.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.makeDataUriToBuffer = void 0; var makeDataUriToBuffer = (convert) => (uri) => { uri = String(uri); if (!/^data:/i.test(uri)) { throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")'); } uri = uri.replace(/\r?\n/g, ""); const firstComma = uri.indexOf(","); if (firstComma === -1 || firstComma <= 4) { throw new TypeError("malformed data: URI"); } const meta = uri.substring(5, firstComma).split(";"); let charset = ""; let base64 = false; const type = meta[0] || "text/plain"; let typeFull = type; for (let i = 1; i < meta.length; i++) { if (meta[i] === "base64") { base64 = true; } else if (meta[i]) { typeFull += `;${meta[i]}`; if (meta[i].indexOf("charset=") === 0) { charset = meta[i].substring(8); } } } if (!meta[0] && !charset.length) { typeFull += ";charset=US-ASCII"; charset = "US-ASCII"; } const data = unescape(uri.substring(firstComma + 1)); const buffer = base64 ? convert.base64ToArrayBuffer(data) : convert.stringToBuffer(data); return { type, typeFull, charset, buffer }; }; exports2.makeDataUriToBuffer = makeDataUriToBuffer; } }); // ../../node_modules/.pnpm/data-uri-to-buffer@6.0.2/node_modules/data-uri-to-buffer/dist/node.js var require_node5 = __commonJS2({ "../../node_modules/.pnpm/data-uri-to-buffer@6.0.2/node_modules/data-uri-to-buffer/dist/node.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.dataUriToBuffer = void 0; var common_1 = require_common10(); function nodeBuffertoArrayBuffer(nodeBuf) { if (nodeBuf.byteLength === nodeBuf.buffer.byteLength) { return nodeBuf.buffer; } const buffer = new ArrayBuffer(nodeBuf.byteLength); const view = new Uint8Array(buffer); view.set(nodeBuf); return buffer; } function base64ToArrayBuffer(base64) { return nodeBuffertoArrayBuffer(Buffer.from(base64, "base64")); } function stringToBuffer(str) { return nodeBuffertoArrayBuffer(Buffer.from(str, "ascii")); } exports2.dataUriToBuffer = (0, common_1.makeDataUriToBuffer)({ stringToBuffer, base64ToArrayBuffer }); } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/notmodified.js var require_notmodified = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/notmodified.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var NotModifiedError = class extends Error { constructor(message2) { super(message2 || 'Source has not been modified since the provied "cache", re-use previous results'); this.code = "ENOTMODIFIED"; } }; exports2.default = NotModifiedError; } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/data.js var require_data3 = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/data.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.data = void 0; var debug_1 = __importDefault2(require_src2()); var stream_1 = __require("stream"); var crypto_1 = __require("crypto"); var data_uri_to_buffer_1 = require_node5(); var notmodified_1 = __importDefault2(require_notmodified()); var debug2 = (0, debug_1.default)("get-uri:data"); var DataReadable = class extends stream_1.Readable { constructor(hash, buf) { super(); this.push(buf); this.push(null); this.hash = hash; } }; var data = async ({ href: uri }, { cache } = {}) => { const shasum = (0, crypto_1.createHash)("sha1"); shasum.update(uri); const hash = shasum.digest("hex"); debug2('generated SHA1 hash for "data:" URI: %o', hash); if (cache?.hash === hash) { debug2("got matching cache SHA1 hash: %o", hash); throw new notmodified_1.default(); } else { debug2('creating Readable stream from "data:" URI buffer'); const { buffer } = (0, data_uri_to_buffer_1.dataUriToBuffer)(uri); return new DataReadable(hash, Buffer.from(buffer)); } }; exports2.data = data; } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/notfound.js var require_notfound = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/notfound.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var NotFoundError = class extends Error { constructor(message2) { super(message2 || "File does not exist at the specified endpoint"); this.code = "ENOTFOUND"; } }; exports2.default = NotFoundError; } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/file.js var require_file3 = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/file.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.file = void 0; var debug_1 = __importDefault2(require_src2()); var fs_1 = __require("fs"); var notfound_1 = __importDefault2(require_notfound()); var notmodified_1 = __importDefault2(require_notmodified()); var url_1 = __require("url"); var debug2 = (0, debug_1.default)("get-uri:file"); var file = async ({ href: uri }, opts = {}) => { const { cache, flags = "r", mode = 438 // =0666 } = opts; try { const filepath = (0, url_1.fileURLToPath)(uri); debug2("Normalized pathname: %o", filepath); const fdHandle = await fs_1.promises.open(filepath, flags, mode); const fd = fdHandle.fd; const stat2 = await fdHandle.stat(); if (cache && cache.stat && stat2 && isNotModified(cache.stat, stat2)) { throw new notmodified_1.default(); } const rs = (0, fs_1.createReadStream)(filepath, { autoClose: true, ...opts, fd }); rs.stat = stat2; return rs; } catch (err) { if (err.code === "ENOENT") { throw new notfound_1.default(); } throw err; } }; exports2.file = file; function isNotModified(prev, curr) { return +prev.mtime === +curr.mtime; } } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseControlResponse.js var require_parseControlResponse = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseControlResponse.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.positiveIntermediate = exports2.positiveCompletion = exports2.isMultiline = exports2.isSingleLine = exports2.parseControlResponse = void 0; var LF = "\n"; function parseControlResponse(text) { const lines3 = text.split(/\r?\n/).filter(isNotBlank); const messages = []; let startAt = 0; let tokenRegex; for (let i = 0; i < lines3.length; i++) { const line = lines3[i]; if (!tokenRegex) { if (isMultiline(line)) { const token = line.substr(0, 3); tokenRegex = new RegExp(`^${token}(?:$| )`); startAt = i; } else if (isSingleLine(line)) { messages.push(line); } } else if (tokenRegex.test(line)) { tokenRegex = void 0; messages.push(lines3.slice(startAt, i + 1).join(LF)); } } const rest = tokenRegex ? lines3.slice(startAt).join(LF) + LF : ""; return { messages, rest }; } exports2.parseControlResponse = parseControlResponse; function isSingleLine(line) { return /^\d\d\d(?:$| )/.test(line); } exports2.isSingleLine = isSingleLine; function isMultiline(line) { return /^\d\d\d-/.test(line); } exports2.isMultiline = isMultiline; function positiveCompletion(code2) { return code2 >= 200 && code2 < 300; } exports2.positiveCompletion = positiveCompletion; function positiveIntermediate(code2) { return code2 >= 300 && code2 < 400; } exports2.positiveIntermediate = positiveIntermediate; function isNotBlank(str) { return str.trim() !== ""; } } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/FtpContext.js var require_FtpContext = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/FtpContext.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.FTPContext = exports2.FTPError = void 0; var net_1 = __require("net"); var parseControlResponse_1 = require_parseControlResponse(); var FTPError = class extends Error { constructor(res) { super(res.message); this.name = this.constructor.name; this.code = res.code; } }; exports2.FTPError = FTPError; function doNothing() { } var FTPContext = class { /** * Instantiate an FTP context. * * @param timeout - Timeout in milliseconds to apply to control and data connections. Use 0 for no timeout. * @param encoding - Encoding to use for control connection. UTF-8 by default. Use "latin1" for older servers. */ constructor(timeout = 0, encoding = "utf8") { this.timeout = timeout; this.verbose = false; this.ipFamily = void 0; this.tlsOptions = {}; this._partialResponse = ""; this._encoding = encoding; this._socket = this.socket = this._newSocket(); this._dataSocket = void 0; } /** * Close the context. */ close() { const message2 = this._task ? "User closed client during task" : "User closed client"; const err = new Error(message2); this.closeWithError(err); } /** * Close the context with an error. */ closeWithError(err) { if (this._closingError) { return; } this._closingError = err; this._closeControlSocket(); this._closeSocket(this._dataSocket); this._passToHandler(err); this._stopTrackingTask(); } /** * Returns true if this context has been closed or hasn't been connected yet. You can reopen it with `access`. */ get closed() { return this.socket.remoteAddress === void 0 || this._closingError !== void 0; } /** * Reset this contex and all of its state. */ reset() { this.socket = this._newSocket(); } /** * Get the FTP control socket. */ get socket() { return this._socket; } /** * Set the socket for the control connection. This will only close the current control socket * if the new one is not an upgrade to the current one. */ set socket(socket) { this.dataSocket = void 0; this.tlsOptions = {}; this._partialResponse = ""; if (this._socket) { const newSocketUpgradesExisting = socket.localPort === this._socket.localPort; if (newSocketUpgradesExisting) { this._removeSocketListeners(this.socket); } else { this._closeControlSocket(); } } if (socket) { this._closingError = void 0; socket.setTimeout(0); socket.setEncoding(this._encoding); socket.setKeepAlive(true); socket.on("data", (data) => this._onControlSocketData(data)); socket.on("end", () => this.closeWithError(new Error("Server sent FIN packet unexpectedly, closing connection."))); socket.on("close", (hadError) => { if (!hadError) this.closeWithError(new Error("Server closed connection unexpectedly.")); }); this._setupDefaultErrorHandlers(socket, "control socket"); } this._socket = socket; } /** * Get the current FTP data connection if present. */ get dataSocket() { return this._dataSocket; } /** * Set the socket for the data connection. This will automatically close the former data socket. */ set dataSocket(socket) { this._closeSocket(this._dataSocket); if (socket) { socket.setTimeout(0); this._setupDefaultErrorHandlers(socket, "data socket"); } this._dataSocket = socket; } /** * Get the currently used encoding. */ get encoding() { return this._encoding; } /** * Set the encoding used for the control socket. * * See https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings for what encodings * are supported by Node. */ set encoding(encoding) { this._encoding = encoding; if (this.socket) { this.socket.setEncoding(encoding); } } /** * Send an FTP command without waiting for or handling the result. */ send(command) { const containsPassword = command.startsWith("PASS"); const message2 = containsPassword ? "> PASS ###" : `> ${command}`; this.log(message2); this._socket.write(command + "\r\n", this.encoding); } /** * Send an FTP command and handle the first response. Use this if you have a simple * request-response situation. */ request(command) { return this.handle(command, (res, task) => { if (res instanceof Error) { task.reject(res); } else { task.resolve(res); } }); } /** * Send an FTP command and handle any response until you resolve/reject. Use this if you expect multiple responses * to a request. This returns a Promise that will hold whatever the response handler passed on when resolving/rejecting its task. */ handle(command, responseHandler) { if (this._task) { const err = new Error("User launched a task while another one is still running. Forgot to use 'await' or '.then()'?"); err.stack += ` Running task launched at: ${this._task.stack}`; this.closeWithError(err); } return new Promise((resolveTask, rejectTask) => { this._task = { stack: new Error().stack || "Unknown call stack", responseHandler, resolver: { resolve: (arg2) => { this._stopTrackingTask(); resolveTask(arg2); }, reject: (err) => { this._stopTrackingTask(); rejectTask(err); } } }; if (this._closingError) { const err = new Error(`Client is closed because ${this._closingError.message}`); err.stack += ` Closing reason: ${this._closingError.stack}`; err.code = this._closingError.code !== void 0 ? this._closingError.code : "0"; this._passToHandler(err); return; } this.socket.setTimeout(this.timeout); if (command) { this.send(command); } }); } /** * Log message if set to be verbose. */ log(message2) { if (this.verbose) { console.log(message2); } } /** * Return true if the control socket is using TLS. This does not mean that a session * has already been negotiated. */ get hasTLS() { return "encrypted" in this._socket; } /** * Removes reference to current task and handler. This won't resolve or reject the task. * @protected */ _stopTrackingTask() { this.socket.setTimeout(0); this._task = void 0; } /** * Handle incoming data on the control socket. The chunk is going to be of type `string` * because we let `socket` handle encoding with `setEncoding`. * @protected */ _onControlSocketData(chunk) { this.log(`< ${chunk}`); const completeResponse = this._partialResponse + chunk; const parsed = (0, parseControlResponse_1.parseControlResponse)(completeResponse); this._partialResponse = parsed.rest; for (const message2 of parsed.messages) { const code2 = parseInt(message2.substr(0, 3), 10); const response = { code: code2, message: message2 }; const err = code2 >= 400 ? new FTPError(response) : void 0; this._passToHandler(err ? err : response); } } /** * Send the current handler a response. This is usually a control socket response * or a socket event, like an error or timeout. * @protected */ _passToHandler(response) { if (this._task) { this._task.responseHandler(response, this._task.resolver); } } /** * Setup all error handlers for a socket. * @protected */ _setupDefaultErrorHandlers(socket, identifier) { socket.once("error", (error3) => { error3.message += ` (${identifier})`; this.closeWithError(error3); }); socket.once("close", (hadError) => { if (hadError) { this.closeWithError(new Error(`Socket closed due to transmission error (${identifier})`)); } }); socket.once("timeout", () => { socket.destroy(); this.closeWithError(new Error(`Timeout (${identifier})`)); }); } /** * Close the control socket. Sends QUIT, then FIN, and ignores any response or error. */ _closeControlSocket() { this._removeSocketListeners(this._socket); this._socket.on("error", doNothing); this.send("QUIT"); this._closeSocket(this._socket); } /** * Close a socket, ignores any error. * @protected */ _closeSocket(socket) { if (socket) { this._removeSocketListeners(socket); socket.on("error", doNothing); socket.destroy(); } } /** * Remove all default listeners for socket. * @protected */ _removeSocketListeners(socket) { socket.removeAllListeners(); socket.removeAllListeners("timeout"); socket.removeAllListeners("data"); socket.removeAllListeners("end"); socket.removeAllListeners("error"); socket.removeAllListeners("close"); socket.removeAllListeners("connect"); } /** * Provide a new socket instance. * * Internal use only, replaced for unit tests. */ _newSocket() { return new net_1.Socket(); } }; exports2.FTPContext = FTPContext; } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/FileInfo.js var require_FileInfo = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/FileInfo.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.FileInfo = exports2.FileType = void 0; var FileType; (function(FileType2) { FileType2[FileType2["Unknown"] = 0] = "Unknown"; FileType2[FileType2["File"] = 1] = "File"; FileType2[FileType2["Directory"] = 2] = "Directory"; FileType2[FileType2["SymbolicLink"] = 3] = "SymbolicLink"; })(FileType || (exports2.FileType = FileType = {})); var FileInfo = class { constructor(name) { this.name = name; this.type = FileType.Unknown; this.size = 0; this.rawModifiedAt = ""; this.modifiedAt = void 0; this.permissions = void 0; this.hardLinkCount = void 0; this.link = void 0; this.group = void 0; this.user = void 0; this.uniqueID = void 0; this.name = name; } get isDirectory() { return this.type === FileType.Directory; } get isSymbolicLink() { return this.type === FileType.SymbolicLink; } get isFile() { return this.type === FileType.File; } /** * Deprecated, legacy API. Use `rawModifiedAt` instead. * @deprecated */ get date() { return this.rawModifiedAt; } set date(rawModifiedAt) { this.rawModifiedAt = rawModifiedAt; } }; exports2.FileInfo = FileInfo; FileInfo.UnixPermission = { Read: 4, Write: 2, Execute: 1 }; } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseListDOS.js var require_parseListDOS = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseListDOS.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.transformList = exports2.parseLine = exports2.testLine = void 0; var FileInfo_1 = require_FileInfo(); var RE_LINE = new RegExp( "(\\S+)\\s+(\\S+)\\s+(?:()|([0-9]+))\\s+(\\S.*)" // First non-space followed by rest of line (name) ); function testLine(line) { return /^\d{2}/.test(line) && RE_LINE.test(line); } exports2.testLine = testLine; function parseLine(line) { const groups = line.match(RE_LINE); if (groups === null) { return void 0; } const name = groups[5]; if (name === "." || name === "..") { return void 0; } const file = new FileInfo_1.FileInfo(name); const fileType = groups[3]; if (fileType === "") { file.type = FileInfo_1.FileType.Directory; file.size = 0; } else { file.type = FileInfo_1.FileType.File; file.size = parseInt(groups[4], 10); } file.rawModifiedAt = groups[1] + " " + groups[2]; return file; } exports2.parseLine = parseLine; function transformList(files) { return files; } exports2.transformList = transformList; } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseListUnix.js var require_parseListUnix = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseListUnix.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.transformList = exports2.parseLine = exports2.testLine = void 0; var FileInfo_1 = require_FileInfo(); var JA_MONTH = "\u6708"; var JA_DAY = "\u65E5"; var JA_YEAR = "\u5E74"; var RE_LINE = new RegExp("([bcdelfmpSs-])(((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-]?)))\\+?\\s*(\\d+)\\s+(?:(\\S+(?:\\s\\S+)*?)\\s+)?(?:(\\S+(?:\\s\\S+)*)\\s+)?(\\d+(?:,\\s*\\d+)?)\\s+((?:\\d+[-/]\\d+[-/]\\d+)|(?:\\S{3}\\s+\\d{1,2})|(?:\\d{1,2}\\s+\\S{3})|(?:\\d{1,2}" + JA_MONTH + "\\s+\\d{1,2}" + JA_DAY + "))\\s+((?:\\d+(?::\\d+)?)|(?:\\d{4}" + JA_YEAR + "))\\s(.*)"); function testLine(line) { return RE_LINE.test(line); } exports2.testLine = testLine; function parseLine(line) { const groups = line.match(RE_LINE); if (groups === null) { return void 0; } const name = groups[21]; if (name === "." || name === "..") { return void 0; } const file = new FileInfo_1.FileInfo(name); file.size = parseInt(groups[18], 10); file.user = groups[16]; file.group = groups[17]; file.hardLinkCount = parseInt(groups[15], 10); file.rawModifiedAt = groups[19] + " " + groups[20]; file.permissions = { user: parseMode(groups[4], groups[5], groups[6]), group: parseMode(groups[8], groups[9], groups[10]), world: parseMode(groups[12], groups[13], groups[14]) }; switch (groups[1].charAt(0)) { case "d": file.type = FileInfo_1.FileType.Directory; break; case "e": file.type = FileInfo_1.FileType.SymbolicLink; break; case "l": file.type = FileInfo_1.FileType.SymbolicLink; break; case "b": case "c": file.type = FileInfo_1.FileType.File; break; case "f": case "-": file.type = FileInfo_1.FileType.File; break; default: file.type = FileInfo_1.FileType.Unknown; } if (file.isSymbolicLink) { const end = name.indexOf(" -> "); if (end !== -1) { file.name = name.substring(0, end); file.link = name.substring(end + 4); } } return file; } exports2.parseLine = parseLine; function transformList(files) { return files; } exports2.transformList = transformList; function parseMode(r, w, x) { let value = 0; if (r !== "-") { value += FileInfo_1.FileInfo.UnixPermission.Read; } if (w !== "-") { value += FileInfo_1.FileInfo.UnixPermission.Write; } const execToken = x.charAt(0); if (execToken !== "-" && execToken.toUpperCase() !== execToken) { value += FileInfo_1.FileInfo.UnixPermission.Execute; } return value; } } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseListMLSD.js var require_parseListMLSD = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseListMLSD.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.parseMLSxDate = exports2.transformList = exports2.parseLine = exports2.testLine = void 0; var FileInfo_1 = require_FileInfo(); function parseSize(value, info) { info.size = parseInt(value, 10); } var factHandlersByName = { "size": parseSize, // File size "sizd": parseSize, // Directory size "unique": (value, info) => { info.uniqueID = value; }, "modify": (value, info) => { info.modifiedAt = parseMLSxDate(value); info.rawModifiedAt = info.modifiedAt.toISOString(); }, "type": (value, info) => { if (value.startsWith("OS.unix=slink")) { info.type = FileInfo_1.FileType.SymbolicLink; info.link = value.substr(value.indexOf(":") + 1); return 1; } switch (value) { case "file": info.type = FileInfo_1.FileType.File; break; case "dir": info.type = FileInfo_1.FileType.Directory; break; case "OS.unix=symlink": info.type = FileInfo_1.FileType.SymbolicLink; break; case "cdir": case "pdir": return 2; default: info.type = FileInfo_1.FileType.Unknown; } return 1; }, "unix.mode": (value, info) => { const digits = value.substr(-3); info.permissions = { user: parseInt(digits[0], 10), group: parseInt(digits[1], 10), world: parseInt(digits[2], 10) }; }, "unix.ownername": (value, info) => { info.user = value; }, "unix.owner": (value, info) => { if (info.user === void 0) info.user = value; }, get "unix.uid"() { return this["unix.owner"]; }, "unix.groupname": (value, info) => { info.group = value; }, "unix.group": (value, info) => { if (info.group === void 0) info.group = value; }, get "unix.gid"() { return this["unix.group"]; } // Regarding the fact "perm": // We don't handle permission information stored in "perm" because its information is conceptually // different from what users of FTP clients usually associate with "permissions". Those that have // some expectations (and probably want to edit them with a SITE command) often unknowingly expect // the Unix permission system. The information passed by "perm" describes what FTP commands can be // executed with a file/directory. But even this can be either incomplete or just meant as a "guide" // as the spec mentions. From https://tools.ietf.org/html/rfc3659#section-7.5.5: "The permissions are // described here as they apply to FTP commands. They may not map easily into particular permissions // available on the server's operating system." The parser by Apache Commons tries to translate these // to Unix permissions – this is misleading users and might not even be correct. }; function splitStringOnce(str, delimiter3) { const pos = str.indexOf(delimiter3); const a = str.substr(0, pos); const b = str.substr(pos + delimiter3.length); return [a, b]; } function testLine(line) { return /^\S+=\S+;/.test(line) || line.startsWith(" "); } exports2.testLine = testLine; function parseLine(line) { const [packedFacts, name] = splitStringOnce(line, " "); if (name === "" || name === "." || name === "..") { return void 0; } const info = new FileInfo_1.FileInfo(name); const facts = packedFacts.split(";"); for (const fact of facts) { const [factName, factValue] = splitStringOnce(fact, "="); if (!factValue) { continue; } const factHandler = factHandlersByName[factName.toLowerCase()]; if (!factHandler) { continue; } const result = factHandler(factValue, info); if (result === 2) { return void 0; } } return info; } exports2.parseLine = parseLine; function transformList(files) { const nonLinksByID = /* @__PURE__ */ new Map(); for (const file of files) { if (!file.isSymbolicLink && file.uniqueID !== void 0) { nonLinksByID.set(file.uniqueID, file); } } const resolvedFiles = []; for (const file of files) { if (file.isSymbolicLink && file.uniqueID !== void 0 && file.link === void 0) { const target = nonLinksByID.get(file.uniqueID); if (target !== void 0) { file.link = target.name; } } const isPartOfDirectory = !file.name.includes("/"); if (isPartOfDirectory) { resolvedFiles.push(file); } } return resolvedFiles; } exports2.transformList = transformList; function parseMLSxDate(fact) { return new Date(Date.UTC( +fact.slice(0, 4), // Year +fact.slice(4, 6) - 1, // Month +fact.slice(6, 8), // Date +fact.slice(8, 10), // Hours +fact.slice(10, 12), // Minutes +fact.slice(12, 14), // Seconds +fact.slice(15, 18) // Milliseconds )); } exports2.parseMLSxDate = parseMLSxDate; } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseList.js var require_parseList = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parseList.js"(exports2) { "use strict"; 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.parseList = void 0; var dosParser = __importStar2(require_parseListDOS()); var unixParser = __importStar2(require_parseListUnix()); var mlsdParser = __importStar2(require_parseListMLSD()); var availableParsers = [ dosParser, unixParser, mlsdParser // Keep MLSD last, may accept filename only ]; function firstCompatibleParser(line, parsers) { return parsers.find((parser) => parser.testLine(line) === true); } function isNotBlank(str) { return str.trim() !== ""; } function isNotMeta(str) { return !str.startsWith("total"); } var REGEX_NEWLINE = /\r?\n/; function parseList(rawList) { const lines3 = rawList.split(REGEX_NEWLINE).filter(isNotBlank).filter(isNotMeta); if (lines3.length === 0) { return []; } const testLine = lines3[lines3.length - 1]; const parser = firstCompatibleParser(testLine, availableParsers); if (!parser) { throw new Error("This library only supports MLSD, Unix- or DOS-style directory listing. Your FTP server seems to be using another format. You can see the transmitted listing when setting `client.ftp.verbose = true`. You can then provide a custom parser to `client.parseList`, see the documentation for details."); } const files = lines3.map(parser.parseLine).filter((info) => info !== void 0); return parser.transformList(files); } exports2.parseList = parseList; } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/ProgressTracker.js var require_ProgressTracker = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/ProgressTracker.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ProgressTracker = void 0; var ProgressTracker = class { constructor() { this.bytesOverall = 0; this.intervalMs = 500; this.onStop = noop; this.onHandle = noop; } /** * Register a new handler for progress info. Use `undefined` to disable reporting. */ reportTo(onHandle = noop) { this.onHandle = onHandle; } /** * Start tracking transfer progress of a socket. * * @param socket The socket to observe. * @param name A name associated with this progress tracking, e.g. a filename. * @param type The type of the transfer, typically "upload" or "download". */ start(socket, name, type) { let lastBytes = 0; this.onStop = poll(this.intervalMs, () => { const bytes9 = socket.bytesRead + socket.bytesWritten; this.bytesOverall += bytes9 - lastBytes; lastBytes = bytes9; this.onHandle({ name, type, bytes: bytes9, bytesOverall: this.bytesOverall }); }); } /** * Stop tracking transfer progress. */ stop() { this.onStop(false); } /** * Call the progress handler one more time, then stop tracking. */ updateAndStop() { this.onStop(true); } }; exports2.ProgressTracker = ProgressTracker; function poll(intervalMs, updateFunc) { const id = setInterval(updateFunc, intervalMs); const stopFunc = (stopWithUpdate) => { clearInterval(id); if (stopWithUpdate) { updateFunc(); } updateFunc = noop; }; updateFunc(); return stopFunc; } function noop() { } } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/StringWriter.js var require_StringWriter = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/StringWriter.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.StringWriter = void 0; var stream_1 = __require("stream"); var StringWriter = class extends stream_1.Writable { constructor() { super(...arguments); this.buf = Buffer.alloc(0); } _write(chunk, _, callback) { if (chunk instanceof Buffer) { this.buf = Buffer.concat([this.buf, chunk]); callback(null); } else { callback(new Error("StringWriter expects chunks of type 'Buffer'.")); } } getText(encoding) { return this.buf.toString(encoding); } }; exports2.StringWriter = StringWriter; } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/netUtils.js var require_netUtils = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/netUtils.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ipIsPrivateV4Address = exports2.upgradeSocket = exports2.describeAddress = exports2.describeTLS = void 0; var tls_1 = __require("tls"); function describeTLS(socket) { if (socket instanceof tls_1.TLSSocket) { const protocol = socket.getProtocol(); return protocol ? protocol : "Server socket or disconnected client socket"; } return "No encryption"; } exports2.describeTLS = describeTLS; function describeAddress(socket) { if (socket.remoteFamily === "IPv6") { return `[${socket.remoteAddress}]:${socket.remotePort}`; } return `${socket.remoteAddress}:${socket.remotePort}`; } exports2.describeAddress = describeAddress; function upgradeSocket(socket, options) { return new Promise((resolve14, reject) => { const tlsOptions = Object.assign({}, options, { socket }); const tlsSocket = (0, tls_1.connect)(tlsOptions, () => { const expectCertificate = tlsOptions.rejectUnauthorized !== false; if (expectCertificate && !tlsSocket.authorized) { reject(tlsSocket.authorizationError); } else { tlsSocket.removeAllListeners("error"); resolve14(tlsSocket); } }).once("error", (error3) => { reject(error3); }); }); } exports2.upgradeSocket = upgradeSocket; function ipIsPrivateV4Address(ip = "") { if (ip.startsWith("::ffff:")) { ip = ip.substr(7); } const octets = ip.split(".").map((o) => parseInt(o, 10)); return octets[0] === 10 || octets[0] === 172 && octets[1] >= 16 && octets[1] <= 31 || octets[0] === 192 && octets[1] === 168 || ip === "127.0.0.1"; } exports2.ipIsPrivateV4Address = ipIsPrivateV4Address; } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/transfer.js var require_transfer = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/transfer.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.downloadTo = exports2.uploadFrom = exports2.connectForPassiveTransfer = exports2.parsePasvResponse = exports2.enterPassiveModeIPv4 = exports2.parseEpsvResponse = exports2.enterPassiveModeIPv6 = void 0; var netUtils_1 = require_netUtils(); var stream_1 = __require("stream"); var tls_1 = __require("tls"); var parseControlResponse_1 = require_parseControlResponse(); async function enterPassiveModeIPv6(ftp) { const res = await ftp.request("EPSV"); const port = parseEpsvResponse(res.message); if (!port) { throw new Error("Can't parse EPSV response: " + res.message); } const controlHost = ftp.socket.remoteAddress; if (controlHost === void 0) { throw new Error("Control socket is disconnected, can't get remote address."); } await connectForPassiveTransfer(controlHost, port, ftp); return res; } exports2.enterPassiveModeIPv6 = enterPassiveModeIPv6; function parseEpsvResponse(message2) { const groups = message2.match(/[|!]{3}(.+)[|!]/); if (groups === null || groups[1] === void 0) { throw new Error(`Can't parse response to 'EPSV': ${message2}`); } const port = parseInt(groups[1], 10); if (Number.isNaN(port)) { throw new Error(`Can't parse response to 'EPSV', port is not a number: ${message2}`); } return port; } exports2.parseEpsvResponse = parseEpsvResponse; async function enterPassiveModeIPv4(ftp) { const res = await ftp.request("PASV"); const target = parsePasvResponse(res.message); if (!target) { throw new Error("Can't parse PASV response: " + res.message); } const controlHost = ftp.socket.remoteAddress; if ((0, netUtils_1.ipIsPrivateV4Address)(target.host) && controlHost && !(0, netUtils_1.ipIsPrivateV4Address)(controlHost)) { target.host = controlHost; } await connectForPassiveTransfer(target.host, target.port, ftp); return res; } exports2.enterPassiveModeIPv4 = enterPassiveModeIPv4; function parsePasvResponse(message2) { const groups = message2.match(/([-\d]+,[-\d]+,[-\d]+,[-\d]+),([-\d]+),([-\d]+)/); if (groups === null || groups.length !== 4) { throw new Error(`Can't parse response to 'PASV': ${message2}`); } return { host: groups[1].replace(/,/g, "."), port: (parseInt(groups[2], 10) & 255) * 256 + (parseInt(groups[3], 10) & 255) }; } exports2.parsePasvResponse = parsePasvResponse; function connectForPassiveTransfer(host, port, ftp) { return new Promise((resolve14, reject) => { let socket = ftp._newSocket(); const handleConnErr = function(err) { err.message = "Can't open data connection in passive mode: " + err.message; reject(err); }; const handleTimeout = function() { socket.destroy(); reject(new Error(`Timeout when trying to open data connection to ${host}:${port}`)); }; socket.setTimeout(ftp.timeout); socket.on("error", handleConnErr); socket.on("timeout", handleTimeout); socket.connect({ port, host, family: ftp.ipFamily }, () => { if (ftp.socket instanceof tls_1.TLSSocket) { socket = (0, tls_1.connect)(Object.assign({}, ftp.tlsOptions, { socket, // Reuse the TLS session negotiated earlier when the control connection // was upgraded. Servers expect this because it provides additional // security: If a completely new session would be negotiated, a hacker // could guess the port and connect to the new data connection before we do // by just starting his/her own TLS session. session: ftp.socket.getSession() })); } socket.removeListener("error", handleConnErr); socket.removeListener("timeout", handleTimeout); ftp.dataSocket = socket; resolve14(); }); }); } exports2.connectForPassiveTransfer = connectForPassiveTransfer; var TransferResolver = class { /** * Instantiate a TransferResolver */ constructor(ftp, progress2) { this.ftp = ftp; this.progress = progress2; this.response = void 0; this.dataTransferDone = false; } /** * Mark the beginning of a transfer. * * @param name - Name of the transfer, usually the filename. * @param type - Type of transfer, usually "upload" or "download". */ onDataStart(name, type) { if (this.ftp.dataSocket === void 0) { throw new Error("Data transfer should start but there is no data connection."); } this.ftp.socket.setTimeout(0); this.ftp.dataSocket.setTimeout(this.ftp.timeout); this.progress.start(this.ftp.dataSocket, name, type); } /** * The data connection has finished the transfer. */ onDataDone(task) { this.progress.updateAndStop(); this.ftp.socket.setTimeout(this.ftp.timeout); if (this.ftp.dataSocket) { this.ftp.dataSocket.setTimeout(0); } this.dataTransferDone = true; this.tryResolve(task); } /** * The control connection reports the transfer as finished. */ onControlDone(task, response) { this.response = response; this.tryResolve(task); } /** * An error has been reported and the task should be rejected. */ onError(task, err) { this.progress.updateAndStop(); this.ftp.socket.setTimeout(this.ftp.timeout); this.ftp.dataSocket = void 0; task.reject(err); } /** * Control connection sent an unexpected request requiring a response from our part. We * can't provide that (because unknown) and have to close the contrext with an error because * the FTP server is now caught up in a state we can't resolve. */ onUnexpectedRequest(response) { const err = new Error(`Unexpected FTP response is requesting an answer: ${response.message}`); this.ftp.closeWithError(err); } tryResolve(task) { const canResolve = this.dataTransferDone && this.response !== void 0; if (canResolve) { this.ftp.dataSocket = void 0; task.resolve(this.response); } } }; function uploadFrom(source, config2) { const resolver = new TransferResolver(config2.ftp, config2.tracker); const fullCommand = `${config2.command} ${config2.remotePath}`; return config2.ftp.handle(fullCommand, (res, task) => { if (res instanceof Error) { resolver.onError(task, res); } else if (res.code === 150 || res.code === 125) { const dataSocket = config2.ftp.dataSocket; if (!dataSocket) { resolver.onError(task, new Error("Upload should begin but no data connection is available.")); return; } const canUpload = "getCipher" in dataSocket ? dataSocket.getCipher() !== void 0 : true; onConditionOrEvent(canUpload, dataSocket, "secureConnect", () => { config2.ftp.log(`Uploading to ${(0, netUtils_1.describeAddress)(dataSocket)} (${(0, netUtils_1.describeTLS)(dataSocket)})`); resolver.onDataStart(config2.remotePath, config2.type); (0, stream_1.pipeline)(source, dataSocket, (err) => { if (err) { resolver.onError(task, err); } else { resolver.onDataDone(task); } }); }); } else if ((0, parseControlResponse_1.positiveCompletion)(res.code)) { resolver.onControlDone(task, res); } else if ((0, parseControlResponse_1.positiveIntermediate)(res.code)) { resolver.onUnexpectedRequest(res); } }); } exports2.uploadFrom = uploadFrom; function downloadTo(destination, config2) { if (!config2.ftp.dataSocket) { throw new Error("Download will be initiated but no data connection is available."); } const resolver = new TransferResolver(config2.ftp, config2.tracker); return config2.ftp.handle(config2.command, (res, task) => { if (res instanceof Error) { resolver.onError(task, res); } else if (res.code === 150 || res.code === 125) { const dataSocket = config2.ftp.dataSocket; if (!dataSocket) { resolver.onError(task, new Error("Download should begin but no data connection is available.")); return; } config2.ftp.log(`Downloading from ${(0, netUtils_1.describeAddress)(dataSocket)} (${(0, netUtils_1.describeTLS)(dataSocket)})`); resolver.onDataStart(config2.remotePath, config2.type); (0, stream_1.pipeline)(dataSocket, destination, (err) => { if (err) { resolver.onError(task, err); } else { resolver.onDataDone(task); } }); } else if (res.code === 350) { config2.ftp.send("RETR " + config2.remotePath); } else if ((0, parseControlResponse_1.positiveCompletion)(res.code)) { resolver.onControlDone(task, res); } else if ((0, parseControlResponse_1.positiveIntermediate)(res.code)) { resolver.onUnexpectedRequest(res); } }); } exports2.downloadTo = downloadTo; function onConditionOrEvent(condition, emitter, eventName, action) { if (condition === true) { action(); } else { emitter.once(eventName, () => action()); } } } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/Client.js var require_Client = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/Client.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Client = void 0; var fs_1 = __require("fs"); var path_1 = __require("path"); var tls_1 = __require("tls"); var util_1 = __require("util"); var FtpContext_1 = require_FtpContext(); var parseList_1 = require_parseList(); var ProgressTracker_1 = require_ProgressTracker(); var StringWriter_1 = require_StringWriter(); var parseListMLSD_1 = require_parseListMLSD(); var netUtils_1 = require_netUtils(); var transfer_1 = require_transfer(); var parseControlResponse_1 = require_parseControlResponse(); var fsReadDir = (0, util_1.promisify)(fs_1.readdir); var fsMkDir = (0, util_1.promisify)(fs_1.mkdir); var fsStat = (0, util_1.promisify)(fs_1.stat); var fsOpen = (0, util_1.promisify)(fs_1.open); var fsClose = (0, util_1.promisify)(fs_1.close); var fsUnlink = (0, util_1.promisify)(fs_1.unlink); var LIST_COMMANDS_DEFAULT = () => ["LIST -a", "LIST"]; var LIST_COMMANDS_MLSD = () => ["MLSD", "LIST -a", "LIST"]; var Client2 = class { /** * Instantiate an FTP client. * * @param timeout Timeout in milliseconds, use 0 for no timeout. Optional, default is 30 seconds. */ constructor(timeout = 3e4) { this.availableListCommands = LIST_COMMANDS_DEFAULT(); this.ftp = new FtpContext_1.FTPContext(timeout); this.prepareTransfer = this._enterFirstCompatibleMode([transfer_1.enterPassiveModeIPv6, transfer_1.enterPassiveModeIPv4]); this.parseList = parseList_1.parseList; this._progressTracker = new ProgressTracker_1.ProgressTracker(); } /** * Close the client and all open socket connections. * * Close the client and all open socket connections. The client can’t be used anymore after calling this method, * you have to either reconnect with `access` or `connect` or instantiate a new instance to continue any work. * A client is also closed automatically if any timeout or connection error occurs. */ close() { this.ftp.close(); this._progressTracker.stop(); } /** * Returns true if the client is closed and can't be used anymore. */ get closed() { return this.ftp.closed; } /** * Connect (or reconnect) to an FTP server. * * This is an instance method and thus can be called multiple times during the lifecycle of a `Client` * instance. Whenever you do, the client is reset with a new control connection. This also implies that * you can reopen a `Client` instance that has been closed due to an error when reconnecting with this * method. In fact, reconnecting is the only way to continue using a closed `Client`. * * @param host Host the client should connect to. Optional, default is "localhost". * @param port Port the client should connect to. Optional, default is 21. */ connect(host = "localhost", port = 21) { this.ftp.reset(); this.ftp.socket.connect({ host, port, family: this.ftp.ipFamily }, () => this.ftp.log(`Connected to ${(0, netUtils_1.describeAddress)(this.ftp.socket)} (${(0, netUtils_1.describeTLS)(this.ftp.socket)})`)); return this._handleConnectResponse(); } /** * As `connect` but using implicit TLS. Implicit TLS is not an FTP standard and has been replaced by * explicit TLS. There are still FTP servers that support only implicit TLS, though. */ connectImplicitTLS(host = "localhost", port = 21, tlsOptions = {}) { this.ftp.reset(); this.ftp.socket = (0, tls_1.connect)(port, host, tlsOptions, () => this.ftp.log(`Connected to ${(0, netUtils_1.describeAddress)(this.ftp.socket)} (${(0, netUtils_1.describeTLS)(this.ftp.socket)})`)); this.ftp.tlsOptions = tlsOptions; return this._handleConnectResponse(); } /** * Handles the first reponse by an FTP server after the socket connection has been established. */ _handleConnectResponse() { return this.ftp.handle(void 0, (res, task) => { if (res instanceof Error) { task.reject(res); } else if ((0, parseControlResponse_1.positiveCompletion)(res.code)) { task.resolve(res); } else { task.reject(new FtpContext_1.FTPError(res)); } }); } /** * Send an FTP command and handle the first response. */ send(command, ignoreErrorCodesDEPRECATED = false) { if (ignoreErrorCodesDEPRECATED) { this.ftp.log("Deprecated call using send(command, flag) with boolean flag to ignore errors. Use sendIgnoringError(command)."); return this.sendIgnoringError(command); } return this.ftp.request(command); } /** * Send an FTP command and ignore an FTP error response. Any other kind of error or timeout will still reject the Promise. * * @param command */ sendIgnoringError(command) { return this.ftp.handle(command, (res, task) => { if (res instanceof FtpContext_1.FTPError) { task.resolve({ code: res.code, message: res.message }); } else if (res instanceof Error) { task.reject(res); } else { task.resolve(res); } }); } /** * Upgrade the current socket connection to TLS. * * @param options TLS options as in `tls.connect(options)`, optional. * @param command Set the authentication command. Optional, default is "AUTH TLS". */ async useTLS(options = {}, command = "AUTH TLS") { const ret = await this.send(command); this.ftp.socket = await (0, netUtils_1.upgradeSocket)(this.ftp.socket, options); this.ftp.tlsOptions = options; this.ftp.log(`Control socket is using: ${(0, netUtils_1.describeTLS)(this.ftp.socket)}`); return ret; } /** * Login a user with a password. * * @param user Username to use for login. Optional, default is "anonymous". * @param password Password to use for login. Optional, default is "guest". */ login(user = "anonymous", password = "guest") { this.ftp.log(`Login security: ${(0, netUtils_1.describeTLS)(this.ftp.socket)}`); return this.ftp.handle("USER " + user, (res, task) => { if (res instanceof Error) { task.reject(res); } else if ((0, parseControlResponse_1.positiveCompletion)(res.code)) { task.resolve(res); } else if (res.code === 331) { this.ftp.send("PASS " + password); } else { task.reject(new FtpContext_1.FTPError(res)); } }); } /** * Set the usual default settings. * * Settings used: * * Binary mode (TYPE I) * * File structure (STRU F) * * Additional settings for FTPS (PBSZ 0, PROT P) */ async useDefaultSettings() { const features = await this.features(); const supportsMLSD = features.has("MLST"); this.availableListCommands = supportsMLSD ? LIST_COMMANDS_MLSD() : LIST_COMMANDS_DEFAULT(); await this.send("TYPE I"); await this.sendIgnoringError("STRU F"); await this.sendIgnoringError("OPTS UTF8 ON"); if (supportsMLSD) { await this.sendIgnoringError("OPTS MLST type;size;modify;unique;unix.mode;unix.owner;unix.group;unix.ownername;unix.groupname;"); } if (this.ftp.hasTLS) { await this.sendIgnoringError("PBSZ 0"); await this.sendIgnoringError("PROT P"); } } /** * Convenience method that calls `connect`, `useTLS`, `login` and `useDefaultSettings`. * * This is an instance method and thus can be called multiple times during the lifecycle of a `Client` * instance. Whenever you do, the client is reset with a new control connection. This also implies that * you can reopen a `Client` instance that has been closed due to an error when reconnecting with this * method. In fact, reconnecting is the only way to continue using a closed `Client`. */ async access(options = {}) { var _a, _b; const useExplicitTLS = options.secure === true; const useImplicitTLS = options.secure === "implicit"; let welcome; if (useImplicitTLS) { welcome = await this.connectImplicitTLS(options.host, options.port, options.secureOptions); } else { welcome = await this.connect(options.host, options.port); } if (useExplicitTLS) { const secureOptions = (_a = options.secureOptions) !== null && _a !== void 0 ? _a : {}; secureOptions.host = (_b = secureOptions.host) !== null && _b !== void 0 ? _b : options.host; await this.useTLS(secureOptions); } await this.sendIgnoringError("OPTS UTF8 ON"); await this.login(options.user, options.password); await this.useDefaultSettings(); return welcome; } /** * Get the current working directory. */ async pwd() { const res = await this.send("PWD"); const parsed = res.message.match(/"(.+)"/); if (parsed === null || parsed[1] === void 0) { throw new Error(`Can't parse response to command 'PWD': ${res.message}`); } return parsed[1]; } /** * Get a description of supported features. * * This sends the FEAT command and parses the result into a Map where keys correspond to available commands * and values hold further information. Be aware that your FTP servers might not support this * command in which case this method will not throw an exception but just return an empty Map. */ async features() { const res = await this.sendIgnoringError("FEAT"); const features = /* @__PURE__ */ new Map(); if (res.code < 400 && (0, parseControlResponse_1.isMultiline)(res.message)) { res.message.split("\n").slice(1, -1).forEach((line) => { const entry = line.trim().split(" "); features.set(entry[0], entry[1] || ""); }); } return features; } /** * Set the working directory. */ async cd(path11) { const validPath = await this.protectWhitespace(path11); return this.send("CWD " + validPath); } /** * Switch to the parent directory of the working directory. */ async cdup() { return this.send("CDUP"); } /** * Get the last modified time of a file. This is not supported by every FTP server, in which case * calling this method will throw an exception. */ async lastMod(path11) { const validPath = await this.protectWhitespace(path11); const res = await this.send(`MDTM ${validPath}`); const date = res.message.slice(4); return (0, parseListMLSD_1.parseMLSxDate)(date); } /** * Get the size of a file. */ async size(path11) { const validPath = await this.protectWhitespace(path11); const command = `SIZE ${validPath}`; const res = await this.send(command); const size = parseInt(res.message.slice(4), 10); if (Number.isNaN(size)) { throw new Error(`Can't parse response to command '${command}' as a numerical value: ${res.message}`); } return size; } /** * Rename a file. * * Depending on the FTP server this might also be used to move a file from one * directory to another by providing full paths. */ async rename(srcPath, destPath) { const validSrc = await this.protectWhitespace(srcPath); const validDest = await this.protectWhitespace(destPath); await this.send("RNFR " + validSrc); return this.send("RNTO " + validDest); } /** * Remove a file from the current working directory. * * You can ignore FTP error return codes which won't throw an exception if e.g. * the file doesn't exist. */ async remove(path11, ignoreErrorCodes = false) { const validPath = await this.protectWhitespace(path11); if (ignoreErrorCodes) { return this.sendIgnoringError(`DELE ${validPath}`); } return this.send(`DELE ${validPath}`); } /** * Report transfer progress for any upload or download to a given handler. * * This will also reset the overall transfer counter that can be used for multiple transfers. You can * also call the function without a handler to stop reporting to an earlier one. * * @param handler Handler function to call on transfer progress. */ trackProgress(handler) { this._progressTracker.bytesOverall = 0; this._progressTracker.reportTo(handler); } /** * Upload data from a readable stream or a local file to a remote file. * * @param source Readable stream or path to a local file. * @param toRemotePath Path to a remote file to write to. */ async uploadFrom(source, toRemotePath, options = {}) { return this._uploadWithCommand(source, toRemotePath, "STOR", options); } /** * Upload data from a readable stream or a local file by appending it to an existing file. If the file doesn't * exist the FTP server should create it. * * @param source Readable stream or path to a local file. * @param toRemotePath Path to a remote file to write to. */ async appendFrom(source, toRemotePath, options = {}) { return this._uploadWithCommand(source, toRemotePath, "APPE", options); } /** * @protected */ async _uploadWithCommand(source, remotePath, command, options) { if (typeof source === "string") { return this._uploadLocalFile(source, remotePath, command, options); } return this._uploadFromStream(source, remotePath, command); } /** * @protected */ async _uploadLocalFile(localPath, remotePath, command, options) { const fd = await fsOpen(localPath, "r"); const source = (0, fs_1.createReadStream)("", { fd, start: options.localStart, end: options.localEndInclusive, autoClose: false }); try { return await this._uploadFromStream(source, remotePath, command); } finally { await ignoreError2(() => fsClose(fd)); } } /** * @protected */ async _uploadFromStream(source, remotePath, command) { const onError = (err) => this.ftp.closeWithError(err); source.once("error", onError); try { const validPath = await this.protectWhitespace(remotePath); await this.prepareTransfer(this.ftp); return await (0, transfer_1.uploadFrom)(source, { ftp: this.ftp, tracker: this._progressTracker, command, remotePath: validPath, type: "upload" }); } finally { source.removeListener("error", onError); } } /** * Download a remote file and pipe its data to a writable stream or to a local file. * * You can optionally define at which position of the remote file you'd like to start * downloading. If the destination you provide is a file, the offset will be applied * to it as well. For example: To resume a failed download, you'd request the size of * the local, partially downloaded file and use that as the offset. Assuming the size * is 23, you'd download the rest using `downloadTo("local.txt", "remote.txt", 23)`. * * @param destination Stream or path for a local file to write to. * @param fromRemotePath Path of the remote file to read from. * @param startAt Position within the remote file to start downloading at. If the destination is a file, this offset is also applied to it. */ async downloadTo(destination, fromRemotePath, startAt = 0) { if (typeof destination === "string") { return this._downloadToFile(destination, fromRemotePath, startAt); } return this._downloadToStream(destination, fromRemotePath, startAt); } /** * @protected */ async _downloadToFile(localPath, remotePath, startAt) { const appendingToLocalFile = startAt > 0; const fileSystemFlags = appendingToLocalFile ? "r+" : "w"; const fd = await fsOpen(localPath, fileSystemFlags); const destination = (0, fs_1.createWriteStream)("", { fd, start: startAt, autoClose: false }); try { return await this._downloadToStream(destination, remotePath, startAt); } catch (err) { const localFileStats = await ignoreError2(() => fsStat(localPath)); const hasDownloadedData = localFileStats && localFileStats.size > 0; const shouldRemoveLocalFile = !appendingToLocalFile && !hasDownloadedData; if (shouldRemoveLocalFile) { await ignoreError2(() => fsUnlink(localPath)); } throw err; } finally { await ignoreError2(() => fsClose(fd)); } } /** * @protected */ async _downloadToStream(destination, remotePath, startAt) { const onError = (err) => this.ftp.closeWithError(err); destination.once("error", onError); try { const validPath = await this.protectWhitespace(remotePath); await this.prepareTransfer(this.ftp); return await (0, transfer_1.downloadTo)(destination, { ftp: this.ftp, tracker: this._progressTracker, command: startAt > 0 ? `REST ${startAt}` : `RETR ${validPath}`, remotePath: validPath, type: "download" }); } finally { destination.removeListener("error", onError); destination.end(); } } /** * List files and directories in the current working directory, or from `path` if specified. * * @param [path] Path to remote file or directory. */ async list(path11 = "") { const validPath = await this.protectWhitespace(path11); let lastError; for (const candidate of this.availableListCommands) { const command = validPath === "" ? candidate : `${candidate} ${validPath}`; await this.prepareTransfer(this.ftp); try { const parsedList = await this._requestListWithCommand(command); this.availableListCommands = [candidate]; return parsedList; } catch (err) { const shouldTryNext = err instanceof FtpContext_1.FTPError; if (!shouldTryNext) { throw err; } lastError = err; } } throw lastError; } /** * @protected */ async _requestListWithCommand(command) { const buffer = new StringWriter_1.StringWriter(); await (0, transfer_1.downloadTo)(buffer, { ftp: this.ftp, tracker: this._progressTracker, command, remotePath: "", type: "list" }); const text = buffer.getText(this.ftp.encoding); this.ftp.log(text); return this.parseList(text); } /** * Remove a directory and all of its content. * * @param remoteDirPath The path of the remote directory to delete. * @example client.removeDir("foo") // Remove directory 'foo' using a relative path. * @example client.removeDir("foo/bar") // Remove directory 'bar' using a relative path. * @example client.removeDir("/foo/bar") // Remove directory 'bar' using an absolute path. * @example client.removeDir("/") // Remove everything. */ async removeDir(remoteDirPath) { return this._exitAtCurrentDirectory(async () => { await this.cd(remoteDirPath); const absoluteDirPath = await this.pwd(); await this.clearWorkingDir(); const dirIsRoot = absoluteDirPath === "/"; if (!dirIsRoot) { await this.cdup(); await this.removeEmptyDir(absoluteDirPath); } }); } /** * Remove all files and directories in the working directory without removing * the working directory itself. */ async clearWorkingDir() { for (const file of await this.list()) { if (file.isDirectory) { await this.cd(file.name); await this.clearWorkingDir(); await this.cdup(); await this.removeEmptyDir(file.name); } else { await this.remove(file.name); } } } /** * Upload the contents of a local directory to the remote working directory. * * This will overwrite existing files with the same names and reuse existing directories. * Unrelated files and directories will remain untouched. You can optionally provide a `remoteDirPath` * to put the contents inside a directory which will be created if necessary including all * intermediate directories. If you did provide a remoteDirPath the working directory will stay * the same as before calling this method. * * @param localDirPath Local path, e.g. "foo/bar" or "../test" * @param [remoteDirPath] Remote path of a directory to upload to. Working directory if undefined. */ async uploadFromDir(localDirPath, remoteDirPath) { return this._exitAtCurrentDirectory(async () => { if (remoteDirPath) { await this.ensureDir(remoteDirPath); } return await this._uploadToWorkingDir(localDirPath); }); } /** * @protected */ async _uploadToWorkingDir(localDirPath) { const files = await fsReadDir(localDirPath); for (const file of files) { const fullPath = (0, path_1.join)(localDirPath, file); const stats = await fsStat(fullPath); if (stats.isFile()) { await this.uploadFrom(fullPath, file); } else if (stats.isDirectory()) { await this._openDir(file); await this._uploadToWorkingDir(fullPath); await this.cdup(); } } } /** * Download all files and directories of the working directory to a local directory. * * @param localDirPath The local directory to download to. * @param remoteDirPath Remote directory to download. Current working directory if not specified. */ async downloadToDir(localDirPath, remoteDirPath) { return this._exitAtCurrentDirectory(async () => { if (remoteDirPath) { await this.cd(remoteDirPath); } return await this._downloadFromWorkingDir(localDirPath); }); } /** * @protected */ async _downloadFromWorkingDir(localDirPath) { await ensureLocalDirectory(localDirPath); for (const file of await this.list()) { const localPath = (0, path_1.join)(localDirPath, file.name); if (file.isDirectory) { await this.cd(file.name); await this._downloadFromWorkingDir(localPath); await this.cdup(); } else if (file.isFile) { await this.downloadTo(localPath, file.name); } } } /** * Make sure a given remote path exists, creating all directories as necessary. * This function also changes the current working directory to the given path. */ async ensureDir(remoteDirPath) { if (remoteDirPath.startsWith("/")) { await this.cd("/"); } const names = remoteDirPath.split("/").filter((name) => name !== ""); for (const name of names) { await this._openDir(name); } } /** * Try to create a directory and enter it. This will not raise an exception if the directory * couldn't be created if for example it already exists. * @protected */ async _openDir(dirName) { await this.sendIgnoringError("MKD " + dirName); await this.cd(dirName); } /** * Remove an empty directory, will fail if not empty. */ async removeEmptyDir(path11) { const validPath = await this.protectWhitespace(path11); return this.send(`RMD ${validPath}`); } /** * FTP servers can't handle filenames that have leading whitespace. This method transforms * a given path to fix that issue for most cases. */ async protectWhitespace(path11) { if (!path11.startsWith(" ")) { return path11; } const pwd = await this.pwd(); const absolutePathPrefix = pwd.endsWith("/") ? pwd : pwd + "/"; return absolutePathPrefix + path11; } async _exitAtCurrentDirectory(func) { const userDir = await this.pwd(); try { return await func(); } finally { if (!this.closed) { await ignoreError2(() => this.cd(userDir)); } } } /** * Try all available transfer strategies and pick the first one that works. Update `client` to * use the working strategy for all successive transfer requests. * * @returns a function that will try the provided strategies. */ _enterFirstCompatibleMode(strategies) { return async (ftp) => { ftp.log("Trying to find optimal transfer strategy..."); let lastError = void 0; for (const strategy of strategies) { try { const res = await strategy(ftp); ftp.log("Optimal transfer strategy found."); this.prepareTransfer = strategy; return res; } catch (err) { lastError = err; } } throw new Error(`None of the available transfer strategies work. Last error response was '${lastError}'.`); }; } /** * DEPRECATED, use `uploadFrom`. * @deprecated */ async upload(source, toRemotePath, options = {}) { this.ftp.log("Warning: upload() has been deprecated, use uploadFrom()."); return this.uploadFrom(source, toRemotePath, options); } /** * DEPRECATED, use `appendFrom`. * @deprecated */ async append(source, toRemotePath, options = {}) { this.ftp.log("Warning: append() has been deprecated, use appendFrom()."); return this.appendFrom(source, toRemotePath, options); } /** * DEPRECATED, use `downloadTo`. * @deprecated */ async download(destination, fromRemotePath, startAt = 0) { this.ftp.log("Warning: download() has been deprecated, use downloadTo()."); return this.downloadTo(destination, fromRemotePath, startAt); } /** * DEPRECATED, use `uploadFromDir`. * @deprecated */ async uploadDir(localDirPath, remoteDirPath) { this.ftp.log("Warning: uploadDir() has been deprecated, use uploadFromDir()."); return this.uploadFromDir(localDirPath, remoteDirPath); } /** * DEPRECATED, use `downloadToDir`. * @deprecated */ async downloadDir(localDirPath) { this.ftp.log("Warning: downloadDir() has been deprecated, use downloadToDir()."); return this.downloadToDir(localDirPath); } }; exports2.Client = Client2; async function ensureLocalDirectory(path11) { try { await fsStat(path11); } catch (err) { await fsMkDir(path11, { recursive: true }); } } async function ignoreError2(func) { try { return await func(); } catch (err) { return void 0; } } } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/StringEncoding.js var require_StringEncoding = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/StringEncoding.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); } }); // ../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/index.js var require_dist10 = __commonJS2({ "../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/index.js"(exports2) { "use strict"; 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.enterPassiveModeIPv6 = exports2.enterPassiveModeIPv4 = void 0; __exportStar2(require_Client(), exports2); __exportStar2(require_FtpContext(), exports2); __exportStar2(require_FileInfo(), exports2); __exportStar2(require_parseList(), exports2); __exportStar2(require_StringEncoding(), exports2); var transfer_1 = require_transfer(); Object.defineProperty(exports2, "enterPassiveModeIPv4", { enumerable: true, get: function() { return transfer_1.enterPassiveModeIPv4; } }); Object.defineProperty(exports2, "enterPassiveModeIPv6", { enumerable: true, get: function() { return transfer_1.enterPassiveModeIPv6; } }); } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/ftp.js var require_ftp = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/ftp.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ftp = void 0; var basic_ftp_1 = require_dist10(); var stream_1 = __require("stream"); var path_1 = __require("path"); var debug_1 = __importDefault2(require_src2()); var notfound_1 = __importDefault2(require_notfound()); var notmodified_1 = __importDefault2(require_notmodified()); var debug2 = (0, debug_1.default)("get-uri:ftp"); var ftp = async (url3, opts = {}) => { const { cache } = opts; const filepath = decodeURIComponent(url3.pathname); let lastModified; if (!filepath) { throw new TypeError('No "pathname"!'); } const client2 = new basic_ftp_1.Client(); try { const host = url3.hostname || url3.host || "localhost"; const port = parseInt(url3.port || "0", 10) || 21; const user = url3.username ? decodeURIComponent(url3.username) : void 0; const password = url3.password ? decodeURIComponent(url3.password) : void 0; await client2.access({ host, port, user, password, ...opts }); try { lastModified = await client2.lastMod(filepath); } catch (err) { if (err.code === 550) { throw new notfound_1.default(); } } if (!lastModified) { const list10 = await client2.list((0, path_1.dirname)(filepath)); const name = (0, path_1.basename)(filepath); const entry = list10.find((e2) => e2.name === name); if (entry) { lastModified = entry.modifiedAt; } } if (lastModified) { if (isNotModified()) { throw new notmodified_1.default(); } } else { throw new notfound_1.default(); } const stream = new stream_1.PassThrough(); const rs = stream; client2.downloadTo(stream, filepath).then((result) => { debug2(result.message); client2.close(); }); rs.lastModified = lastModified; return rs; } catch (err) { client2.close(); throw err; } function isNotModified() { if (cache?.lastModified && lastModified) { return +cache.lastModified === +lastModified; } return false; } }; exports2.ftp = ftp; } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/http-error.js var require_http_error = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/http-error.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var http_1 = __require("http"); var HTTPError = class extends Error { constructor(statusCode, message2 = http_1.STATUS_CODES[statusCode]) { super(message2); this.statusCode = statusCode; this.code = `E${String(message2).toUpperCase().replace(/\s+/g, "")}`; } }; exports2.default = HTTPError; } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/http.js var require_http4 = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/http.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.http = void 0; var http_1 = __importDefault2(__require("http")); var https_1 = __importDefault2(__require("https")); var events_1 = __require("events"); var debug_1 = __importDefault2(require_src2()); var http_error_1 = __importDefault2(require_http_error()); var notfound_1 = __importDefault2(require_notfound()); var notmodified_1 = __importDefault2(require_notmodified()); var debug2 = (0, debug_1.default)("get-uri:http"); var http3 = async (url3, opts = {}) => { debug2("GET %o", url3.href); const cache = getCache(url3, opts.cache); if (cache && isFresh(cache) && typeof cache.statusCode === "number") { const type2 = cache.statusCode / 100 | 0; if (type2 === 3 && cache.headers.location) { debug2("cached redirect"); throw new Error("TODO: implement cached redirects!"); } throw new notmodified_1.default(); } const maxRedirects = typeof opts.maxRedirects === "number" ? opts.maxRedirects : 5; debug2("allowing %o max redirects", maxRedirects); let mod; if (opts.http) { mod = opts.http; debug2("using secure `https` core module"); } else { mod = http_1.default; debug2("using `http` core module"); } const options = { ...opts }; if (cache) { if (!options.headers) { options.headers = {}; } const lastModified = cache.headers["last-modified"]; if (lastModified) { options.headers["If-Modified-Since"] = lastModified; debug2('added "If-Modified-Since" request header: %o', lastModified); } const etag = cache.headers.etag; if (etag) { options.headers["If-None-Match"] = etag; debug2('added "If-None-Match" request header: %o', etag); } } const req = mod.get(url3, options); const [res] = await (0, events_1.once)(req, "response"); const code2 = res.statusCode || 0; res.date = Date.now(); res.parsed = url3; debug2("got %o response status code", code2); const type = code2 / 100 | 0; const location = res.headers.location; if (type === 3 && location) { if (!opts.redirects) opts.redirects = []; const redirects = opts.redirects; if (redirects.length < maxRedirects) { debug2('got a "redirect" status code with Location: %o', location); res.resume(); redirects.push(res); const newUri = new URL(location, url3.href); debug2("resolved redirect URL: %o", newUri.href); const left = maxRedirects - redirects.length; debug2("%o more redirects allowed after this one", left); if (newUri.protocol !== url3.protocol) { opts.http = newUri.protocol === "https:" ? https_1.default : void 0; } return (0, exports2.http)(newUri, opts); } } if (type !== 2) { res.resume(); if (code2 === 304) { throw new notmodified_1.default(); } else if (code2 === 404) { throw new notfound_1.default(); } throw new http_error_1.default(code2); } if (opts.redirects) { res.redirects = opts.redirects; } return res; }; exports2.http = http3; function isFresh(cache) { let fresh = false; let expires = parseInt(cache.headers.expires || "", 10); const cacheControl = cache.headers["cache-control"]; if (cacheControl) { debug2("Cache-Control: %o", cacheControl); const parts = cacheControl.split(/,\s*?\b/); for (let i = 0; i < parts.length; i++) { const part = parts[i]; const subparts = part.split("="); const name = subparts[0]; switch (name) { case "max-age": expires = (cache.date || 0) + parseInt(subparts[1], 10) * 1e3; fresh = Date.now() < expires; if (fresh) { debug2('cache is "fresh" due to previous %o Cache-Control param', part); } return fresh; case "must-revalidate": break; case "no-cache": case "no-store": debug2('cache is "stale" due to explicit %o Cache-Control param', name); return false; default: break; } } } else if (expires) { debug2("Expires: %o", expires); fresh = Date.now() < expires; if (fresh) { debug2('cache is "fresh" due to previous Expires response header'); } return fresh; } return false; } function getCache(url3, cache) { if (cache) { if (cache.parsed && cache.parsed.href === url3.href) { return cache; } if (cache.redirects) { for (let i = 0; i < cache.redirects.length; i++) { const c = getCache(url3, cache.redirects[i]); if (c) { return c; } } } } return null; } } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/https.js var require_https = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/https.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.https = void 0; var https_1 = __importDefault2(__require("https")); var http_1 = require_http4(); var https = (url3, opts) => { return (0, http_1.http)(url3, { ...opts, http: https_1.default }); }; exports2.https = https; } }); // ../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/index.js var require_dist11 = __commonJS2({ "../../node_modules/.pnpm/get-uri@6.0.4/node_modules/get-uri/dist/index.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getUri = exports2.isValidProtocol = exports2.protocols = void 0; var debug_1 = __importDefault2(require_src2()); var data_1 = require_data3(); var file_1 = require_file3(); var ftp_1 = require_ftp(); var http_1 = require_http4(); var https_1 = require_https(); var debug2 = (0, debug_1.default)("get-uri"); exports2.protocols = { data: data_1.data, file: file_1.file, ftp: ftp_1.ftp, http: http_1.http, https: https_1.https }; var VALID_PROTOCOLS = new Set(Object.keys(exports2.protocols)); function isValidProtocol(p) { return VALID_PROTOCOLS.has(p); } exports2.isValidProtocol = isValidProtocol; async function getUri(uri, opts) { debug2("getUri(%o)", uri); if (!uri) { throw new TypeError('Must pass in a URI to "getUri()"'); } const url3 = typeof uri === "string" ? new URL(uri) : uri; const protocol = url3.protocol.replace(/:$/, ""); if (!isValidProtocol(protocol)) { throw new TypeError(`Unsupported protocol "${protocol}" specified in URI: "${uri}"`); } const getter = exports2.protocols[protocol]; return getter(url3, opts); } exports2.getUri = getUri; } }); // ../../node_modules/.pnpm/estraverse@5.3.0/node_modules/estraverse/estraverse.js var require_estraverse = __commonJS2({ "../../node_modules/.pnpm/estraverse@5.3.0/node_modules/estraverse/estraverse.js"(exports2) { (function clone(exports3) { "use strict"; var Syntax, VisitorOption, VisitorKeys, BREAK, SKIP, REMOVE; function deepCopy(obj) { var ret = {}, key, val; for (key in obj) { if (obj.hasOwnProperty(key)) { val = obj[key]; if (typeof val === "object" && val !== null) { ret[key] = deepCopy(val); } else { ret[key] = val; } } } return ret; } function upperBound(array, func) { var diff, len, i, current; len = array.length; i = 0; while (len) { diff = len >>> 1; current = i + diff; if (func(array[current])) { len = diff; } else { i = current + 1; len -= diff + 1; } } return i; } Syntax = { AssignmentExpression: "AssignmentExpression", AssignmentPattern: "AssignmentPattern", ArrayExpression: "ArrayExpression", ArrayPattern: "ArrayPattern", ArrowFunctionExpression: "ArrowFunctionExpression", AwaitExpression: "AwaitExpression", // CAUTION: It's deferred to ES7. BlockStatement: "BlockStatement", BinaryExpression: "BinaryExpression", BreakStatement: "BreakStatement", CallExpression: "CallExpression", CatchClause: "CatchClause", ChainExpression: "ChainExpression", ClassBody: "ClassBody", ClassDeclaration: "ClassDeclaration", ClassExpression: "ClassExpression", ComprehensionBlock: "ComprehensionBlock", // CAUTION: It's deferred to ES7. ComprehensionExpression: "ComprehensionExpression", // CAUTION: It's deferred to ES7. ConditionalExpression: "ConditionalExpression", ContinueStatement: "ContinueStatement", DebuggerStatement: "DebuggerStatement", DirectiveStatement: "DirectiveStatement", DoWhileStatement: "DoWhileStatement", EmptyStatement: "EmptyStatement", ExportAllDeclaration: "ExportAllDeclaration", ExportDefaultDeclaration: "ExportDefaultDeclaration", ExportNamedDeclaration: "ExportNamedDeclaration", ExportSpecifier: "ExportSpecifier", ExpressionStatement: "ExpressionStatement", ForStatement: "ForStatement", ForInStatement: "ForInStatement", ForOfStatement: "ForOfStatement", FunctionDeclaration: "FunctionDeclaration", FunctionExpression: "FunctionExpression", GeneratorExpression: "GeneratorExpression", // CAUTION: It's deferred to ES7. Identifier: "Identifier", IfStatement: "IfStatement", ImportExpression: "ImportExpression", ImportDeclaration: "ImportDeclaration", ImportDefaultSpecifier: "ImportDefaultSpecifier", ImportNamespaceSpecifier: "ImportNamespaceSpecifier", ImportSpecifier: "ImportSpecifier", Literal: "Literal", LabeledStatement: "LabeledStatement", LogicalExpression: "LogicalExpression", MemberExpression: "MemberExpression", MetaProperty: "MetaProperty", MethodDefinition: "MethodDefinition", ModuleSpecifier: "ModuleSpecifier", NewExpression: "NewExpression", ObjectExpression: "ObjectExpression", ObjectPattern: "ObjectPattern", PrivateIdentifier: "PrivateIdentifier", Program: "Program", Property: "Property", PropertyDefinition: "PropertyDefinition", RestElement: "RestElement", ReturnStatement: "ReturnStatement", SequenceExpression: "SequenceExpression", SpreadElement: "SpreadElement", Super: "Super", SwitchStatement: "SwitchStatement", SwitchCase: "SwitchCase", TaggedTemplateExpression: "TaggedTemplateExpression", TemplateElement: "TemplateElement", TemplateLiteral: "TemplateLiteral", ThisExpression: "ThisExpression", ThrowStatement: "ThrowStatement", TryStatement: "TryStatement", UnaryExpression: "UnaryExpression", UpdateExpression: "UpdateExpression", VariableDeclaration: "VariableDeclaration", VariableDeclarator: "VariableDeclarator", WhileStatement: "WhileStatement", WithStatement: "WithStatement", YieldExpression: "YieldExpression" }; VisitorKeys = { AssignmentExpression: ["left", "right"], AssignmentPattern: ["left", "right"], ArrayExpression: ["elements"], ArrayPattern: ["elements"], ArrowFunctionExpression: ["params", "body"], AwaitExpression: ["argument"], // CAUTION: It's deferred to ES7. BlockStatement: ["body"], BinaryExpression: ["left", "right"], BreakStatement: ["label"], CallExpression: ["callee", "arguments"], CatchClause: ["param", "body"], ChainExpression: ["expression"], ClassBody: ["body"], ClassDeclaration: ["id", "superClass", "body"], ClassExpression: ["id", "superClass", "body"], ComprehensionBlock: ["left", "right"], // CAUTION: It's deferred to ES7. ComprehensionExpression: ["blocks", "filter", "body"], // CAUTION: It's deferred to ES7. ConditionalExpression: ["test", "consequent", "alternate"], ContinueStatement: ["label"], DebuggerStatement: [], DirectiveStatement: [], DoWhileStatement: ["body", "test"], EmptyStatement: [], ExportAllDeclaration: ["source"], ExportDefaultDeclaration: ["declaration"], ExportNamedDeclaration: ["declaration", "specifiers", "source"], ExportSpecifier: ["exported", "local"], ExpressionStatement: ["expression"], ForStatement: ["init", "test", "update", "body"], ForInStatement: ["left", "right", "body"], ForOfStatement: ["left", "right", "body"], FunctionDeclaration: ["id", "params", "body"], FunctionExpression: ["id", "params", "body"], GeneratorExpression: ["blocks", "filter", "body"], // CAUTION: It's deferred to ES7. Identifier: [], IfStatement: ["test", "consequent", "alternate"], ImportExpression: ["source"], ImportDeclaration: ["specifiers", "source"], ImportDefaultSpecifier: ["local"], ImportNamespaceSpecifier: ["local"], ImportSpecifier: ["imported", "local"], Literal: [], LabeledStatement: ["label", "body"], LogicalExpression: ["left", "right"], MemberExpression: ["object", "property"], MetaProperty: ["meta", "property"], MethodDefinition: ["key", "value"], ModuleSpecifier: [], NewExpression: ["callee", "arguments"], ObjectExpression: ["properties"], ObjectPattern: ["properties"], PrivateIdentifier: [], Program: ["body"], Property: ["key", "value"], PropertyDefinition: ["key", "value"], RestElement: ["argument"], ReturnStatement: ["argument"], SequenceExpression: ["expressions"], SpreadElement: ["argument"], Super: [], SwitchStatement: ["discriminant", "cases"], SwitchCase: ["test", "consequent"], TaggedTemplateExpression: ["tag", "quasi"], TemplateElement: [], TemplateLiteral: ["quasis", "expressions"], ThisExpression: [], ThrowStatement: ["argument"], TryStatement: ["block", "handler", "finalizer"], UnaryExpression: ["argument"], UpdateExpression: ["argument"], VariableDeclaration: ["declarations"], VariableDeclarator: ["id", "init"], WhileStatement: ["test", "body"], WithStatement: ["object", "body"], YieldExpression: ["argument"] }; BREAK = {}; SKIP = {}; REMOVE = {}; VisitorOption = { Break: BREAK, Skip: SKIP, Remove: REMOVE }; function Reference(parent, key) { this.parent = parent; this.key = key; } Reference.prototype.replace = function replace2(node) { this.parent[this.key] = node; }; Reference.prototype.remove = function remove7() { if (Array.isArray(this.parent)) { this.parent.splice(this.key, 1); return true; } else { this.replace(null); return false; } }; function Element2(node, path11, wrap, ref) { this.node = node; this.path = path11; this.wrap = wrap; this.ref = ref; } function Controller() { } Controller.prototype.path = function path11() { var i, iz, j, jz, result, element; function addToPath(result2, path12) { if (Array.isArray(path12)) { for (j = 0, jz = path12.length; j < jz; ++j) { result2.push(path12[j]); } } else { result2.push(path12); } } if (!this.__current.path) { return null; } result = []; for (i = 2, iz = this.__leavelist.length; i < iz; ++i) { element = this.__leavelist[i]; addToPath(result, element.path); } addToPath(result, this.__current.path); return result; }; Controller.prototype.type = function() { var node = this.current(); return node.type || this.__current.wrap; }; Controller.prototype.parents = function parents() { var i, iz, result; result = []; for (i = 1, iz = this.__leavelist.length; i < iz; ++i) { result.push(this.__leavelist[i].node); } return result; }; Controller.prototype.current = function current() { return this.__current.node; }; Controller.prototype.__execute = function __execute(callback, element) { var previous, result; result = void 0; previous = this.__current; this.__current = element; this.__state = null; if (callback) { result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node); } this.__current = previous; return result; }; Controller.prototype.notify = function notify(flag) { this.__state = flag; }; Controller.prototype.skip = function() { this.notify(SKIP); }; Controller.prototype["break"] = function() { this.notify(BREAK); }; Controller.prototype.remove = function() { this.notify(REMOVE); }; Controller.prototype.__initialize = function(root, visitor) { this.visitor = visitor; this.root = root; this.__worklist = []; this.__leavelist = []; this.__current = null; this.__state = null; this.__fallback = null; if (visitor.fallback === "iteration") { this.__fallback = Object.keys; } else if (typeof visitor.fallback === "function") { this.__fallback = visitor.fallback; } this.__keys = VisitorKeys; if (visitor.keys) { this.__keys = Object.assign(Object.create(this.__keys), visitor.keys); } }; function isNode(node) { if (node == null) { return false; } return typeof node === "object" && typeof node.type === "string"; } function isProperty(nodeType, key) { return (nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && "properties" === key; } function candidateExistsInLeaveList(leavelist, candidate) { for (var i = leavelist.length - 1; i >= 0; --i) { if (leavelist[i].node === candidate) { return true; } } return false; } Controller.prototype.traverse = function traverse2(root, visitor) { var worklist, leavelist, element, node, nodeType, ret, key, current, current2, candidates, candidate, sentinel; this.__initialize(root, visitor); sentinel = {}; worklist = this.__worklist; leavelist = this.__leavelist; worklist.push(new Element2(root, null, null, null)); leavelist.push(new Element2(null, null, null, null)); while (worklist.length) { element = worklist.pop(); if (element === sentinel) { element = leavelist.pop(); ret = this.__execute(visitor.leave, element); if (this.__state === BREAK || ret === BREAK) { return; } continue; } if (element.node) { ret = this.__execute(visitor.enter, element); if (this.__state === BREAK || ret === BREAK) { return; } worklist.push(sentinel); leavelist.push(element); if (this.__state === SKIP || ret === SKIP) { continue; } node = element.node; nodeType = node.type || element.wrap; candidates = this.__keys[nodeType]; if (!candidates) { if (this.__fallback) { candidates = this.__fallback(node); } else { throw new Error("Unknown node type " + nodeType + "."); } } current = candidates.length; while ((current -= 1) >= 0) { key = candidates[current]; candidate = node[key]; if (!candidate) { continue; } if (Array.isArray(candidate)) { current2 = candidate.length; while ((current2 -= 1) >= 0) { if (!candidate[current2]) { continue; } if (candidateExistsInLeaveList(leavelist, candidate[current2])) { continue; } if (isProperty(nodeType, candidates[current])) { element = new Element2(candidate[current2], [key, current2], "Property", null); } else if (isNode(candidate[current2])) { element = new Element2(candidate[current2], [key, current2], null, null); } else { continue; } worklist.push(element); } } else if (isNode(candidate)) { if (candidateExistsInLeaveList(leavelist, candidate)) { continue; } worklist.push(new Element2(candidate, key, null, null)); } } } } }; Controller.prototype.replace = function replace2(root, visitor) { var worklist, leavelist, node, nodeType, target, element, current, current2, candidates, candidate, sentinel, outer, key; function removeElem(element2) { var i, key2, nextElem, parent; if (element2.ref.remove()) { key2 = element2.ref.key; parent = element2.ref.parent; i = worklist.length; while (i--) { nextElem = worklist[i]; if (nextElem.ref && nextElem.ref.parent === parent) { if (nextElem.ref.key < key2) { break; } --nextElem.ref.key; } } } } this.__initialize(root, visitor); sentinel = {}; worklist = this.__worklist; leavelist = this.__leavelist; outer = { root }; element = new Element2(root, null, null, new Reference(outer, "root")); worklist.push(element); leavelist.push(element); while (worklist.length) { element = worklist.pop(); if (element === sentinel) { element = leavelist.pop(); target = this.__execute(visitor.leave, element); if (target !== void 0 && target !== BREAK && target !== SKIP && target !== REMOVE) { element.ref.replace(target); } if (this.__state === REMOVE || target === REMOVE) { removeElem(element); } if (this.__state === BREAK || target === BREAK) { return outer.root; } continue; } target = this.__execute(visitor.enter, element); if (target !== void 0 && target !== BREAK && target !== SKIP && target !== REMOVE) { element.ref.replace(target); element.node = target; } if (this.__state === REMOVE || target === REMOVE) { removeElem(element); element.node = null; } if (this.__state === BREAK || target === BREAK) { return outer.root; } node = element.node; if (!node) { continue; } worklist.push(sentinel); leavelist.push(element); if (this.__state === SKIP || target === SKIP) { continue; } nodeType = node.type || element.wrap; candidates = this.__keys[nodeType]; if (!candidates) { if (this.__fallback) { candidates = this.__fallback(node); } else { throw new Error("Unknown node type " + nodeType + "."); } } current = candidates.length; while ((current -= 1) >= 0) { key = candidates[current]; candidate = node[key]; if (!candidate) { continue; } if (Array.isArray(candidate)) { current2 = candidate.length; while ((current2 -= 1) >= 0) { if (!candidate[current2]) { continue; } if (isProperty(nodeType, candidates[current])) { element = new Element2(candidate[current2], [key, current2], "Property", new Reference(candidate, current2)); } else if (isNode(candidate[current2])) { element = new Element2(candidate[current2], [key, current2], null, new Reference(candidate, current2)); } else { continue; } worklist.push(element); } } else if (isNode(candidate)) { worklist.push(new Element2(candidate, key, null, new Reference(node, key))); } } } return outer.root; }; function traverse(root, visitor) { var controller = new Controller(); return controller.traverse(root, visitor); } function replace(root, visitor) { var controller = new Controller(); return controller.replace(root, visitor); } function extendCommentRange(comment, tokens) { var target; target = upperBound(tokens, function search(token) { return token.range[0] > comment.range[0]; }); comment.extendedRange = [comment.range[0], comment.range[1]]; if (target !== tokens.length) { comment.extendedRange[1] = tokens[target].range[0]; } target -= 1; if (target >= 0) { comment.extendedRange[0] = tokens[target].range[1]; } return comment; } function attachComments(tree, providedComments, tokens) { var comments = [], comment, len, i, cursor; if (!tree.range) { throw new Error("attachComments needs range information"); } if (!tokens.length) { if (providedComments.length) { for (i = 0, len = providedComments.length; i < len; i += 1) { comment = deepCopy(providedComments[i]); comment.extendedRange = [0, tree.range[0]]; comments.push(comment); } tree.leadingComments = comments; } return tree; } for (i = 0, len = providedComments.length; i < len; i += 1) { comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens)); } cursor = 0; traverse(tree, { enter: function(node) { var comment2; while (cursor < comments.length) { comment2 = comments[cursor]; if (comment2.extendedRange[1] > node.range[0]) { break; } if (comment2.extendedRange[1] === node.range[0]) { if (!node.leadingComments) { node.leadingComments = []; } node.leadingComments.push(comment2); comments.splice(cursor, 1); } else { cursor += 1; } } if (cursor === comments.length) { return VisitorOption.Break; } if (comments[cursor].extendedRange[0] > node.range[1]) { return VisitorOption.Skip; } } }); cursor = 0; traverse(tree, { leave: function(node) { var comment2; while (cursor < comments.length) { comment2 = comments[cursor]; if (node.range[1] < comment2.extendedRange[0]) { break; } if (node.range[1] === comment2.extendedRange[0]) { if (!node.trailingComments) { node.trailingComments = []; } node.trailingComments.push(comment2); comments.splice(cursor, 1); } else { cursor += 1; } } if (cursor === comments.length) { return VisitorOption.Break; } if (comments[cursor].extendedRange[0] > node.range[1]) { return VisitorOption.Skip; } } }); return tree; } exports3.Syntax = Syntax; exports3.traverse = traverse; exports3.replace = replace; exports3.attachComments = attachComments; exports3.VisitorKeys = VisitorKeys; exports3.VisitorOption = VisitorOption; exports3.Controller = Controller; exports3.cloneEnvironment = function() { return clone({}); }; return exports3; })(exports2); } }); // ../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/ast.js var require_ast = __commonJS2({ "../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/ast.js"(exports2, module2) { (function() { "use strict"; function isExpression(node) { if (node == null) { return false; } switch (node.type) { case "ArrayExpression": case "AssignmentExpression": case "BinaryExpression": case "CallExpression": case "ConditionalExpression": case "FunctionExpression": case "Identifier": case "Literal": case "LogicalExpression": case "MemberExpression": case "NewExpression": case "ObjectExpression": case "SequenceExpression": case "ThisExpression": case "UnaryExpression": case "UpdateExpression": return true; } return false; } function isIterationStatement(node) { if (node == null) { return false; } switch (node.type) { case "DoWhileStatement": case "ForInStatement": case "ForStatement": case "WhileStatement": return true; } return false; } function isStatement(node) { if (node == null) { return false; } switch (node.type) { case "BlockStatement": case "BreakStatement": case "ContinueStatement": case "DebuggerStatement": case "DoWhileStatement": case "EmptyStatement": case "ExpressionStatement": case "ForInStatement": case "ForStatement": case "IfStatement": case "LabeledStatement": case "ReturnStatement": case "SwitchStatement": case "ThrowStatement": case "TryStatement": case "VariableDeclaration": case "WhileStatement": case "WithStatement": return true; } return false; } function isSourceElement(node) { return isStatement(node) || node != null && node.type === "FunctionDeclaration"; } function trailingStatement(node) { switch (node.type) { case "IfStatement": if (node.alternate != null) { return node.alternate; } return node.consequent; case "LabeledStatement": case "ForStatement": case "ForInStatement": case "WhileStatement": case "WithStatement": return node.body; } return null; } function isProblematicIfStatement(node) { var current; if (node.type !== "IfStatement") { return false; } if (node.alternate == null) { return false; } current = node.consequent; do { if (current.type === "IfStatement") { if (current.alternate == null) { return true; } } current = trailingStatement(current); } while (current); return false; } module2.exports = { isExpression, isStatement, isIterationStatement, isSourceElement, isProblematicIfStatement, trailingStatement }; })(); } }); // ../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/code.js var require_code = __commonJS2({ "../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/code.js"(exports2, module2) { (function() { "use strict"; var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; ES5Regex = { // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart: NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart: NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ }; ES6Regex = { // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart: NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart: NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ }; function isDecimalDigit(ch2) { return 48 <= ch2 && ch2 <= 57; } function isHexDigit(ch2) { return 48 <= ch2 && ch2 <= 57 || // 0..9 97 <= ch2 && ch2 <= 102 || // a..f 65 <= ch2 && ch2 <= 70; } function isOctalDigit(ch2) { return ch2 >= 48 && ch2 <= 55; } NON_ASCII_WHITESPACES = [ 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279 ]; function isWhiteSpace2(ch2) { return ch2 === 32 || ch2 === 9 || ch2 === 11 || ch2 === 12 || ch2 === 160 || ch2 >= 5760 && NON_ASCII_WHITESPACES.indexOf(ch2) >= 0; } function isLineTerminator(ch2) { return ch2 === 10 || ch2 === 13 || ch2 === 8232 || ch2 === 8233; } function fromCodePoint(cp) { if (cp <= 65535) { return String.fromCharCode(cp); } var cu1 = String.fromCharCode(Math.floor((cp - 65536) / 1024) + 55296); var cu2 = String.fromCharCode((cp - 65536) % 1024 + 56320); return cu1 + cu2; } IDENTIFIER_START = new Array(128); for (ch = 0; ch < 128; ++ch) { IDENTIFIER_START[ch] = ch >= 97 && ch <= 122 || // a..z ch >= 65 && ch <= 90 || // A..Z ch === 36 || ch === 95; } IDENTIFIER_PART = new Array(128); for (ch = 0; ch < 128; ++ch) { IDENTIFIER_PART[ch] = ch >= 97 && ch <= 122 || // a..z ch >= 65 && ch <= 90 || // A..Z ch >= 48 && ch <= 57 || // 0..9 ch === 36 || ch === 95; } function isIdentifierStartES5(ch2) { return ch2 < 128 ? IDENTIFIER_START[ch2] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch2)); } function isIdentifierPartES5(ch2) { return ch2 < 128 ? IDENTIFIER_PART[ch2] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch2)); } function isIdentifierStartES6(ch2) { return ch2 < 128 ? IDENTIFIER_START[ch2] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch2)); } function isIdentifierPartES6(ch2) { return ch2 < 128 ? IDENTIFIER_PART[ch2] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch2)); } module2.exports = { isDecimalDigit, isHexDigit, isOctalDigit, isWhiteSpace: isWhiteSpace2, isLineTerminator, isIdentifierStartES5, isIdentifierPartES5, isIdentifierStartES6, isIdentifierPartES6 }; })(); } }); // ../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/keyword.js var require_keyword2 = __commonJS2({ "../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/keyword.js"(exports2, module2) { (function() { "use strict"; var code2 = require_code(); function isStrictModeReservedWordES6(id) { switch (id) { case "implements": case "interface": case "package": case "private": case "protected": case "public": case "static": case "let": return true; default: return false; } } function isKeywordES5(id, strict) { if (!strict && id === "yield") { return false; } return isKeywordES6(id, strict); } function isKeywordES6(id, strict) { if (strict && isStrictModeReservedWordES6(id)) { return true; } switch (id.length) { case 2: return id === "if" || id === "in" || id === "do"; case 3: return id === "var" || id === "for" || id === "new" || id === "try"; case 4: return id === "this" || id === "else" || id === "case" || id === "void" || id === "with" || id === "enum"; case 5: return id === "while" || id === "break" || id === "catch" || id === "throw" || id === "const" || id === "yield" || id === "class" || id === "super"; case 6: return id === "return" || id === "typeof" || id === "delete" || id === "switch" || id === "export" || id === "import"; case 7: return id === "default" || id === "finally" || id === "extends"; case 8: return id === "function" || id === "continue" || id === "debugger"; case 10: return id === "instanceof"; default: return false; } } function isReservedWordES5(id, strict) { return id === "null" || id === "true" || id === "false" || isKeywordES5(id, strict); } function isReservedWordES6(id, strict) { return id === "null" || id === "true" || id === "false" || isKeywordES6(id, strict); } function isRestrictedWord(id) { return id === "eval" || id === "arguments"; } function isIdentifierNameES5(id) { var i, iz, ch; if (id.length === 0) { return false; } ch = id.charCodeAt(0); if (!code2.isIdentifierStartES5(ch)) { return false; } for (i = 1, iz = id.length; i < iz; ++i) { ch = id.charCodeAt(i); if (!code2.isIdentifierPartES5(ch)) { return false; } } return true; } function decodeUtf16(lead, trail) { return (lead - 55296) * 1024 + (trail - 56320) + 65536; } function isIdentifierNameES6(id) { var i, iz, ch, lowCh, check2; if (id.length === 0) { return false; } check2 = code2.isIdentifierStartES6; for (i = 0, iz = id.length; i < iz; ++i) { ch = id.charCodeAt(i); if (55296 <= ch && ch <= 56319) { ++i; if (i >= iz) { return false; } lowCh = id.charCodeAt(i); if (!(56320 <= lowCh && lowCh <= 57343)) { return false; } ch = decodeUtf16(ch, lowCh); } if (!check2(ch)) { return false; } check2 = code2.isIdentifierPartES6; } return true; } function isIdentifierES5(id, strict) { return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); } function isIdentifierES6(id, strict) { return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); } module2.exports = { isKeywordES5, isKeywordES6, isReservedWordES5, isReservedWordES6, isRestrictedWord, isIdentifierNameES5, isIdentifierNameES6, isIdentifierES5, isIdentifierES6 }; })(); } }); // ../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/utils.js var require_utils16 = __commonJS2({ "../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/utils.js"(exports2) { (function() { "use strict"; exports2.ast = require_ast(); exports2.code = require_code(); exports2.keyword = require_keyword2(); })(); } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64.js var require_base64 = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64.js"(exports2) { var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""); exports2.encode = function(number) { if (0 <= number && number < intToCharMap.length) { return intToCharMap[number]; } throw new TypeError("Must be between 0 and 63: " + number); }; exports2.decode = function(charCode) { var bigA = 65; var bigZ = 90; var littleA = 97; var littleZ = 122; var zero = 48; var nine = 57; var plus = 43; var slash = 47; var littleOffset = 26; var numberOffset = 52; if (bigA <= charCode && charCode <= bigZ) { return charCode - bigA; } if (littleA <= charCode && charCode <= littleZ) { return charCode - littleA + littleOffset; } if (zero <= charCode && charCode <= nine) { return charCode - zero + numberOffset; } if (charCode == plus) { return 62; } if (charCode == slash) { return 63; } return -1; }; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64-vlq.js var require_base64_vlq = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64-vlq.js"(exports2) { var base64 = require_base64(); var VLQ_BASE_SHIFT = 5; var VLQ_BASE = 1 << VLQ_BASE_SHIFT; var VLQ_BASE_MASK = VLQ_BASE - 1; var VLQ_CONTINUATION_BIT = VLQ_BASE; function toVLQSigned(aValue) { return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0; } function fromVLQSigned(aValue) { var isNegative = (aValue & 1) === 1; var shifted = aValue >> 1; return isNegative ? -shifted : shifted; } exports2.encode = function base64VLQ_encode(aValue) { var encoded = ""; var digit; var vlq = toVLQSigned(aValue); do { digit = vlq & VLQ_BASE_MASK; vlq >>>= VLQ_BASE_SHIFT; if (vlq > 0) { digit |= VLQ_CONTINUATION_BIT; } encoded += base64.encode(digit); } while (vlq > 0); return encoded; }; exports2.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { var strLen = aStr.length; var result = 0; var shift = 0; var continuation, digit; do { if (aIndex >= strLen) { throw new Error("Expected more digits in base 64 VLQ value."); } digit = base64.decode(aStr.charCodeAt(aIndex++)); if (digit === -1) { throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); } continuation = !!(digit & VLQ_CONTINUATION_BIT); digit &= VLQ_BASE_MASK; result = result + (digit << shift); shift += VLQ_BASE_SHIFT; } while (continuation); aOutParam.value = fromVLQSigned(result); aOutParam.rest = aIndex; }; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/util.js var require_util6 = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/util.js"(exports2) { function getArg(aArgs, aName, aDefaultValue) { if (aName in aArgs) { return aArgs[aName]; } else if (arguments.length === 3) { return aDefaultValue; } else { throw new Error('"' + aName + '" is a required argument.'); } } exports2.getArg = getArg; var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; var dataUrlRegexp = /^data:.+\,.+$/; function urlParse(aUrl) { var match = aUrl.match(urlRegexp); if (!match) { return null; } return { scheme: match[1], auth: match[2], host: match[3], port: match[4], path: match[5] }; } exports2.urlParse = urlParse; function urlGenerate(aParsedUrl) { var url3 = ""; if (aParsedUrl.scheme) { url3 += aParsedUrl.scheme + ":"; } url3 += "//"; if (aParsedUrl.auth) { url3 += aParsedUrl.auth + "@"; } if (aParsedUrl.host) { url3 += aParsedUrl.host; } if (aParsedUrl.port) { url3 += ":" + aParsedUrl.port; } if (aParsedUrl.path) { url3 += aParsedUrl.path; } return url3; } exports2.urlGenerate = urlGenerate; function normalize4(aPath) { var path11 = aPath; var url3 = urlParse(aPath); if (url3) { if (!url3.path) { return aPath; } path11 = url3.path; } var isAbsolute2 = exports2.isAbsolute(path11); var parts = path11.split(/\/+/); for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { part = parts[i]; if (part === ".") { parts.splice(i, 1); } else if (part === "..") { up++; } else if (up > 0) { if (part === "") { parts.splice(i + 1, up); up = 0; } else { parts.splice(i, 2); up--; } } } path11 = parts.join("/"); if (path11 === "") { path11 = isAbsolute2 ? "/" : "."; } if (url3) { url3.path = path11; return urlGenerate(url3); } return path11; } exports2.normalize = normalize4; function join26(aRoot, aPath) { if (aRoot === "") { aRoot = "."; } if (aPath === "") { aPath = "."; } var aPathUrl = urlParse(aPath); var aRootUrl = urlParse(aRoot); if (aRootUrl) { aRoot = aRootUrl.path || "/"; } if (aPathUrl && !aPathUrl.scheme) { if (aRootUrl) { aPathUrl.scheme = aRootUrl.scheme; } return urlGenerate(aPathUrl); } if (aPathUrl || aPath.match(dataUrlRegexp)) { return aPath; } if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { aRootUrl.host = aPath; return urlGenerate(aRootUrl); } var joined = aPath.charAt(0) === "/" ? aPath : normalize4(aRoot.replace(/\/+$/, "") + "/" + aPath); if (aRootUrl) { aRootUrl.path = joined; return urlGenerate(aRootUrl); } return joined; } exports2.join = join26; exports2.isAbsolute = function(aPath) { return aPath.charAt(0) === "/" || urlRegexp.test(aPath); }; function relative8(aRoot, aPath) { if (aRoot === "") { aRoot = "."; } aRoot = aRoot.replace(/\/$/, ""); var level = 0; while (aPath.indexOf(aRoot + "/") !== 0) { var index = aRoot.lastIndexOf("/"); if (index < 0) { return aPath; } aRoot = aRoot.slice(0, index); if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { return aPath; } ++level; } return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); } exports2.relative = relative8; var supportsNullProto = function() { var obj = /* @__PURE__ */ Object.create(null); return !("__proto__" in obj); }(); function identity(s) { return s; } function toSetString(aStr) { if (isProtoString(aStr)) { return "$" + aStr; } return aStr; } exports2.toSetString = supportsNullProto ? identity : toSetString; function fromSetString(aStr) { if (isProtoString(aStr)) { return aStr.slice(1); } return aStr; } exports2.fromSetString = supportsNullProto ? identity : fromSetString; function isProtoString(s) { if (!s) { return false; } var length = s.length; if (length < 9) { return false; } if (s.charCodeAt(length - 1) !== 95 || s.charCodeAt(length - 2) !== 95 || s.charCodeAt(length - 3) !== 111 || s.charCodeAt(length - 4) !== 116 || s.charCodeAt(length - 5) !== 111 || s.charCodeAt(length - 6) !== 114 || s.charCodeAt(length - 7) !== 112 || s.charCodeAt(length - 8) !== 95 || s.charCodeAt(length - 9) !== 95) { return false; } for (var i = length - 10; i >= 0; i--) { if (s.charCodeAt(i) !== 36) { return false; } } return true; } function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { var cmp = strcmp(mappingA.source, mappingB.source); if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0 || onlyCompareOriginal) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } return strcmp(mappingA.name, mappingB.name); } exports2.compareByOriginalPositions = compareByOriginalPositions; function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { var cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0 || onlyCompareGenerated) { return cmp; } cmp = strcmp(mappingA.source, mappingB.source); if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0) { return cmp; } return strcmp(mappingA.name, mappingB.name); } exports2.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; function strcmp(aStr1, aStr2) { if (aStr1 === aStr2) { return 0; } if (aStr1 === null) { return 1; } if (aStr2 === null) { return -1; } if (aStr1 > aStr2) { return 1; } return -1; } function compareByGeneratedPositionsInflated(mappingA, mappingB) { var cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0) { return cmp; } cmp = strcmp(mappingA.source, mappingB.source); if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0) { return cmp; } return strcmp(mappingA.name, mappingB.name); } exports2.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; function parseSourceMapInput(str) { return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, "")); } exports2.parseSourceMapInput = parseSourceMapInput; function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { sourceURL = sourceURL || ""; if (sourceRoot) { if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") { sourceRoot += "/"; } sourceURL = sourceRoot + sourceURL; } if (sourceMapURL) { var parsed = urlParse(sourceMapURL); if (!parsed) { throw new Error("sourceMapURL could not be parsed"); } if (parsed.path) { var index = parsed.path.lastIndexOf("/"); if (index >= 0) { parsed.path = parsed.path.substring(0, index + 1); } } sourceURL = join26(urlGenerate(parsed), sourceURL); } return normalize4(sourceURL); } exports2.computeSourceURL = computeSourceURL; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/array-set.js var require_array_set = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/array-set.js"(exports2) { var util = require_util6(); var has = Object.prototype.hasOwnProperty; var hasNativeMap = typeof Map !== "undefined"; function ArraySet() { this._array = []; this._set = hasNativeMap ? /* @__PURE__ */ new Map() : /* @__PURE__ */ Object.create(null); } ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { var set2 = new ArraySet(); for (var i = 0, len = aArray.length; i < len; i++) { set2.add(aArray[i], aAllowDuplicates); } return set2; }; ArraySet.prototype.size = function ArraySet_size() { return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; }; ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { var sStr = hasNativeMap ? aStr : util.toSetString(aStr); var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); var idx = this._array.length; if (!isDuplicate || aAllowDuplicates) { this._array.push(aStr); } if (!isDuplicate) { if (hasNativeMap) { this._set.set(aStr, idx); } else { this._set[sStr] = idx; } } }; ArraySet.prototype.has = function ArraySet_has(aStr) { if (hasNativeMap) { return this._set.has(aStr); } else { var sStr = util.toSetString(aStr); return has.call(this._set, sStr); } }; ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { if (hasNativeMap) { var idx = this._set.get(aStr); if (idx >= 0) { return idx; } } else { var sStr = util.toSetString(aStr); if (has.call(this._set, sStr)) { return this._set[sStr]; } } throw new Error('"' + aStr + '" is not in the set.'); }; ArraySet.prototype.at = function ArraySet_at(aIdx) { if (aIdx >= 0 && aIdx < this._array.length) { return this._array[aIdx]; } throw new Error("No element indexed by " + aIdx); }; ArraySet.prototype.toArray = function ArraySet_toArray() { return this._array.slice(); }; exports2.ArraySet = ArraySet; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/mapping-list.js var require_mapping_list = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/mapping-list.js"(exports2) { var util = require_util6(); function generatedPositionAfter(mappingA, mappingB) { var lineA = mappingA.generatedLine; var lineB = mappingB.generatedLine; var columnA = mappingA.generatedColumn; var columnB = mappingB.generatedColumn; return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; } function MappingList() { this._array = []; this._sorted = true; this._last = { generatedLine: -1, generatedColumn: 0 }; } MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) { this._array.forEach(aCallback, aThisArg); }; MappingList.prototype.add = function MappingList_add(aMapping) { if (generatedPositionAfter(this._last, aMapping)) { this._last = aMapping; this._array.push(aMapping); } else { this._sorted = false; this._array.push(aMapping); } }; MappingList.prototype.toArray = function MappingList_toArray() { if (!this._sorted) { this._array.sort(util.compareByGeneratedPositionsInflated); this._sorted = true; } return this._array; }; exports2.MappingList = MappingList; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-generator.js var require_source_map_generator = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-generator.js"(exports2) { var base64VLQ = require_base64_vlq(); var util = require_util6(); var ArraySet = require_array_set().ArraySet; var MappingList = require_mapping_list().MappingList; function SourceMapGenerator(aArgs) { if (!aArgs) { aArgs = {}; } this._file = util.getArg(aArgs, "file", null); this._sourceRoot = util.getArg(aArgs, "sourceRoot", null); this._skipValidation = util.getArg(aArgs, "skipValidation", false); this._sources = new ArraySet(); this._names = new ArraySet(); this._mappings = new MappingList(); this._sourcesContents = null; } SourceMapGenerator.prototype._version = 3; SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { var sourceRoot = aSourceMapConsumer.sourceRoot; var generator = new SourceMapGenerator({ file: aSourceMapConsumer.file, sourceRoot }); aSourceMapConsumer.eachMapping(function(mapping) { var newMapping = { generated: { line: mapping.generatedLine, column: mapping.generatedColumn } }; if (mapping.source != null) { newMapping.source = mapping.source; if (sourceRoot != null) { newMapping.source = util.relative(sourceRoot, newMapping.source); } newMapping.original = { line: mapping.originalLine, column: mapping.originalColumn }; if (mapping.name != null) { newMapping.name = mapping.name; } } generator.addMapping(newMapping); }); aSourceMapConsumer.sources.forEach(function(sourceFile) { var sourceRelative = sourceFile; if (sourceRoot !== null) { sourceRelative = util.relative(sourceRoot, sourceFile); } if (!generator._sources.has(sourceRelative)) { generator._sources.add(sourceRelative); } var content = aSourceMapConsumer.sourceContentFor(sourceFile); if (content != null) { generator.setSourceContent(sourceFile, content); } }); return generator; }; SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) { var generated = util.getArg(aArgs, "generated"); var original = util.getArg(aArgs, "original", null); var source = util.getArg(aArgs, "source", null); var name = util.getArg(aArgs, "name", null); if (!this._skipValidation) { this._validateMapping(generated, original, source, name); } if (source != null) { source = String(source); if (!this._sources.has(source)) { this._sources.add(source); } } if (name != null) { name = String(name); if (!this._names.has(name)) { this._names.add(name); } } this._mappings.add({ generatedLine: generated.line, generatedColumn: generated.column, originalLine: original != null && original.line, originalColumn: original != null && original.column, source, name }); }; SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { var source = aSourceFile; if (this._sourceRoot != null) { source = util.relative(this._sourceRoot, source); } if (aSourceContent != null) { if (!this._sourcesContents) { this._sourcesContents = /* @__PURE__ */ Object.create(null); } this._sourcesContents[util.toSetString(source)] = aSourceContent; } else if (this._sourcesContents) { delete this._sourcesContents[util.toSetString(source)]; if (Object.keys(this._sourcesContents).length === 0) { this._sourcesContents = null; } } }; SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { var sourceFile = aSourceFile; if (aSourceFile == null) { if (aSourceMapConsumer.file == null) { throw new Error( `SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.` ); } sourceFile = aSourceMapConsumer.file; } var sourceRoot = this._sourceRoot; if (sourceRoot != null) { sourceFile = util.relative(sourceRoot, sourceFile); } var newSources = new ArraySet(); var newNames = new ArraySet(); this._mappings.unsortedForEach(function(mapping) { if (mapping.source === sourceFile && mapping.originalLine != null) { var original = aSourceMapConsumer.originalPositionFor({ line: mapping.originalLine, column: mapping.originalColumn }); if (original.source != null) { mapping.source = original.source; if (aSourceMapPath != null) { mapping.source = util.join(aSourceMapPath, mapping.source); } if (sourceRoot != null) { mapping.source = util.relative(sourceRoot, mapping.source); } mapping.originalLine = original.line; mapping.originalColumn = original.column; if (original.name != null) { mapping.name = original.name; } } } var source = mapping.source; if (source != null && !newSources.has(source)) { newSources.add(source); } var name = mapping.name; if (name != null && !newNames.has(name)) { newNames.add(name); } }, this); this._sources = newSources; this._names = newNames; aSourceMapConsumer.sources.forEach(function(sourceFile2) { var content = aSourceMapConsumer.sourceContentFor(sourceFile2); if (content != null) { if (aSourceMapPath != null) { sourceFile2 = util.join(aSourceMapPath, sourceFile2); } if (sourceRoot != null) { sourceFile2 = util.relative(sourceRoot, sourceFile2); } this.setSourceContent(sourceFile2, content); } }, this); }; SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) { if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") { throw new Error( "original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values." ); } if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) { return; } else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) { return; } else { throw new Error("Invalid mapping: " + JSON.stringify({ generated: aGenerated, source: aSource, original: aOriginal, name: aName })); } }; SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() { var previousGeneratedColumn = 0; var previousGeneratedLine = 1; var previousOriginalColumn = 0; var previousOriginalLine = 0; var previousName = 0; var previousSource = 0; var result = ""; var next; var mapping; var nameIdx; var sourceIdx; var mappings = this._mappings.toArray(); for (var i = 0, len = mappings.length; i < len; i++) { mapping = mappings[i]; next = ""; if (mapping.generatedLine !== previousGeneratedLine) { previousGeneratedColumn = 0; while (mapping.generatedLine !== previousGeneratedLine) { next += ";"; previousGeneratedLine++; } } else { if (i > 0) { if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { continue; } next += ","; } } next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn); previousGeneratedColumn = mapping.generatedColumn; if (mapping.source != null) { sourceIdx = this._sources.indexOf(mapping.source); next += base64VLQ.encode(sourceIdx - previousSource); previousSource = sourceIdx; next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine); previousOriginalLine = mapping.originalLine - 1; next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn); previousOriginalColumn = mapping.originalColumn; if (mapping.name != null) { nameIdx = this._names.indexOf(mapping.name); next += base64VLQ.encode(nameIdx - previousName); previousName = nameIdx; } } result += next; } return result; }; SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { return aSources.map(function(source) { if (!this._sourcesContents) { return null; } if (aSourceRoot != null) { source = util.relative(aSourceRoot, source); } var key = util.toSetString(source); return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null; }, this); }; SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() { var map = { version: this._version, sources: this._sources.toArray(), names: this._names.toArray(), mappings: this._serializeMappings() }; if (this._file != null) { map.file = this._file; } if (this._sourceRoot != null) { map.sourceRoot = this._sourceRoot; } if (this._sourcesContents) { map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); } return map; }; SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() { return JSON.stringify(this.toJSON()); }; exports2.SourceMapGenerator = SourceMapGenerator; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/binary-search.js var require_binary_search = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/binary-search.js"(exports2) { exports2.GREATEST_LOWER_BOUND = 1; exports2.LEAST_UPPER_BOUND = 2; function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { var mid = Math.floor((aHigh - aLow) / 2) + aLow; var cmp = aCompare(aNeedle, aHaystack[mid], true); if (cmp === 0) { return mid; } else if (cmp > 0) { if (aHigh - mid > 1) { return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); } if (aBias == exports2.LEAST_UPPER_BOUND) { return aHigh < aHaystack.length ? aHigh : -1; } else { return mid; } } else { if (mid - aLow > 1) { return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); } if (aBias == exports2.LEAST_UPPER_BOUND) { return mid; } else { return aLow < 0 ? -1 : aLow; } } } exports2.search = function search(aNeedle, aHaystack, aCompare, aBias) { if (aHaystack.length === 0) { return -1; } var index = recursiveSearch( -1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports2.GREATEST_LOWER_BOUND ); if (index < 0) { return -1; } while (index - 1 >= 0) { if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { break; } --index; } return index; }; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/quick-sort.js var require_quick_sort = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/quick-sort.js"(exports2) { function swap(ary, x, y) { var temp = ary[x]; ary[x] = ary[y]; ary[y] = temp; } function randomIntInRange(low, high) { return Math.round(low + Math.random() * (high - low)); } function doQuickSort(ary, comparator, p, r) { if (p < r) { var pivotIndex = randomIntInRange(p, r); var i = p - 1; swap(ary, pivotIndex, r); var pivot = ary[r]; for (var j = p; j < r; j++) { if (comparator(ary[j], pivot) <= 0) { i += 1; swap(ary, i, j); } } swap(ary, i + 1, j); var q = i + 1; doQuickSort(ary, comparator, p, q - 1); doQuickSort(ary, comparator, q + 1, r); } } exports2.quickSort = function(ary, comparator) { doQuickSort(ary, comparator, 0, ary.length - 1); }; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-consumer.js var require_source_map_consumer = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-consumer.js"(exports2) { var util = require_util6(); var binarySearch = require_binary_search(); var ArraySet = require_array_set().ArraySet; var base64VLQ = require_base64_vlq(); var quickSort = require_quick_sort().quickSort; function SourceMapConsumer(aSourceMap, aSourceMapURL) { var sourceMap = aSourceMap; if (typeof aSourceMap === "string") { sourceMap = util.parseSourceMapInput(aSourceMap); } return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); } SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); }; SourceMapConsumer.prototype._version = 3; SourceMapConsumer.prototype.__generatedMappings = null; Object.defineProperty(SourceMapConsumer.prototype, "_generatedMappings", { configurable: true, enumerable: true, get: function() { if (!this.__generatedMappings) { this._parseMappings(this._mappings, this.sourceRoot); } return this.__generatedMappings; } }); SourceMapConsumer.prototype.__originalMappings = null; Object.defineProperty(SourceMapConsumer.prototype, "_originalMappings", { configurable: true, enumerable: true, get: function() { if (!this.__originalMappings) { this._parseMappings(this._mappings, this.sourceRoot); } return this.__originalMappings; } }); SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) { var c = aStr.charAt(index); return c === ";" || c === ","; }; SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { throw new Error("Subclasses must implement _parseMappings"); }; SourceMapConsumer.GENERATED_ORDER = 1; SourceMapConsumer.ORIGINAL_ORDER = 2; SourceMapConsumer.GREATEST_LOWER_BOUND = 1; SourceMapConsumer.LEAST_UPPER_BOUND = 2; SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { var context = aContext || null; var order = aOrder || SourceMapConsumer.GENERATED_ORDER; var mappings; switch (order) { case SourceMapConsumer.GENERATED_ORDER: mappings = this._generatedMappings; break; case SourceMapConsumer.ORIGINAL_ORDER: mappings = this._originalMappings; break; default: throw new Error("Unknown order of iteration."); } var sourceRoot = this.sourceRoot; mappings.map(function(mapping) { var source = mapping.source === null ? null : this._sources.at(mapping.source); source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); return { source, generatedLine: mapping.generatedLine, generatedColumn: mapping.generatedColumn, originalLine: mapping.originalLine, originalColumn: mapping.originalColumn, name: mapping.name === null ? null : this._names.at(mapping.name) }; }, this).forEach(aCallback, context); }; SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { var line = util.getArg(aArgs, "line"); var needle = { source: util.getArg(aArgs, "source"), originalLine: line, originalColumn: util.getArg(aArgs, "column", 0) }; needle.source = this._findSourceIndex(needle.source); if (needle.source < 0) { return []; } var mappings = []; var index = this._findMapping( needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND ); if (index >= 0) { var mapping = this._originalMappings[index]; if (aArgs.column === void 0) { var originalLine = mapping.originalLine; while (mapping && mapping.originalLine === originalLine) { mappings.push({ line: util.getArg(mapping, "generatedLine", null), column: util.getArg(mapping, "generatedColumn", null), lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) }); mapping = this._originalMappings[++index]; } } else { var originalColumn = mapping.originalColumn; while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) { mappings.push({ line: util.getArg(mapping, "generatedLine", null), column: util.getArg(mapping, "generatedColumn", null), lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) }); mapping = this._originalMappings[++index]; } } } return mappings; }; exports2.SourceMapConsumer = SourceMapConsumer; function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { var sourceMap = aSourceMap; if (typeof aSourceMap === "string") { sourceMap = util.parseSourceMapInput(aSourceMap); } var version2 = util.getArg(sourceMap, "version"); var sources = util.getArg(sourceMap, "sources"); var names = util.getArg(sourceMap, "names", []); var sourceRoot = util.getArg(sourceMap, "sourceRoot", null); var sourcesContent = util.getArg(sourceMap, "sourcesContent", null); var mappings = util.getArg(sourceMap, "mappings"); var file = util.getArg(sourceMap, "file", null); if (version2 != this._version) { throw new Error("Unsupported version: " + version2); } if (sourceRoot) { sourceRoot = util.normalize(sourceRoot); } sources = sources.map(String).map(util.normalize).map(function(source) { return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source; }); this._names = ArraySet.fromArray(names.map(String), true); this._sources = ArraySet.fromArray(sources, true); this._absoluteSources = this._sources.toArray().map(function(s) { return util.computeSourceURL(sourceRoot, s, aSourceMapURL); }); this.sourceRoot = sourceRoot; this.sourcesContent = sourcesContent; this._mappings = mappings; this._sourceMapURL = aSourceMapURL; this.file = file; } BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { var relativeSource = aSource; if (this.sourceRoot != null) { relativeSource = util.relative(this.sourceRoot, relativeSource); } if (this._sources.has(relativeSource)) { return this._sources.indexOf(relativeSource); } var i; for (i = 0; i < this._absoluteSources.length; ++i) { if (this._absoluteSources[i] == aSource) { return i; } } return -1; }; BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { var smc = Object.create(BasicSourceMapConsumer.prototype); var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); smc.sourceRoot = aSourceMap._sourceRoot; smc.sourcesContent = aSourceMap._generateSourcesContent( smc._sources.toArray(), smc.sourceRoot ); smc.file = aSourceMap._file; smc._sourceMapURL = aSourceMapURL; smc._absoluteSources = smc._sources.toArray().map(function(s) { return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); }); var generatedMappings = aSourceMap._mappings.toArray().slice(); var destGeneratedMappings = smc.__generatedMappings = []; var destOriginalMappings = smc.__originalMappings = []; for (var i = 0, length = generatedMappings.length; i < length; i++) { var srcMapping = generatedMappings[i]; var destMapping = new Mapping(); destMapping.generatedLine = srcMapping.generatedLine; destMapping.generatedColumn = srcMapping.generatedColumn; if (srcMapping.source) { destMapping.source = sources.indexOf(srcMapping.source); destMapping.originalLine = srcMapping.originalLine; destMapping.originalColumn = srcMapping.originalColumn; if (srcMapping.name) { destMapping.name = names.indexOf(srcMapping.name); } destOriginalMappings.push(destMapping); } destGeneratedMappings.push(destMapping); } quickSort(smc.__originalMappings, util.compareByOriginalPositions); return smc; }; BasicSourceMapConsumer.prototype._version = 3; Object.defineProperty(BasicSourceMapConsumer.prototype, "sources", { get: function() { return this._absoluteSources.slice(); } }); function Mapping() { this.generatedLine = 0; this.generatedColumn = 0; this.source = null; this.originalLine = null; this.originalColumn = null; this.name = null; } BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { var generatedLine = 1; var previousGeneratedColumn = 0; var previousOriginalLine = 0; var previousOriginalColumn = 0; var previousSource = 0; var previousName = 0; var length = aStr.length; var index = 0; var cachedSegments = {}; var temp = {}; var originalMappings = []; var generatedMappings = []; var mapping, str, segment, end, value; while (index < length) { if (aStr.charAt(index) === ";") { generatedLine++; index++; previousGeneratedColumn = 0; } else if (aStr.charAt(index) === ",") { index++; } else { mapping = new Mapping(); mapping.generatedLine = generatedLine; for (end = index; end < length; end++) { if (this._charIsMappingSeparator(aStr, end)) { break; } } str = aStr.slice(index, end); segment = cachedSegments[str]; if (segment) { index += str.length; } else { segment = []; while (index < end) { base64VLQ.decode(aStr, index, temp); value = temp.value; index = temp.rest; segment.push(value); } if (segment.length === 2) { throw new Error("Found a source, but no line and column"); } if (segment.length === 3) { throw new Error("Found a source and line, but no column"); } cachedSegments[str] = segment; } mapping.generatedColumn = previousGeneratedColumn + segment[0]; previousGeneratedColumn = mapping.generatedColumn; if (segment.length > 1) { mapping.source = previousSource + segment[1]; previousSource += segment[1]; mapping.originalLine = previousOriginalLine + segment[2]; previousOriginalLine = mapping.originalLine; mapping.originalLine += 1; mapping.originalColumn = previousOriginalColumn + segment[3]; previousOriginalColumn = mapping.originalColumn; if (segment.length > 4) { mapping.name = previousName + segment[4]; previousName += segment[4]; } } generatedMappings.push(mapping); if (typeof mapping.originalLine === "number") { originalMappings.push(mapping); } } } quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); this.__generatedMappings = generatedMappings; quickSort(originalMappings, util.compareByOriginalPositions); this.__originalMappings = originalMappings; }; BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) { if (aNeedle[aLineName] <= 0) { throw new TypeError("Line must be greater than or equal to 1, got " + aNeedle[aLineName]); } if (aNeedle[aColumnName] < 0) { throw new TypeError("Column must be greater than or equal to 0, got " + aNeedle[aColumnName]); } return binarySearch.search(aNeedle, aMappings, aComparator, aBias); }; BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() { for (var index = 0; index < this._generatedMappings.length; ++index) { var mapping = this._generatedMappings[index]; if (index + 1 < this._generatedMappings.length) { var nextMapping = this._generatedMappings[index + 1]; if (mapping.generatedLine === nextMapping.generatedLine) { mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; continue; } } mapping.lastGeneratedColumn = Infinity; } }; BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) { var needle = { generatedLine: util.getArg(aArgs, "line"), generatedColumn: util.getArg(aArgs, "column") }; var index = this._findMapping( needle, this._generatedMappings, "generatedLine", "generatedColumn", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) ); if (index >= 0) { var mapping = this._generatedMappings[index]; if (mapping.generatedLine === needle.generatedLine) { var source = util.getArg(mapping, "source", null); if (source !== null) { source = this._sources.at(source); source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); } var name = util.getArg(mapping, "name", null); if (name !== null) { name = this._names.at(name); } return { source, line: util.getArg(mapping, "originalLine", null), column: util.getArg(mapping, "originalColumn", null), name }; } } return { source: null, line: null, column: null, name: null }; }; BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() { if (!this.sourcesContent) { return false; } return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function(sc) { return sc == null; }); }; BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { if (!this.sourcesContent) { return null; } var index = this._findSourceIndex(aSource); if (index >= 0) { return this.sourcesContent[index]; } var relativeSource = aSource; if (this.sourceRoot != null) { relativeSource = util.relative(this.sourceRoot, relativeSource); } var url3; if (this.sourceRoot != null && (url3 = util.urlParse(this.sourceRoot))) { var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); if (url3.scheme == "file" && this._sources.has(fileUriAbsPath)) { return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]; } if ((!url3.path || url3.path == "/") && this._sources.has("/" + relativeSource)) { return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; } } if (nullOnMissing) { return null; } else { throw new Error('"' + relativeSource + '" is not in the SourceMap.'); } }; BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) { var source = util.getArg(aArgs, "source"); source = this._findSourceIndex(source); if (source < 0) { return { line: null, column: null, lastColumn: null }; } var needle = { source, originalLine: util.getArg(aArgs, "line"), originalColumn: util.getArg(aArgs, "column") }; var index = this._findMapping( needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) ); if (index >= 0) { var mapping = this._originalMappings[index]; if (mapping.source === needle.source) { return { line: util.getArg(mapping, "generatedLine", null), column: util.getArg(mapping, "generatedColumn", null), lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) }; } } return { line: null, column: null, lastColumn: null }; }; exports2.BasicSourceMapConsumer = BasicSourceMapConsumer; function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { var sourceMap = aSourceMap; if (typeof aSourceMap === "string") { sourceMap = util.parseSourceMapInput(aSourceMap); } var version2 = util.getArg(sourceMap, "version"); var sections = util.getArg(sourceMap, "sections"); if (version2 != this._version) { throw new Error("Unsupported version: " + version2); } this._sources = new ArraySet(); this._names = new ArraySet(); var lastOffset = { line: -1, column: 0 }; this._sections = sections.map(function(s) { if (s.url) { throw new Error("Support for url field in sections not implemented."); } var offset = util.getArg(s, "offset"); var offsetLine = util.getArg(offset, "line"); var offsetColumn = util.getArg(offset, "column"); if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) { throw new Error("Section offsets must be ordered and non-overlapping."); } lastOffset = offset; return { generatedOffset: { // The offset fields are 0-based, but we use 1-based indices when // encoding/decoding from VLQ. generatedLine: offsetLine + 1, generatedColumn: offsetColumn + 1 }, consumer: new SourceMapConsumer(util.getArg(s, "map"), aSourceMapURL) }; }); } IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; IndexedSourceMapConsumer.prototype._version = 3; Object.defineProperty(IndexedSourceMapConsumer.prototype, "sources", { get: function() { var sources = []; for (var i = 0; i < this._sections.length; i++) { for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { sources.push(this._sections[i].consumer.sources[j]); } } return sources; } }); IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) { var needle = { generatedLine: util.getArg(aArgs, "line"), generatedColumn: util.getArg(aArgs, "column") }; var sectionIndex = binarySearch.search( needle, this._sections, function(needle2, section2) { var cmp = needle2.generatedLine - section2.generatedOffset.generatedLine; if (cmp) { return cmp; } return needle2.generatedColumn - section2.generatedOffset.generatedColumn; } ); var section = this._sections[sectionIndex]; if (!section) { return { source: null, line: null, column: null, name: null }; } return section.consumer.originalPositionFor({ line: needle.generatedLine - (section.generatedOffset.generatedLine - 1), column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), bias: aArgs.bias }); }; IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() { return this._sections.every(function(s) { return s.consumer.hasContentsOfAllSources(); }); }; IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { for (var i = 0; i < this._sections.length; i++) { var section = this._sections[i]; var content = section.consumer.sourceContentFor(aSource, true); if (content) { return content; } } if (nullOnMissing) { return null; } else { throw new Error('"' + aSource + '" is not in the SourceMap.'); } }; IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { for (var i = 0; i < this._sections.length; i++) { var section = this._sections[i]; if (section.consumer._findSourceIndex(util.getArg(aArgs, "source")) === -1) { continue; } var generatedPosition = section.consumer.generatedPositionFor(aArgs); if (generatedPosition) { var ret = { line: generatedPosition.line + (section.generatedOffset.generatedLine - 1), column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0) }; return ret; } } return { line: null, column: null }; }; IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { this.__generatedMappings = []; this.__originalMappings = []; for (var i = 0; i < this._sections.length; i++) { var section = this._sections[i]; var sectionMappings = section.consumer._generatedMappings; for (var j = 0; j < sectionMappings.length; j++) { var mapping = sectionMappings[j]; var source = section.consumer._sources.at(mapping.source); source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); this._sources.add(source); source = this._sources.indexOf(source); var name = null; if (mapping.name) { name = section.consumer._names.at(mapping.name); this._names.add(name); name = this._names.indexOf(name); } var adjustedMapping = { source, generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1), generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), originalLine: mapping.originalLine, originalColumn: mapping.originalColumn, name }; this.__generatedMappings.push(adjustedMapping); if (typeof adjustedMapping.originalLine === "number") { this.__originalMappings.push(adjustedMapping); } } } quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); quickSort(this.__originalMappings, util.compareByOriginalPositions); }; exports2.IndexedSourceMapConsumer = IndexedSourceMapConsumer; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-node.js var require_source_node = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-node.js"(exports2) { var SourceMapGenerator = require_source_map_generator().SourceMapGenerator; var util = require_util6(); var REGEX_NEWLINE = /(\r?\n)/; var NEWLINE_CODE = 10; var isSourceNode = "$$$isSourceNode$$$"; function SourceNode(aLine, aColumn, aSource, aChunks, aName) { this.children = []; this.sourceContents = {}; this.line = aLine == null ? null : aLine; this.column = aColumn == null ? null : aColumn; this.source = aSource == null ? null : aSource; this.name = aName == null ? null : aName; this[isSourceNode] = true; if (aChunks != null) this.add(aChunks); } SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { var node = new SourceNode(); var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); var remainingLinesIndex = 0; var shiftNextLine = function() { var lineContents = getNextLine(); var newLine = getNextLine() || ""; return lineContents + newLine; function getNextLine() { return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : void 0; } }; var lastGeneratedLine = 1, lastGeneratedColumn = 0; var lastMapping = null; aSourceMapConsumer.eachMapping(function(mapping) { if (lastMapping !== null) { if (lastGeneratedLine < mapping.generatedLine) { addMappingWithCode(lastMapping, shiftNextLine()); lastGeneratedLine++; lastGeneratedColumn = 0; } else { var nextLine = remainingLines[remainingLinesIndex] || ""; var code2 = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn); remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn); lastGeneratedColumn = mapping.generatedColumn; addMappingWithCode(lastMapping, code2); lastMapping = mapping; return; } } while (lastGeneratedLine < mapping.generatedLine) { node.add(shiftNextLine()); lastGeneratedLine++; } if (lastGeneratedColumn < mapping.generatedColumn) { var nextLine = remainingLines[remainingLinesIndex] || ""; node.add(nextLine.substr(0, mapping.generatedColumn)); remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); lastGeneratedColumn = mapping.generatedColumn; } lastMapping = mapping; }, this); if (remainingLinesIndex < remainingLines.length) { if (lastMapping) { addMappingWithCode(lastMapping, shiftNextLine()); } node.add(remainingLines.splice(remainingLinesIndex).join("")); } aSourceMapConsumer.sources.forEach(function(sourceFile) { var content = aSourceMapConsumer.sourceContentFor(sourceFile); if (content != null) { if (aRelativePath != null) { sourceFile = util.join(aRelativePath, sourceFile); } node.setSourceContent(sourceFile, content); } }); return node; function addMappingWithCode(mapping, code2) { if (mapping === null || mapping.source === void 0) { node.add(code2); } else { var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source; node.add(new SourceNode( mapping.originalLine, mapping.originalColumn, source, code2, mapping.name )); } } }; SourceNode.prototype.add = function SourceNode_add(aChunk) { if (Array.isArray(aChunk)) { aChunk.forEach(function(chunk) { this.add(chunk); }, this); } else if (aChunk[isSourceNode] || typeof aChunk === "string") { if (aChunk) { this.children.push(aChunk); } } else { throw new TypeError( "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk ); } return this; }; SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { if (Array.isArray(aChunk)) { for (var i = aChunk.length - 1; i >= 0; i--) { this.prepend(aChunk[i]); } } else if (aChunk[isSourceNode] || typeof aChunk === "string") { this.children.unshift(aChunk); } else { throw new TypeError( "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk ); } return this; }; SourceNode.prototype.walk = function SourceNode_walk(aFn) { var chunk; for (var i = 0, len = this.children.length; i < len; i++) { chunk = this.children[i]; if (chunk[isSourceNode]) { chunk.walk(aFn); } else { if (chunk !== "") { aFn(chunk, { source: this.source, line: this.line, column: this.column, name: this.name }); } } } }; SourceNode.prototype.join = function SourceNode_join(aSep) { var newChildren; var i; var len = this.children.length; if (len > 0) { newChildren = []; for (i = 0; i < len - 1; i++) { newChildren.push(this.children[i]); newChildren.push(aSep); } newChildren.push(this.children[i]); this.children = newChildren; } return this; }; SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { var lastChild = this.children[this.children.length - 1]; if (lastChild[isSourceNode]) { lastChild.replaceRight(aPattern, aReplacement); } else if (typeof lastChild === "string") { this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); } else { this.children.push("".replace(aPattern, aReplacement)); } return this; }; SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) { this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; }; SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) { for (var i = 0, len = this.children.length; i < len; i++) { if (this.children[i][isSourceNode]) { this.children[i].walkSourceContents(aFn); } } var sources = Object.keys(this.sourceContents); for (var i = 0, len = sources.length; i < len; i++) { aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); } }; SourceNode.prototype.toString = function SourceNode_toString() { var str = ""; this.walk(function(chunk) { str += chunk; }); return str; }; SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { var generated = { code: "", line: 1, column: 0 }; var map = new SourceMapGenerator(aArgs); var sourceMappingActive = false; var lastOriginalSource = null; var lastOriginalLine = null; var lastOriginalColumn = null; var lastOriginalName = null; this.walk(function(chunk, original) { generated.code += chunk; if (original.source !== null && original.line !== null && original.column !== null) { if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) { map.addMapping({ source: original.source, original: { line: original.line, column: original.column }, generated: { line: generated.line, column: generated.column }, name: original.name }); } lastOriginalSource = original.source; lastOriginalLine = original.line; lastOriginalColumn = original.column; lastOriginalName = original.name; sourceMappingActive = true; } else if (sourceMappingActive) { map.addMapping({ generated: { line: generated.line, column: generated.column } }); lastOriginalSource = null; sourceMappingActive = false; } for (var idx = 0, length = chunk.length; idx < length; idx++) { if (chunk.charCodeAt(idx) === NEWLINE_CODE) { generated.line++; generated.column = 0; if (idx + 1 === length) { lastOriginalSource = null; sourceMappingActive = false; } else if (sourceMappingActive) { map.addMapping({ source: original.source, original: { line: original.line, column: original.column }, generated: { line: generated.line, column: generated.column }, name: original.name }); } } else { generated.column++; } } }); this.walkSourceContents(function(sourceFile, sourceContent) { map.setSourceContent(sourceFile, sourceContent); }); return { code: generated.code, map }; }; exports2.SourceNode = SourceNode; } }); // ../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.js var require_source_map = __commonJS2({ "../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.js"(exports2) { exports2.SourceMapGenerator = require_source_map_generator().SourceMapGenerator; exports2.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer; exports2.SourceNode = require_source_node().SourceNode; } }); // ../../node_modules/.pnpm/escodegen@2.1.0/node_modules/escodegen/package.json var require_package2 = __commonJS2({ "../../node_modules/.pnpm/escodegen@2.1.0/node_modules/escodegen/package.json"(exports2, module2) { module2.exports = { name: "escodegen", description: "ECMAScript code generator", homepage: "http://github.com/estools/escodegen", main: "escodegen.js", bin: { esgenerate: "./bin/esgenerate.js", escodegen: "./bin/escodegen.js" }, files: [ "LICENSE.BSD", "README.md", "bin", "escodegen.js", "package.json" ], version: "2.1.0", engines: { node: ">=6.0" }, maintainers: [ { name: "Yusuke Suzuki", email: "utatane.tea@gmail.com", web: "http://github.com/Constellation" } ], repository: { type: "git", url: "http://github.com/estools/escodegen.git" }, dependencies: { estraverse: "^5.2.0", esutils: "^2.0.2", esprima: "^4.0.1" }, optionalDependencies: { "source-map": "~0.6.1" }, devDependencies: { acorn: "^8.0.4", bluebird: "^3.4.7", "bower-registry-client": "^1.0.0", chai: "^4.2.0", "chai-exclude": "^2.0.2", "commonjs-everywhere": "^0.9.7", gulp: "^4.0.2", "gulp-eslint": "^6.0.0", "gulp-mocha": "^7.0.2", minimist: "^1.2.5", optionator: "^0.9.1", semver: "^7.3.4" }, license: "BSD-2-Clause", scripts: { test: "gulp travis", "unit-test": "gulp test", lint: "gulp lint", release: "node tools/release.js", "build-min": "./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js", build: "./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js" } }; } }); // ../../node_modules/.pnpm/escodegen@2.1.0/node_modules/escodegen/escodegen.js var require_escodegen = __commonJS2({ "../../node_modules/.pnpm/escodegen@2.1.0/node_modules/escodegen/escodegen.js"(exports2) { (function() { "use strict"; var Syntax, Precedence, BinaryPrecedence, SourceNode, estraverse, esutils, base, indent, json, renumber, hexadecimal, quotes, escapeless, newline, space, parentheses, semicolons, safeConcatenation, directive, extra, parse11, sourceMap, sourceCode, preserveBlankLines, FORMAT_MINIFY, FORMAT_DEFAULTS; estraverse = require_estraverse(); esutils = require_utils16(); Syntax = estraverse.Syntax; function isExpression(node) { return CodeGenerator.Expression.hasOwnProperty(node.type); } function isStatement(node) { return CodeGenerator.Statement.hasOwnProperty(node.type); } Precedence = { Sequence: 0, Yield: 1, Assignment: 1, Conditional: 2, ArrowFunction: 2, Coalesce: 3, LogicalOR: 4, LogicalAND: 5, BitwiseOR: 6, BitwiseXOR: 7, BitwiseAND: 8, Equality: 9, Relational: 10, BitwiseSHIFT: 11, Additive: 12, Multiplicative: 13, Exponentiation: 14, Await: 15, Unary: 15, Postfix: 16, OptionalChaining: 17, Call: 18, New: 19, TaggedTemplate: 20, Member: 21, Primary: 22 }; BinaryPrecedence = { "??": Precedence.Coalesce, "||": Precedence.LogicalOR, "&&": Precedence.LogicalAND, "|": Precedence.BitwiseOR, "^": Precedence.BitwiseXOR, "&": Precedence.BitwiseAND, "==": Precedence.Equality, "!=": Precedence.Equality, "===": Precedence.Equality, "!==": Precedence.Equality, "is": Precedence.Equality, "isnt": Precedence.Equality, "<": Precedence.Relational, ">": Precedence.Relational, "<=": Precedence.Relational, ">=": Precedence.Relational, "in": Precedence.Relational, "instanceof": Precedence.Relational, "<<": Precedence.BitwiseSHIFT, ">>": Precedence.BitwiseSHIFT, ">>>": Precedence.BitwiseSHIFT, "+": Precedence.Additive, "-": Precedence.Additive, "*": Precedence.Multiplicative, "%": Precedence.Multiplicative, "/": Precedence.Multiplicative, "**": Precedence.Exponentiation }; var F_ALLOW_IN = 1, F_ALLOW_CALL = 1 << 1, F_ALLOW_UNPARATH_NEW = 1 << 2, F_FUNC_BODY = 1 << 3, F_DIRECTIVE_CTX = 1 << 4, F_SEMICOLON_OPT = 1 << 5, F_FOUND_COALESCE = 1 << 6; var E_FTT = F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW, E_TTF = F_ALLOW_IN | F_ALLOW_CALL, E_TTT = F_ALLOW_IN | F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW, E_TFF = F_ALLOW_IN, E_FFT = F_ALLOW_UNPARATH_NEW, E_TFT = F_ALLOW_IN | F_ALLOW_UNPARATH_NEW; var S_TFFF = F_ALLOW_IN, S_TFFT = F_ALLOW_IN | F_SEMICOLON_OPT, S_FFFF = 0, S_TFTF = F_ALLOW_IN | F_DIRECTIVE_CTX, S_TTFF = F_ALLOW_IN | F_FUNC_BODY; function getDefaultOptions() { return { indent: null, base: null, parse: null, comment: false, format: { indent: { style: " ", base: 0, adjustMultilineComment: false }, newline: "\n", space: " ", json: false, renumber: false, hexadecimal: false, quotes: "single", escapeless: false, compact: false, parentheses: true, semicolons: true, safeConcatenation: false, preserveBlankLines: false }, moz: { comprehensionExpressionStartsWithAssignment: false, starlessGenerator: false }, sourceMap: null, sourceMapRoot: null, sourceMapWithCode: false, directive: false, raw: true, verbatim: null, sourceCode: null }; } function stringRepeat(str, num) { var result = ""; for (num |= 0; num > 0; num >>>= 1, str += str) { if (num & 1) { result += str; } } return result; } function hasLineTerminator(str) { return /[\r\n]/g.test(str); } function endsWithLineTerminator(str) { var len = str.length; return len && esutils.code.isLineTerminator(str.charCodeAt(len - 1)); } function merge2(target, override) { var key; for (key in override) { if (override.hasOwnProperty(key)) { target[key] = override[key]; } } return target; } function updateDeeply(target, override) { var key, val; function isHashObject(target2) { return typeof target2 === "object" && target2 instanceof Object && !(target2 instanceof RegExp); } for (key in override) { if (override.hasOwnProperty(key)) { val = override[key]; if (isHashObject(val)) { if (isHashObject(target[key])) { updateDeeply(target[key], val); } else { target[key] = updateDeeply({}, val); } } else { target[key] = val; } } } return target; } function generateNumber(value) { var result, point, temp, exponent, pos; if (value !== value) { throw new Error("Numeric literal whose value is NaN"); } if (value < 0 || value === 0 && 1 / value < 0) { throw new Error("Numeric literal whose value is negative"); } if (value === 1 / 0) { return json ? "null" : renumber ? "1e400" : "1e+400"; } result = "" + value; if (!renumber || result.length < 3) { return result; } point = result.indexOf("."); if (!json && result.charCodeAt(0) === 48 && point === 1) { point = 0; result = result.slice(1); } temp = result; result = result.replace("e+", "e"); exponent = 0; if ((pos = temp.indexOf("e")) > 0) { exponent = +temp.slice(pos + 1); temp = temp.slice(0, pos); } if (point >= 0) { exponent -= temp.length - point - 1; temp = +(temp.slice(0, point) + temp.slice(point + 1)) + ""; } pos = 0; while (temp.charCodeAt(temp.length + pos - 1) === 48) { --pos; } if (pos !== 0) { exponent -= pos; temp = temp.slice(0, pos); } if (exponent !== 0) { temp += "e" + exponent; } if ((temp.length < result.length || hexadecimal && value > 1e12 && Math.floor(value) === value && (temp = "0x" + value.toString(16)).length < result.length) && +temp === value) { result = temp; } return result; } function escapeRegExpCharacter(ch, previousIsBackslash) { if ((ch & ~1) === 8232) { return (previousIsBackslash ? "u" : "\\u") + (ch === 8232 ? "2028" : "2029"); } else if (ch === 10 || ch === 13) { return (previousIsBackslash ? "" : "\\") + (ch === 10 ? "n" : "r"); } return String.fromCharCode(ch); } function generateRegExp(reg) { var match, result, flags, i, iz, ch, characterInBrack, previousIsBackslash; result = reg.toString(); if (reg.source) { match = result.match(/\/([^/]*)$/); if (!match) { return result; } flags = match[1]; result = ""; characterInBrack = false; previousIsBackslash = false; for (i = 0, iz = reg.source.length; i < iz; ++i) { ch = reg.source.charCodeAt(i); if (!previousIsBackslash) { if (characterInBrack) { if (ch === 93) { characterInBrack = false; } } else { if (ch === 47) { result += "\\"; } else if (ch === 91) { characterInBrack = true; } } result += escapeRegExpCharacter(ch, previousIsBackslash); previousIsBackslash = ch === 92; } else { result += escapeRegExpCharacter(ch, previousIsBackslash); previousIsBackslash = false; } } return "/" + result + "/" + flags; } return result; } function escapeAllowedCharacter(code2, next) { var hex; if (code2 === 8) { return "\\b"; } if (code2 === 12) { return "\\f"; } if (code2 === 9) { return "\\t"; } hex = code2.toString(16).toUpperCase(); if (json || code2 > 255) { return "\\u" + "0000".slice(hex.length) + hex; } else if (code2 === 0 && !esutils.code.isDecimalDigit(next)) { return "\\0"; } else if (code2 === 11) { return "\\x0B"; } else { return "\\x" + "00".slice(hex.length) + hex; } } function escapeDisallowedCharacter(code2) { if (code2 === 92) { return "\\\\"; } if (code2 === 10) { return "\\n"; } if (code2 === 13) { return "\\r"; } if (code2 === 8232) { return "\\u2028"; } if (code2 === 8233) { return "\\u2029"; } throw new Error("Incorrectly classified character"); } function escapeDirective(str) { var i, iz, code2, quote; quote = quotes === "double" ? '"' : "'"; for (i = 0, iz = str.length; i < iz; ++i) { code2 = str.charCodeAt(i); if (code2 === 39) { quote = '"'; break; } else if (code2 === 34) { quote = "'"; break; } else if (code2 === 92) { ++i; } } return quote + str + quote; } function escapeString(str) { var result = "", i, len, code2, singleQuotes = 0, doubleQuotes = 0, single, quote; for (i = 0, len = str.length; i < len; ++i) { code2 = str.charCodeAt(i); if (code2 === 39) { ++singleQuotes; } else if (code2 === 34) { ++doubleQuotes; } else if (code2 === 47 && json) { result += "\\"; } else if (esutils.code.isLineTerminator(code2) || code2 === 92) { result += escapeDisallowedCharacter(code2); continue; } else if (!esutils.code.isIdentifierPartES5(code2) && (json && code2 < 32 || !json && !escapeless && (code2 < 32 || code2 > 126))) { result += escapeAllowedCharacter(code2, str.charCodeAt(i + 1)); continue; } result += String.fromCharCode(code2); } single = !(quotes === "double" || quotes === "auto" && doubleQuotes < singleQuotes); quote = single ? "'" : '"'; if (!(single ? singleQuotes : doubleQuotes)) { return quote + result + quote; } str = result; result = quote; for (i = 0, len = str.length; i < len; ++i) { code2 = str.charCodeAt(i); if (code2 === 39 && single || code2 === 34 && !single) { result += "\\"; } result += String.fromCharCode(code2); } return result + quote; } function flattenToString(arr) { var i, iz, elem, result = ""; for (i = 0, iz = arr.length; i < iz; ++i) { elem = arr[i]; result += Array.isArray(elem) ? flattenToString(elem) : elem; } return result; } function toSourceNodeWhenNeeded(generated, node) { if (!sourceMap) { if (Array.isArray(generated)) { return flattenToString(generated); } else { return generated; } } if (node == null) { if (generated instanceof SourceNode) { return generated; } else { node = {}; } } if (node.loc == null) { return new SourceNode(null, null, sourceMap, generated, node.name || null); } return new SourceNode(node.loc.start.line, node.loc.start.column, sourceMap === true ? node.loc.source || null : sourceMap, generated, node.name || null); } function noEmptySpace() { return space ? space : " "; } function join26(left, right) { var leftSource, rightSource, leftCharCode, rightCharCode; leftSource = toSourceNodeWhenNeeded(left).toString(); if (leftSource.length === 0) { return [right]; } rightSource = toSourceNodeWhenNeeded(right).toString(); if (rightSource.length === 0) { return [left]; } leftCharCode = leftSource.charCodeAt(leftSource.length - 1); rightCharCode = rightSource.charCodeAt(0); if ((leftCharCode === 43 || leftCharCode === 45) && leftCharCode === rightCharCode || esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode) || leftCharCode === 47 && rightCharCode === 105) { return [left, noEmptySpace(), right]; } else if (esutils.code.isWhiteSpace(leftCharCode) || esutils.code.isLineTerminator(leftCharCode) || esutils.code.isWhiteSpace(rightCharCode) || esutils.code.isLineTerminator(rightCharCode)) { return [left, right]; } return [left, space, right]; } function addIndent(stmt) { return [base, stmt]; } function withIndent(fn2) { var previousBase; previousBase = base; base += indent; fn2(base); base = previousBase; } function calculateSpaces(str) { var i; for (i = str.length - 1; i >= 0; --i) { if (esutils.code.isLineTerminator(str.charCodeAt(i))) { break; } } return str.length - 1 - i; } function adjustMultilineComment(value, specialBase) { var array, i, len, line, j, spaces, previousBase, sn; array = value.split(/\r\n|[\r\n]/); spaces = Number.MAX_VALUE; for (i = 1, len = array.length; i < len; ++i) { line = array[i]; j = 0; while (j < line.length && esutils.code.isWhiteSpace(line.charCodeAt(j))) { ++j; } if (spaces > j) { spaces = j; } } if (typeof specialBase !== "undefined") { previousBase = base; if (array[1][spaces] === "*") { specialBase += " "; } base = specialBase; } else { if (spaces & 1) { --spaces; } previousBase = base; } for (i = 1, len = array.length; i < len; ++i) { sn = toSourceNodeWhenNeeded(addIndent(array[i].slice(spaces))); array[i] = sourceMap ? sn.join("") : sn; } base = previousBase; return array.join("\n"); } function generateComment(comment, specialBase) { if (comment.type === "Line") { if (endsWithLineTerminator(comment.value)) { return "//" + comment.value; } else { var result = "//" + comment.value; if (!preserveBlankLines) { result += "\n"; } return result; } } if (extra.format.indent.adjustMultilineComment && /[\n\r]/.test(comment.value)) { return adjustMultilineComment("/*" + comment.value + "*/", specialBase); } return "/*" + comment.value + "*/"; } function addComments(stmt, result) { var i, len, comment, save, tailingToStatement, specialBase, fragment, extRange, range, prevRange, prefix, infix, suffix, count; if (stmt.leadingComments && stmt.leadingComments.length > 0) { save = result; if (preserveBlankLines) { comment = stmt.leadingComments[0]; result = []; extRange = comment.extendedRange; range = comment.range; prefix = sourceCode.substring(extRange[0], range[0]); count = (prefix.match(/\n/g) || []).length; if (count > 0) { result.push(stringRepeat("\n", count)); result.push(addIndent(generateComment(comment))); } else { result.push(prefix); result.push(generateComment(comment)); } prevRange = range; for (i = 1, len = stmt.leadingComments.length; i < len; i++) { comment = stmt.leadingComments[i]; range = comment.range; infix = sourceCode.substring(prevRange[1], range[0]); count = (infix.match(/\n/g) || []).length; result.push(stringRepeat("\n", count)); result.push(addIndent(generateComment(comment))); prevRange = range; } suffix = sourceCode.substring(range[1], extRange[1]); count = (suffix.match(/\n/g) || []).length; result.push(stringRepeat("\n", count)); } else { comment = stmt.leadingComments[0]; result = []; if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) { result.push("\n"); } result.push(generateComment(comment)); if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result.push("\n"); } for (i = 1, len = stmt.leadingComments.length; i < len; ++i) { comment = stmt.leadingComments[i]; fragment = [generateComment(comment)]; if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { fragment.push("\n"); } result.push(addIndent(fragment)); } } result.push(addIndent(save)); } if (stmt.trailingComments) { if (preserveBlankLines) { comment = stmt.trailingComments[0]; extRange = comment.extendedRange; range = comment.range; prefix = sourceCode.substring(extRange[0], range[0]); count = (prefix.match(/\n/g) || []).length; if (count > 0) { result.push(stringRepeat("\n", count)); result.push(addIndent(generateComment(comment))); } else { result.push(prefix); result.push(generateComment(comment)); } } else { tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); specialBase = stringRepeat(" ", calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString())); for (i = 0, len = stmt.trailingComments.length; i < len; ++i) { comment = stmt.trailingComments[i]; if (tailingToStatement) { if (i === 0) { result = [result, indent]; } else { result = [result, specialBase]; } result.push(generateComment(comment, specialBase)); } else { result = [result, addIndent(generateComment(comment))]; } if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result = [result, "\n"]; } } } } return result; } function generateBlankLines(start, end, result) { var j, newlineCount = 0; for (j = start; j < end; j++) { if (sourceCode[j] === "\n") { newlineCount++; } } for (j = 1; j < newlineCount; j++) { result.push(newline); } } function parenthesize(text, current, should) { if (current < should) { return ["(", text, ")"]; } return text; } function generateVerbatimString(string) { var i, iz, result; result = string.split(/\r\n|\n/); for (i = 1, iz = result.length; i < iz; i++) { result[i] = newline + base + result[i]; } return result; } function generateVerbatim(expr, precedence) { var verbatim, result, prec; verbatim = expr[extra.verbatim]; if (typeof verbatim === "string") { result = parenthesize(generateVerbatimString(verbatim), Precedence.Sequence, precedence); } else { result = generateVerbatimString(verbatim.content); prec = verbatim.precedence != null ? verbatim.precedence : Precedence.Sequence; result = parenthesize(result, prec, precedence); } return toSourceNodeWhenNeeded(result, expr); } function CodeGenerator() { } CodeGenerator.prototype.maybeBlock = function(stmt, flags) { var result, noLeadingComment, that = this; noLeadingComment = !extra.comment || !stmt.leadingComments; if (stmt.type === Syntax.BlockStatement && noLeadingComment) { return [space, this.generateStatement(stmt, flags)]; } if (stmt.type === Syntax.EmptyStatement && noLeadingComment) { return ";"; } withIndent(function() { result = [ newline, addIndent(that.generateStatement(stmt, flags)) ]; }); return result; }; CodeGenerator.prototype.maybeBlockSuffix = function(stmt, result) { var ends = endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); if (stmt.type === Syntax.BlockStatement && (!extra.comment || !stmt.leadingComments) && !ends) { return [result, space]; } if (ends) { return [result, base]; } return [result, newline, base]; }; function generateIdentifier(node) { return toSourceNodeWhenNeeded(node.name, node); } function generateAsyncPrefix(node, spaceRequired) { return node.async ? "async" + (spaceRequired ? noEmptySpace() : space) : ""; } function generateStarSuffix(node) { var isGenerator = node.generator && !extra.moz.starlessGenerator; return isGenerator ? "*" + space : ""; } function generateMethodPrefix(prop) { var func = prop.value, prefix = ""; if (func.async) { prefix += generateAsyncPrefix(func, !prop.computed); } if (func.generator) { prefix += generateStarSuffix(func) ? "*" : ""; } return prefix; } CodeGenerator.prototype.generatePattern = function(node, precedence, flags) { if (node.type === Syntax.Identifier) { return generateIdentifier(node); } return this.generateExpression(node, precedence, flags); }; CodeGenerator.prototype.generateFunctionParams = function(node) { var i, iz, result, hasDefault; hasDefault = false; if (node.type === Syntax.ArrowFunctionExpression && !node.rest && (!node.defaults || node.defaults.length === 0) && node.params.length === 1 && node.params[0].type === Syntax.Identifier) { result = [generateAsyncPrefix(node, true), generateIdentifier(node.params[0])]; } else { result = node.type === Syntax.ArrowFunctionExpression ? [generateAsyncPrefix(node, false)] : []; result.push("("); if (node.defaults) { hasDefault = true; } for (i = 0, iz = node.params.length; i < iz; ++i) { if (hasDefault && node.defaults[i]) { result.push(this.generateAssignment(node.params[i], node.defaults[i], "=", Precedence.Assignment, E_TTT)); } else { result.push(this.generatePattern(node.params[i], Precedence.Assignment, E_TTT)); } if (i + 1 < iz) { result.push("," + space); } } if (node.rest) { if (node.params.length) { result.push("," + space); } result.push("..."); result.push(generateIdentifier(node.rest)); } result.push(")"); } return result; }; CodeGenerator.prototype.generateFunctionBody = function(node) { var result, expr; result = this.generateFunctionParams(node); if (node.type === Syntax.ArrowFunctionExpression) { result.push(space); result.push("=>"); } if (node.expression) { result.push(space); expr = this.generateExpression(node.body, Precedence.Assignment, E_TTT); if (expr.toString().charAt(0) === "{") { expr = ["(", expr, ")"]; } result.push(expr); } else { result.push(this.maybeBlock(node.body, S_TTFF)); } return result; }; CodeGenerator.prototype.generateIterationForStatement = function(operator, stmt, flags) { var result = ["for" + (stmt.await ? noEmptySpace() + "await" : "") + space + "("], that = this; withIndent(function() { if (stmt.left.type === Syntax.VariableDeclaration) { withIndent(function() { result.push(stmt.left.kind + noEmptySpace()); result.push(that.generateStatement(stmt.left.declarations[0], S_FFFF)); }); } else { result.push(that.generateExpression(stmt.left, Precedence.Call, E_TTT)); } result = join26(result, operator); result = [join26( result, that.generateExpression(stmt.right, Precedence.Assignment, E_TTT) ), ")"]; }); result.push(this.maybeBlock(stmt.body, flags)); return result; }; CodeGenerator.prototype.generatePropertyKey = function(expr, computed) { var result = []; if (computed) { result.push("["); } result.push(this.generateExpression(expr, Precedence.Assignment, E_TTT)); if (computed) { result.push("]"); } return result; }; CodeGenerator.prototype.generateAssignment = function(left, right, operator, precedence, flags) { if (Precedence.Assignment < precedence) { flags |= F_ALLOW_IN; } return parenthesize( [ this.generateExpression(left, Precedence.Call, flags), space + operator + space, this.generateExpression(right, Precedence.Assignment, flags) ], Precedence.Assignment, precedence ); }; CodeGenerator.prototype.semicolon = function(flags) { if (!semicolons && flags & F_SEMICOLON_OPT) { return ""; } return ";"; }; CodeGenerator.Statement = { BlockStatement: function(stmt, flags) { var range, content, result = ["{", newline], that = this; withIndent(function() { if (stmt.body.length === 0 && preserveBlankLines) { range = stmt.range; if (range[1] - range[0] > 2) { content = sourceCode.substring(range[0] + 1, range[1] - 1); if (content[0] === "\n") { result = ["{"]; } result.push(content); } } var i, iz, fragment, bodyFlags; bodyFlags = S_TFFF; if (flags & F_FUNC_BODY) { bodyFlags |= F_DIRECTIVE_CTX; } for (i = 0, iz = stmt.body.length; i < iz; ++i) { if (preserveBlankLines) { if (i === 0) { if (stmt.body[0].leadingComments) { range = stmt.body[0].leadingComments[0].extendedRange; content = sourceCode.substring(range[0], range[1]); if (content[0] === "\n") { result = ["{"]; } } if (!stmt.body[0].leadingComments) { generateBlankLines(stmt.range[0], stmt.body[0].range[0], result); } } if (i > 0) { if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); } } } if (i === iz - 1) { bodyFlags |= F_SEMICOLON_OPT; } if (stmt.body[i].leadingComments && preserveBlankLines) { fragment = that.generateStatement(stmt.body[i], bodyFlags); } else { fragment = addIndent(that.generateStatement(stmt.body[i], bodyFlags)); } result.push(fragment); if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { if (preserveBlankLines && i < iz - 1) { if (!stmt.body[i + 1].leadingComments) { result.push(newline); } } else { result.push(newline); } } if (preserveBlankLines) { if (i === iz - 1) { if (!stmt.body[i].trailingComments) { generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); } } } } }); result.push(addIndent("}")); return result; }, BreakStatement: function(stmt, flags) { if (stmt.label) { return "break " + stmt.label.name + this.semicolon(flags); } return "break" + this.semicolon(flags); }, ContinueStatement: function(stmt, flags) { if (stmt.label) { return "continue " + stmt.label.name + this.semicolon(flags); } return "continue" + this.semicolon(flags); }, ClassBody: function(stmt, flags) { var result = ["{", newline], that = this; withIndent(function(indent2) { var i, iz; for (i = 0, iz = stmt.body.length; i < iz; ++i) { result.push(indent2); result.push(that.generateExpression(stmt.body[i], Precedence.Sequence, E_TTT)); if (i + 1 < iz) { result.push(newline); } } }); if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result.push(newline); } result.push(base); result.push("}"); return result; }, ClassDeclaration: function(stmt, flags) { var result, fragment; result = ["class"]; if (stmt.id) { result = join26(result, this.generateExpression(stmt.id, Precedence.Sequence, E_TTT)); } if (stmt.superClass) { fragment = join26("extends", this.generateExpression(stmt.superClass, Precedence.Unary, E_TTT)); result = join26(result, fragment); } result.push(space); result.push(this.generateStatement(stmt.body, S_TFFT)); return result; }, DirectiveStatement: function(stmt, flags) { if (extra.raw && stmt.raw) { return stmt.raw + this.semicolon(flags); } return escapeDirective(stmt.directive) + this.semicolon(flags); }, DoWhileStatement: function(stmt, flags) { var result = join26("do", this.maybeBlock(stmt.body, S_TFFF)); result = this.maybeBlockSuffix(stmt.body, result); return join26(result, [ "while" + space + "(", this.generateExpression(stmt.test, Precedence.Sequence, E_TTT), ")" + this.semicolon(flags) ]); }, CatchClause: function(stmt, flags) { var result, that = this; withIndent(function() { var guard; if (stmt.param) { result = [ "catch" + space + "(", that.generateExpression(stmt.param, Precedence.Sequence, E_TTT), ")" ]; if (stmt.guard) { guard = that.generateExpression(stmt.guard, Precedence.Sequence, E_TTT); result.splice(2, 0, " if ", guard); } } else { result = ["catch"]; } }); result.push(this.maybeBlock(stmt.body, S_TFFF)); return result; }, DebuggerStatement: function(stmt, flags) { return "debugger" + this.semicolon(flags); }, EmptyStatement: function(stmt, flags) { return ";"; }, ExportDefaultDeclaration: function(stmt, flags) { var result = ["export"], bodyFlags; bodyFlags = flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF; result = join26(result, "default"); if (isStatement(stmt.declaration)) { result = join26(result, this.generateStatement(stmt.declaration, bodyFlags)); } else { result = join26(result, this.generateExpression(stmt.declaration, Precedence.Assignment, E_TTT) + this.semicolon(flags)); } return result; }, ExportNamedDeclaration: function(stmt, flags) { var result = ["export"], bodyFlags, that = this; bodyFlags = flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF; if (stmt.declaration) { return join26(result, this.generateStatement(stmt.declaration, bodyFlags)); } if (stmt.specifiers) { if (stmt.specifiers.length === 0) { result = join26(result, "{" + space + "}"); } else if (stmt.specifiers[0].type === Syntax.ExportBatchSpecifier) { result = join26(result, this.generateExpression(stmt.specifiers[0], Precedence.Sequence, E_TTT)); } else { result = join26(result, "{"); withIndent(function(indent2) { var i, iz; result.push(newline); for (i = 0, iz = stmt.specifiers.length; i < iz; ++i) { result.push(indent2); result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT)); if (i + 1 < iz) { result.push("," + newline); } } }); if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result.push(newline); } result.push(base + "}"); } if (stmt.source) { result = join26(result, [ "from" + space, // ModuleSpecifier this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), this.semicolon(flags) ]); } else { result.push(this.semicolon(flags)); } } return result; }, ExportAllDeclaration: function(stmt, flags) { return [ "export" + space, "*" + space, "from" + space, // ModuleSpecifier this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), this.semicolon(flags) ]; }, ExpressionStatement: function(stmt, flags) { var result, fragment; function isClassPrefixed(fragment2) { var code2; if (fragment2.slice(0, 5) !== "class") { return false; } code2 = fragment2.charCodeAt(5); return code2 === 123 || esutils.code.isWhiteSpace(code2) || esutils.code.isLineTerminator(code2); } function isFunctionPrefixed(fragment2) { var code2; if (fragment2.slice(0, 8) !== "function") { return false; } code2 = fragment2.charCodeAt(8); return code2 === 40 || esutils.code.isWhiteSpace(code2) || code2 === 42 || esutils.code.isLineTerminator(code2); } function isAsyncPrefixed(fragment2) { var code2, i, iz; if (fragment2.slice(0, 5) !== "async") { return false; } if (!esutils.code.isWhiteSpace(fragment2.charCodeAt(5))) { return false; } for (i = 6, iz = fragment2.length; i < iz; ++i) { if (!esutils.code.isWhiteSpace(fragment2.charCodeAt(i))) { break; } } if (i === iz) { return false; } if (fragment2.slice(i, i + 8) !== "function") { return false; } code2 = fragment2.charCodeAt(i + 8); return code2 === 40 || esutils.code.isWhiteSpace(code2) || code2 === 42 || esutils.code.isLineTerminator(code2); } result = [this.generateExpression(stmt.expression, Precedence.Sequence, E_TTT)]; fragment = toSourceNodeWhenNeeded(result).toString(); if (fragment.charCodeAt(0) === 123 || // ObjectExpression isClassPrefixed(fragment) || isFunctionPrefixed(fragment) || isAsyncPrefixed(fragment) || directive && flags & F_DIRECTIVE_CTX && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === "string") { result = ["(", result, ")" + this.semicolon(flags)]; } else { result.push(this.semicolon(flags)); } return result; }, ImportDeclaration: function(stmt, flags) { var result, cursor, that = this; if (stmt.specifiers.length === 0) { return [ "import", space, // ModuleSpecifier this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), this.semicolon(flags) ]; } result = [ "import" ]; cursor = 0; if (stmt.specifiers[cursor].type === Syntax.ImportDefaultSpecifier) { result = join26(result, [ this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT) ]); ++cursor; } if (stmt.specifiers[cursor]) { if (cursor !== 0) { result.push(","); } if (stmt.specifiers[cursor].type === Syntax.ImportNamespaceSpecifier) { result = join26(result, [ space, this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT) ]); } else { result.push(space + "{"); if (stmt.specifiers.length - cursor === 1) { result.push(space); result.push(this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT)); result.push(space + "}" + space); } else { withIndent(function(indent2) { var i, iz; result.push(newline); for (i = cursor, iz = stmt.specifiers.length; i < iz; ++i) { result.push(indent2); result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT)); if (i + 1 < iz) { result.push("," + newline); } } }); if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result.push(newline); } result.push(base + "}" + space); } } } result = join26(result, [ "from" + space, // ModuleSpecifier this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), this.semicolon(flags) ]); return result; }, VariableDeclarator: function(stmt, flags) { var itemFlags = flags & F_ALLOW_IN ? E_TTT : E_FTT; if (stmt.init) { return [ this.generateExpression(stmt.id, Precedence.Assignment, itemFlags), space, "=", space, this.generateExpression(stmt.init, Precedence.Assignment, itemFlags) ]; } return this.generatePattern(stmt.id, Precedence.Assignment, itemFlags); }, VariableDeclaration: function(stmt, flags) { var result, i, iz, node, bodyFlags, that = this; result = [stmt.kind]; bodyFlags = flags & F_ALLOW_IN ? S_TFFF : S_FFFF; function block() { node = stmt.declarations[0]; if (extra.comment && node.leadingComments) { result.push("\n"); result.push(addIndent(that.generateStatement(node, bodyFlags))); } else { result.push(noEmptySpace()); result.push(that.generateStatement(node, bodyFlags)); } for (i = 1, iz = stmt.declarations.length; i < iz; ++i) { node = stmt.declarations[i]; if (extra.comment && node.leadingComments) { result.push("," + newline); result.push(addIndent(that.generateStatement(node, bodyFlags))); } else { result.push("," + space); result.push(that.generateStatement(node, bodyFlags)); } } } if (stmt.declarations.length > 1) { withIndent(block); } else { block(); } result.push(this.semicolon(flags)); return result; }, ThrowStatement: function(stmt, flags) { return [join26( "throw", this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) ), this.semicolon(flags)]; }, TryStatement: function(stmt, flags) { var result, i, iz, guardedHandlers; result = ["try", this.maybeBlock(stmt.block, S_TFFF)]; result = this.maybeBlockSuffix(stmt.block, result); if (stmt.handlers) { for (i = 0, iz = stmt.handlers.length; i < iz; ++i) { result = join26(result, this.generateStatement(stmt.handlers[i], S_TFFF)); if (stmt.finalizer || i + 1 !== iz) { result = this.maybeBlockSuffix(stmt.handlers[i].body, result); } } } else { guardedHandlers = stmt.guardedHandlers || []; for (i = 0, iz = guardedHandlers.length; i < iz; ++i) { result = join26(result, this.generateStatement(guardedHandlers[i], S_TFFF)); if (stmt.finalizer || i + 1 !== iz) { result = this.maybeBlockSuffix(guardedHandlers[i].body, result); } } if (stmt.handler) { if (Array.isArray(stmt.handler)) { for (i = 0, iz = stmt.handler.length; i < iz; ++i) { result = join26(result, this.generateStatement(stmt.handler[i], S_TFFF)); if (stmt.finalizer || i + 1 !== iz) { result = this.maybeBlockSuffix(stmt.handler[i].body, result); } } } else { result = join26(result, this.generateStatement(stmt.handler, S_TFFF)); if (stmt.finalizer) { result = this.maybeBlockSuffix(stmt.handler.body, result); } } } } if (stmt.finalizer) { result = join26(result, ["finally", this.maybeBlock(stmt.finalizer, S_TFFF)]); } return result; }, SwitchStatement: function(stmt, flags) { var result, fragment, i, iz, bodyFlags, that = this; withIndent(function() { result = [ "switch" + space + "(", that.generateExpression(stmt.discriminant, Precedence.Sequence, E_TTT), ")" + space + "{" + newline ]; }); if (stmt.cases) { bodyFlags = S_TFFF; for (i = 0, iz = stmt.cases.length; i < iz; ++i) { if (i === iz - 1) { bodyFlags |= F_SEMICOLON_OPT; } fragment = addIndent(this.generateStatement(stmt.cases[i], bodyFlags)); result.push(fragment); if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { result.push(newline); } } } result.push(addIndent("}")); return result; }, SwitchCase: function(stmt, flags) { var result, fragment, i, iz, bodyFlags, that = this; withIndent(function() { if (stmt.test) { result = [ join26("case", that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)), ":" ]; } else { result = ["default:"]; } i = 0; iz = stmt.consequent.length; if (iz && stmt.consequent[0].type === Syntax.BlockStatement) { fragment = that.maybeBlock(stmt.consequent[0], S_TFFF); result.push(fragment); i = 1; } if (i !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result.push(newline); } bodyFlags = S_TFFF; for (; i < iz; ++i) { if (i === iz - 1 && flags & F_SEMICOLON_OPT) { bodyFlags |= F_SEMICOLON_OPT; } fragment = addIndent(that.generateStatement(stmt.consequent[i], bodyFlags)); result.push(fragment); if (i + 1 !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { result.push(newline); } } }); return result; }, IfStatement: function(stmt, flags) { var result, bodyFlags, semicolonOptional, that = this; withIndent(function() { result = [ "if" + space + "(", that.generateExpression(stmt.test, Precedence.Sequence, E_TTT), ")" ]; }); semicolonOptional = flags & F_SEMICOLON_OPT; bodyFlags = S_TFFF; if (semicolonOptional) { bodyFlags |= F_SEMICOLON_OPT; } if (stmt.alternate) { result.push(this.maybeBlock(stmt.consequent, S_TFFF)); result = this.maybeBlockSuffix(stmt.consequent, result); if (stmt.alternate.type === Syntax.IfStatement) { result = join26(result, ["else ", this.generateStatement(stmt.alternate, bodyFlags)]); } else { result = join26(result, join26("else", this.maybeBlock(stmt.alternate, bodyFlags))); } } else { result.push(this.maybeBlock(stmt.consequent, bodyFlags)); } return result; }, ForStatement: function(stmt, flags) { var result, that = this; withIndent(function() { result = ["for" + space + "("]; if (stmt.init) { if (stmt.init.type === Syntax.VariableDeclaration) { result.push(that.generateStatement(stmt.init, S_FFFF)); } else { result.push(that.generateExpression(stmt.init, Precedence.Sequence, E_FTT)); result.push(";"); } } else { result.push(";"); } if (stmt.test) { result.push(space); result.push(that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)); result.push(";"); } else { result.push(";"); } if (stmt.update) { result.push(space); result.push(that.generateExpression(stmt.update, Precedence.Sequence, E_TTT)); result.push(")"); } else { result.push(")"); } }); result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); return result; }, ForInStatement: function(stmt, flags) { return this.generateIterationForStatement("in", stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF); }, ForOfStatement: function(stmt, flags) { return this.generateIterationForStatement("of", stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF); }, LabeledStatement: function(stmt, flags) { return [stmt.label.name + ":", this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)]; }, Program: function(stmt, flags) { var result, fragment, i, iz, bodyFlags; iz = stmt.body.length; result = [safeConcatenation && iz > 0 ? "\n" : ""]; bodyFlags = S_TFTF; for (i = 0; i < iz; ++i) { if (!safeConcatenation && i === iz - 1) { bodyFlags |= F_SEMICOLON_OPT; } if (preserveBlankLines) { if (i === 0) { if (!stmt.body[0].leadingComments) { generateBlankLines(stmt.range[0], stmt.body[i].range[0], result); } } if (i > 0) { if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); } } } fragment = addIndent(this.generateStatement(stmt.body[i], bodyFlags)); result.push(fragment); if (i + 1 < iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { if (preserveBlankLines) { if (!stmt.body[i + 1].leadingComments) { result.push(newline); } } else { result.push(newline); } } if (preserveBlankLines) { if (i === iz - 1) { if (!stmt.body[i].trailingComments) { generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); } } } } return result; }, FunctionDeclaration: function(stmt, flags) { return [ generateAsyncPrefix(stmt, true), "function", generateStarSuffix(stmt) || noEmptySpace(), stmt.id ? generateIdentifier(stmt.id) : "", this.generateFunctionBody(stmt) ]; }, ReturnStatement: function(stmt, flags) { if (stmt.argument) { return [join26( "return", this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) ), this.semicolon(flags)]; } return ["return" + this.semicolon(flags)]; }, WhileStatement: function(stmt, flags) { var result, that = this; withIndent(function() { result = [ "while" + space + "(", that.generateExpression(stmt.test, Precedence.Sequence, E_TTT), ")" ]; }); result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); return result; }, WithStatement: function(stmt, flags) { var result, that = this; withIndent(function() { result = [ "with" + space + "(", that.generateExpression(stmt.object, Precedence.Sequence, E_TTT), ")" ]; }); result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); return result; } }; merge2(CodeGenerator.prototype, CodeGenerator.Statement); CodeGenerator.Expression = { SequenceExpression: function(expr, precedence, flags) { var result, i, iz; if (Precedence.Sequence < precedence) { flags |= F_ALLOW_IN; } result = []; for (i = 0, iz = expr.expressions.length; i < iz; ++i) { result.push(this.generateExpression(expr.expressions[i], Precedence.Assignment, flags)); if (i + 1 < iz) { result.push("," + space); } } return parenthesize(result, Precedence.Sequence, precedence); }, AssignmentExpression: function(expr, precedence, flags) { return this.generateAssignment(expr.left, expr.right, expr.operator, precedence, flags); }, ArrowFunctionExpression: function(expr, precedence, flags) { return parenthesize(this.generateFunctionBody(expr), Precedence.ArrowFunction, precedence); }, ConditionalExpression: function(expr, precedence, flags) { if (Precedence.Conditional < precedence) { flags |= F_ALLOW_IN; } return parenthesize( [ this.generateExpression(expr.test, Precedence.Coalesce, flags), space + "?" + space, this.generateExpression(expr.consequent, Precedence.Assignment, flags), space + ":" + space, this.generateExpression(expr.alternate, Precedence.Assignment, flags) ], Precedence.Conditional, precedence ); }, LogicalExpression: function(expr, precedence, flags) { if (expr.operator === "??") { flags |= F_FOUND_COALESCE; } return this.BinaryExpression(expr, precedence, flags); }, BinaryExpression: function(expr, precedence, flags) { var result, leftPrecedence, rightPrecedence, currentPrecedence, fragment, leftSource; currentPrecedence = BinaryPrecedence[expr.operator]; leftPrecedence = expr.operator === "**" ? Precedence.Postfix : currentPrecedence; rightPrecedence = expr.operator === "**" ? currentPrecedence : currentPrecedence + 1; if (currentPrecedence < precedence) { flags |= F_ALLOW_IN; } fragment = this.generateExpression(expr.left, leftPrecedence, flags); leftSource = fragment.toString(); if (leftSource.charCodeAt(leftSource.length - 1) === 47 && esutils.code.isIdentifierPartES5(expr.operator.charCodeAt(0))) { result = [fragment, noEmptySpace(), expr.operator]; } else { result = join26(fragment, expr.operator); } fragment = this.generateExpression(expr.right, rightPrecedence, flags); if (expr.operator === "/" && fragment.toString().charAt(0) === "/" || expr.operator.slice(-1) === "<" && fragment.toString().slice(0, 3) === "!--") { result.push(noEmptySpace()); result.push(fragment); } else { result = join26(result, fragment); } if (expr.operator === "in" && !(flags & F_ALLOW_IN)) { return ["(", result, ")"]; } if ((expr.operator === "||" || expr.operator === "&&") && flags & F_FOUND_COALESCE) { return ["(", result, ")"]; } return parenthesize(result, currentPrecedence, precedence); }, CallExpression: function(expr, precedence, flags) { var result, i, iz; result = [this.generateExpression(expr.callee, Precedence.Call, E_TTF)]; if (expr.optional) { result.push("?."); } result.push("("); for (i = 0, iz = expr["arguments"].length; i < iz; ++i) { result.push(this.generateExpression(expr["arguments"][i], Precedence.Assignment, E_TTT)); if (i + 1 < iz) { result.push("," + space); } } result.push(")"); if (!(flags & F_ALLOW_CALL)) { return ["(", result, ")"]; } return parenthesize(result, Precedence.Call, precedence); }, ChainExpression: function(expr, precedence, flags) { if (Precedence.OptionalChaining < precedence) { flags |= F_ALLOW_CALL; } var result = this.generateExpression(expr.expression, Precedence.OptionalChaining, flags); return parenthesize(result, Precedence.OptionalChaining, precedence); }, NewExpression: function(expr, precedence, flags) { var result, length, i, iz, itemFlags; length = expr["arguments"].length; itemFlags = flags & F_ALLOW_UNPARATH_NEW && !parentheses && length === 0 ? E_TFT : E_TFF; result = join26( "new", this.generateExpression(expr.callee, Precedence.New, itemFlags) ); if (!(flags & F_ALLOW_UNPARATH_NEW) || parentheses || length > 0) { result.push("("); for (i = 0, iz = length; i < iz; ++i) { result.push(this.generateExpression(expr["arguments"][i], Precedence.Assignment, E_TTT)); if (i + 1 < iz) { result.push("," + space); } } result.push(")"); } return parenthesize(result, Precedence.New, precedence); }, MemberExpression: function(expr, precedence, flags) { var result, fragment; result = [this.generateExpression(expr.object, Precedence.Call, flags & F_ALLOW_CALL ? E_TTF : E_TFF)]; if (expr.computed) { if (expr.optional) { result.push("?."); } result.push("["); result.push(this.generateExpression(expr.property, Precedence.Sequence, flags & F_ALLOW_CALL ? E_TTT : E_TFT)); result.push("]"); } else { if (!expr.optional && expr.object.type === Syntax.Literal && typeof expr.object.value === "number") { fragment = toSourceNodeWhenNeeded(result).toString(); if (fragment.indexOf(".") < 0 && !/[eExX]/.test(fragment) && esutils.code.isDecimalDigit(fragment.charCodeAt(fragment.length - 1)) && !(fragment.length >= 2 && fragment.charCodeAt(0) === 48)) { result.push(" "); } } result.push(expr.optional ? "?." : "."); result.push(generateIdentifier(expr.property)); } return parenthesize(result, Precedence.Member, precedence); }, MetaProperty: function(expr, precedence, flags) { var result; result = []; result.push(typeof expr.meta === "string" ? expr.meta : generateIdentifier(expr.meta)); result.push("."); result.push(typeof expr.property === "string" ? expr.property : generateIdentifier(expr.property)); return parenthesize(result, Precedence.Member, precedence); }, UnaryExpression: function(expr, precedence, flags) { var result, fragment, rightCharCode, leftSource, leftCharCode; fragment = this.generateExpression(expr.argument, Precedence.Unary, E_TTT); if (space === "") { result = join26(expr.operator, fragment); } else { result = [expr.operator]; if (expr.operator.length > 2) { result = join26(result, fragment); } else { leftSource = toSourceNodeWhenNeeded(result).toString(); leftCharCode = leftSource.charCodeAt(leftSource.length - 1); rightCharCode = fragment.toString().charCodeAt(0); if ((leftCharCode === 43 || leftCharCode === 45) && leftCharCode === rightCharCode || esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode)) { result.push(noEmptySpace()); result.push(fragment); } else { result.push(fragment); } } } return parenthesize(result, Precedence.Unary, precedence); }, YieldExpression: function(expr, precedence, flags) { var result; if (expr.delegate) { result = "yield*"; } else { result = "yield"; } if (expr.argument) { result = join26( result, this.generateExpression(expr.argument, Precedence.Yield, E_TTT) ); } return parenthesize(result, Precedence.Yield, precedence); }, AwaitExpression: function(expr, precedence, flags) { var result = join26( expr.all ? "await*" : "await", this.generateExpression(expr.argument, Precedence.Await, E_TTT) ); return parenthesize(result, Precedence.Await, precedence); }, UpdateExpression: function(expr, precedence, flags) { if (expr.prefix) { return parenthesize( [ expr.operator, this.generateExpression(expr.argument, Precedence.Unary, E_TTT) ], Precedence.Unary, precedence ); } return parenthesize( [ this.generateExpression(expr.argument, Precedence.Postfix, E_TTT), expr.operator ], Precedence.Postfix, precedence ); }, FunctionExpression: function(expr, precedence, flags) { var result = [ generateAsyncPrefix(expr, true), "function" ]; if (expr.id) { result.push(generateStarSuffix(expr) || noEmptySpace()); result.push(generateIdentifier(expr.id)); } else { result.push(generateStarSuffix(expr) || space); } result.push(this.generateFunctionBody(expr)); return result; }, ArrayPattern: function(expr, precedence, flags) { return this.ArrayExpression(expr, precedence, flags, true); }, ArrayExpression: function(expr, precedence, flags, isPattern) { var result, multiline, that = this; if (!expr.elements.length) { return "[]"; } multiline = isPattern ? false : expr.elements.length > 1; result = ["[", multiline ? newline : ""]; withIndent(function(indent2) { var i, iz; for (i = 0, iz = expr.elements.length; i < iz; ++i) { if (!expr.elements[i]) { if (multiline) { result.push(indent2); } if (i + 1 === iz) { result.push(","); } } else { result.push(multiline ? indent2 : ""); result.push(that.generateExpression(expr.elements[i], Precedence.Assignment, E_TTT)); } if (i + 1 < iz) { result.push("," + (multiline ? newline : space)); } } }); if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result.push(newline); } result.push(multiline ? base : ""); result.push("]"); return result; }, RestElement: function(expr, precedence, flags) { return "..." + this.generatePattern(expr.argument); }, ClassExpression: function(expr, precedence, flags) { var result, fragment; result = ["class"]; if (expr.id) { result = join26(result, this.generateExpression(expr.id, Precedence.Sequence, E_TTT)); } if (expr.superClass) { fragment = join26("extends", this.generateExpression(expr.superClass, Precedence.Unary, E_TTT)); result = join26(result, fragment); } result.push(space); result.push(this.generateStatement(expr.body, S_TFFT)); return result; }, MethodDefinition: function(expr, precedence, flags) { var result, fragment; if (expr["static"]) { result = ["static" + space]; } else { result = []; } if (expr.kind === "get" || expr.kind === "set") { fragment = [ join26(expr.kind, this.generatePropertyKey(expr.key, expr.computed)), this.generateFunctionBody(expr.value) ]; } else { fragment = [ generateMethodPrefix(expr), this.generatePropertyKey(expr.key, expr.computed), this.generateFunctionBody(expr.value) ]; } return join26(result, fragment); }, Property: function(expr, precedence, flags) { if (expr.kind === "get" || expr.kind === "set") { return [ expr.kind, noEmptySpace(), this.generatePropertyKey(expr.key, expr.computed), this.generateFunctionBody(expr.value) ]; } if (expr.shorthand) { if (expr.value.type === "AssignmentPattern") { return this.AssignmentPattern(expr.value, Precedence.Sequence, E_TTT); } return this.generatePropertyKey(expr.key, expr.computed); } if (expr.method) { return [ generateMethodPrefix(expr), this.generatePropertyKey(expr.key, expr.computed), this.generateFunctionBody(expr.value) ]; } return [ this.generatePropertyKey(expr.key, expr.computed), ":" + space, this.generateExpression(expr.value, Precedence.Assignment, E_TTT) ]; }, ObjectExpression: function(expr, precedence, flags) { var multiline, result, fragment, that = this; if (!expr.properties.length) { return "{}"; } multiline = expr.properties.length > 1; withIndent(function() { fragment = that.generateExpression(expr.properties[0], Precedence.Sequence, E_TTT); }); if (!multiline) { if (!hasLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { return ["{", space, fragment, space, "}"]; } } withIndent(function(indent2) { var i, iz; result = ["{", newline, indent2, fragment]; if (multiline) { result.push("," + newline); for (i = 1, iz = expr.properties.length; i < iz; ++i) { result.push(indent2); result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT)); if (i + 1 < iz) { result.push("," + newline); } } } }); if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result.push(newline); } result.push(base); result.push("}"); return result; }, AssignmentPattern: function(expr, precedence, flags) { return this.generateAssignment(expr.left, expr.right, "=", precedence, flags); }, ObjectPattern: function(expr, precedence, flags) { var result, i, iz, multiline, property, that = this; if (!expr.properties.length) { return "{}"; } multiline = false; if (expr.properties.length === 1) { property = expr.properties[0]; if (property.type === Syntax.Property && property.value.type !== Syntax.Identifier) { multiline = true; } } else { for (i = 0, iz = expr.properties.length; i < iz; ++i) { property = expr.properties[i]; if (property.type === Syntax.Property && !property.shorthand) { multiline = true; break; } } } result = ["{", multiline ? newline : ""]; withIndent(function(indent2) { var i2, iz2; for (i2 = 0, iz2 = expr.properties.length; i2 < iz2; ++i2) { result.push(multiline ? indent2 : ""); result.push(that.generateExpression(expr.properties[i2], Precedence.Sequence, E_TTT)); if (i2 + 1 < iz2) { result.push("," + (multiline ? newline : space)); } } }); if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { result.push(newline); } result.push(multiline ? base : ""); result.push("}"); return result; }, ThisExpression: function(expr, precedence, flags) { return "this"; }, Super: function(expr, precedence, flags) { return "super"; }, Identifier: function(expr, precedence, flags) { return generateIdentifier(expr); }, ImportDefaultSpecifier: function(expr, precedence, flags) { return generateIdentifier(expr.id || expr.local); }, ImportNamespaceSpecifier: function(expr, precedence, flags) { var result = ["*"]; var id = expr.id || expr.local; if (id) { result.push(space + "as" + noEmptySpace() + generateIdentifier(id)); } return result; }, ImportSpecifier: function(expr, precedence, flags) { var imported = expr.imported; var result = [imported.name]; var local = expr.local; if (local && local.name !== imported.name) { result.push(noEmptySpace() + "as" + noEmptySpace() + generateIdentifier(local)); } return result; }, ExportSpecifier: function(expr, precedence, flags) { var local = expr.local; var result = [local.name]; var exported = expr.exported; if (exported && exported.name !== local.name) { result.push(noEmptySpace() + "as" + noEmptySpace() + generateIdentifier(exported)); } return result; }, Literal: function(expr, precedence, flags) { var raw; if (expr.hasOwnProperty("raw") && parse11 && extra.raw) { try { raw = parse11(expr.raw).body[0].expression; if (raw.type === Syntax.Literal) { if (raw.value === expr.value) { return expr.raw; } } } catch (e2) { } } if (expr.regex) { return "/" + expr.regex.pattern + "/" + expr.regex.flags; } if (typeof expr.value === "bigint") { return expr.value.toString() + "n"; } if (expr.bigint) { return expr.bigint + "n"; } if (expr.value === null) { return "null"; } if (typeof expr.value === "string") { return escapeString(expr.value); } if (typeof expr.value === "number") { return generateNumber(expr.value); } if (typeof expr.value === "boolean") { return expr.value ? "true" : "false"; } return generateRegExp(expr.value); }, GeneratorExpression: function(expr, precedence, flags) { return this.ComprehensionExpression(expr, precedence, flags); }, ComprehensionExpression: function(expr, precedence, flags) { var result, i, iz, fragment, that = this; result = expr.type === Syntax.GeneratorExpression ? ["("] : ["["]; if (extra.moz.comprehensionExpressionStartsWithAssignment) { fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT); result.push(fragment); } if (expr.blocks) { withIndent(function() { for (i = 0, iz = expr.blocks.length; i < iz; ++i) { fragment = that.generateExpression(expr.blocks[i], Precedence.Sequence, E_TTT); if (i > 0 || extra.moz.comprehensionExpressionStartsWithAssignment) { result = join26(result, fragment); } else { result.push(fragment); } } }); } if (expr.filter) { result = join26(result, "if" + space); fragment = this.generateExpression(expr.filter, Precedence.Sequence, E_TTT); result = join26(result, ["(", fragment, ")"]); } if (!extra.moz.comprehensionExpressionStartsWithAssignment) { fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT); result = join26(result, fragment); } result.push(expr.type === Syntax.GeneratorExpression ? ")" : "]"); return result; }, ComprehensionBlock: function(expr, precedence, flags) { var fragment; if (expr.left.type === Syntax.VariableDeclaration) { fragment = [ expr.left.kind, noEmptySpace(), this.generateStatement(expr.left.declarations[0], S_FFFF) ]; } else { fragment = this.generateExpression(expr.left, Precedence.Call, E_TTT); } fragment = join26(fragment, expr.of ? "of" : "in"); fragment = join26(fragment, this.generateExpression(expr.right, Precedence.Sequence, E_TTT)); return ["for" + space + "(", fragment, ")"]; }, SpreadElement: function(expr, precedence, flags) { return [ "...", this.generateExpression(expr.argument, Precedence.Assignment, E_TTT) ]; }, TaggedTemplateExpression: function(expr, precedence, flags) { var itemFlags = E_TTF; if (!(flags & F_ALLOW_CALL)) { itemFlags = E_TFF; } var result = [ this.generateExpression(expr.tag, Precedence.Call, itemFlags), this.generateExpression(expr.quasi, Precedence.Primary, E_FFT) ]; return parenthesize(result, Precedence.TaggedTemplate, precedence); }, TemplateElement: function(expr, precedence, flags) { return expr.value.raw; }, TemplateLiteral: function(expr, precedence, flags) { var result, i, iz; result = ["`"]; for (i = 0, iz = expr.quasis.length; i < iz; ++i) { result.push(this.generateExpression(expr.quasis[i], Precedence.Primary, E_TTT)); if (i + 1 < iz) { result.push("${" + space); result.push(this.generateExpression(expr.expressions[i], Precedence.Sequence, E_TTT)); result.push(space + "}"); } } result.push("`"); return result; }, ModuleSpecifier: function(expr, precedence, flags) { return this.Literal(expr, precedence, flags); }, ImportExpression: function(expr, precedence, flag) { return parenthesize([ "import(", this.generateExpression(expr.source, Precedence.Assignment, E_TTT), ")" ], Precedence.Call, precedence); } }; merge2(CodeGenerator.prototype, CodeGenerator.Expression); CodeGenerator.prototype.generateExpression = function(expr, precedence, flags) { var result, type; type = expr.type || Syntax.Property; if (extra.verbatim && expr.hasOwnProperty(extra.verbatim)) { return generateVerbatim(expr, precedence); } result = this[type](expr, precedence, flags); if (extra.comment) { result = addComments(expr, result); } return toSourceNodeWhenNeeded(result, expr); }; CodeGenerator.prototype.generateStatement = function(stmt, flags) { var result, fragment; result = this[stmt.type](stmt, flags); if (extra.comment) { result = addComments(stmt, result); } fragment = toSourceNodeWhenNeeded(result).toString(); if (stmt.type === Syntax.Program && !safeConcatenation && newline === "" && fragment.charAt(fragment.length - 1) === "\n") { result = sourceMap ? toSourceNodeWhenNeeded(result).replaceRight(/\s+$/, "") : fragment.replace(/\s+$/, ""); } return toSourceNodeWhenNeeded(result, stmt); }; function generateInternal(node) { var codegen; codegen = new CodeGenerator(); if (isStatement(node)) { return codegen.generateStatement(node, S_TFFF); } if (isExpression(node)) { return codegen.generateExpression(node, Precedence.Sequence, E_TTT); } throw new Error("Unknown node type: " + node.type); } function generate(node, options) { var defaultOptions = getDefaultOptions(), result, pair; if (options != null) { if (typeof options.indent === "string") { defaultOptions.format.indent.style = options.indent; } if (typeof options.base === "number") { defaultOptions.format.indent.base = options.base; } options = updateDeeply(defaultOptions, options); indent = options.format.indent.style; if (typeof options.base === "string") { base = options.base; } else { base = stringRepeat(indent, options.format.indent.base); } } else { options = defaultOptions; indent = options.format.indent.style; base = stringRepeat(indent, options.format.indent.base); } json = options.format.json; renumber = options.format.renumber; hexadecimal = json ? false : options.format.hexadecimal; quotes = json ? "double" : options.format.quotes; escapeless = options.format.escapeless; newline = options.format.newline; space = options.format.space; if (options.format.compact) { newline = space = indent = base = ""; } parentheses = options.format.parentheses; semicolons = options.format.semicolons; safeConcatenation = options.format.safeConcatenation; directive = options.directive; parse11 = json ? null : options.parse; sourceMap = options.sourceMap; sourceCode = options.sourceCode; preserveBlankLines = options.format.preserveBlankLines && sourceCode !== null; extra = options; if (sourceMap) { if (!exports2.browser) { SourceNode = require_source_map().SourceNode; } else { SourceNode = global.sourceMap.SourceNode; } } result = generateInternal(node); if (!sourceMap) { pair = { code: result.toString(), map: null }; return options.sourceMapWithCode ? pair : pair.code; } pair = result.toStringWithSourceMap({ file: options.file, sourceRoot: options.sourceMapRoot }); if (options.sourceContent) { pair.map.setSourceContent( options.sourceMap, options.sourceContent ); } if (options.sourceMapWithCode) { return pair; } return pair.map.toString(); } FORMAT_MINIFY = { indent: { style: "", base: 0 }, renumber: true, hexadecimal: true, quotes: "auto", escapeless: true, compact: true, parentheses: false, semicolons: false }; FORMAT_DEFAULTS = getDefaultOptions().format; exports2.version = require_package2().version; exports2.generate = generate; exports2.attachComments = estraverse.attachComments; exports2.Precedence = updateDeeply({}, Precedence); exports2.browser = false; exports2.FORMAT_MINIFY = FORMAT_MINIFY; exports2.FORMAT_DEFAULTS = FORMAT_DEFAULTS; })(); } }); // ../../node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/dist/esprima.js var require_esprima = __commonJS2({ "../../node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/dist/esprima.js"(exports2, module2) { (function webpackUniversalModuleDefinition(root, factory) { if (typeof exports2 === "object" && typeof module2 === "object") module2.exports = factory(); else if (typeof define === "function" && define.amd) define([], factory); else if (typeof exports2 === "object") exports2["esprima"] = factory(); else root["esprima"] = factory(); })(exports2, function() { return ( /******/ function(modules) { var installedModules = {}; function __webpack_require__(moduleId) { if (installedModules[moduleId]) return installedModules[moduleId].exports; var module3 = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); module3.loaded = true; return module3.exports; } __webpack_require__.m = modules; __webpack_require__.c = installedModules; __webpack_require__.p = ""; return __webpack_require__(0); }([ /* 0 */ /***/ function(module3, exports3, __webpack_require__) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var comment_handler_1 = __webpack_require__(1); var jsx_parser_1 = __webpack_require__(3); var parser_1 = __webpack_require__(8); var tokenizer_1 = __webpack_require__(15); function parse11(code2, options, delegate) { var commentHandler = null; var proxyDelegate = function(node, metadata) { if (delegate) { delegate(node, metadata); } if (commentHandler) { commentHandler.visit(node, metadata); } }; var parserDelegate = typeof delegate === "function" ? proxyDelegate : null; var collectComment = false; if (options) { collectComment = typeof options.comment === "boolean" && options.comment; var attachComment = typeof options.attachComment === "boolean" && options.attachComment; if (collectComment || attachComment) { commentHandler = new comment_handler_1.CommentHandler(); commentHandler.attach = attachComment; options.comment = true; parserDelegate = proxyDelegate; } } var isModule = false; if (options && typeof options.sourceType === "string") { isModule = options.sourceType === "module"; } var parser; if (options && typeof options.jsx === "boolean" && options.jsx) { parser = new jsx_parser_1.JSXParser(code2, options, parserDelegate); } else { parser = new parser_1.Parser(code2, options, parserDelegate); } var program = isModule ? parser.parseModule() : parser.parseScript(); var ast = program; if (collectComment && commentHandler) { ast.comments = commentHandler.comments; } if (parser.config.tokens) { ast.tokens = parser.tokens; } if (parser.config.tolerant) { ast.errors = parser.errorHandler.errors; } return ast; } exports3.parse = parse11; function parseModule(code2, options, delegate) { var parsingOptions = options || {}; parsingOptions.sourceType = "module"; return parse11(code2, parsingOptions, delegate); } exports3.parseModule = parseModule; function parseScript(code2, options, delegate) { var parsingOptions = options || {}; parsingOptions.sourceType = "script"; return parse11(code2, parsingOptions, delegate); } exports3.parseScript = parseScript; function tokenize(code2, options, delegate) { var tokenizer = new tokenizer_1.Tokenizer(code2, options); var tokens; tokens = []; try { while (true) { var token = tokenizer.getNextToken(); if (!token) { break; } if (delegate) { token = delegate(token); } tokens.push(token); } } catch (e2) { tokenizer.errorHandler.tolerate(e2); } if (tokenizer.errorHandler.tolerant) { tokens.errors = tokenizer.errors(); } return tokens; } exports3.tokenize = tokenize; var syntax_1 = __webpack_require__(2); exports3.Syntax = syntax_1.Syntax; exports3.version = "4.0.1"; }, /* 1 */ /***/ function(module3, exports3, __webpack_require__) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var syntax_1 = __webpack_require__(2); var CommentHandler = function() { function CommentHandler2() { this.attach = false; this.comments = []; this.stack = []; this.leading = []; this.trailing = []; } CommentHandler2.prototype.insertInnerComments = function(node, metadata) { if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) { var innerComments = []; for (var i = this.leading.length - 1; i >= 0; --i) { var entry = this.leading[i]; if (metadata.end.offset >= entry.start) { innerComments.unshift(entry.comment); this.leading.splice(i, 1); this.trailing.splice(i, 1); } } if (innerComments.length) { node.innerComments = innerComments; } } }; CommentHandler2.prototype.findTrailingComments = function(metadata) { var trailingComments = []; if (this.trailing.length > 0) { for (var i = this.trailing.length - 1; i >= 0; --i) { var entry_1 = this.trailing[i]; if (entry_1.start >= metadata.end.offset) { trailingComments.unshift(entry_1.comment); } } this.trailing.length = 0; return trailingComments; } var entry = this.stack[this.stack.length - 1]; if (entry && entry.node.trailingComments) { var firstComment = entry.node.trailingComments[0]; if (firstComment && firstComment.range[0] >= metadata.end.offset) { trailingComments = entry.node.trailingComments; delete entry.node.trailingComments; } } return trailingComments; }; CommentHandler2.prototype.findLeadingComments = function(metadata) { var leadingComments = []; var target; while (this.stack.length > 0) { var entry = this.stack[this.stack.length - 1]; if (entry && entry.start >= metadata.start.offset) { target = entry.node; this.stack.pop(); } else { break; } } if (target) { var count = target.leadingComments ? target.leadingComments.length : 0; for (var i = count - 1; i >= 0; --i) { var comment = target.leadingComments[i]; if (comment.range[1] <= metadata.start.offset) { leadingComments.unshift(comment); target.leadingComments.splice(i, 1); } } if (target.leadingComments && target.leadingComments.length === 0) { delete target.leadingComments; } return leadingComments; } for (var i = this.leading.length - 1; i >= 0; --i) { var entry = this.leading[i]; if (entry.start <= metadata.start.offset) { leadingComments.unshift(entry.comment); this.leading.splice(i, 1); } } return leadingComments; }; CommentHandler2.prototype.visitNode = function(node, metadata) { if (node.type === syntax_1.Syntax.Program && node.body.length > 0) { return; } this.insertInnerComments(node, metadata); var trailingComments = this.findTrailingComments(metadata); var leadingComments = this.findLeadingComments(metadata); if (leadingComments.length > 0) { node.leadingComments = leadingComments; } if (trailingComments.length > 0) { node.trailingComments = trailingComments; } this.stack.push({ node, start: metadata.start.offset }); }; CommentHandler2.prototype.visitComment = function(node, metadata) { var type = node.type[0] === "L" ? "Line" : "Block"; var comment = { type, value: node.value }; if (node.range) { comment.range = node.range; } if (node.loc) { comment.loc = node.loc; } this.comments.push(comment); if (this.attach) { var entry = { comment: { type, value: node.value, range: [metadata.start.offset, metadata.end.offset] }, start: metadata.start.offset }; if (node.loc) { entry.comment.loc = node.loc; } node.type = type; this.leading.push(entry); this.trailing.push(entry); } }; CommentHandler2.prototype.visit = function(node, metadata) { if (node.type === "LineComment") { this.visitComment(node, metadata); } else if (node.type === "BlockComment") { this.visitComment(node, metadata); } else if (this.attach) { this.visitNode(node, metadata); } }; return CommentHandler2; }(); exports3.CommentHandler = CommentHandler; }, /* 2 */ /***/ function(module3, exports3) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); exports3.Syntax = { AssignmentExpression: "AssignmentExpression", AssignmentPattern: "AssignmentPattern", ArrayExpression: "ArrayExpression", ArrayPattern: "ArrayPattern", ArrowFunctionExpression: "ArrowFunctionExpression", AwaitExpression: "AwaitExpression", BlockStatement: "BlockStatement", BinaryExpression: "BinaryExpression", BreakStatement: "BreakStatement", CallExpression: "CallExpression", CatchClause: "CatchClause", ClassBody: "ClassBody", ClassDeclaration: "ClassDeclaration", ClassExpression: "ClassExpression", ConditionalExpression: "ConditionalExpression", ContinueStatement: "ContinueStatement", DoWhileStatement: "DoWhileStatement", DebuggerStatement: "DebuggerStatement", EmptyStatement: "EmptyStatement", ExportAllDeclaration: "ExportAllDeclaration", ExportDefaultDeclaration: "ExportDefaultDeclaration", ExportNamedDeclaration: "ExportNamedDeclaration", ExportSpecifier: "ExportSpecifier", ExpressionStatement: "ExpressionStatement", ForStatement: "ForStatement", ForOfStatement: "ForOfStatement", ForInStatement: "ForInStatement", FunctionDeclaration: "FunctionDeclaration", FunctionExpression: "FunctionExpression", Identifier: "Identifier", IfStatement: "IfStatement", ImportDeclaration: "ImportDeclaration", ImportDefaultSpecifier: "ImportDefaultSpecifier", ImportNamespaceSpecifier: "ImportNamespaceSpecifier", ImportSpecifier: "ImportSpecifier", Literal: "Literal", LabeledStatement: "LabeledStatement", LogicalExpression: "LogicalExpression", MemberExpression: "MemberExpression", MetaProperty: "MetaProperty", MethodDefinition: "MethodDefinition", NewExpression: "NewExpression", ObjectExpression: "ObjectExpression", ObjectPattern: "ObjectPattern", Program: "Program", Property: "Property", RestElement: "RestElement", ReturnStatement: "ReturnStatement", SequenceExpression: "SequenceExpression", SpreadElement: "SpreadElement", Super: "Super", SwitchCase: "SwitchCase", SwitchStatement: "SwitchStatement", TaggedTemplateExpression: "TaggedTemplateExpression", TemplateElement: "TemplateElement", TemplateLiteral: "TemplateLiteral", ThisExpression: "ThisExpression", ThrowStatement: "ThrowStatement", TryStatement: "TryStatement", UnaryExpression: "UnaryExpression", UpdateExpression: "UpdateExpression", VariableDeclaration: "VariableDeclaration", VariableDeclarator: "VariableDeclarator", WhileStatement: "WhileStatement", WithStatement: "WithStatement", YieldExpression: "YieldExpression" }; }, /* 3 */ /***/ function(module3, exports3, __webpack_require__) { "use strict"; var __extends2 = this && this.__extends || function() { var extendStatics2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d, b) { d.__proto__ = b; } || function(d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function(d, b) { extendStatics2(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports3, "__esModule", { value: true }); var character_1 = __webpack_require__(4); var JSXNode = __webpack_require__(5); var jsx_syntax_1 = __webpack_require__(6); var Node = __webpack_require__(7); var parser_1 = __webpack_require__(8); var token_1 = __webpack_require__(13); var xhtml_entities_1 = __webpack_require__(14); token_1.TokenName[ 100 /* Identifier */ ] = "JSXIdentifier"; token_1.TokenName[ 101 /* Text */ ] = "JSXText"; function getQualifiedElementName(elementName) { var qualifiedName; switch (elementName.type) { case jsx_syntax_1.JSXSyntax.JSXIdentifier: var id = elementName; qualifiedName = id.name; break; case jsx_syntax_1.JSXSyntax.JSXNamespacedName: var ns = elementName; qualifiedName = getQualifiedElementName(ns.namespace) + ":" + getQualifiedElementName(ns.name); break; case jsx_syntax_1.JSXSyntax.JSXMemberExpression: var expr = elementName; qualifiedName = getQualifiedElementName(expr.object) + "." + getQualifiedElementName(expr.property); break; default: break; } return qualifiedName; } var JSXParser = function(_super) { __extends2(JSXParser2, _super); function JSXParser2(code2, options, delegate) { return _super.call(this, code2, options, delegate) || this; } JSXParser2.prototype.parsePrimaryExpression = function() { return this.match("<") ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this); }; JSXParser2.prototype.startJSX = function() { this.scanner.index = this.startMarker.index; this.scanner.lineNumber = this.startMarker.line; this.scanner.lineStart = this.startMarker.index - this.startMarker.column; }; JSXParser2.prototype.finishJSX = function() { this.nextToken(); }; JSXParser2.prototype.reenterJSX = function() { this.startJSX(); this.expectJSX("}"); if (this.config.tokens) { this.tokens.pop(); } }; JSXParser2.prototype.createJSXNode = function() { this.collectComments(); return { index: this.scanner.index, line: this.scanner.lineNumber, column: this.scanner.index - this.scanner.lineStart }; }; JSXParser2.prototype.createJSXChildNode = function() { return { index: this.scanner.index, line: this.scanner.lineNumber, column: this.scanner.index - this.scanner.lineStart }; }; JSXParser2.prototype.scanXHTMLEntity = function(quote) { var result = "&"; var valid = true; var terminated = false; var numeric = false; var hex = false; while (!this.scanner.eof() && valid && !terminated) { var ch = this.scanner.source[this.scanner.index]; if (ch === quote) { break; } terminated = ch === ";"; result += ch; ++this.scanner.index; if (!terminated) { switch (result.length) { case 2: numeric = ch === "#"; break; case 3: if (numeric) { hex = ch === "x"; valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0)); numeric = numeric && !hex; } break; default: valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0))); valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0))); break; } } } if (valid && terminated && result.length > 2) { var str = result.substr(1, result.length - 2); if (numeric && str.length > 1) { result = String.fromCharCode(parseInt(str.substr(1), 10)); } else if (hex && str.length > 2) { result = String.fromCharCode(parseInt("0" + str.substr(1), 16)); } else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) { result = xhtml_entities_1.XHTMLEntities[str]; } } return result; }; JSXParser2.prototype.lexJSX = function() { var cp = this.scanner.source.charCodeAt(this.scanner.index); if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) { var value = this.scanner.source[this.scanner.index++]; return { type: 7, value, lineNumber: this.scanner.lineNumber, lineStart: this.scanner.lineStart, start: this.scanner.index - 1, end: this.scanner.index }; } if (cp === 34 || cp === 39) { var start = this.scanner.index; var quote = this.scanner.source[this.scanner.index++]; var str = ""; while (!this.scanner.eof()) { var ch = this.scanner.source[this.scanner.index++]; if (ch === quote) { break; } else if (ch === "&") { str += this.scanXHTMLEntity(quote); } else { str += ch; } } return { type: 8, value: str, lineNumber: this.scanner.lineNumber, lineStart: this.scanner.lineStart, start, end: this.scanner.index }; } if (cp === 46) { var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1); var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2); var value = n1 === 46 && n2 === 46 ? "..." : "."; var start = this.scanner.index; this.scanner.index += value.length; return { type: 7, value, lineNumber: this.scanner.lineNumber, lineStart: this.scanner.lineStart, start, end: this.scanner.index }; } if (cp === 96) { return { type: 10, value: "", lineNumber: this.scanner.lineNumber, lineStart: this.scanner.lineStart, start: this.scanner.index, end: this.scanner.index }; } if (character_1.Character.isIdentifierStart(cp) && cp !== 92) { var start = this.scanner.index; ++this.scanner.index; while (!this.scanner.eof()) { var ch = this.scanner.source.charCodeAt(this.scanner.index); if (character_1.Character.isIdentifierPart(ch) && ch !== 92) { ++this.scanner.index; } else if (ch === 45) { ++this.scanner.index; } else { break; } } var id = this.scanner.source.slice(start, this.scanner.index); return { type: 100, value: id, lineNumber: this.scanner.lineNumber, lineStart: this.scanner.lineStart, start, end: this.scanner.index }; } return this.scanner.lex(); }; JSXParser2.prototype.nextJSXToken = function() { this.collectComments(); this.startMarker.index = this.scanner.index; this.startMarker.line = this.scanner.lineNumber; this.startMarker.column = this.scanner.index - this.scanner.lineStart; var token = this.lexJSX(); this.lastMarker.index = this.scanner.index; this.lastMarker.line = this.scanner.lineNumber; this.lastMarker.column = this.scanner.index - this.scanner.lineStart; if (this.config.tokens) { this.tokens.push(this.convertToken(token)); } return token; }; JSXParser2.prototype.nextJSXText = function() { this.startMarker.index = this.scanner.index; this.startMarker.line = this.scanner.lineNumber; this.startMarker.column = this.scanner.index - this.scanner.lineStart; var start = this.scanner.index; var text = ""; while (!this.scanner.eof()) { var ch = this.scanner.source[this.scanner.index]; if (ch === "{" || ch === "<") { break; } ++this.scanner.index; text += ch; if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) { ++this.scanner.lineNumber; if (ch === "\r" && this.scanner.source[this.scanner.index] === "\n") { ++this.scanner.index; } this.scanner.lineStart = this.scanner.index; } } this.lastMarker.index = this.scanner.index; this.lastMarker.line = this.scanner.lineNumber; this.lastMarker.column = this.scanner.index - this.scanner.lineStart; var token = { type: 101, value: text, lineNumber: this.scanner.lineNumber, lineStart: this.scanner.lineStart, start, end: this.scanner.index }; if (text.length > 0 && this.config.tokens) { this.tokens.push(this.convertToken(token)); } return token; }; JSXParser2.prototype.peekJSXToken = function() { var state = this.scanner.saveState(); this.scanner.scanComments(); var next = this.lexJSX(); this.scanner.restoreState(state); return next; }; JSXParser2.prototype.expectJSX = function(value) { var token = this.nextJSXToken(); if (token.type !== 7 || token.value !== value) { this.throwUnexpectedToken(token); } }; JSXParser2.prototype.matchJSX = function(value) { var next = this.peekJSXToken(); return next.type === 7 && next.value === value; }; JSXParser2.prototype.parseJSXIdentifier = function() { var node = this.createJSXNode(); var token = this.nextJSXToken(); if (token.type !== 100) { this.throwUnexpectedToken(token); } return this.finalize(node, new JSXNode.JSXIdentifier(token.value)); }; JSXParser2.prototype.parseJSXElementName = function() { var node = this.createJSXNode(); var elementName = this.parseJSXIdentifier(); if (this.matchJSX(":")) { var namespace = elementName; this.expectJSX(":"); var name_1 = this.parseJSXIdentifier(); elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1)); } else if (this.matchJSX(".")) { while (this.matchJSX(".")) { var object = elementName; this.expectJSX("."); var property = this.parseJSXIdentifier(); elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property)); } } return elementName; }; JSXParser2.prototype.parseJSXAttributeName = function() { var node = this.createJSXNode(); var attributeName; var identifier = this.parseJSXIdentifier(); if (this.matchJSX(":")) { var namespace = identifier; this.expectJSX(":"); var name_2 = this.parseJSXIdentifier(); attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2)); } else { attributeName = identifier; } return attributeName; }; JSXParser2.prototype.parseJSXStringLiteralAttribute = function() { var node = this.createJSXNode(); var token = this.nextJSXToken(); if (token.type !== 8) { this.throwUnexpectedToken(token); } var raw = this.getTokenRaw(token); return this.finalize(node, new Node.Literal(token.value, raw)); }; JSXParser2.prototype.parseJSXExpressionAttribute = function() { var node = this.createJSXNode(); this.expectJSX("{"); this.finishJSX(); if (this.match("}")) { this.tolerateError("JSX attributes must only be assigned a non-empty expression"); } var expression = this.parseAssignmentExpression(); this.reenterJSX(); return this.finalize(node, new JSXNode.JSXExpressionContainer(expression)); }; JSXParser2.prototype.parseJSXAttributeValue = function() { return this.matchJSX("{") ? this.parseJSXExpressionAttribute() : this.matchJSX("<") ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute(); }; JSXParser2.prototype.parseJSXNameValueAttribute = function() { var node = this.createJSXNode(); var name = this.parseJSXAttributeName(); var value = null; if (this.matchJSX("=")) { this.expectJSX("="); value = this.parseJSXAttributeValue(); } return this.finalize(node, new JSXNode.JSXAttribute(name, value)); }; JSXParser2.prototype.parseJSXSpreadAttribute = function() { var node = this.createJSXNode(); this.expectJSX("{"); this.expectJSX("..."); this.finishJSX(); var argument = this.parseAssignmentExpression(); this.reenterJSX(); return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument)); }; JSXParser2.prototype.parseJSXAttributes = function() { var attributes = []; while (!this.matchJSX("/") && !this.matchJSX(">")) { var attribute = this.matchJSX("{") ? this.parseJSXSpreadAttribute() : this.parseJSXNameValueAttribute(); attributes.push(attribute); } return attributes; }; JSXParser2.prototype.parseJSXOpeningElement = function() { var node = this.createJSXNode(); this.expectJSX("<"); var name = this.parseJSXElementName(); var attributes = this.parseJSXAttributes(); var selfClosing = this.matchJSX("/"); if (selfClosing) { this.expectJSX("/"); } this.expectJSX(">"); return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes)); }; JSXParser2.prototype.parseJSXBoundaryElement = function() { var node = this.createJSXNode(); this.expectJSX("<"); if (this.matchJSX("/")) { this.expectJSX("/"); var name_3 = this.parseJSXElementName(); this.expectJSX(">"); return this.finalize(node, new JSXNode.JSXClosingElement(name_3)); } var name = this.parseJSXElementName(); var attributes = this.parseJSXAttributes(); var selfClosing = this.matchJSX("/"); if (selfClosing) { this.expectJSX("/"); } this.expectJSX(">"); return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes)); }; JSXParser2.prototype.parseJSXEmptyExpression = function() { var node = this.createJSXChildNode(); this.collectComments(); this.lastMarker.index = this.scanner.index; this.lastMarker.line = this.scanner.lineNumber; this.lastMarker.column = this.scanner.index - this.scanner.lineStart; return this.finalize(node, new JSXNode.JSXEmptyExpression()); }; JSXParser2.prototype.parseJSXExpressionContainer = function() { var node = this.createJSXNode(); this.expectJSX("{"); var expression; if (this.matchJSX("}")) { expression = this.parseJSXEmptyExpression(); this.expectJSX("}"); } else { this.finishJSX(); expression = this.parseAssignmentExpression(); this.reenterJSX(); } return this.finalize(node, new JSXNode.JSXExpressionContainer(expression)); }; JSXParser2.prototype.parseJSXChildren = function() { var children = []; while (!this.scanner.eof()) { var node = this.createJSXChildNode(); var token = this.nextJSXText(); if (token.start < token.end) { var raw = this.getTokenRaw(token); var child = this.finalize(node, new JSXNode.JSXText(token.value, raw)); children.push(child); } if (this.scanner.source[this.scanner.index] === "{") { var container = this.parseJSXExpressionContainer(); children.push(container); } else { break; } } return children; }; JSXParser2.prototype.parseComplexJSXElement = function(el) { var stack2 = []; while (!this.scanner.eof()) { el.children = el.children.concat(this.parseJSXChildren()); var node = this.createJSXChildNode(); var element = this.parseJSXBoundaryElement(); if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) { var opening = element; if (opening.selfClosing) { var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null)); el.children.push(child); } else { stack2.push(el); el = { node, opening, closing: null, children: [] }; } } if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) { el.closing = element; var open_1 = getQualifiedElementName(el.opening.name); var close_1 = getQualifiedElementName(el.closing.name); if (open_1 !== close_1) { this.tolerateError("Expected corresponding JSX closing tag for %0", open_1); } if (stack2.length > 0) { var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing)); el = stack2[stack2.length - 1]; el.children.push(child); stack2.pop(); } else { break; } } } return el; }; JSXParser2.prototype.parseJSXElement = function() { var node = this.createJSXNode(); var opening = this.parseJSXOpeningElement(); var children = []; var closing = null; if (!opening.selfClosing) { var el = this.parseComplexJSXElement({ node, opening, closing, children }); children = el.children; closing = el.closing; } return this.finalize(node, new JSXNode.JSXElement(opening, children, closing)); }; JSXParser2.prototype.parseJSXRoot = function() { if (this.config.tokens) { this.tokens.pop(); } this.startJSX(); var element = this.parseJSXElement(); this.finishJSX(); return element; }; JSXParser2.prototype.isStartOfExpression = function() { return _super.prototype.isStartOfExpression.call(this) || this.match("<"); }; return JSXParser2; }(parser_1.Parser); exports3.JSXParser = JSXParser; }, /* 4 */ /***/ function(module3, exports3) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var Regex = { // Unicode v8.0.0 NonAsciiIdentifierStart: NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, // Unicode v8.0.0 NonAsciiIdentifierPart: NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ }; exports3.Character = { /* tslint:disable:no-bitwise */ fromCodePoint: function(cp) { return cp < 65536 ? String.fromCharCode(cp) : String.fromCharCode(55296 + (cp - 65536 >> 10)) + String.fromCharCode(56320 + (cp - 65536 & 1023)); }, // https://tc39.github.io/ecma262/#sec-white-space isWhiteSpace: function(cp) { return cp === 32 || cp === 9 || cp === 11 || cp === 12 || cp === 160 || cp >= 5760 && [5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279].indexOf(cp) >= 0; }, // https://tc39.github.io/ecma262/#sec-line-terminators isLineTerminator: function(cp) { return cp === 10 || cp === 13 || cp === 8232 || cp === 8233; }, // https://tc39.github.io/ecma262/#sec-names-and-keywords isIdentifierStart: function(cp) { return cp === 36 || cp === 95 || cp >= 65 && cp <= 90 || cp >= 97 && cp <= 122 || cp === 92 || cp >= 128 && Regex.NonAsciiIdentifierStart.test(exports3.Character.fromCodePoint(cp)); }, isIdentifierPart: function(cp) { return cp === 36 || cp === 95 || cp >= 65 && cp <= 90 || cp >= 97 && cp <= 122 || cp >= 48 && cp <= 57 || cp === 92 || cp >= 128 && Regex.NonAsciiIdentifierPart.test(exports3.Character.fromCodePoint(cp)); }, // https://tc39.github.io/ecma262/#sec-literals-numeric-literals isDecimalDigit: function(cp) { return cp >= 48 && cp <= 57; }, isHexDigit: function(cp) { return cp >= 48 && cp <= 57 || cp >= 65 && cp <= 70 || cp >= 97 && cp <= 102; }, isOctalDigit: function(cp) { return cp >= 48 && cp <= 55; } }; }, /* 5 */ /***/ function(module3, exports3, __webpack_require__) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var jsx_syntax_1 = __webpack_require__(6); var JSXClosingElement = function() { function JSXClosingElement2(name) { this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement; this.name = name; } return JSXClosingElement2; }(); exports3.JSXClosingElement = JSXClosingElement; var JSXElement = function() { function JSXElement2(openingElement, children, closingElement) { this.type = jsx_syntax_1.JSXSyntax.JSXElement; this.openingElement = openingElement; this.children = children; this.closingElement = closingElement; } return JSXElement2; }(); exports3.JSXElement = JSXElement; var JSXEmptyExpression = function() { function JSXEmptyExpression2() { this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression; } return JSXEmptyExpression2; }(); exports3.JSXEmptyExpression = JSXEmptyExpression; var JSXExpressionContainer = function() { function JSXExpressionContainer2(expression) { this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer; this.expression = expression; } return JSXExpressionContainer2; }(); exports3.JSXExpressionContainer = JSXExpressionContainer; var JSXIdentifier = function() { function JSXIdentifier2(name) { this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier; this.name = name; } return JSXIdentifier2; }(); exports3.JSXIdentifier = JSXIdentifier; var JSXMemberExpression = function() { function JSXMemberExpression2(object, property) { this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression; this.object = object; this.property = property; } return JSXMemberExpression2; }(); exports3.JSXMemberExpression = JSXMemberExpression; var JSXAttribute = function() { function JSXAttribute2(name, value) { this.type = jsx_syntax_1.JSXSyntax.JSXAttribute; this.name = name; this.value = value; } return JSXAttribute2; }(); exports3.JSXAttribute = JSXAttribute; var JSXNamespacedName = function() { function JSXNamespacedName2(namespace, name) { this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName; this.namespace = namespace; this.name = name; } return JSXNamespacedName2; }(); exports3.JSXNamespacedName = JSXNamespacedName; var JSXOpeningElement = function() { function JSXOpeningElement2(name, selfClosing, attributes) { this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement; this.name = name; this.selfClosing = selfClosing; this.attributes = attributes; } return JSXOpeningElement2; }(); exports3.JSXOpeningElement = JSXOpeningElement; var JSXSpreadAttribute = function() { function JSXSpreadAttribute2(argument) { this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute; this.argument = argument; } return JSXSpreadAttribute2; }(); exports3.JSXSpreadAttribute = JSXSpreadAttribute; var JSXText = function() { function JSXText2(value, raw) { this.type = jsx_syntax_1.JSXSyntax.JSXText; this.value = value; this.raw = raw; } return JSXText2; }(); exports3.JSXText = JSXText; }, /* 6 */ /***/ function(module3, exports3) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); exports3.JSXSyntax = { JSXAttribute: "JSXAttribute", JSXClosingElement: "JSXClosingElement", JSXElement: "JSXElement", JSXEmptyExpression: "JSXEmptyExpression", JSXExpressionContainer: "JSXExpressionContainer", JSXIdentifier: "JSXIdentifier", JSXMemberExpression: "JSXMemberExpression", JSXNamespacedName: "JSXNamespacedName", JSXOpeningElement: "JSXOpeningElement", JSXSpreadAttribute: "JSXSpreadAttribute", JSXText: "JSXText" }; }, /* 7 */ /***/ function(module3, exports3, __webpack_require__) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var syntax_1 = __webpack_require__(2); var ArrayExpression = function() { function ArrayExpression2(elements) { this.type = syntax_1.Syntax.ArrayExpression; this.elements = elements; } return ArrayExpression2; }(); exports3.ArrayExpression = ArrayExpression; var ArrayPattern = function() { function ArrayPattern2(elements) { this.type = syntax_1.Syntax.ArrayPattern; this.elements = elements; } return ArrayPattern2; }(); exports3.ArrayPattern = ArrayPattern; var ArrowFunctionExpression = function() { function ArrowFunctionExpression2(params2, body, expression) { this.type = syntax_1.Syntax.ArrowFunctionExpression; this.id = null; this.params = params2; this.body = body; this.generator = false; this.expression = expression; this.async = false; } return ArrowFunctionExpression2; }(); exports3.ArrowFunctionExpression = ArrowFunctionExpression; var AssignmentExpression = function() { function AssignmentExpression2(operator, left, right) { this.type = syntax_1.Syntax.AssignmentExpression; this.operator = operator; this.left = left; this.right = right; } return AssignmentExpression2; }(); exports3.AssignmentExpression = AssignmentExpression; var AssignmentPattern = function() { function AssignmentPattern2(left, right) { this.type = syntax_1.Syntax.AssignmentPattern; this.left = left; this.right = right; } return AssignmentPattern2; }(); exports3.AssignmentPattern = AssignmentPattern; var AsyncArrowFunctionExpression = function() { function AsyncArrowFunctionExpression2(params2, body, expression) { this.type = syntax_1.Syntax.ArrowFunctionExpression; this.id = null; this.params = params2; this.body = body; this.generator = false; this.expression = expression; this.async = true; } return AsyncArrowFunctionExpression2; }(); exports3.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression; var AsyncFunctionDeclaration = function() { function AsyncFunctionDeclaration2(id, params2, body) { this.type = syntax_1.Syntax.FunctionDeclaration; this.id = id; this.params = params2; this.body = body; this.generator = false; this.expression = false; this.async = true; } return AsyncFunctionDeclaration2; }(); exports3.AsyncFunctionDeclaration = AsyncFunctionDeclaration; var AsyncFunctionExpression = function() { function AsyncFunctionExpression2(id, params2, body) { this.type = syntax_1.Syntax.FunctionExpression; this.id = id; this.params = params2; this.body = body; this.generator = false; this.expression = false; this.async = true; } return AsyncFunctionExpression2; }(); exports3.AsyncFunctionExpression = AsyncFunctionExpression; var AwaitExpression = function() { function AwaitExpression2(argument) { this.type = syntax_1.Syntax.AwaitExpression; this.argument = argument; } return AwaitExpression2; }(); exports3.AwaitExpression = AwaitExpression; var BinaryExpression = function() { function BinaryExpression2(operator, left, right) { var logical = operator === "||" || operator === "&&"; this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression; this.operator = operator; this.left = left; this.right = right; } return BinaryExpression2; }(); exports3.BinaryExpression = BinaryExpression; var BlockStatement = function() { function BlockStatement2(body) { this.type = syntax_1.Syntax.BlockStatement; this.body = body; } return BlockStatement2; }(); exports3.BlockStatement = BlockStatement; var BreakStatement = function() { function BreakStatement2(label) { this.type = syntax_1.Syntax.BreakStatement; this.label = label; } return BreakStatement2; }(); exports3.BreakStatement = BreakStatement; var CallExpression = function() { function CallExpression2(callee, args2) { this.type = syntax_1.Syntax.CallExpression; this.callee = callee; this.arguments = args2; } return CallExpression2; }(); exports3.CallExpression = CallExpression; var CatchClause = function() { function CatchClause2(param2, body) { this.type = syntax_1.Syntax.CatchClause; this.param = param2; this.body = body; } return CatchClause2; }(); exports3.CatchClause = CatchClause; var ClassBody = function() { function ClassBody2(body) { this.type = syntax_1.Syntax.ClassBody; this.body = body; } return ClassBody2; }(); exports3.ClassBody = ClassBody; var ClassDeclaration = function() { function ClassDeclaration2(id, superClass, body) { this.type = syntax_1.Syntax.ClassDeclaration; this.id = id; this.superClass = superClass; this.body = body; } return ClassDeclaration2; }(); exports3.ClassDeclaration = ClassDeclaration; var ClassExpression = function() { function ClassExpression2(id, superClass, body) { this.type = syntax_1.Syntax.ClassExpression; this.id = id; this.superClass = superClass; this.body = body; } return ClassExpression2; }(); exports3.ClassExpression = ClassExpression; var ComputedMemberExpression = function() { function ComputedMemberExpression2(object, property) { this.type = syntax_1.Syntax.MemberExpression; this.computed = true; this.object = object; this.property = property; } return ComputedMemberExpression2; }(); exports3.ComputedMemberExpression = ComputedMemberExpression; var ConditionalExpression = function() { function ConditionalExpression2(test, consequent, alternate) { this.type = syntax_1.Syntax.ConditionalExpression; this.test = test; this.consequent = consequent; this.alternate = alternate; } return ConditionalExpression2; }(); exports3.ConditionalExpression = ConditionalExpression; var ContinueStatement = function() { function ContinueStatement2(label) { this.type = syntax_1.Syntax.ContinueStatement; this.label = label; } return ContinueStatement2; }(); exports3.ContinueStatement = ContinueStatement; var DebuggerStatement = function() { function DebuggerStatement2() { this.type = syntax_1.Syntax.DebuggerStatement; } return DebuggerStatement2; }(); exports3.DebuggerStatement = DebuggerStatement; var Directive = function() { function Directive2(expression, directive) { this.type = syntax_1.Syntax.ExpressionStatement; this.expression = expression; this.directive = directive; } return Directive2; }(); exports3.Directive = Directive; var DoWhileStatement = function() { function DoWhileStatement2(body, test) { this.type = syntax_1.Syntax.DoWhileStatement; this.body = body; this.test = test; } return DoWhileStatement2; }(); exports3.DoWhileStatement = DoWhileStatement; var EmptyStatement = function() { function EmptyStatement2() { this.type = syntax_1.Syntax.EmptyStatement; } return EmptyStatement2; }(); exports3.EmptyStatement = EmptyStatement; var ExportAllDeclaration = function() { function ExportAllDeclaration2(source) { this.type = syntax_1.Syntax.ExportAllDeclaration; this.source = source; } return ExportAllDeclaration2; }(); exports3.ExportAllDeclaration = ExportAllDeclaration; var ExportDefaultDeclaration = function() { function ExportDefaultDeclaration2(declaration) { this.type = syntax_1.Syntax.ExportDefaultDeclaration; this.declaration = declaration; } return ExportDefaultDeclaration2; }(); exports3.ExportDefaultDeclaration = ExportDefaultDeclaration; var ExportNamedDeclaration = function() { function ExportNamedDeclaration2(declaration, specifiers, source) { this.type = syntax_1.Syntax.ExportNamedDeclaration; this.declaration = declaration; this.specifiers = specifiers; this.source = source; } return ExportNamedDeclaration2; }(); exports3.ExportNamedDeclaration = ExportNamedDeclaration; var ExportSpecifier = function() { function ExportSpecifier2(local, exported) { this.type = syntax_1.Syntax.ExportSpecifier; this.exported = exported; this.local = local; } return ExportSpecifier2; }(); exports3.ExportSpecifier = ExportSpecifier; var ExpressionStatement = function() { function ExpressionStatement2(expression) { this.type = syntax_1.Syntax.ExpressionStatement; this.expression = expression; } return ExpressionStatement2; }(); exports3.ExpressionStatement = ExpressionStatement; var ForInStatement = function() { function ForInStatement2(left, right, body) { this.type = syntax_1.Syntax.ForInStatement; this.left = left; this.right = right; this.body = body; this.each = false; } return ForInStatement2; }(); exports3.ForInStatement = ForInStatement; var ForOfStatement = function() { function ForOfStatement2(left, right, body) { this.type = syntax_1.Syntax.ForOfStatement; this.left = left; this.right = right; this.body = body; } return ForOfStatement2; }(); exports3.ForOfStatement = ForOfStatement; var ForStatement = function() { function ForStatement2(init2, test, update2, body) { this.type = syntax_1.Syntax.ForStatement; this.init = init2; this.test = test; this.update = update2; this.body = body; } return ForStatement2; }(); exports3.ForStatement = ForStatement; var FunctionDeclaration = function() { function FunctionDeclaration2(id, params2, body, generator) { this.type = syntax_1.Syntax.FunctionDeclaration; this.id = id; this.params = params2; this.body = body; this.generator = generator; this.expression = false; this.async = false; } return FunctionDeclaration2; }(); exports3.FunctionDeclaration = FunctionDeclaration; var FunctionExpression = function() { function FunctionExpression2(id, params2, body, generator) { this.type = syntax_1.Syntax.FunctionExpression; this.id = id; this.params = params2; this.body = body; this.generator = generator; this.expression = false; this.async = false; } return FunctionExpression2; }(); exports3.FunctionExpression = FunctionExpression; var Identifier = function() { function Identifier2(name) { this.type = syntax_1.Syntax.Identifier; this.name = name; } return Identifier2; }(); exports3.Identifier = Identifier; var IfStatement = function() { function IfStatement2(test, consequent, alternate) { this.type = syntax_1.Syntax.IfStatement; this.test = test; this.consequent = consequent; this.alternate = alternate; } return IfStatement2; }(); exports3.IfStatement = IfStatement; var ImportDeclaration = function() { function ImportDeclaration2(specifiers, source) { this.type = syntax_1.Syntax.ImportDeclaration; this.specifiers = specifiers; this.source = source; } return ImportDeclaration2; }(); exports3.ImportDeclaration = ImportDeclaration; var ImportDefaultSpecifier = function() { function ImportDefaultSpecifier2(local) { this.type = syntax_1.Syntax.ImportDefaultSpecifier; this.local = local; } return ImportDefaultSpecifier2; }(); exports3.ImportDefaultSpecifier = ImportDefaultSpecifier; var ImportNamespaceSpecifier = function() { function ImportNamespaceSpecifier2(local) { this.type = syntax_1.Syntax.ImportNamespaceSpecifier; this.local = local; } return ImportNamespaceSpecifier2; }(); exports3.ImportNamespaceSpecifier = ImportNamespaceSpecifier; var ImportSpecifier = function() { function ImportSpecifier2(local, imported) { this.type = syntax_1.Syntax.ImportSpecifier; this.local = local; this.imported = imported; } return ImportSpecifier2; }(); exports3.ImportSpecifier = ImportSpecifier; var LabeledStatement = function() { function LabeledStatement2(label, body) { this.type = syntax_1.Syntax.LabeledStatement; this.label = label; this.body = body; } return LabeledStatement2; }(); exports3.LabeledStatement = LabeledStatement; var Literal = function() { function Literal2(value, raw) { this.type = syntax_1.Syntax.Literal; this.value = value; this.raw = raw; } return Literal2; }(); exports3.Literal = Literal; var MetaProperty = function() { function MetaProperty2(meta, property) { this.type = syntax_1.Syntax.MetaProperty; this.meta = meta; this.property = property; } return MetaProperty2; }(); exports3.MetaProperty = MetaProperty; var MethodDefinition = function() { function MethodDefinition2(key, computed, value, kind, isStatic) { this.type = syntax_1.Syntax.MethodDefinition; this.key = key; this.computed = computed; this.value = value; this.kind = kind; this.static = isStatic; } return MethodDefinition2; }(); exports3.MethodDefinition = MethodDefinition; var Module = function() { function Module2(body) { this.type = syntax_1.Syntax.Program; this.body = body; this.sourceType = "module"; } return Module2; }(); exports3.Module = Module; var NewExpression = function() { function NewExpression2(callee, args2) { this.type = syntax_1.Syntax.NewExpression; this.callee = callee; this.arguments = args2; } return NewExpression2; }(); exports3.NewExpression = NewExpression; var ObjectExpression = function() { function ObjectExpression2(properties) { this.type = syntax_1.Syntax.ObjectExpression; this.properties = properties; } return ObjectExpression2; }(); exports3.ObjectExpression = ObjectExpression; var ObjectPattern = function() { function ObjectPattern2(properties) { this.type = syntax_1.Syntax.ObjectPattern; this.properties = properties; } return ObjectPattern2; }(); exports3.ObjectPattern = ObjectPattern; var Property = function() { function Property2(kind, key, computed, value, method, shorthand) { this.type = syntax_1.Syntax.Property; this.key = key; this.computed = computed; this.value = value; this.kind = kind; this.method = method; this.shorthand = shorthand; } return Property2; }(); exports3.Property = Property; var RegexLiteral = function() { function RegexLiteral2(value, raw, pattern, flags) { this.type = syntax_1.Syntax.Literal; this.value = value; this.raw = raw; this.regex = { pattern, flags }; } return RegexLiteral2; }(); exports3.RegexLiteral = RegexLiteral; var RestElement = function() { function RestElement2(argument) { this.type = syntax_1.Syntax.RestElement; this.argument = argument; } return RestElement2; }(); exports3.RestElement = RestElement; var ReturnStatement = function() { function ReturnStatement2(argument) { this.type = syntax_1.Syntax.ReturnStatement; this.argument = argument; } return ReturnStatement2; }(); exports3.ReturnStatement = ReturnStatement; var Script = function() { function Script2(body) { this.type = syntax_1.Syntax.Program; this.body = body; this.sourceType = "script"; } return Script2; }(); exports3.Script = Script; var SequenceExpression = function() { function SequenceExpression2(expressions) { this.type = syntax_1.Syntax.SequenceExpression; this.expressions = expressions; } return SequenceExpression2; }(); exports3.SequenceExpression = SequenceExpression; var SpreadElement = function() { function SpreadElement2(argument) { this.type = syntax_1.Syntax.SpreadElement; this.argument = argument; } return SpreadElement2; }(); exports3.SpreadElement = SpreadElement; var StaticMemberExpression = function() { function StaticMemberExpression2(object, property) { this.type = syntax_1.Syntax.MemberExpression; this.computed = false; this.object = object; this.property = property; } return StaticMemberExpression2; }(); exports3.StaticMemberExpression = StaticMemberExpression; var Super = function() { function Super2() { this.type = syntax_1.Syntax.Super; } return Super2; }(); exports3.Super = Super; var SwitchCase = function() { function SwitchCase2(test, consequent) { this.type = syntax_1.Syntax.SwitchCase; this.test = test; this.consequent = consequent; } return SwitchCase2; }(); exports3.SwitchCase = SwitchCase; var SwitchStatement = function() { function SwitchStatement2(discriminant, cases) { this.type = syntax_1.Syntax.SwitchStatement; this.discriminant = discriminant; this.cases = cases; } return SwitchStatement2; }(); exports3.SwitchStatement = SwitchStatement; var TaggedTemplateExpression = function() { function TaggedTemplateExpression2(tag, quasi) { this.type = syntax_1.Syntax.TaggedTemplateExpression; this.tag = tag; this.quasi = quasi; } return TaggedTemplateExpression2; }(); exports3.TaggedTemplateExpression = TaggedTemplateExpression; var TemplateElement = function() { function TemplateElement2(value, tail) { this.type = syntax_1.Syntax.TemplateElement; this.value = value; this.tail = tail; } return TemplateElement2; }(); exports3.TemplateElement = TemplateElement; var TemplateLiteral = function() { function TemplateLiteral2(quasis, expressions) { this.type = syntax_1.Syntax.TemplateLiteral; this.quasis = quasis; this.expressions = expressions; } return TemplateLiteral2; }(); exports3.TemplateLiteral = TemplateLiteral; var ThisExpression = function() { function ThisExpression2() { this.type = syntax_1.Syntax.ThisExpression; } return ThisExpression2; }(); exports3.ThisExpression = ThisExpression; var ThrowStatement = function() { function ThrowStatement2(argument) { this.type = syntax_1.Syntax.ThrowStatement; this.argument = argument; } return ThrowStatement2; }(); exports3.ThrowStatement = ThrowStatement; var TryStatement = function() { function TryStatement2(block, handler, finalizer) { this.type = syntax_1.Syntax.TryStatement; this.block = block; this.handler = handler; this.finalizer = finalizer; } return TryStatement2; }(); exports3.TryStatement = TryStatement; var UnaryExpression = function() { function UnaryExpression2(operator, argument) { this.type = syntax_1.Syntax.UnaryExpression; this.operator = operator; this.argument = argument; this.prefix = true; } return UnaryExpression2; }(); exports3.UnaryExpression = UnaryExpression; var UpdateExpression = function() { function UpdateExpression2(operator, argument, prefix) { this.type = syntax_1.Syntax.UpdateExpression; this.operator = operator; this.argument = argument; this.prefix = prefix; } return UpdateExpression2; }(); exports3.UpdateExpression = UpdateExpression; var VariableDeclaration = function() { function VariableDeclaration2(declarations, kind) { this.type = syntax_1.Syntax.VariableDeclaration; this.declarations = declarations; this.kind = kind; } return VariableDeclaration2; }(); exports3.VariableDeclaration = VariableDeclaration; var VariableDeclarator = function() { function VariableDeclarator2(id, init2) { this.type = syntax_1.Syntax.VariableDeclarator; this.id = id; this.init = init2; } return VariableDeclarator2; }(); exports3.VariableDeclarator = VariableDeclarator; var WhileStatement = function() { function WhileStatement2(test, body) { this.type = syntax_1.Syntax.WhileStatement; this.test = test; this.body = body; } return WhileStatement2; }(); exports3.WhileStatement = WhileStatement; var WithStatement = function() { function WithStatement2(object, body) { this.type = syntax_1.Syntax.WithStatement; this.object = object; this.body = body; } return WithStatement2; }(); exports3.WithStatement = WithStatement; var YieldExpression = function() { function YieldExpression2(argument, delegate) { this.type = syntax_1.Syntax.YieldExpression; this.argument = argument; this.delegate = delegate; } return YieldExpression2; }(); exports3.YieldExpression = YieldExpression; }, /* 8 */ /***/ function(module3, exports3, __webpack_require__) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var assert_1 = __webpack_require__(9); var error_handler_1 = __webpack_require__(10); var messages_1 = __webpack_require__(11); var Node = __webpack_require__(7); var scanner_1 = __webpack_require__(12); var syntax_1 = __webpack_require__(2); var token_1 = __webpack_require__(13); var ArrowParameterPlaceHolder = "ArrowParameterPlaceHolder"; var Parser = function() { function Parser2(code2, options, delegate) { if (options === void 0) { options = {}; } this.config = { range: typeof options.range === "boolean" && options.range, loc: typeof options.loc === "boolean" && options.loc, source: null, tokens: typeof options.tokens === "boolean" && options.tokens, comment: typeof options.comment === "boolean" && options.comment, tolerant: typeof options.tolerant === "boolean" && options.tolerant }; if (this.config.loc && options.source && options.source !== null) { this.config.source = String(options.source); } this.delegate = delegate; this.errorHandler = new error_handler_1.ErrorHandler(); this.errorHandler.tolerant = this.config.tolerant; this.scanner = new scanner_1.Scanner(code2, this.errorHandler); this.scanner.trackComment = this.config.comment; this.operatorPrecedence = { ")": 0, ";": 0, ",": 0, "=": 0, "]": 0, "||": 1, "&&": 2, "|": 3, "^": 4, "&": 5, "==": 6, "!=": 6, "===": 6, "!==": 6, "<": 7, ">": 7, "<=": 7, ">=": 7, "<<": 8, ">>": 8, ">>>": 8, "+": 9, "-": 9, "*": 11, "/": 11, "%": 11 }; this.lookahead = { type: 2, value: "", lineNumber: this.scanner.lineNumber, lineStart: 0, start: 0, end: 0 }; this.hasLineTerminator = false; this.context = { isModule: false, await: false, allowIn: true, allowStrictDirective: true, allowYield: true, firstCoverInitializedNameError: null, isAssignmentTarget: false, isBindingElement: false, inFunctionBody: false, inIteration: false, inSwitch: false, labelSet: {}, strict: false }; this.tokens = []; this.startMarker = { index: 0, line: this.scanner.lineNumber, column: 0 }; this.lastMarker = { index: 0, line: this.scanner.lineNumber, column: 0 }; this.nextToken(); this.lastMarker = { index: this.scanner.index, line: this.scanner.lineNumber, column: this.scanner.index - this.scanner.lineStart }; } Parser2.prototype.throwError = function(messageFormat) { var values = []; for (var _i = 1; _i < arguments.length; _i++) { values[_i - 1] = arguments[_i]; } var args2 = Array.prototype.slice.call(arguments, 1); var msg = messageFormat.replace(/%(\d)/g, function(whole, idx) { assert_1.assert(idx < args2.length, "Message reference must be in range"); return args2[idx]; }); var index = this.lastMarker.index; var line = this.lastMarker.line; var column = this.lastMarker.column + 1; throw this.errorHandler.createError(index, line, column, msg); }; Parser2.prototype.tolerateError = function(messageFormat) { var values = []; for (var _i = 1; _i < arguments.length; _i++) { values[_i - 1] = arguments[_i]; } var args2 = Array.prototype.slice.call(arguments, 1); var msg = messageFormat.replace(/%(\d)/g, function(whole, idx) { assert_1.assert(idx < args2.length, "Message reference must be in range"); return args2[idx]; }); var index = this.lastMarker.index; var line = this.scanner.lineNumber; var column = this.lastMarker.column + 1; this.errorHandler.tolerateError(index, line, column, msg); }; Parser2.prototype.unexpectedTokenError = function(token, message2) { var msg = message2 || messages_1.Messages.UnexpectedToken; var value; if (token) { if (!message2) { msg = token.type === 2 ? messages_1.Messages.UnexpectedEOS : token.type === 3 ? messages_1.Messages.UnexpectedIdentifier : token.type === 6 ? messages_1.Messages.UnexpectedNumber : token.type === 8 ? messages_1.Messages.UnexpectedString : token.type === 10 ? messages_1.Messages.UnexpectedTemplate : messages_1.Messages.UnexpectedToken; if (token.type === 4) { if (this.scanner.isFutureReservedWord(token.value)) { msg = messages_1.Messages.UnexpectedReserved; } else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) { msg = messages_1.Messages.StrictReservedWord; } } } value = token.value; } else { value = "ILLEGAL"; } msg = msg.replace("%0", value); if (token && typeof token.lineNumber === "number") { var index = token.start; var line = token.lineNumber; var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column; var column = token.start - lastMarkerLineStart + 1; return this.errorHandler.createError(index, line, column, msg); } else { var index = this.lastMarker.index; var line = this.lastMarker.line; var column = this.lastMarker.column + 1; return this.errorHandler.createError(index, line, column, msg); } }; Parser2.prototype.throwUnexpectedToken = function(token, message2) { throw this.unexpectedTokenError(token, message2); }; Parser2.prototype.tolerateUnexpectedToken = function(token, message2) { this.errorHandler.tolerate(this.unexpectedTokenError(token, message2)); }; Parser2.prototype.collectComments = function() { if (!this.config.comment) { this.scanner.scanComments(); } else { var comments = this.scanner.scanComments(); if (comments.length > 0 && this.delegate) { for (var i = 0; i < comments.length; ++i) { var e2 = comments[i]; var node = void 0; node = { type: e2.multiLine ? "BlockComment" : "LineComment", value: this.scanner.source.slice(e2.slice[0], e2.slice[1]) }; if (this.config.range) { node.range = e2.range; } if (this.config.loc) { node.loc = e2.loc; } var metadata = { start: { line: e2.loc.start.line, column: e2.loc.start.column, offset: e2.range[0] }, end: { line: e2.loc.end.line, column: e2.loc.end.column, offset: e2.range[1] } }; this.delegate(node, metadata); } } } }; Parser2.prototype.getTokenRaw = function(token) { return this.scanner.source.slice(token.start, token.end); }; Parser2.prototype.convertToken = function(token) { var t = { type: token_1.TokenName[token.type], value: this.getTokenRaw(token) }; if (this.config.range) { t.range = [token.start, token.end]; } if (this.config.loc) { t.loc = { start: { line: this.startMarker.line, column: this.startMarker.column }, end: { line: this.scanner.lineNumber, column: this.scanner.index - this.scanner.lineStart } }; } if (token.type === 9) { var pattern = token.pattern; var flags = token.flags; t.regex = { pattern, flags }; } return t; }; Parser2.prototype.nextToken = function() { var token = this.lookahead; this.lastMarker.index = this.scanner.index; this.lastMarker.line = this.scanner.lineNumber; this.lastMarker.column = this.scanner.index - this.scanner.lineStart; this.collectComments(); if (this.scanner.index !== this.startMarker.index) { this.startMarker.index = this.scanner.index; this.startMarker.line = this.scanner.lineNumber; this.startMarker.column = this.scanner.index - this.scanner.lineStart; } var next = this.scanner.lex(); this.hasLineTerminator = token.lineNumber !== next.lineNumber; if (next && this.context.strict && next.type === 3) { if (this.scanner.isStrictModeReservedWord(next.value)) { next.type = 4; } } this.lookahead = next; if (this.config.tokens && next.type !== 2) { this.tokens.push(this.convertToken(next)); } return token; }; Parser2.prototype.nextRegexToken = function() { this.collectComments(); var token = this.scanner.scanRegExp(); if (this.config.tokens) { this.tokens.pop(); this.tokens.push(this.convertToken(token)); } this.lookahead = token; this.nextToken(); return token; }; Parser2.prototype.createNode = function() { return { index: this.startMarker.index, line: this.startMarker.line, column: this.startMarker.column }; }; Parser2.prototype.startNode = function(token, lastLineStart) { if (lastLineStart === void 0) { lastLineStart = 0; } var column = token.start - token.lineStart; var line = token.lineNumber; if (column < 0) { column += lastLineStart; line--; } return { index: token.start, line, column }; }; Parser2.prototype.finalize = function(marker, node) { if (this.config.range) { node.range = [marker.index, this.lastMarker.index]; } if (this.config.loc) { node.loc = { start: { line: marker.line, column: marker.column }, end: { line: this.lastMarker.line, column: this.lastMarker.column } }; if (this.config.source) { node.loc.source = this.config.source; } } if (this.delegate) { var metadata = { start: { line: marker.line, column: marker.column, offset: marker.index }, end: { line: this.lastMarker.line, column: this.lastMarker.column, offset: this.lastMarker.index } }; this.delegate(node, metadata); } return node; }; Parser2.prototype.expect = function(value) { var token = this.nextToken(); if (token.type !== 7 || token.value !== value) { this.throwUnexpectedToken(token); } }; Parser2.prototype.expectCommaSeparator = function() { if (this.config.tolerant) { var token = this.lookahead; if (token.type === 7 && token.value === ",") { this.nextToken(); } else if (token.type === 7 && token.value === ";") { this.nextToken(); this.tolerateUnexpectedToken(token); } else { this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken); } } else { this.expect(","); } }; Parser2.prototype.expectKeyword = function(keyword) { var token = this.nextToken(); if (token.type !== 4 || token.value !== keyword) { this.throwUnexpectedToken(token); } }; Parser2.prototype.match = function(value) { return this.lookahead.type === 7 && this.lookahead.value === value; }; Parser2.prototype.matchKeyword = function(keyword) { return this.lookahead.type === 4 && this.lookahead.value === keyword; }; Parser2.prototype.matchContextualKeyword = function(keyword) { return this.lookahead.type === 3 && this.lookahead.value === keyword; }; Parser2.prototype.matchAssign = function() { if (this.lookahead.type !== 7) { return false; } var op = this.lookahead.value; return op === "=" || op === "*=" || op === "**=" || op === "/=" || op === "%=" || op === "+=" || op === "-=" || op === "<<=" || op === ">>=" || op === ">>>=" || op === "&=" || op === "^=" || op === "|="; }; Parser2.prototype.isolateCoverGrammar = function(parseFunction) { var previousIsBindingElement = this.context.isBindingElement; var previousIsAssignmentTarget = this.context.isAssignmentTarget; var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError; this.context.isBindingElement = true; this.context.isAssignmentTarget = true; this.context.firstCoverInitializedNameError = null; var result = parseFunction.call(this); if (this.context.firstCoverInitializedNameError !== null) { this.throwUnexpectedToken(this.context.firstCoverInitializedNameError); } this.context.isBindingElement = previousIsBindingElement; this.context.isAssignmentTarget = previousIsAssignmentTarget; this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError; return result; }; Parser2.prototype.inheritCoverGrammar = function(parseFunction) { var previousIsBindingElement = this.context.isBindingElement; var previousIsAssignmentTarget = this.context.isAssignmentTarget; var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError; this.context.isBindingElement = true; this.context.isAssignmentTarget = true; this.context.firstCoverInitializedNameError = null; var result = parseFunction.call(this); this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement; this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget; this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError; return result; }; Parser2.prototype.consumeSemicolon = function() { if (this.match(";")) { this.nextToken(); } else if (!this.hasLineTerminator) { if (this.lookahead.type !== 2 && !this.match("}")) { this.throwUnexpectedToken(this.lookahead); } this.lastMarker.index = this.startMarker.index; this.lastMarker.line = this.startMarker.line; this.lastMarker.column = this.startMarker.column; } }; Parser2.prototype.parsePrimaryExpression = function() { var node = this.createNode(); var expr; var token, raw; switch (this.lookahead.type) { case 3: if ((this.context.isModule || this.context.await) && this.lookahead.value === "await") { this.tolerateUnexpectedToken(this.lookahead); } expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value)); break; case 6: case 8: if (this.context.strict && this.lookahead.octal) { this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral); } this.context.isAssignmentTarget = false; this.context.isBindingElement = false; token = this.nextToken(); raw = this.getTokenRaw(token); expr = this.finalize(node, new Node.Literal(token.value, raw)); break; case 1: this.context.isAssignmentTarget = false; this.context.isBindingElement = false; token = this.nextToken(); raw = this.getTokenRaw(token); expr = this.finalize(node, new Node.Literal(token.value === "true", raw)); break; case 5: this.context.isAssignmentTarget = false; this.context.isBindingElement = false; token = this.nextToken(); raw = this.getTokenRaw(token); expr = this.finalize(node, new Node.Literal(null, raw)); break; case 10: expr = this.parseTemplateLiteral(); break; case 7: switch (this.lookahead.value) { case "(": this.context.isBindingElement = false; expr = this.inheritCoverGrammar(this.parseGroupExpression); break; case "[": expr = this.inheritCoverGrammar(this.parseArrayInitializer); break; case "{": expr = this.inheritCoverGrammar(this.parseObjectInitializer); break; case "/": case "/=": this.context.isAssignmentTarget = false; this.context.isBindingElement = false; this.scanner.index = this.startMarker.index; token = this.nextRegexToken(); raw = this.getTokenRaw(token); expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags)); break; default: expr = this.throwUnexpectedToken(this.nextToken()); } break; case 4: if (!this.context.strict && this.context.allowYield && this.matchKeyword("yield")) { expr = this.parseIdentifierName(); } else if (!this.context.strict && this.matchKeyword("let")) { expr = this.finalize(node, new Node.Identifier(this.nextToken().value)); } else { this.context.isAssignmentTarget = false; this.context.isBindingElement = false; if (this.matchKeyword("function")) { expr = this.parseFunctionExpression(); } else if (this.matchKeyword("this")) { this.nextToken(); expr = this.finalize(node, new Node.ThisExpression()); } else if (this.matchKeyword("class")) { expr = this.parseClassExpression(); } else { expr = this.throwUnexpectedToken(this.nextToken()); } } break; default: expr = this.throwUnexpectedToken(this.nextToken()); } return expr; }; Parser2.prototype.parseSpreadElement = function() { var node = this.createNode(); this.expect("..."); var arg2 = this.inheritCoverGrammar(this.parseAssignmentExpression); return this.finalize(node, new Node.SpreadElement(arg2)); }; Parser2.prototype.parseArrayInitializer = function() { var node = this.createNode(); var elements = []; this.expect("["); while (!this.match("]")) { if (this.match(",")) { this.nextToken(); elements.push(null); } else if (this.match("...")) { var element = this.parseSpreadElement(); if (!this.match("]")) { this.context.isAssignmentTarget = false; this.context.isBindingElement = false; this.expect(","); } elements.push(element); } else { elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression)); if (!this.match("]")) { this.expect(","); } } } this.expect("]"); return this.finalize(node, new Node.ArrayExpression(elements)); }; Parser2.prototype.parsePropertyMethod = function(params2) { this.context.isAssignmentTarget = false; this.context.isBindingElement = false; var previousStrict = this.context.strict; var previousAllowStrictDirective = this.context.allowStrictDirective; this.context.allowStrictDirective = params2.simple; var body = this.isolateCoverGrammar(this.parseFunctionSourceElements); if (this.context.strict && params2.firstRestricted) { this.tolerateUnexpectedToken(params2.firstRestricted, params2.message); } if (this.context.strict && params2.stricted) { this.tolerateUnexpectedToken(params2.stricted, params2.message); } this.context.strict = previousStrict; this.context.allowStrictDirective = previousAllowStrictDirective; return body; }; Parser2.prototype.parsePropertyMethodFunction = function() { var isGenerator = false; var node = this.createNode(); var previousAllowYield = this.context.allowYield; this.context.allowYield = true; var params2 = this.parseFormalParameters(); var method = this.parsePropertyMethod(params2); this.context.allowYield = previousAllowYield; return this.finalize(node, new Node.FunctionExpression(null, params2.params, method, isGenerator)); }; Parser2.prototype.parsePropertyMethodAsyncFunction = function() { var node = this.createNode(); var previousAllowYield = this.context.allowYield; var previousAwait = this.context.await; this.context.allowYield = false; this.context.await = true; var params2 = this.parseFormalParameters(); var method = this.parsePropertyMethod(params2); this.context.allowYield = previousAllowYield; this.context.await = previousAwait; return this.finalize(node, new Node.AsyncFunctionExpression(null, params2.params, method)); }; Parser2.prototype.parseObjectPropertyKey = function() { var node = this.createNode(); var token = this.nextToken(); var key; switch (token.type) { case 8: case 6: if (this.context.strict && token.octal) { this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral); } var raw = this.getTokenRaw(token); key = this.finalize(node, new Node.Literal(token.value, raw)); break; case 3: case 1: case 5: case 4: key = this.finalize(node, new Node.Identifier(token.value)); break; case 7: if (token.value === "[") { key = this.isolateCoverGrammar(this.parseAssignmentExpression); this.expect("]"); } else { key = this.throwUnexpectedToken(token); } break; default: key = this.throwUnexpectedToken(token); } return key; }; Parser2.prototype.isPropertyKey = function(key, value) { return key.type === syntax_1.Syntax.Identifier && key.name === value || key.type === syntax_1.Syntax.Literal && key.value === value; }; Parser2.prototype.parseObjectProperty = function(hasProto) { var node = this.createNode(); var token = this.lookahead; var kind; var key = null; var value = null; var computed = false; var method = false; var shorthand = false; var isAsync = false; if (token.type === 3) { var id = token.value; this.nextToken(); computed = this.match("["); isAsync = !this.hasLineTerminator && id === "async" && !this.match(":") && !this.match("(") && !this.match("*") && !this.match(","); key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id)); } else if (this.match("*")) { this.nextToken(); } else { computed = this.match("["); key = this.parseObjectPropertyKey(); } var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead); if (token.type === 3 && !isAsync && token.value === "get" && lookaheadPropertyKey) { kind = "get"; computed = this.match("["); key = this.parseObjectPropertyKey(); this.context.allowYield = false; value = this.parseGetterMethod(); } else if (token.type === 3 && !isAsync && token.value === "set" && lookaheadPropertyKey) { kind = "set"; computed = this.match("["); key = this.parseObjectPropertyKey(); value = this.parseSetterMethod(); } else if (token.type === 7 && token.value === "*" && lookaheadPropertyKey) { kind = "init"; computed = this.match("["); key = this.parseObjectPropertyKey(); value = this.parseGeneratorMethod(); method = true; } else { if (!key) { this.throwUnexpectedToken(this.lookahead); } kind = "init"; if (this.match(":") && !isAsync) { if (!computed && this.isPropertyKey(key, "__proto__")) { if (hasProto.value) { this.tolerateError(messages_1.Messages.DuplicateProtoProperty); } hasProto.value = true; } this.nextToken(); value = this.inheritCoverGrammar(this.parseAssignmentExpression); } else if (this.match("(")) { value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction(); method = true; } else if (token.type === 3) { var id = this.finalize(node, new Node.Identifier(token.value)); if (this.match("=")) { this.context.firstCoverInitializedNameError = this.lookahead; this.nextToken(); shorthand = true; var init2 = this.isolateCoverGrammar(this.parseAssignmentExpression); value = this.finalize(node, new Node.AssignmentPattern(id, init2)); } else { shorthand = true; value = id; } } else { this.throwUnexpectedToken(this.nextToken()); } } return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand)); }; Parser2.prototype.parseObjectInitializer = function() { var node = this.createNode(); this.expect("{"); var properties = []; var hasProto = { value: false }; while (!this.match("}")) { properties.push(this.parseObjectProperty(hasProto)); if (!this.match("}")) { this.expectCommaSeparator(); } } this.expect("}"); return this.finalize(node, new Node.ObjectExpression(properties)); }; Parser2.prototype.parseTemplateHead = function() { assert_1.assert(this.lookahead.head, "Template literal must start with a template head"); var node = this.createNode(); var token = this.nextToken(); var raw = token.value; var cooked = token.cooked; return this.finalize(node, new Node.TemplateElement({ raw, cooked }, token.tail)); }; Parser2.prototype.parseTemplateElement = function() { if (this.lookahead.type !== 10) { this.throwUnexpectedToken(); } var node = this.createNode(); var token = this.nextToken(); var raw = token.value; var cooked = token.cooked; return this.finalize(node, new Node.TemplateElement({ raw, cooked }, token.tail)); }; Parser2.prototype.parseTemplateLiteral = function() { var node = this.createNode(); var expressions = []; var quasis = []; var quasi = this.parseTemplateHead(); quasis.push(quasi); while (!quasi.tail) { expressions.push(this.parseExpression()); quasi = this.parseTemplateElement(); quasis.push(quasi); } return this.finalize(node, new Node.TemplateLiteral(quasis, expressions)); }; Parser2.prototype.reinterpretExpressionAsPattern = function(expr) { switch (expr.type) { case syntax_1.Syntax.Identifier: case syntax_1.Syntax.MemberExpression: case syntax_1.Syntax.RestElement: case syntax_1.Syntax.AssignmentPattern: break; case syntax_1.Syntax.SpreadElement: expr.type = syntax_1.Syntax.RestElement; this.reinterpretExpressionAsPattern(expr.argument); break; case syntax_1.Syntax.ArrayExpression: expr.type = syntax_1.Syntax.ArrayPattern; for (var i = 0; i < expr.elements.length; i++) { if (expr.elements[i] !== null) { this.reinterpretExpressionAsPattern(expr.elements[i]); } } break; case syntax_1.Syntax.ObjectExpression: expr.type = syntax_1.Syntax.ObjectPattern; for (var i = 0; i < expr.properties.length; i++) { this.reinterpretExpressionAsPattern(expr.properties[i].value); } break; case syntax_1.Syntax.AssignmentExpression: expr.type = syntax_1.Syntax.AssignmentPattern; delete expr.operator; this.reinterpretExpressionAsPattern(expr.left); break; default: break; } }; Parser2.prototype.parseGroupExpression = function() { var expr; this.expect("("); if (this.match(")")) { this.nextToken(); if (!this.match("=>")) { this.expect("=>"); } expr = { type: ArrowParameterPlaceHolder, params: [], async: false }; } else { var startToken = this.lookahead; var params2 = []; if (this.match("...")) { expr = this.parseRestElement(params2); this.expect(")"); if (!this.match("=>")) { this.expect("=>"); } expr = { type: ArrowParameterPlaceHolder, params: [expr], async: false }; } else { var arrow = false; this.context.isBindingElement = true; expr = this.inheritCoverGrammar(this.parseAssignmentExpression); if (this.match(",")) { var expressions = []; this.context.isAssignmentTarget = false; expressions.push(expr); while (this.lookahead.type !== 2) { if (!this.match(",")) { break; } this.nextToken(); if (this.match(")")) { this.nextToken(); for (var i = 0; i < expressions.length; i++) { this.reinterpretExpressionAsPattern(expressions[i]); } arrow = true; expr = { type: ArrowParameterPlaceHolder, params: expressions, async: false }; } else if (this.match("...")) { if (!this.context.isBindingElement) { this.throwUnexpectedToken(this.lookahead); } expressions.push(this.parseRestElement(params2)); this.expect(")"); if (!this.match("=>")) { this.expect("=>"); } this.context.isBindingElement = false; for (var i = 0; i < expressions.length; i++) { this.reinterpretExpressionAsPattern(expressions[i]); } arrow = true; expr = { type: ArrowParameterPlaceHolder, params: expressions, async: false }; } else { expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression)); } if (arrow) { break; } } if (!arrow) { expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions)); } } if (!arrow) { this.expect(")"); if (this.match("=>")) { if (expr.type === syntax_1.Syntax.Identifier && expr.name === "yield") { arrow = true; expr = { type: ArrowParameterPlaceHolder, params: [expr], async: false }; } if (!arrow) { if (!this.context.isBindingElement) { this.throwUnexpectedToken(this.lookahead); } if (expr.type === syntax_1.Syntax.SequenceExpression) { for (var i = 0; i < expr.expressions.length; i++) { this.reinterpretExpressionAsPattern(expr.expressions[i]); } } else { this.reinterpretExpressionAsPattern(expr); } var parameters = expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]; expr = { type: ArrowParameterPlaceHolder, params: parameters, async: false }; } } this.context.isBindingElement = false; } } } return expr; }; Parser2.prototype.parseArguments = function() { this.expect("("); var args2 = []; if (!this.match(")")) { while (true) { var expr = this.match("...") ? this.parseSpreadElement() : this.isolateCoverGrammar(this.parseAssignmentExpression); args2.push(expr); if (this.match(")")) { break; } this.expectCommaSeparator(); if (this.match(")")) { break; } } } this.expect(")"); return args2; }; Parser2.prototype.isIdentifierName = function(token) { return token.type === 3 || token.type === 4 || token.type === 1 || token.type === 5; }; Parser2.prototype.parseIdentifierName = function() { var node = this.createNode(); var token = this.nextToken(); if (!this.isIdentifierName(token)) { this.throwUnexpectedToken(token); } return this.finalize(node, new Node.Identifier(token.value)); }; Parser2.prototype.parseNewExpression = function() { var node = this.createNode(); var id = this.parseIdentifierName(); assert_1.assert(id.name === "new", "New expression must start with `new`"); var expr; if (this.match(".")) { this.nextToken(); if (this.lookahead.type === 3 && this.context.inFunctionBody && this.lookahead.value === "target") { var property = this.parseIdentifierName(); expr = new Node.MetaProperty(id, property); } else { this.throwUnexpectedToken(this.lookahead); } } else { var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression); var args2 = this.match("(") ? this.parseArguments() : []; expr = new Node.NewExpression(callee, args2); this.context.isAssignmentTarget = false; this.context.isBindingElement = false; } return this.finalize(node, expr); }; Parser2.prototype.parseAsyncArgument = function() { var arg2 = this.parseAssignmentExpression(); this.context.firstCoverInitializedNameError = null; return arg2; }; Parser2.prototype.parseAsyncArguments = function() { this.expect("("); var args2 = []; if (!this.match(")")) { while (true) { var expr = this.match("...") ? this.parseSpreadElement() : this.isolateCoverGrammar(this.parseAsyncArgument); args2.push(expr); if (this.match(")")) { break; } this.expectCommaSeparator(); if (this.match(")")) { break; } } } this.expect(")"); return args2; }; Parser2.prototype.parseLeftHandSideExpressionAllowCall = function() { var startToken = this.lookahead; var maybeAsync = this.matchContextualKeyword("async"); var previousAllowIn = this.context.allowIn; this.context.allowIn = true; var expr; if (this.matchKeyword("super") && this.context.inFunctionBody) { expr = this.createNode(); this.nextToken(); expr = this.finalize(expr, new Node.Super()); if (!this.match("(") && !this.match(".") && !this.match("[")) { this.throwUnexpectedToken(this.lookahead); } } else { expr = this.inheritCoverGrammar(this.matchKeyword("new") ? this.parseNewExpression : this.parsePrimaryExpression); } while (true) { if (this.match(".")) { this.context.isBindingElement = false; this.context.isAssignmentTarget = true; this.expect("."); var property = this.parseIdentifierName(); expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property)); } else if (this.match("(")) { var asyncArrow = maybeAsync && startToken.lineNumber === this.lookahead.lineNumber; this.context.isBindingElement = false; this.context.isAssignmentTarget = false; var args2 = asyncArrow ? this.parseAsyncArguments() : this.parseArguments(); expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args2)); if (asyncArrow && this.match("=>")) { for (var i = 0; i < args2.length; ++i) { this.reinterpretExpressionAsPattern(args2[i]); } expr = { type: ArrowParameterPlaceHolder, params: args2, async: true }; } } else if (this.match("[")) { this.context.isBindingElement = false; this.context.isAssignmentTarget = true; this.expect("["); var property = this.isolateCoverGrammar(this.parseExpression); this.expect("]"); expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property)); } else if (this.lookahead.type === 10 && this.lookahead.head) { var quasi = this.parseTemplateLiteral(); expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi)); } else { break; } } this.context.allowIn = previousAllowIn; return expr; }; Parser2.prototype.parseSuper = function() { var node = this.createNode(); this.expectKeyword("super"); if (!this.match("[") && !this.match(".")) { this.throwUnexpectedToken(this.lookahead); } return this.finalize(node, new Node.Super()); }; Parser2.prototype.parseLeftHandSideExpression = function() { assert_1.assert(this.context.allowIn, "callee of new expression always allow in keyword."); var node = this.startNode(this.lookahead); var expr = this.matchKeyword("super") && this.context.inFunctionBody ? this.parseSuper() : this.inheritCoverGrammar(this.matchKeyword("new") ? this.parseNewExpression : this.parsePrimaryExpression); while (true) { if (this.match("[")) { this.context.isBindingElement = false; this.context.isAssignmentTarget = true; this.expect("["); var property = this.isolateCoverGrammar(this.parseExpression); this.expect("]"); expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property)); } else if (this.match(".")) { this.context.isBindingElement = false; this.context.isAssignmentTarget = true; this.expect("."); var property = this.parseIdentifierName(); expr = this.finalize(node, new Node.StaticMemberExpression(expr, property)); } else if (this.lookahead.type === 10 && this.lookahead.head) { var quasi = this.parseTemplateLiteral(); expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi)); } else { break; } } return expr; }; Parser2.prototype.parseUpdateExpression = function() { var expr; var startToken = this.lookahead; if (this.match("++") || this.match("--")) { var node = this.startNode(startToken); var token = this.nextToken(); expr = this.inheritCoverGrammar(this.parseUnaryExpression); if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) { this.tolerateError(messages_1.Messages.StrictLHSPrefix); } if (!this.context.isAssignmentTarget) { this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); } var prefix = true; expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix)); this.context.isAssignmentTarget = false; this.context.isBindingElement = false; } else { expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall); if (!this.hasLineTerminator && this.lookahead.type === 7) { if (this.match("++") || this.match("--")) { if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) { this.tolerateError(messages_1.Messages.StrictLHSPostfix); } if (!this.context.isAssignmentTarget) { this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); } this.context.isAssignmentTarget = false; this.context.isBindingElement = false; var operator = this.nextToken().value; var prefix = false; expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix)); } } } return expr; }; Parser2.prototype.parseAwaitExpression = function() { var node = this.createNode(); this.nextToken(); var argument = this.parseUnaryExpression(); return this.finalize(node, new Node.AwaitExpression(argument)); }; Parser2.prototype.parseUnaryExpression = function() { var expr; if (this.match("+") || this.match("-") || this.match("~") || this.match("!") || this.matchKeyword("delete") || this.matchKeyword("void") || this.matchKeyword("typeof")) { var node = this.startNode(this.lookahead); var token = this.nextToken(); expr = this.inheritCoverGrammar(this.parseUnaryExpression); expr = this.finalize(node, new Node.UnaryExpression(token.value, expr)); if (this.context.strict && expr.operator === "delete" && expr.argument.type === syntax_1.Syntax.Identifier) { this.tolerateError(messages_1.Messages.StrictDelete); } this.context.isAssignmentTarget = false; this.context.isBindingElement = false; } else if (this.context.await && this.matchContextualKeyword("await")) { expr = this.parseAwaitExpression(); } else { expr = this.parseUpdateExpression(); } return expr; }; Parser2.prototype.parseExponentiationExpression = function() { var startToken = this.lookahead; var expr = this.inheritCoverGrammar(this.parseUnaryExpression); if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match("**")) { this.nextToken(); this.context.isAssignmentTarget = false; this.context.isBindingElement = false; var left = expr; var right = this.isolateCoverGrammar(this.parseExponentiationExpression); expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression("**", left, right)); } return expr; }; Parser2.prototype.binaryPrecedence = function(token) { var op = token.value; var precedence; if (token.type === 7) { precedence = this.operatorPrecedence[op] || 0; } else if (token.type === 4) { precedence = op === "instanceof" || this.context.allowIn && op === "in" ? 7 : 0; } else { precedence = 0; } return precedence; }; Parser2.prototype.parseBinaryExpression = function() { var startToken = this.lookahead; var expr = this.inheritCoverGrammar(this.parseExponentiationExpression); var token = this.lookahead; var prec = this.binaryPrecedence(token); if (prec > 0) { this.nextToken(); this.context.isAssignmentTarget = false; this.context.isBindingElement = false; var markers = [startToken, this.lookahead]; var left = expr; var right = this.isolateCoverGrammar(this.parseExponentiationExpression); var stack2 = [left, token.value, right]; var precedences = [prec]; while (true) { prec = this.binaryPrecedence(this.lookahead); if (prec <= 0) { break; } while (stack2.length > 2 && prec <= precedences[precedences.length - 1]) { right = stack2.pop(); var operator = stack2.pop(); precedences.pop(); left = stack2.pop(); markers.pop(); var node = this.startNode(markers[markers.length - 1]); stack2.push(this.finalize(node, new Node.BinaryExpression(operator, left, right))); } stack2.push(this.nextToken().value); precedences.push(prec); markers.push(this.lookahead); stack2.push(this.isolateCoverGrammar(this.parseExponentiationExpression)); } var i = stack2.length - 1; expr = stack2[i]; var lastMarker = markers.pop(); while (i > 1) { var marker = markers.pop(); var lastLineStart = lastMarker && lastMarker.lineStart; var node = this.startNode(marker, lastLineStart); var operator = stack2[i - 1]; expr = this.finalize(node, new Node.BinaryExpression(operator, stack2[i - 2], expr)); i -= 2; lastMarker = marker; } } return expr; }; Parser2.prototype.parseConditionalExpression = function() { var startToken = this.lookahead; var expr = this.inheritCoverGrammar(this.parseBinaryExpression); if (this.match("?")) { this.nextToken(); var previousAllowIn = this.context.allowIn; this.context.allowIn = true; var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression); this.context.allowIn = previousAllowIn; this.expect(":"); var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression); expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate)); this.context.isAssignmentTarget = false; this.context.isBindingElement = false; } return expr; }; Parser2.prototype.checkPatternParam = function(options, param2) { switch (param2.type) { case syntax_1.Syntax.Identifier: this.validateParam(options, param2, param2.name); break; case syntax_1.Syntax.RestElement: this.checkPatternParam(options, param2.argument); break; case syntax_1.Syntax.AssignmentPattern: this.checkPatternParam(options, param2.left); break; case syntax_1.Syntax.ArrayPattern: for (var i = 0; i < param2.elements.length; i++) { if (param2.elements[i] !== null) { this.checkPatternParam(options, param2.elements[i]); } } break; case syntax_1.Syntax.ObjectPattern: for (var i = 0; i < param2.properties.length; i++) { this.checkPatternParam(options, param2.properties[i].value); } break; default: break; } options.simple = options.simple && param2 instanceof Node.Identifier; }; Parser2.prototype.reinterpretAsCoverFormalsList = function(expr) { var params2 = [expr]; var options; var asyncArrow = false; switch (expr.type) { case syntax_1.Syntax.Identifier: break; case ArrowParameterPlaceHolder: params2 = expr.params; asyncArrow = expr.async; break; default: return null; } options = { simple: true, paramSet: {} }; for (var i = 0; i < params2.length; ++i) { var param2 = params2[i]; if (param2.type === syntax_1.Syntax.AssignmentPattern) { if (param2.right.type === syntax_1.Syntax.YieldExpression) { if (param2.right.argument) { this.throwUnexpectedToken(this.lookahead); } param2.right.type = syntax_1.Syntax.Identifier; param2.right.name = "yield"; delete param2.right.argument; delete param2.right.delegate; } } else if (asyncArrow && param2.type === syntax_1.Syntax.Identifier && param2.name === "await") { this.throwUnexpectedToken(this.lookahead); } this.checkPatternParam(options, param2); params2[i] = param2; } if (this.context.strict || !this.context.allowYield) { for (var i = 0; i < params2.length; ++i) { var param2 = params2[i]; if (param2.type === syntax_1.Syntax.YieldExpression) { this.throwUnexpectedToken(this.lookahead); } } } if (options.message === messages_1.Messages.StrictParamDupe) { var token = this.context.strict ? options.stricted : options.firstRestricted; this.throwUnexpectedToken(token, options.message); } return { simple: options.simple, params: params2, stricted: options.stricted, firstRestricted: options.firstRestricted, message: options.message }; }; Parser2.prototype.parseAssignmentExpression = function() { var expr; if (!this.context.allowYield && this.matchKeyword("yield")) { expr = this.parseYieldExpression(); } else { var startToken = this.lookahead; var token = startToken; expr = this.parseConditionalExpression(); if (token.type === 3 && token.lineNumber === this.lookahead.lineNumber && token.value === "async") { if (this.lookahead.type === 3 || this.matchKeyword("yield")) { var arg2 = this.parsePrimaryExpression(); this.reinterpretExpressionAsPattern(arg2); expr = { type: ArrowParameterPlaceHolder, params: [arg2], async: true }; } } if (expr.type === ArrowParameterPlaceHolder || this.match("=>")) { this.context.isAssignmentTarget = false; this.context.isBindingElement = false; var isAsync = expr.async; var list10 = this.reinterpretAsCoverFormalsList(expr); if (list10) { if (this.hasLineTerminator) { this.tolerateUnexpectedToken(this.lookahead); } this.context.firstCoverInitializedNameError = null; var previousStrict = this.context.strict; var previousAllowStrictDirective = this.context.allowStrictDirective; this.context.allowStrictDirective = list10.simple; var previousAllowYield = this.context.allowYield; var previousAwait = this.context.await; this.context.allowYield = true; this.context.await = isAsync; var node = this.startNode(startToken); this.expect("=>"); var body = void 0; if (this.match("{")) { var previousAllowIn = this.context.allowIn; this.context.allowIn = true; body = this.parseFunctionSourceElements(); this.context.allowIn = previousAllowIn; } else { body = this.isolateCoverGrammar(this.parseAssignmentExpression); } var expression = body.type !== syntax_1.Syntax.BlockStatement; if (this.context.strict && list10.firstRestricted) { this.throwUnexpectedToken(list10.firstRestricted, list10.message); } if (this.context.strict && list10.stricted) { this.tolerateUnexpectedToken(list10.stricted, list10.message); } expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list10.params, body, expression)) : this.finalize(node, new Node.ArrowFunctionExpression(list10.params, body, expression)); this.context.strict = previousStrict; this.context.allowStrictDirective = previousAllowStrictDirective; this.context.allowYield = previousAllowYield; this.context.await = previousAwait; } } else { if (this.matchAssign()) { if (!this.context.isAssignmentTarget) { this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); } if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) { var id = expr; if (this.scanner.isRestrictedWord(id.name)) { this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment); } if (this.scanner.isStrictModeReservedWord(id.name)) { this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); } } if (!this.match("=")) { this.context.isAssignmentTarget = false; this.context.isBindingElement = false; } else { this.reinterpretExpressionAsPattern(expr); } token = this.nextToken(); var operator = token.value; var right = this.isolateCoverGrammar(this.parseAssignmentExpression); expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right)); this.context.firstCoverInitializedNameError = null; } } } return expr; }; Parser2.prototype.parseExpression = function() { var startToken = this.lookahead; var expr = this.isolateCoverGrammar(this.parseAssignmentExpression); if (this.match(",")) { var expressions = []; expressions.push(expr); while (this.lookahead.type !== 2) { if (!this.match(",")) { break; } this.nextToken(); expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression)); } expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions)); } return expr; }; Parser2.prototype.parseStatementListItem = function() { var statement; this.context.isAssignmentTarget = true; this.context.isBindingElement = true; if (this.lookahead.type === 4) { switch (this.lookahead.value) { case "export": if (!this.context.isModule) { this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration); } statement = this.parseExportDeclaration(); break; case "import": if (!this.context.isModule) { this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration); } statement = this.parseImportDeclaration(); break; case "const": statement = this.parseLexicalDeclaration({ inFor: false }); break; case "function": statement = this.parseFunctionDeclaration(); break; case "class": statement = this.parseClassDeclaration(); break; case "let": statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement(); break; default: statement = this.parseStatement(); break; } } else { statement = this.parseStatement(); } return statement; }; Parser2.prototype.parseBlock = function() { var node = this.createNode(); this.expect("{"); var block = []; while (true) { if (this.match("}")) { break; } block.push(this.parseStatementListItem()); } this.expect("}"); return this.finalize(node, new Node.BlockStatement(block)); }; Parser2.prototype.parseLexicalBinding = function(kind, options) { var node = this.createNode(); var params2 = []; var id = this.parsePattern(params2, kind); if (this.context.strict && id.type === syntax_1.Syntax.Identifier) { if (this.scanner.isRestrictedWord(id.name)) { this.tolerateError(messages_1.Messages.StrictVarName); } } var init2 = null; if (kind === "const") { if (!this.matchKeyword("in") && !this.matchContextualKeyword("of")) { if (this.match("=")) { this.nextToken(); init2 = this.isolateCoverGrammar(this.parseAssignmentExpression); } else { this.throwError(messages_1.Messages.DeclarationMissingInitializer, "const"); } } } else if (!options.inFor && id.type !== syntax_1.Syntax.Identifier || this.match("=")) { this.expect("="); init2 = this.isolateCoverGrammar(this.parseAssignmentExpression); } return this.finalize(node, new Node.VariableDeclarator(id, init2)); }; Parser2.prototype.parseBindingList = function(kind, options) { var list10 = [this.parseLexicalBinding(kind, options)]; while (this.match(",")) { this.nextToken(); list10.push(this.parseLexicalBinding(kind, options)); } return list10; }; Parser2.prototype.isLexicalDeclaration = function() { var state = this.scanner.saveState(); this.scanner.scanComments(); var next = this.scanner.lex(); this.scanner.restoreState(state); return next.type === 3 || next.type === 7 && next.value === "[" || next.type === 7 && next.value === "{" || next.type === 4 && next.value === "let" || next.type === 4 && next.value === "yield"; }; Parser2.prototype.parseLexicalDeclaration = function(options) { var node = this.createNode(); var kind = this.nextToken().value; assert_1.assert(kind === "let" || kind === "const", "Lexical declaration must be either let or const"); var declarations = this.parseBindingList(kind, options); this.consumeSemicolon(); return this.finalize(node, new Node.VariableDeclaration(declarations, kind)); }; Parser2.prototype.parseBindingRestElement = function(params2, kind) { var node = this.createNode(); this.expect("..."); var arg2 = this.parsePattern(params2, kind); return this.finalize(node, new Node.RestElement(arg2)); }; Parser2.prototype.parseArrayPattern = function(params2, kind) { var node = this.createNode(); this.expect("["); var elements = []; while (!this.match("]")) { if (this.match(",")) { this.nextToken(); elements.push(null); } else { if (this.match("...")) { elements.push(this.parseBindingRestElement(params2, kind)); break; } else { elements.push(this.parsePatternWithDefault(params2, kind)); } if (!this.match("]")) { this.expect(","); } } } this.expect("]"); return this.finalize(node, new Node.ArrayPattern(elements)); }; Parser2.prototype.parsePropertyPattern = function(params2, kind) { var node = this.createNode(); var computed = false; var shorthand = false; var method = false; var key; var value; if (this.lookahead.type === 3) { var keyToken = this.lookahead; key = this.parseVariableIdentifier(); var init2 = this.finalize(node, new Node.Identifier(keyToken.value)); if (this.match("=")) { params2.push(keyToken); shorthand = true; this.nextToken(); var expr = this.parseAssignmentExpression(); value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init2, expr)); } else if (!this.match(":")) { params2.push(keyToken); shorthand = true; value = init2; } else { this.expect(":"); value = this.parsePatternWithDefault(params2, kind); } } else { computed = this.match("["); key = this.parseObjectPropertyKey(); this.expect(":"); value = this.parsePatternWithDefault(params2, kind); } return this.finalize(node, new Node.Property("init", key, computed, value, method, shorthand)); }; Parser2.prototype.parseObjectPattern = function(params2, kind) { var node = this.createNode(); var properties = []; this.expect("{"); while (!this.match("}")) { properties.push(this.parsePropertyPattern(params2, kind)); if (!this.match("}")) { this.expect(","); } } this.expect("}"); return this.finalize(node, new Node.ObjectPattern(properties)); }; Parser2.prototype.parsePattern = function(params2, kind) { var pattern; if (this.match("[")) { pattern = this.parseArrayPattern(params2, kind); } else if (this.match("{")) { pattern = this.parseObjectPattern(params2, kind); } else { if (this.matchKeyword("let") && (kind === "const" || kind === "let")) { this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding); } params2.push(this.lookahead); pattern = this.parseVariableIdentifier(kind); } return pattern; }; Parser2.prototype.parsePatternWithDefault = function(params2, kind) { var startToken = this.lookahead; var pattern = this.parsePattern(params2, kind); if (this.match("=")) { this.nextToken(); var previousAllowYield = this.context.allowYield; this.context.allowYield = true; var right = this.isolateCoverGrammar(this.parseAssignmentExpression); this.context.allowYield = previousAllowYield; pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right)); } return pattern; }; Parser2.prototype.parseVariableIdentifier = function(kind) { var node = this.createNode(); var token = this.nextToken(); if (token.type === 4 && token.value === "yield") { if (this.context.strict) { this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); } else if (!this.context.allowYield) { this.throwUnexpectedToken(token); } } else if (token.type !== 3) { if (this.context.strict && token.type === 4 && this.scanner.isStrictModeReservedWord(token.value)) { this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); } else { if (this.context.strict || token.value !== "let" || kind !== "var") { this.throwUnexpectedToken(token); } } } else if ((this.context.isModule || this.context.await) && token.type === 3 && token.value === "await") { this.tolerateUnexpectedToken(token); } return this.finalize(node, new Node.Identifier(token.value)); }; Parser2.prototype.parseVariableDeclaration = function(options) { var node = this.createNode(); var params2 = []; var id = this.parsePattern(params2, "var"); if (this.context.strict && id.type === syntax_1.Syntax.Identifier) { if (this.scanner.isRestrictedWord(id.name)) { this.tolerateError(messages_1.Messages.StrictVarName); } } var init2 = null; if (this.match("=")) { this.nextToken(); init2 = this.isolateCoverGrammar(this.parseAssignmentExpression); } else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) { this.expect("="); } return this.finalize(node, new Node.VariableDeclarator(id, init2)); }; Parser2.prototype.parseVariableDeclarationList = function(options) { var opt = { inFor: options.inFor }; var list10 = []; list10.push(this.parseVariableDeclaration(opt)); while (this.match(",")) { this.nextToken(); list10.push(this.parseVariableDeclaration(opt)); } return list10; }; Parser2.prototype.parseVariableStatement = function() { var node = this.createNode(); this.expectKeyword("var"); var declarations = this.parseVariableDeclarationList({ inFor: false }); this.consumeSemicolon(); return this.finalize(node, new Node.VariableDeclaration(declarations, "var")); }; Parser2.prototype.parseEmptyStatement = function() { var node = this.createNode(); this.expect(";"); return this.finalize(node, new Node.EmptyStatement()); }; Parser2.prototype.parseExpressionStatement = function() { var node = this.createNode(); var expr = this.parseExpression(); this.consumeSemicolon(); return this.finalize(node, new Node.ExpressionStatement(expr)); }; Parser2.prototype.parseIfClause = function() { if (this.context.strict && this.matchKeyword("function")) { this.tolerateError(messages_1.Messages.StrictFunction); } return this.parseStatement(); }; Parser2.prototype.parseIfStatement = function() { var node = this.createNode(); var consequent; var alternate = null; this.expectKeyword("if"); this.expect("("); var test = this.parseExpression(); if (!this.match(")") && this.config.tolerant) { this.tolerateUnexpectedToken(this.nextToken()); consequent = this.finalize(this.createNode(), new Node.EmptyStatement()); } else { this.expect(")"); consequent = this.parseIfClause(); if (this.matchKeyword("else")) { this.nextToken(); alternate = this.parseIfClause(); } } return this.finalize(node, new Node.IfStatement(test, consequent, alternate)); }; Parser2.prototype.parseDoWhileStatement = function() { var node = this.createNode(); this.expectKeyword("do"); var previousInIteration = this.context.inIteration; this.context.inIteration = true; var body = this.parseStatement(); this.context.inIteration = previousInIteration; this.expectKeyword("while"); this.expect("("); var test = this.parseExpression(); if (!this.match(")") && this.config.tolerant) { this.tolerateUnexpectedToken(this.nextToken()); } else { this.expect(")"); if (this.match(";")) { this.nextToken(); } } return this.finalize(node, new Node.DoWhileStatement(body, test)); }; Parser2.prototype.parseWhileStatement = function() { var node = this.createNode(); var body; this.expectKeyword("while"); this.expect("("); var test = this.parseExpression(); if (!this.match(")") && this.config.tolerant) { this.tolerateUnexpectedToken(this.nextToken()); body = this.finalize(this.createNode(), new Node.EmptyStatement()); } else { this.expect(")"); var previousInIteration = this.context.inIteration; this.context.inIteration = true; body = this.parseStatement(); this.context.inIteration = previousInIteration; } return this.finalize(node, new Node.WhileStatement(test, body)); }; Parser2.prototype.parseForStatement = function() { var init2 = null; var test = null; var update2 = null; var forIn = true; var left, right; var node = this.createNode(); this.expectKeyword("for"); this.expect("("); if (this.match(";")) { this.nextToken(); } else { if (this.matchKeyword("var")) { init2 = this.createNode(); this.nextToken(); var previousAllowIn = this.context.allowIn; this.context.allowIn = false; var declarations = this.parseVariableDeclarationList({ inFor: true }); this.context.allowIn = previousAllowIn; if (declarations.length === 1 && this.matchKeyword("in")) { var decl = declarations[0]; if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) { this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, "for-in"); } init2 = this.finalize(init2, new Node.VariableDeclaration(declarations, "var")); this.nextToken(); left = init2; right = this.parseExpression(); init2 = null; } else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword("of")) { init2 = this.finalize(init2, new Node.VariableDeclaration(declarations, "var")); this.nextToken(); left = init2; right = this.parseAssignmentExpression(); init2 = null; forIn = false; } else { init2 = this.finalize(init2, new Node.VariableDeclaration(declarations, "var")); this.expect(";"); } } else if (this.matchKeyword("const") || this.matchKeyword("let")) { init2 = this.createNode(); var kind = this.nextToken().value; if (!this.context.strict && this.lookahead.value === "in") { init2 = this.finalize(init2, new Node.Identifier(kind)); this.nextToken(); left = init2; right = this.parseExpression(); init2 = null; } else { var previousAllowIn = this.context.allowIn; this.context.allowIn = false; var declarations = this.parseBindingList(kind, { inFor: true }); this.context.allowIn = previousAllowIn; if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword("in")) { init2 = this.finalize(init2, new Node.VariableDeclaration(declarations, kind)); this.nextToken(); left = init2; right = this.parseExpression(); init2 = null; } else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword("of")) { init2 = this.finalize(init2, new Node.VariableDeclaration(declarations, kind)); this.nextToken(); left = init2; right = this.parseAssignmentExpression(); init2 = null; forIn = false; } else { this.consumeSemicolon(); init2 = this.finalize(init2, new Node.VariableDeclaration(declarations, kind)); } } } else { var initStartToken = this.lookahead; var previousAllowIn = this.context.allowIn; this.context.allowIn = false; init2 = this.inheritCoverGrammar(this.parseAssignmentExpression); this.context.allowIn = previousAllowIn; if (this.matchKeyword("in")) { if (!this.context.isAssignmentTarget || init2.type === syntax_1.Syntax.AssignmentExpression) { this.tolerateError(messages_1.Messages.InvalidLHSInForIn); } this.nextToken(); this.reinterpretExpressionAsPattern(init2); left = init2; right = this.parseExpression(); init2 = null; } else if (this.matchContextualKeyword("of")) { if (!this.context.isAssignmentTarget || init2.type === syntax_1.Syntax.AssignmentExpression) { this.tolerateError(messages_1.Messages.InvalidLHSInForLoop); } this.nextToken(); this.reinterpretExpressionAsPattern(init2); left = init2; right = this.parseAssignmentExpression(); init2 = null; forIn = false; } else { if (this.match(",")) { var initSeq = [init2]; while (this.match(",")) { this.nextToken(); initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression)); } init2 = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq)); } this.expect(";"); } } } if (typeof left === "undefined") { if (!this.match(";")) { test = this.parseExpression(); } this.expect(";"); if (!this.match(")")) { update2 = this.parseExpression(); } } var body; if (!this.match(")") && this.config.tolerant) { this.tolerateUnexpectedToken(this.nextToken()); body = this.finalize(this.createNode(), new Node.EmptyStatement()); } else { this.expect(")"); var previousInIteration = this.context.inIteration; this.context.inIteration = true; body = this.isolateCoverGrammar(this.parseStatement); this.context.inIteration = previousInIteration; } return typeof left === "undefined" ? this.finalize(node, new Node.ForStatement(init2, test, update2, body)) : forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) : this.finalize(node, new Node.ForOfStatement(left, right, body)); }; Parser2.prototype.parseContinueStatement = function() { var node = this.createNode(); this.expectKeyword("continue"); var label = null; if (this.lookahead.type === 3 && !this.hasLineTerminator) { var id = this.parseVariableIdentifier(); label = id; var key = "$" + id.name; if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { this.throwError(messages_1.Messages.UnknownLabel, id.name); } } this.consumeSemicolon(); if (label === null && !this.context.inIteration) { this.throwError(messages_1.Messages.IllegalContinue); } return this.finalize(node, new Node.ContinueStatement(label)); }; Parser2.prototype.parseBreakStatement = function() { var node = this.createNode(); this.expectKeyword("break"); var label = null; if (this.lookahead.type === 3 && !this.hasLineTerminator) { var id = this.parseVariableIdentifier(); var key = "$" + id.name; if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { this.throwError(messages_1.Messages.UnknownLabel, id.name); } label = id; } this.consumeSemicolon(); if (label === null && !this.context.inIteration && !this.context.inSwitch) { this.throwError(messages_1.Messages.IllegalBreak); } return this.finalize(node, new Node.BreakStatement(label)); }; Parser2.prototype.parseReturnStatement = function() { if (!this.context.inFunctionBody) { this.tolerateError(messages_1.Messages.IllegalReturn); } var node = this.createNode(); this.expectKeyword("return"); var hasArgument = !this.match(";") && !this.match("}") && !this.hasLineTerminator && this.lookahead.type !== 2 || this.lookahead.type === 8 || this.lookahead.type === 10; var argument = hasArgument ? this.parseExpression() : null; this.consumeSemicolon(); return this.finalize(node, new Node.ReturnStatement(argument)); }; Parser2.prototype.parseWithStatement = function() { if (this.context.strict) { this.tolerateError(messages_1.Messages.StrictModeWith); } var node = this.createNode(); var body; this.expectKeyword("with"); this.expect("("); var object = this.parseExpression(); if (!this.match(")") && this.config.tolerant) { this.tolerateUnexpectedToken(this.nextToken()); body = this.finalize(this.createNode(), new Node.EmptyStatement()); } else { this.expect(")"); body = this.parseStatement(); } return this.finalize(node, new Node.WithStatement(object, body)); }; Parser2.prototype.parseSwitchCase = function() { var node = this.createNode(); var test; if (this.matchKeyword("default")) { this.nextToken(); test = null; } else { this.expectKeyword("case"); test = this.parseExpression(); } this.expect(":"); var consequent = []; while (true) { if (this.match("}") || this.matchKeyword("default") || this.matchKeyword("case")) { break; } consequent.push(this.parseStatementListItem()); } return this.finalize(node, new Node.SwitchCase(test, consequent)); }; Parser2.prototype.parseSwitchStatement = function() { var node = this.createNode(); this.expectKeyword("switch"); this.expect("("); var discriminant = this.parseExpression(); this.expect(")"); var previousInSwitch = this.context.inSwitch; this.context.inSwitch = true; var cases = []; var defaultFound = false; this.expect("{"); while (true) { if (this.match("}")) { break; } var clause = this.parseSwitchCase(); if (clause.test === null) { if (defaultFound) { this.throwError(messages_1.Messages.MultipleDefaultsInSwitch); } defaultFound = true; } cases.push(clause); } this.expect("}"); this.context.inSwitch = previousInSwitch; return this.finalize(node, new Node.SwitchStatement(discriminant, cases)); }; Parser2.prototype.parseLabelledStatement = function() { var node = this.createNode(); var expr = this.parseExpression(); var statement; if (expr.type === syntax_1.Syntax.Identifier && this.match(":")) { this.nextToken(); var id = expr; var key = "$" + id.name; if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { this.throwError(messages_1.Messages.Redeclaration, "Label", id.name); } this.context.labelSet[key] = true; var body = void 0; if (this.matchKeyword("class")) { this.tolerateUnexpectedToken(this.lookahead); body = this.parseClassDeclaration(); } else if (this.matchKeyword("function")) { var token = this.lookahead; var declaration = this.parseFunctionDeclaration(); if (this.context.strict) { this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction); } else if (declaration.generator) { this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext); } body = declaration; } else { body = this.parseStatement(); } delete this.context.labelSet[key]; statement = new Node.LabeledStatement(id, body); } else { this.consumeSemicolon(); statement = new Node.ExpressionStatement(expr); } return this.finalize(node, statement); }; Parser2.prototype.parseThrowStatement = function() { var node = this.createNode(); this.expectKeyword("throw"); if (this.hasLineTerminator) { this.throwError(messages_1.Messages.NewlineAfterThrow); } var argument = this.parseExpression(); this.consumeSemicolon(); return this.finalize(node, new Node.ThrowStatement(argument)); }; Parser2.prototype.parseCatchClause = function() { var node = this.createNode(); this.expectKeyword("catch"); this.expect("("); if (this.match(")")) { this.throwUnexpectedToken(this.lookahead); } var params2 = []; var param2 = this.parsePattern(params2); var paramMap = {}; for (var i = 0; i < params2.length; i++) { var key = "$" + params2[i].value; if (Object.prototype.hasOwnProperty.call(paramMap, key)) { this.tolerateError(messages_1.Messages.DuplicateBinding, params2[i].value); } paramMap[key] = true; } if (this.context.strict && param2.type === syntax_1.Syntax.Identifier) { if (this.scanner.isRestrictedWord(param2.name)) { this.tolerateError(messages_1.Messages.StrictCatchVariable); } } this.expect(")"); var body = this.parseBlock(); return this.finalize(node, new Node.CatchClause(param2, body)); }; Parser2.prototype.parseFinallyClause = function() { this.expectKeyword("finally"); return this.parseBlock(); }; Parser2.prototype.parseTryStatement = function() { var node = this.createNode(); this.expectKeyword("try"); var block = this.parseBlock(); var handler = this.matchKeyword("catch") ? this.parseCatchClause() : null; var finalizer = this.matchKeyword("finally") ? this.parseFinallyClause() : null; if (!handler && !finalizer) { this.throwError(messages_1.Messages.NoCatchOrFinally); } return this.finalize(node, new Node.TryStatement(block, handler, finalizer)); }; Parser2.prototype.parseDebuggerStatement = function() { var node = this.createNode(); this.expectKeyword("debugger"); this.consumeSemicolon(); return this.finalize(node, new Node.DebuggerStatement()); }; Parser2.prototype.parseStatement = function() { var statement; switch (this.lookahead.type) { case 1: case 5: case 6: case 8: case 10: case 9: statement = this.parseExpressionStatement(); break; case 7: var value = this.lookahead.value; if (value === "{") { statement = this.parseBlock(); } else if (value === "(") { statement = this.parseExpressionStatement(); } else if (value === ";") { statement = this.parseEmptyStatement(); } else { statement = this.parseExpressionStatement(); } break; case 3: statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement(); break; case 4: switch (this.lookahead.value) { case "break": statement = this.parseBreakStatement(); break; case "continue": statement = this.parseContinueStatement(); break; case "debugger": statement = this.parseDebuggerStatement(); break; case "do": statement = this.parseDoWhileStatement(); break; case "for": statement = this.parseForStatement(); break; case "function": statement = this.parseFunctionDeclaration(); break; case "if": statement = this.parseIfStatement(); break; case "return": statement = this.parseReturnStatement(); break; case "switch": statement = this.parseSwitchStatement(); break; case "throw": statement = this.parseThrowStatement(); break; case "try": statement = this.parseTryStatement(); break; case "var": statement = this.parseVariableStatement(); break; case "while": statement = this.parseWhileStatement(); break; case "with": statement = this.parseWithStatement(); break; default: statement = this.parseExpressionStatement(); break; } break; default: statement = this.throwUnexpectedToken(this.lookahead); } return statement; }; Parser2.prototype.parseFunctionSourceElements = function() { var node = this.createNode(); this.expect("{"); var body = this.parseDirectivePrologues(); var previousLabelSet = this.context.labelSet; var previousInIteration = this.context.inIteration; var previousInSwitch = this.context.inSwitch; var previousInFunctionBody = this.context.inFunctionBody; this.context.labelSet = {}; this.context.inIteration = false; this.context.inSwitch = false; this.context.inFunctionBody = true; while (this.lookahead.type !== 2) { if (this.match("}")) { break; } body.push(this.parseStatementListItem()); } this.expect("}"); this.context.labelSet = previousLabelSet; this.context.inIteration = previousInIteration; this.context.inSwitch = previousInSwitch; this.context.inFunctionBody = previousInFunctionBody; return this.finalize(node, new Node.BlockStatement(body)); }; Parser2.prototype.validateParam = function(options, param2, name) { var key = "$" + name; if (this.context.strict) { if (this.scanner.isRestrictedWord(name)) { options.stricted = param2; options.message = messages_1.Messages.StrictParamName; } if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { options.stricted = param2; options.message = messages_1.Messages.StrictParamDupe; } } else if (!options.firstRestricted) { if (this.scanner.isRestrictedWord(name)) { options.firstRestricted = param2; options.message = messages_1.Messages.StrictParamName; } else if (this.scanner.isStrictModeReservedWord(name)) { options.firstRestricted = param2; options.message = messages_1.Messages.StrictReservedWord; } else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { options.stricted = param2; options.message = messages_1.Messages.StrictParamDupe; } } if (typeof Object.defineProperty === "function") { Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true }); } else { options.paramSet[key] = true; } }; Parser2.prototype.parseRestElement = function(params2) { var node = this.createNode(); this.expect("..."); var arg2 = this.parsePattern(params2); if (this.match("=")) { this.throwError(messages_1.Messages.DefaultRestParameter); } if (!this.match(")")) { this.throwError(messages_1.Messages.ParameterAfterRestParameter); } return this.finalize(node, new Node.RestElement(arg2)); }; Parser2.prototype.parseFormalParameter = function(options) { var params2 = []; var param2 = this.match("...") ? this.parseRestElement(params2) : this.parsePatternWithDefault(params2); for (var i = 0; i < params2.length; i++) { this.validateParam(options, params2[i], params2[i].value); } options.simple = options.simple && param2 instanceof Node.Identifier; options.params.push(param2); }; Parser2.prototype.parseFormalParameters = function(firstRestricted) { var options; options = { simple: true, params: [], firstRestricted }; this.expect("("); if (!this.match(")")) { options.paramSet = {}; while (this.lookahead.type !== 2) { this.parseFormalParameter(options); if (this.match(")")) { break; } this.expect(","); if (this.match(")")) { break; } } } this.expect(")"); return { simple: options.simple, params: options.params, stricted: options.stricted, firstRestricted: options.firstRestricted, message: options.message }; }; Parser2.prototype.matchAsyncFunction = function() { var match = this.matchContextualKeyword("async"); if (match) { var state = this.scanner.saveState(); this.scanner.scanComments(); var next = this.scanner.lex(); this.scanner.restoreState(state); match = state.lineNumber === next.lineNumber && next.type === 4 && next.value === "function"; } return match; }; Parser2.prototype.parseFunctionDeclaration = function(identifierIsOptional) { var node = this.createNode(); var isAsync = this.matchContextualKeyword("async"); if (isAsync) { this.nextToken(); } this.expectKeyword("function"); var isGenerator = isAsync ? false : this.match("*"); if (isGenerator) { this.nextToken(); } var message2; var id = null; var firstRestricted = null; if (!identifierIsOptional || !this.match("(")) { var token = this.lookahead; id = this.parseVariableIdentifier(); if (this.context.strict) { if (this.scanner.isRestrictedWord(token.value)) { this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName); } } else { if (this.scanner.isRestrictedWord(token.value)) { firstRestricted = token; message2 = messages_1.Messages.StrictFunctionName; } else if (this.scanner.isStrictModeReservedWord(token.value)) { firstRestricted = token; message2 = messages_1.Messages.StrictReservedWord; } } } var previousAllowAwait = this.context.await; var previousAllowYield = this.context.allowYield; this.context.await = isAsync; this.context.allowYield = !isGenerator; var formalParameters = this.parseFormalParameters(firstRestricted); var params2 = formalParameters.params; var stricted = formalParameters.stricted; firstRestricted = formalParameters.firstRestricted; if (formalParameters.message) { message2 = formalParameters.message; } var previousStrict = this.context.strict; var previousAllowStrictDirective = this.context.allowStrictDirective; this.context.allowStrictDirective = formalParameters.simple; var body = this.parseFunctionSourceElements(); if (this.context.strict && firstRestricted) { this.throwUnexpectedToken(firstRestricted, message2); } if (this.context.strict && stricted) { this.tolerateUnexpectedToken(stricted, message2); } this.context.strict = previousStrict; this.context.allowStrictDirective = previousAllowStrictDirective; this.context.await = previousAllowAwait; this.context.allowYield = previousAllowYield; return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params2, body)) : this.finalize(node, new Node.FunctionDeclaration(id, params2, body, isGenerator)); }; Parser2.prototype.parseFunctionExpression = function() { var node = this.createNode(); var isAsync = this.matchContextualKeyword("async"); if (isAsync) { this.nextToken(); } this.expectKeyword("function"); var isGenerator = isAsync ? false : this.match("*"); if (isGenerator) { this.nextToken(); } var message2; var id = null; var firstRestricted; var previousAllowAwait = this.context.await; var previousAllowYield = this.context.allowYield; this.context.await = isAsync; this.context.allowYield = !isGenerator; if (!this.match("(")) { var token = this.lookahead; id = !this.context.strict && !isGenerator && this.matchKeyword("yield") ? this.parseIdentifierName() : this.parseVariableIdentifier(); if (this.context.strict) { if (this.scanner.isRestrictedWord(token.value)) { this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName); } } else { if (this.scanner.isRestrictedWord(token.value)) { firstRestricted = token; message2 = messages_1.Messages.StrictFunctionName; } else if (this.scanner.isStrictModeReservedWord(token.value)) { firstRestricted = token; message2 = messages_1.Messages.StrictReservedWord; } } } var formalParameters = this.parseFormalParameters(firstRestricted); var params2 = formalParameters.params; var stricted = formalParameters.stricted; firstRestricted = formalParameters.firstRestricted; if (formalParameters.message) { message2 = formalParameters.message; } var previousStrict = this.context.strict; var previousAllowStrictDirective = this.context.allowStrictDirective; this.context.allowStrictDirective = formalParameters.simple; var body = this.parseFunctionSourceElements(); if (this.context.strict && firstRestricted) { this.throwUnexpectedToken(firstRestricted, message2); } if (this.context.strict && stricted) { this.tolerateUnexpectedToken(stricted, message2); } this.context.strict = previousStrict; this.context.allowStrictDirective = previousAllowStrictDirective; this.context.await = previousAllowAwait; this.context.allowYield = previousAllowYield; return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params2, body)) : this.finalize(node, new Node.FunctionExpression(id, params2, body, isGenerator)); }; Parser2.prototype.parseDirective = function() { var token = this.lookahead; var node = this.createNode(); var expr = this.parseExpression(); var directive = expr.type === syntax_1.Syntax.Literal ? this.getTokenRaw(token).slice(1, -1) : null; this.consumeSemicolon(); return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr)); }; Parser2.prototype.parseDirectivePrologues = function() { var firstRestricted = null; var body = []; while (true) { var token = this.lookahead; if (token.type !== 8) { break; } var statement = this.parseDirective(); body.push(statement); var directive = statement.directive; if (typeof directive !== "string") { break; } if (directive === "use strict") { this.context.strict = true; if (firstRestricted) { this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral); } if (!this.context.allowStrictDirective) { this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective); } } else { if (!firstRestricted && token.octal) { firstRestricted = token; } } } return body; }; Parser2.prototype.qualifiedPropertyName = function(token) { switch (token.type) { case 3: case 8: case 1: case 5: case 6: case 4: return true; case 7: return token.value === "["; default: break; } return false; }; Parser2.prototype.parseGetterMethod = function() { var node = this.createNode(); var isGenerator = false; var previousAllowYield = this.context.allowYield; this.context.allowYield = !isGenerator; var formalParameters = this.parseFormalParameters(); if (formalParameters.params.length > 0) { this.tolerateError(messages_1.Messages.BadGetterArity); } var method = this.parsePropertyMethod(formalParameters); this.context.allowYield = previousAllowYield; return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator)); }; Parser2.prototype.parseSetterMethod = function() { var node = this.createNode(); var isGenerator = false; var previousAllowYield = this.context.allowYield; this.context.allowYield = !isGenerator; var formalParameters = this.parseFormalParameters(); if (formalParameters.params.length !== 1) { this.tolerateError(messages_1.Messages.BadSetterArity); } else if (formalParameters.params[0] instanceof Node.RestElement) { this.tolerateError(messages_1.Messages.BadSetterRestParameter); } var method = this.parsePropertyMethod(formalParameters); this.context.allowYield = previousAllowYield; return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator)); }; Parser2.prototype.parseGeneratorMethod = function() { var node = this.createNode(); var isGenerator = true; var previousAllowYield = this.context.allowYield; this.context.allowYield = true; var params2 = this.parseFormalParameters(); this.context.allowYield = false; var method = this.parsePropertyMethod(params2); this.context.allowYield = previousAllowYield; return this.finalize(node, new Node.FunctionExpression(null, params2.params, method, isGenerator)); }; Parser2.prototype.isStartOfExpression = function() { var start = true; var value = this.lookahead.value; switch (this.lookahead.type) { case 7: start = value === "[" || value === "(" || value === "{" || value === "+" || value === "-" || value === "!" || value === "~" || value === "++" || value === "--" || value === "/" || value === "/="; break; case 4: start = value === "class" || value === "delete" || value === "function" || value === "let" || value === "new" || value === "super" || value === "this" || value === "typeof" || value === "void" || value === "yield"; break; default: break; } return start; }; Parser2.prototype.parseYieldExpression = function() { var node = this.createNode(); this.expectKeyword("yield"); var argument = null; var delegate = false; if (!this.hasLineTerminator) { var previousAllowYield = this.context.allowYield; this.context.allowYield = false; delegate = this.match("*"); if (delegate) { this.nextToken(); argument = this.parseAssignmentExpression(); } else if (this.isStartOfExpression()) { argument = this.parseAssignmentExpression(); } this.context.allowYield = previousAllowYield; } return this.finalize(node, new Node.YieldExpression(argument, delegate)); }; Parser2.prototype.parseClassElement = function(hasConstructor) { var token = this.lookahead; var node = this.createNode(); var kind = ""; var key = null; var value = null; var computed = false; var method = false; var isStatic = false; var isAsync = false; if (this.match("*")) { this.nextToken(); } else { computed = this.match("["); key = this.parseObjectPropertyKey(); var id = key; if (id.name === "static" && (this.qualifiedPropertyName(this.lookahead) || this.match("*"))) { token = this.lookahead; isStatic = true; computed = this.match("["); if (this.match("*")) { this.nextToken(); } else { key = this.parseObjectPropertyKey(); } } if (token.type === 3 && !this.hasLineTerminator && token.value === "async") { var punctuator = this.lookahead.value; if (punctuator !== ":" && punctuator !== "(" && punctuator !== "*") { isAsync = true; token = this.lookahead; key = this.parseObjectPropertyKey(); if (token.type === 3 && token.value === "constructor") { this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync); } } } } var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead); if (token.type === 3) { if (token.value === "get" && lookaheadPropertyKey) { kind = "get"; computed = this.match("["); key = this.parseObjectPropertyKey(); this.context.allowYield = false; value = this.parseGetterMethod(); } else if (token.value === "set" && lookaheadPropertyKey) { kind = "set"; computed = this.match("["); key = this.parseObjectPropertyKey(); value = this.parseSetterMethod(); } } else if (token.type === 7 && token.value === "*" && lookaheadPropertyKey) { kind = "init"; computed = this.match("["); key = this.parseObjectPropertyKey(); value = this.parseGeneratorMethod(); method = true; } if (!kind && key && this.match("(")) { kind = "init"; value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction(); method = true; } if (!kind) { this.throwUnexpectedToken(this.lookahead); } if (kind === "init") { kind = "method"; } if (!computed) { if (isStatic && this.isPropertyKey(key, "prototype")) { this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype); } if (!isStatic && this.isPropertyKey(key, "constructor")) { if (kind !== "method" || !method || value && value.generator) { this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod); } if (hasConstructor.value) { this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor); } else { hasConstructor.value = true; } kind = "constructor"; } } return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic)); }; Parser2.prototype.parseClassElementList = function() { var body = []; var hasConstructor = { value: false }; this.expect("{"); while (!this.match("}")) { if (this.match(";")) { this.nextToken(); } else { body.push(this.parseClassElement(hasConstructor)); } } this.expect("}"); return body; }; Parser2.prototype.parseClassBody = function() { var node = this.createNode(); var elementList = this.parseClassElementList(); return this.finalize(node, new Node.ClassBody(elementList)); }; Parser2.prototype.parseClassDeclaration = function(identifierIsOptional) { var node = this.createNode(); var previousStrict = this.context.strict; this.context.strict = true; this.expectKeyword("class"); var id = identifierIsOptional && this.lookahead.type !== 3 ? null : this.parseVariableIdentifier(); var superClass = null; if (this.matchKeyword("extends")) { this.nextToken(); superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall); } var classBody = this.parseClassBody(); this.context.strict = previousStrict; return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody)); }; Parser2.prototype.parseClassExpression = function() { var node = this.createNode(); var previousStrict = this.context.strict; this.context.strict = true; this.expectKeyword("class"); var id = this.lookahead.type === 3 ? this.parseVariableIdentifier() : null; var superClass = null; if (this.matchKeyword("extends")) { this.nextToken(); superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall); } var classBody = this.parseClassBody(); this.context.strict = previousStrict; return this.finalize(node, new Node.ClassExpression(id, superClass, classBody)); }; Parser2.prototype.parseModule = function() { this.context.strict = true; this.context.isModule = true; this.scanner.isModule = true; var node = this.createNode(); var body = this.parseDirectivePrologues(); while (this.lookahead.type !== 2) { body.push(this.parseStatementListItem()); } return this.finalize(node, new Node.Module(body)); }; Parser2.prototype.parseScript = function() { var node = this.createNode(); var body = this.parseDirectivePrologues(); while (this.lookahead.type !== 2) { body.push(this.parseStatementListItem()); } return this.finalize(node, new Node.Script(body)); }; Parser2.prototype.parseModuleSpecifier = function() { var node = this.createNode(); if (this.lookahead.type !== 8) { this.throwError(messages_1.Messages.InvalidModuleSpecifier); } var token = this.nextToken(); var raw = this.getTokenRaw(token); return this.finalize(node, new Node.Literal(token.value, raw)); }; Parser2.prototype.parseImportSpecifier = function() { var node = this.createNode(); var imported; var local; if (this.lookahead.type === 3) { imported = this.parseVariableIdentifier(); local = imported; if (this.matchContextualKeyword("as")) { this.nextToken(); local = this.parseVariableIdentifier(); } } else { imported = this.parseIdentifierName(); local = imported; if (this.matchContextualKeyword("as")) { this.nextToken(); local = this.parseVariableIdentifier(); } else { this.throwUnexpectedToken(this.nextToken()); } } return this.finalize(node, new Node.ImportSpecifier(local, imported)); }; Parser2.prototype.parseNamedImports = function() { this.expect("{"); var specifiers = []; while (!this.match("}")) { specifiers.push(this.parseImportSpecifier()); if (!this.match("}")) { this.expect(","); } } this.expect("}"); return specifiers; }; Parser2.prototype.parseImportDefaultSpecifier = function() { var node = this.createNode(); var local = this.parseIdentifierName(); return this.finalize(node, new Node.ImportDefaultSpecifier(local)); }; Parser2.prototype.parseImportNamespaceSpecifier = function() { var node = this.createNode(); this.expect("*"); if (!this.matchContextualKeyword("as")) { this.throwError(messages_1.Messages.NoAsAfterImportNamespace); } this.nextToken(); var local = this.parseIdentifierName(); return this.finalize(node, new Node.ImportNamespaceSpecifier(local)); }; Parser2.prototype.parseImportDeclaration = function() { if (this.context.inFunctionBody) { this.throwError(messages_1.Messages.IllegalImportDeclaration); } var node = this.createNode(); this.expectKeyword("import"); var src; var specifiers = []; if (this.lookahead.type === 8) { src = this.parseModuleSpecifier(); } else { if (this.match("{")) { specifiers = specifiers.concat(this.parseNamedImports()); } else if (this.match("*")) { specifiers.push(this.parseImportNamespaceSpecifier()); } else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword("default")) { specifiers.push(this.parseImportDefaultSpecifier()); if (this.match(",")) { this.nextToken(); if (this.match("*")) { specifiers.push(this.parseImportNamespaceSpecifier()); } else if (this.match("{")) { specifiers = specifiers.concat(this.parseNamedImports()); } else { this.throwUnexpectedToken(this.lookahead); } } } else { this.throwUnexpectedToken(this.nextToken()); } if (!this.matchContextualKeyword("from")) { var message2 = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; this.throwError(message2, this.lookahead.value); } this.nextToken(); src = this.parseModuleSpecifier(); } this.consumeSemicolon(); return this.finalize(node, new Node.ImportDeclaration(specifiers, src)); }; Parser2.prototype.parseExportSpecifier = function() { var node = this.createNode(); var local = this.parseIdentifierName(); var exported = local; if (this.matchContextualKeyword("as")) { this.nextToken(); exported = this.parseIdentifierName(); } return this.finalize(node, new Node.ExportSpecifier(local, exported)); }; Parser2.prototype.parseExportDeclaration = function() { if (this.context.inFunctionBody) { this.throwError(messages_1.Messages.IllegalExportDeclaration); } var node = this.createNode(); this.expectKeyword("export"); var exportDeclaration; if (this.matchKeyword("default")) { this.nextToken(); if (this.matchKeyword("function")) { var declaration = this.parseFunctionDeclaration(true); exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); } else if (this.matchKeyword("class")) { var declaration = this.parseClassDeclaration(true); exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); } else if (this.matchContextualKeyword("async")) { var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression(); exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); } else { if (this.matchContextualKeyword("from")) { this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value); } var declaration = this.match("{") ? this.parseObjectInitializer() : this.match("[") ? this.parseArrayInitializer() : this.parseAssignmentExpression(); this.consumeSemicolon(); exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); } } else if (this.match("*")) { this.nextToken(); if (!this.matchContextualKeyword("from")) { var message2 = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; this.throwError(message2, this.lookahead.value); } this.nextToken(); var src = this.parseModuleSpecifier(); this.consumeSemicolon(); exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src)); } else if (this.lookahead.type === 4) { var declaration = void 0; switch (this.lookahead.value) { case "let": case "const": declaration = this.parseLexicalDeclaration({ inFor: false }); break; case "var": case "class": case "function": declaration = this.parseStatementListItem(); break; default: this.throwUnexpectedToken(this.lookahead); } exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null)); } else if (this.matchAsyncFunction()) { var declaration = this.parseFunctionDeclaration(); exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null)); } else { var specifiers = []; var source = null; var isExportFromIdentifier = false; this.expect("{"); while (!this.match("}")) { isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword("default"); specifiers.push(this.parseExportSpecifier()); if (!this.match("}")) { this.expect(","); } } this.expect("}"); if (this.matchContextualKeyword("from")) { this.nextToken(); source = this.parseModuleSpecifier(); this.consumeSemicolon(); } else if (isExportFromIdentifier) { var message2 = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; this.throwError(message2, this.lookahead.value); } else { this.consumeSemicolon(); } exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source)); } return exportDeclaration; }; return Parser2; }(); exports3.Parser = Parser; }, /* 9 */ /***/ function(module3, exports3) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); function assert(condition, message2) { if (!condition) { throw new Error("ASSERT: " + message2); } } exports3.assert = assert; }, /* 10 */ /***/ function(module3, exports3) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var ErrorHandler = function() { function ErrorHandler2() { this.errors = []; this.tolerant = false; } ErrorHandler2.prototype.recordError = function(error3) { this.errors.push(error3); }; ErrorHandler2.prototype.tolerate = function(error3) { if (this.tolerant) { this.recordError(error3); } else { throw error3; } }; ErrorHandler2.prototype.constructError = function(msg, column) { var error3 = new Error(msg); try { throw error3; } catch (base) { if (Object.create && Object.defineProperty) { error3 = Object.create(base); Object.defineProperty(error3, "column", { value: column }); } } return error3; }; ErrorHandler2.prototype.createError = function(index, line, col, description) { var msg = "Line " + line + ": " + description; var error3 = this.constructError(msg, col); error3.index = index; error3.lineNumber = line; error3.description = description; return error3; }; ErrorHandler2.prototype.throwError = function(index, line, col, description) { throw this.createError(index, line, col, description); }; ErrorHandler2.prototype.tolerateError = function(index, line, col, description) { var error3 = this.createError(index, line, col, description); if (this.tolerant) { this.recordError(error3); } else { throw error3; } }; return ErrorHandler2; }(); exports3.ErrorHandler = ErrorHandler; }, /* 11 */ /***/ function(module3, exports3) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); exports3.Messages = { BadGetterArity: "Getter must not have any formal parameters", BadSetterArity: "Setter must have exactly one formal parameter", BadSetterRestParameter: "Setter function argument must not be a rest parameter", ConstructorIsAsync: "Class constructor may not be an async method", ConstructorSpecialMethod: "Class constructor may not be an accessor", DeclarationMissingInitializer: "Missing initializer in %0 declaration", DefaultRestParameter: "Unexpected token =", DuplicateBinding: "Duplicate binding %0", DuplicateConstructor: "A class may only have one constructor", DuplicateProtoProperty: "Duplicate __proto__ fields are not allowed in object literals", ForInOfLoopInitializer: "%0 loop variable declaration may not have an initializer", GeneratorInLegacyContext: "Generator declarations are not allowed in legacy contexts", IllegalBreak: "Illegal break statement", IllegalContinue: "Illegal continue statement", IllegalExportDeclaration: "Unexpected token", IllegalImportDeclaration: "Unexpected token", IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list", IllegalReturn: "Illegal return statement", InvalidEscapedReservedWord: "Keyword must not contain escaped characters", InvalidHexEscapeSequence: "Invalid hexadecimal escape sequence", InvalidLHSInAssignment: "Invalid left-hand side in assignment", InvalidLHSInForIn: "Invalid left-hand side in for-in", InvalidLHSInForLoop: "Invalid left-hand side in for-loop", InvalidModuleSpecifier: "Unexpected token", InvalidRegExp: "Invalid regular expression", LetInLexicalBinding: "let is disallowed as a lexically bound name", MissingFromClause: "Unexpected token", MultipleDefaultsInSwitch: "More than one default clause in switch statement", NewlineAfterThrow: "Illegal newline after throw", NoAsAfterImportNamespace: "Unexpected token", NoCatchOrFinally: "Missing catch or finally after try", ParameterAfterRestParameter: "Rest parameter must be last formal parameter", Redeclaration: "%0 '%1' has already been declared", StaticPrototype: "Classes may not have static property named prototype", StrictCatchVariable: "Catch variable may not be eval or arguments in strict mode", StrictDelete: "Delete of an unqualified identifier in strict mode.", StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block", StrictFunctionName: "Function name may not be eval or arguments in strict mode", StrictLHSAssignment: "Assignment to eval or arguments is not allowed in strict mode", StrictLHSPostfix: "Postfix increment/decrement may not have eval or arguments operand in strict mode", StrictLHSPrefix: "Prefix increment/decrement may not have eval or arguments operand in strict mode", StrictModeWith: "Strict mode code may not include a with statement", StrictOctalLiteral: "Octal literals are not allowed in strict mode.", StrictParamDupe: "Strict mode function may not have duplicate parameter names", StrictParamName: "Parameter name eval or arguments is not allowed in strict mode", StrictReservedWord: "Use of future reserved word in strict mode", StrictVarName: "Variable name may not be eval or arguments in strict mode", TemplateOctalLiteral: "Octal literals are not allowed in template strings.", UnexpectedEOS: "Unexpected end of input", UnexpectedIdentifier: "Unexpected identifier", UnexpectedNumber: "Unexpected number", UnexpectedReserved: "Unexpected reserved word", UnexpectedString: "Unexpected string", UnexpectedTemplate: "Unexpected quasi %0", UnexpectedToken: "Unexpected token %0", UnexpectedTokenIllegal: "Unexpected token ILLEGAL", UnknownLabel: "Undefined label '%0'", UnterminatedRegExp: "Invalid regular expression: missing /" }; }, /* 12 */ /***/ function(module3, exports3, __webpack_require__) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var assert_1 = __webpack_require__(9); var character_1 = __webpack_require__(4); var messages_1 = __webpack_require__(11); function hexValue(ch) { return "0123456789abcdef".indexOf(ch.toLowerCase()); } function octalValue(ch) { return "01234567".indexOf(ch); } var Scanner = function() { function Scanner2(code2, handler) { this.source = code2; this.errorHandler = handler; this.trackComment = false; this.isModule = false; this.length = code2.length; this.index = 0; this.lineNumber = code2.length > 0 ? 1 : 0; this.lineStart = 0; this.curlyStack = []; } Scanner2.prototype.saveState = function() { return { index: this.index, lineNumber: this.lineNumber, lineStart: this.lineStart }; }; Scanner2.prototype.restoreState = function(state) { this.index = state.index; this.lineNumber = state.lineNumber; this.lineStart = state.lineStart; }; Scanner2.prototype.eof = function() { return this.index >= this.length; }; Scanner2.prototype.throwUnexpectedToken = function(message2) { if (message2 === void 0) { message2 = messages_1.Messages.UnexpectedTokenIllegal; } return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message2); }; Scanner2.prototype.tolerateUnexpectedToken = function(message2) { if (message2 === void 0) { message2 = messages_1.Messages.UnexpectedTokenIllegal; } this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message2); }; Scanner2.prototype.skipSingleLineComment = function(offset) { var comments = []; var start, loc; if (this.trackComment) { comments = []; start = this.index - offset; loc = { start: { line: this.lineNumber, column: this.index - this.lineStart - offset }, end: {} }; } while (!this.eof()) { var ch = this.source.charCodeAt(this.index); ++this.index; if (character_1.Character.isLineTerminator(ch)) { if (this.trackComment) { loc.end = { line: this.lineNumber, column: this.index - this.lineStart - 1 }; var entry = { multiLine: false, slice: [start + offset, this.index - 1], range: [start, this.index - 1], loc }; comments.push(entry); } if (ch === 13 && this.source.charCodeAt(this.index) === 10) { ++this.index; } ++this.lineNumber; this.lineStart = this.index; return comments; } } if (this.trackComment) { loc.end = { line: this.lineNumber, column: this.index - this.lineStart }; var entry = { multiLine: false, slice: [start + offset, this.index], range: [start, this.index], loc }; comments.push(entry); } return comments; }; Scanner2.prototype.skipMultiLineComment = function() { var comments = []; var start, loc; if (this.trackComment) { comments = []; start = this.index - 2; loc = { start: { line: this.lineNumber, column: this.index - this.lineStart - 2 }, end: {} }; } while (!this.eof()) { var ch = this.source.charCodeAt(this.index); if (character_1.Character.isLineTerminator(ch)) { if (ch === 13 && this.source.charCodeAt(this.index + 1) === 10) { ++this.index; } ++this.lineNumber; ++this.index; this.lineStart = this.index; } else if (ch === 42) { if (this.source.charCodeAt(this.index + 1) === 47) { this.index += 2; if (this.trackComment) { loc.end = { line: this.lineNumber, column: this.index - this.lineStart }; var entry = { multiLine: true, slice: [start + 2, this.index - 2], range: [start, this.index], loc }; comments.push(entry); } return comments; } ++this.index; } else { ++this.index; } } if (this.trackComment) { loc.end = { line: this.lineNumber, column: this.index - this.lineStart }; var entry = { multiLine: true, slice: [start + 2, this.index], range: [start, this.index], loc }; comments.push(entry); } this.tolerateUnexpectedToken(); return comments; }; Scanner2.prototype.scanComments = function() { var comments; if (this.trackComment) { comments = []; } var start = this.index === 0; while (!this.eof()) { var ch = this.source.charCodeAt(this.index); if (character_1.Character.isWhiteSpace(ch)) { ++this.index; } else if (character_1.Character.isLineTerminator(ch)) { ++this.index; if (ch === 13 && this.source.charCodeAt(this.index) === 10) { ++this.index; } ++this.lineNumber; this.lineStart = this.index; start = true; } else if (ch === 47) { ch = this.source.charCodeAt(this.index + 1); if (ch === 47) { this.index += 2; var comment = this.skipSingleLineComment(2); if (this.trackComment) { comments = comments.concat(comment); } start = true; } else if (ch === 42) { this.index += 2; var comment = this.skipMultiLineComment(); if (this.trackComment) { comments = comments.concat(comment); } } else { break; } } else if (start && ch === 45) { if (this.source.charCodeAt(this.index + 1) === 45 && this.source.charCodeAt(this.index + 2) === 62) { this.index += 3; var comment = this.skipSingleLineComment(3); if (this.trackComment) { comments = comments.concat(comment); } } else { break; } } else if (ch === 60 && !this.isModule) { if (this.source.slice(this.index + 1, this.index + 4) === "!--") { this.index += 4; var comment = this.skipSingleLineComment(4); if (this.trackComment) { comments = comments.concat(comment); } } else { break; } } else { break; } } return comments; }; Scanner2.prototype.isFutureReservedWord = function(id) { switch (id) { case "enum": case "export": case "import": case "super": return true; default: return false; } }; Scanner2.prototype.isStrictModeReservedWord = function(id) { switch (id) { case "implements": case "interface": case "package": case "private": case "protected": case "public": case "static": case "yield": case "let": return true; default: return false; } }; Scanner2.prototype.isRestrictedWord = function(id) { return id === "eval" || id === "arguments"; }; Scanner2.prototype.isKeyword = function(id) { switch (id.length) { case 2: return id === "if" || id === "in" || id === "do"; case 3: return id === "var" || id === "for" || id === "new" || id === "try" || id === "let"; case 4: return id === "this" || id === "else" || id === "case" || id === "void" || id === "with" || id === "enum"; case 5: return id === "while" || id === "break" || id === "catch" || id === "throw" || id === "const" || id === "yield" || id === "class" || id === "super"; case 6: return id === "return" || id === "typeof" || id === "delete" || id === "switch" || id === "export" || id === "import"; case 7: return id === "default" || id === "finally" || id === "extends"; case 8: return id === "function" || id === "continue" || id === "debugger"; case 10: return id === "instanceof"; default: return false; } }; Scanner2.prototype.codePointAt = function(i) { var cp = this.source.charCodeAt(i); if (cp >= 55296 && cp <= 56319) { var second = this.source.charCodeAt(i + 1); if (second >= 56320 && second <= 57343) { var first = cp; cp = (first - 55296) * 1024 + second - 56320 + 65536; } } return cp; }; Scanner2.prototype.scanHexEscape = function(prefix) { var len = prefix === "u" ? 4 : 2; var code2 = 0; for (var i = 0; i < len; ++i) { if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) { code2 = code2 * 16 + hexValue(this.source[this.index++]); } else { return null; } } return String.fromCharCode(code2); }; Scanner2.prototype.scanUnicodeCodePointEscape = function() { var ch = this.source[this.index]; var code2 = 0; if (ch === "}") { this.throwUnexpectedToken(); } while (!this.eof()) { ch = this.source[this.index++]; if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) { break; } code2 = code2 * 16 + hexValue(ch); } if (code2 > 1114111 || ch !== "}") { this.throwUnexpectedToken(); } return character_1.Character.fromCodePoint(code2); }; Scanner2.prototype.getIdentifier = function() { var start = this.index++; while (!this.eof()) { var ch = this.source.charCodeAt(this.index); if (ch === 92) { this.index = start; return this.getComplexIdentifier(); } else if (ch >= 55296 && ch < 57343) { this.index = start; return this.getComplexIdentifier(); } if (character_1.Character.isIdentifierPart(ch)) { ++this.index; } else { break; } } return this.source.slice(start, this.index); }; Scanner2.prototype.getComplexIdentifier = function() { var cp = this.codePointAt(this.index); var id = character_1.Character.fromCodePoint(cp); this.index += id.length; var ch; if (cp === 92) { if (this.source.charCodeAt(this.index) !== 117) { this.throwUnexpectedToken(); } ++this.index; if (this.source[this.index] === "{") { ++this.index; ch = this.scanUnicodeCodePointEscape(); } else { ch = this.scanHexEscape("u"); if (ch === null || ch === "\\" || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) { this.throwUnexpectedToken(); } } id = ch; } while (!this.eof()) { cp = this.codePointAt(this.index); if (!character_1.Character.isIdentifierPart(cp)) { break; } ch = character_1.Character.fromCodePoint(cp); id += ch; this.index += ch.length; if (cp === 92) { id = id.substr(0, id.length - 1); if (this.source.charCodeAt(this.index) !== 117) { this.throwUnexpectedToken(); } ++this.index; if (this.source[this.index] === "{") { ++this.index; ch = this.scanUnicodeCodePointEscape(); } else { ch = this.scanHexEscape("u"); if (ch === null || ch === "\\" || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) { this.throwUnexpectedToken(); } } id += ch; } } return id; }; Scanner2.prototype.octalToDecimal = function(ch) { var octal = ch !== "0"; var code2 = octalValue(ch); if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) { octal = true; code2 = code2 * 8 + octalValue(this.source[this.index++]); if ("0123".indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) { code2 = code2 * 8 + octalValue(this.source[this.index++]); } } return { code: code2, octal }; }; Scanner2.prototype.scanIdentifier = function() { var type; var start = this.index; var id = this.source.charCodeAt(start) === 92 ? this.getComplexIdentifier() : this.getIdentifier(); if (id.length === 1) { type = 3; } else if (this.isKeyword(id)) { type = 4; } else if (id === "null") { type = 5; } else if (id === "true" || id === "false") { type = 1; } else { type = 3; } if (type !== 3 && start + id.length !== this.index) { var restore2 = this.index; this.index = start; this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord); this.index = restore2; } return { type, value: id, lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.scanPunctuator = function() { var start = this.index; var str = this.source[this.index]; switch (str) { case "(": case "{": if (str === "{") { this.curlyStack.push("{"); } ++this.index; break; case ".": ++this.index; if (this.source[this.index] === "." && this.source[this.index + 1] === ".") { this.index += 2; str = "..."; } break; case "}": ++this.index; this.curlyStack.pop(); break; case ")": case ";": case ",": case "[": case "]": case ":": case "?": case "~": ++this.index; break; default: str = this.source.substr(this.index, 4); if (str === ">>>=") { this.index += 4; } else { str = str.substr(0, 3); if (str === "===" || str === "!==" || str === ">>>" || str === "<<=" || str === ">>=" || str === "**=") { this.index += 3; } else { str = str.substr(0, 2); if (str === "&&" || str === "||" || str === "==" || str === "!=" || str === "+=" || str === "-=" || str === "*=" || str === "/=" || str === "++" || str === "--" || str === "<<" || str === ">>" || str === "&=" || str === "|=" || str === "^=" || str === "%=" || str === "<=" || str === ">=" || str === "=>" || str === "**") { this.index += 2; } else { str = this.source[this.index]; if ("<>=!+-*%&|^/".indexOf(str) >= 0) { ++this.index; } } } } } if (this.index === start) { this.throwUnexpectedToken(); } return { type: 7, value: str, lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.scanHexLiteral = function(start) { var num = ""; while (!this.eof()) { if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) { break; } num += this.source[this.index++]; } if (num.length === 0) { this.throwUnexpectedToken(); } if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) { this.throwUnexpectedToken(); } return { type: 6, value: parseInt("0x" + num, 16), lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.scanBinaryLiteral = function(start) { var num = ""; var ch; while (!this.eof()) { ch = this.source[this.index]; if (ch !== "0" && ch !== "1") { break; } num += this.source[this.index++]; } if (num.length === 0) { this.throwUnexpectedToken(); } if (!this.eof()) { ch = this.source.charCodeAt(this.index); if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) { this.throwUnexpectedToken(); } } return { type: 6, value: parseInt(num, 2), lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.scanOctalLiteral = function(prefix, start) { var num = ""; var octal = false; if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) { octal = true; num = "0" + this.source[this.index++]; } else { ++this.index; } while (!this.eof()) { if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) { break; } num += this.source[this.index++]; } if (!octal && num.length === 0) { this.throwUnexpectedToken(); } if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) { this.throwUnexpectedToken(); } return { type: 6, value: parseInt(num, 8), octal, lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.isImplicitOctalLiteral = function() { for (var i = this.index + 1; i < this.length; ++i) { var ch = this.source[i]; if (ch === "8" || ch === "9") { return false; } if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) { return true; } } return true; }; Scanner2.prototype.scanNumericLiteral = function() { var start = this.index; var ch = this.source[start]; assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || ch === ".", "Numeric literal must start with a decimal digit or a decimal point"); var num = ""; if (ch !== ".") { num = this.source[this.index++]; ch = this.source[this.index]; if (num === "0") { if (ch === "x" || ch === "X") { ++this.index; return this.scanHexLiteral(start); } if (ch === "b" || ch === "B") { ++this.index; return this.scanBinaryLiteral(start); } if (ch === "o" || ch === "O") { return this.scanOctalLiteral(ch, start); } if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) { if (this.isImplicitOctalLiteral()) { return this.scanOctalLiteral(ch, start); } } } while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) { num += this.source[this.index++]; } ch = this.source[this.index]; } if (ch === ".") { num += this.source[this.index++]; while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) { num += this.source[this.index++]; } ch = this.source[this.index]; } if (ch === "e" || ch === "E") { num += this.source[this.index++]; ch = this.source[this.index]; if (ch === "+" || ch === "-") { num += this.source[this.index++]; } if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) { while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) { num += this.source[this.index++]; } } else { this.throwUnexpectedToken(); } } if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) { this.throwUnexpectedToken(); } return { type: 6, value: parseFloat(num), lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.scanStringLiteral = function() { var start = this.index; var quote = this.source[start]; assert_1.assert(quote === "'" || quote === '"', "String literal must starts with a quote"); ++this.index; var octal = false; var str = ""; while (!this.eof()) { var ch = this.source[this.index++]; if (ch === quote) { quote = ""; break; } else if (ch === "\\") { ch = this.source[this.index++]; if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) { switch (ch) { case "u": if (this.source[this.index] === "{") { ++this.index; str += this.scanUnicodeCodePointEscape(); } else { var unescaped_1 = this.scanHexEscape(ch); if (unescaped_1 === null) { this.throwUnexpectedToken(); } str += unescaped_1; } break; case "x": var unescaped = this.scanHexEscape(ch); if (unescaped === null) { this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence); } str += unescaped; break; case "n": str += "\n"; break; case "r": str += "\r"; break; case "t": str += " "; break; case "b": str += "\b"; break; case "f": str += "\f"; break; case "v": str += "\v"; break; case "8": case "9": str += ch; this.tolerateUnexpectedToken(); break; default: if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) { var octToDec = this.octalToDecimal(ch); octal = octToDec.octal || octal; str += String.fromCharCode(octToDec.code); } else { str += ch; } break; } } else { ++this.lineNumber; if (ch === "\r" && this.source[this.index] === "\n") { ++this.index; } this.lineStart = this.index; } } else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) { break; } else { str += ch; } } if (quote !== "") { this.index = start; this.throwUnexpectedToken(); } return { type: 8, value: str, octal, lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.scanTemplate = function() { var cooked = ""; var terminated = false; var start = this.index; var head = this.source[start] === "`"; var tail = false; var rawOffset = 2; ++this.index; while (!this.eof()) { var ch = this.source[this.index++]; if (ch === "`") { rawOffset = 1; tail = true; terminated = true; break; } else if (ch === "$") { if (this.source[this.index] === "{") { this.curlyStack.push("${"); ++this.index; terminated = true; break; } cooked += ch; } else if (ch === "\\") { ch = this.source[this.index++]; if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) { switch (ch) { case "n": cooked += "\n"; break; case "r": cooked += "\r"; break; case "t": cooked += " "; break; case "u": if (this.source[this.index] === "{") { ++this.index; cooked += this.scanUnicodeCodePointEscape(); } else { var restore2 = this.index; var unescaped_2 = this.scanHexEscape(ch); if (unescaped_2 !== null) { cooked += unescaped_2; } else { this.index = restore2; cooked += ch; } } break; case "x": var unescaped = this.scanHexEscape(ch); if (unescaped === null) { this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence); } cooked += unescaped; break; case "b": cooked += "\b"; break; case "f": cooked += "\f"; break; case "v": cooked += "\v"; break; default: if (ch === "0") { if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) { this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral); } cooked += "\0"; } else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) { this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral); } else { cooked += ch; } break; } } else { ++this.lineNumber; if (ch === "\r" && this.source[this.index] === "\n") { ++this.index; } this.lineStart = this.index; } } else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) { ++this.lineNumber; if (ch === "\r" && this.source[this.index] === "\n") { ++this.index; } this.lineStart = this.index; cooked += "\n"; } else { cooked += ch; } } if (!terminated) { this.throwUnexpectedToken(); } if (!head) { this.curlyStack.pop(); } return { type: 10, value: this.source.slice(start + 1, this.index - rawOffset), cooked, head, tail, lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.testRegExp = function(pattern, flags) { var astralSubstitute = "\uFFFF"; var tmp = pattern; var self2 = this; if (flags.indexOf("u") >= 0) { tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g, function($0, $1, $2) { var codePoint = parseInt($1 || $2, 16); if (codePoint > 1114111) { self2.throwUnexpectedToken(messages_1.Messages.InvalidRegExp); } if (codePoint <= 65535) { return String.fromCharCode(codePoint); } return astralSubstitute; }).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, astralSubstitute); } try { RegExp(tmp); } catch (e2) { this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp); } try { return new RegExp(pattern, flags); } catch (exception) { return null; } }; Scanner2.prototype.scanRegExpBody = function() { var ch = this.source[this.index]; assert_1.assert(ch === "/", "Regular expression literal must start with a slash"); var str = this.source[this.index++]; var classMarker = false; var terminated = false; while (!this.eof()) { ch = this.source[this.index++]; str += ch; if (ch === "\\") { ch = this.source[this.index++]; if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) { this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp); } str += ch; } else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) { this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp); } else if (classMarker) { if (ch === "]") { classMarker = false; } } else { if (ch === "/") { terminated = true; break; } else if (ch === "[") { classMarker = true; } } } if (!terminated) { this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp); } return str.substr(1, str.length - 2); }; Scanner2.prototype.scanRegExpFlags = function() { var str = ""; var flags = ""; while (!this.eof()) { var ch = this.source[this.index]; if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) { break; } ++this.index; if (ch === "\\" && !this.eof()) { ch = this.source[this.index]; if (ch === "u") { ++this.index; var restore2 = this.index; var char = this.scanHexEscape("u"); if (char !== null) { flags += char; for (str += "\\u"; restore2 < this.index; ++restore2) { str += this.source[restore2]; } } else { this.index = restore2; flags += "u"; str += "\\u"; } this.tolerateUnexpectedToken(); } else { str += "\\"; this.tolerateUnexpectedToken(); } } else { flags += ch; str += ch; } } return flags; }; Scanner2.prototype.scanRegExp = function() { var start = this.index; var pattern = this.scanRegExpBody(); var flags = this.scanRegExpFlags(); var value = this.testRegExp(pattern, flags); return { type: 9, value: "", pattern, flags, regex: value, lineNumber: this.lineNumber, lineStart: this.lineStart, start, end: this.index }; }; Scanner2.prototype.lex = function() { if (this.eof()) { return { type: 2, value: "", lineNumber: this.lineNumber, lineStart: this.lineStart, start: this.index, end: this.index }; } var cp = this.source.charCodeAt(this.index); if (character_1.Character.isIdentifierStart(cp)) { return this.scanIdentifier(); } if (cp === 40 || cp === 41 || cp === 59) { return this.scanPunctuator(); } if (cp === 39 || cp === 34) { return this.scanStringLiteral(); } if (cp === 46) { if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) { return this.scanNumericLiteral(); } return this.scanPunctuator(); } if (character_1.Character.isDecimalDigit(cp)) { return this.scanNumericLiteral(); } if (cp === 96 || cp === 125 && this.curlyStack[this.curlyStack.length - 1] === "${") { return this.scanTemplate(); } if (cp >= 55296 && cp < 57343) { if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) { return this.scanIdentifier(); } } return this.scanPunctuator(); }; return Scanner2; }(); exports3.Scanner = Scanner; }, /* 13 */ /***/ function(module3, exports3) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); exports3.TokenName = {}; exports3.TokenName[ 1 /* BooleanLiteral */ ] = "Boolean"; exports3.TokenName[ 2 /* EOF */ ] = ""; exports3.TokenName[ 3 /* Identifier */ ] = "Identifier"; exports3.TokenName[ 4 /* Keyword */ ] = "Keyword"; exports3.TokenName[ 5 /* NullLiteral */ ] = "Null"; exports3.TokenName[ 6 /* NumericLiteral */ ] = "Numeric"; exports3.TokenName[ 7 /* Punctuator */ ] = "Punctuator"; exports3.TokenName[ 8 /* StringLiteral */ ] = "String"; exports3.TokenName[ 9 /* RegularExpression */ ] = "RegularExpression"; exports3.TokenName[ 10 /* Template */ ] = "Template"; }, /* 14 */ /***/ function(module3, exports3) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); exports3.XHTMLEntities = { quot: '"', amp: "&", apos: "'", gt: ">", nbsp: "\xA0", iexcl: "\xA1", cent: "\xA2", pound: "\xA3", curren: "\xA4", yen: "\xA5", brvbar: "\xA6", sect: "\xA7", uml: "\xA8", copy: "\xA9", ordf: "\xAA", laquo: "\xAB", not: "\xAC", shy: "\xAD", reg: "\xAE", macr: "\xAF", deg: "\xB0", plusmn: "\xB1", sup2: "\xB2", sup3: "\xB3", acute: "\xB4", micro: "\xB5", para: "\xB6", middot: "\xB7", cedil: "\xB8", sup1: "\xB9", ordm: "\xBA", raquo: "\xBB", frac14: "\xBC", frac12: "\xBD", frac34: "\xBE", iquest: "\xBF", Agrave: "\xC0", Aacute: "\xC1", Acirc: "\xC2", Atilde: "\xC3", Auml: "\xC4", Aring: "\xC5", AElig: "\xC6", Ccedil: "\xC7", Egrave: "\xC8", Eacute: "\xC9", Ecirc: "\xCA", Euml: "\xCB", Igrave: "\xCC", Iacute: "\xCD", Icirc: "\xCE", Iuml: "\xCF", ETH: "\xD0", Ntilde: "\xD1", Ograve: "\xD2", Oacute: "\xD3", Ocirc: "\xD4", Otilde: "\xD5", Ouml: "\xD6", times: "\xD7", Oslash: "\xD8", Ugrave: "\xD9", Uacute: "\xDA", Ucirc: "\xDB", Uuml: "\xDC", Yacute: "\xDD", THORN: "\xDE", szlig: "\xDF", agrave: "\xE0", aacute: "\xE1", acirc: "\xE2", atilde: "\xE3", auml: "\xE4", aring: "\xE5", aelig: "\xE6", ccedil: "\xE7", egrave: "\xE8", eacute: "\xE9", ecirc: "\xEA", euml: "\xEB", igrave: "\xEC", iacute: "\xED", icirc: "\xEE", iuml: "\xEF", eth: "\xF0", ntilde: "\xF1", ograve: "\xF2", oacute: "\xF3", ocirc: "\xF4", otilde: "\xF5", ouml: "\xF6", divide: "\xF7", oslash: "\xF8", ugrave: "\xF9", uacute: "\xFA", ucirc: "\xFB", uuml: "\xFC", yacute: "\xFD", thorn: "\xFE", yuml: "\xFF", OElig: "\u0152", oelig: "\u0153", Scaron: "\u0160", scaron: "\u0161", Yuml: "\u0178", fnof: "\u0192", circ: "\u02C6", tilde: "\u02DC", Alpha: "\u0391", Beta: "\u0392", Gamma: "\u0393", Delta: "\u0394", Epsilon: "\u0395", Zeta: "\u0396", Eta: "\u0397", Theta: "\u0398", Iota: "\u0399", Kappa: "\u039A", Lambda: "\u039B", Mu: "\u039C", Nu: "\u039D", Xi: "\u039E", Omicron: "\u039F", Pi: "\u03A0", Rho: "\u03A1", Sigma: "\u03A3", Tau: "\u03A4", Upsilon: "\u03A5", Phi: "\u03A6", Chi: "\u03A7", Psi: "\u03A8", Omega: "\u03A9", alpha: "\u03B1", beta: "\u03B2", gamma: "\u03B3", delta: "\u03B4", epsilon: "\u03B5", zeta: "\u03B6", eta: "\u03B7", theta: "\u03B8", iota: "\u03B9", kappa: "\u03BA", lambda: "\u03BB", mu: "\u03BC", nu: "\u03BD", xi: "\u03BE", omicron: "\u03BF", pi: "\u03C0", rho: "\u03C1", sigmaf: "\u03C2", sigma: "\u03C3", tau: "\u03C4", upsilon: "\u03C5", phi: "\u03C6", chi: "\u03C7", psi: "\u03C8", omega: "\u03C9", thetasym: "\u03D1", upsih: "\u03D2", piv: "\u03D6", ensp: "\u2002", emsp: "\u2003", thinsp: "\u2009", zwnj: "\u200C", zwj: "\u200D", lrm: "\u200E", rlm: "\u200F", ndash: "\u2013", mdash: "\u2014", lsquo: "\u2018", rsquo: "\u2019", sbquo: "\u201A", ldquo: "\u201C", rdquo: "\u201D", bdquo: "\u201E", dagger: "\u2020", Dagger: "\u2021", bull: "\u2022", hellip: "\u2026", permil: "\u2030", prime: "\u2032", Prime: "\u2033", lsaquo: "\u2039", rsaquo: "\u203A", oline: "\u203E", frasl: "\u2044", euro: "\u20AC", image: "\u2111", weierp: "\u2118", real: "\u211C", trade: "\u2122", alefsym: "\u2135", larr: "\u2190", uarr: "\u2191", rarr: "\u2192", darr: "\u2193", harr: "\u2194", crarr: "\u21B5", lArr: "\u21D0", uArr: "\u21D1", rArr: "\u21D2", dArr: "\u21D3", hArr: "\u21D4", forall: "\u2200", part: "\u2202", exist: "\u2203", empty: "\u2205", nabla: "\u2207", isin: "\u2208", notin: "\u2209", ni: "\u220B", prod: "\u220F", sum: "\u2211", minus: "\u2212", lowast: "\u2217", radic: "\u221A", prop: "\u221D", infin: "\u221E", ang: "\u2220", and: "\u2227", or: "\u2228", cap: "\u2229", cup: "\u222A", int: "\u222B", there4: "\u2234", sim: "\u223C", cong: "\u2245", asymp: "\u2248", ne: "\u2260", equiv: "\u2261", le: "\u2264", ge: "\u2265", sub: "\u2282", sup: "\u2283", nsub: "\u2284", sube: "\u2286", supe: "\u2287", oplus: "\u2295", otimes: "\u2297", perp: "\u22A5", sdot: "\u22C5", lceil: "\u2308", rceil: "\u2309", lfloor: "\u230A", rfloor: "\u230B", loz: "\u25CA", spades: "\u2660", clubs: "\u2663", hearts: "\u2665", diams: "\u2666", lang: "\u27E8", rang: "\u27E9" }; }, /* 15 */ /***/ function(module3, exports3, __webpack_require__) { "use strict"; Object.defineProperty(exports3, "__esModule", { value: true }); var error_handler_1 = __webpack_require__(10); var scanner_1 = __webpack_require__(12); var token_1 = __webpack_require__(13); var Reader = function() { function Reader2() { this.values = []; this.curly = this.paren = -1; } Reader2.prototype.beforeFunctionExpression = function(t) { return [ "(", "{", "[", "in", "typeof", "instanceof", "new", "return", "case", "delete", "throw", "void", // assignment operators "=", "+=", "-=", "*=", "**=", "/=", "%=", "<<=", ">>=", ">>>=", "&=", "|=", "^=", ",", // binary/unary operators "+", "-", "*", "**", "/", "%", "++", "--", "<<", ">>", ">>>", "&", "|", "^", "!", "~", "&&", "||", "?", ":", "===", "==", ">=", "<=", "<", ">", "!=", "!==" ].indexOf(t) >= 0; }; Reader2.prototype.isRegexStart = function() { var previous = this.values[this.values.length - 1]; var regex = previous !== null; switch (previous) { case "this": case "]": regex = false; break; case ")": var keyword = this.values[this.paren - 1]; regex = keyword === "if" || keyword === "while" || keyword === "for" || keyword === "with"; break; case "}": regex = false; if (this.values[this.curly - 3] === "function") { var check2 = this.values[this.curly - 4]; regex = check2 ? !this.beforeFunctionExpression(check2) : false; } else if (this.values[this.curly - 4] === "function") { var check2 = this.values[this.curly - 5]; regex = check2 ? !this.beforeFunctionExpression(check2) : true; } break; default: break; } return regex; }; Reader2.prototype.push = function(token) { if (token.type === 7 || token.type === 4) { if (token.value === "{") { this.curly = this.values.length; } else if (token.value === "(") { this.paren = this.values.length; } this.values.push(token.value); } else { this.values.push(null); } }; return Reader2; }(); var Tokenizer = function() { function Tokenizer2(code2, config2) { this.errorHandler = new error_handler_1.ErrorHandler(); this.errorHandler.tolerant = config2 ? typeof config2.tolerant === "boolean" && config2.tolerant : false; this.scanner = new scanner_1.Scanner(code2, this.errorHandler); this.scanner.trackComment = config2 ? typeof config2.comment === "boolean" && config2.comment : false; this.trackRange = config2 ? typeof config2.range === "boolean" && config2.range : false; this.trackLoc = config2 ? typeof config2.loc === "boolean" && config2.loc : false; this.buffer = []; this.reader = new Reader(); } Tokenizer2.prototype.errors = function() { return this.errorHandler.errors; }; Tokenizer2.prototype.getNextToken = function() { if (this.buffer.length === 0) { var comments = this.scanner.scanComments(); if (this.scanner.trackComment) { for (var i = 0; i < comments.length; ++i) { var e2 = comments[i]; var value = this.scanner.source.slice(e2.slice[0], e2.slice[1]); var comment = { type: e2.multiLine ? "BlockComment" : "LineComment", value }; if (this.trackRange) { comment.range = e2.range; } if (this.trackLoc) { comment.loc = e2.loc; } this.buffer.push(comment); } } if (!this.scanner.eof()) { var loc = void 0; if (this.trackLoc) { loc = { start: { line: this.scanner.lineNumber, column: this.scanner.index - this.scanner.lineStart }, end: {} }; } var startRegex = this.scanner.source[this.scanner.index] === "/" && this.reader.isRegexStart(); var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex(); this.reader.push(token); var entry = { type: token_1.TokenName[token.type], value: this.scanner.source.slice(token.start, token.end) }; if (this.trackRange) { entry.range = [token.start, token.end]; } if (this.trackLoc) { loc.end = { line: this.scanner.lineNumber, column: this.scanner.index - this.scanner.lineStart }; entry.loc = loc; } if (token.type === 9) { var pattern = token.pattern; var flags = token.flags; entry.regex = { pattern, flags }; } this.buffer.push(entry); } } return this.buffer.shift(); }; return Tokenizer2; }(); exports3.Tokenizer = Tokenizer; } /******/ ]) ); }); } }); // ../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs var tslib_es6_exports = {}; __export3(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: () => __values, 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, e2) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e2.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 (e2.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 descriptor2 = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); var _, done = false; for (var i = decorators.length - 1; i >= 0; i--) { var context = {}; for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; for (var p in contextIn.access) context.access[p] = contextIn.access[p]; context.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: descriptor2.get, set: descriptor2.set } : descriptor2[key], context); if (kind === "accessor") { if (result === void 0) continue; if (result === null || typeof result !== "object") throw new TypeError("Object expected"); if (_ = accept(result.get)) descriptor2.get = _; if (_ = accept(result.set)) descriptor2.set = _; if (_ = accept(result.init)) initializers.unshift(_); } else if (_ = accept(result)) { if (kind === "field") initializers.unshift(_); else descriptor2[key] = _; } } if (target) Object.defineProperty(target, contextIn.name, descriptor2); 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(resolve14) { resolve14(value); }); } return new (P || (P = Promise))(function(resolve14, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e2) { reject(e2); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e2) { reject(e2); } } function step(result) { result.done ? resolve14(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 (e2) { op = [6, e2]; 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 __values(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 = [], e2; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error3) { e2 = { error: error3 }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e2) throw e2.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 (e2) { settle(q[0][3], e2); } } 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(e2) { throw e2; }), 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 __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(resolve14, reject) { v = o[n](v), settle(resolve14, reject, v.done, v.value); }); }; } function settle(resolve14, reject, d, v) { Promise.resolve(v).then(function(v2) { resolve14({ 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, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); } function __classPrivateFieldSet(receiver, state, 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 state === "function" ? receiver !== state || !f : !state.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 : state.set(receiver, value), value; } function __classPrivateFieldIn(state, receiver) { if (receiver === null || typeof receiver !== "object" && typeof receiver !== "function") throw new TypeError("Cannot use 'in' operator on non-object"); return typeof state === "function" ? receiver === state : state.has(receiver); } function __addDisposableResource(env, 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 (e2) { return Promise.reject(e2); } }; env.stack.push({ value, dispose, async }); } else if (async) { env.stack.push({ async: true }); } return value; } function __disposeResources(env) { function fail(e2) { env.error = env.hasError ? new _SuppressedError(e2, env.error, "An error was suppressed during disposal.") : e2; env.hasError = true; } var r, s = 0; function next() { while (r = env.stack.pop()) { try { if (!r.async && s === 1) return s = 0, env.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(e2) { fail(e2); return next(); }); } else s |= 1; } catch (e2) { fail(e2); } } if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); if (env.hasError) throw env.error; } return next(); } function __rewriteRelativeImportExtension(path11, preserveJsx) { if (typeof path11 === "string" && /^\.\.?\//.test(path11)) { return path11.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 path11; } var extendStatics, __assign, __createBinding, __setModuleDefault, ownKeys, _SuppressedError, tslib_es6_default; var init_tslib_es6 = __esm({ "../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs"() { 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(error3, suppressed, message2) { var e2 = new Error(message2); return e2.name = "SuppressedError", e2.error = error3, e2.suppressed = suppressed, e2; }; tslib_es6_default = { __extends, __assign, __rest, __decorate, __param, __esDecorate, __runInitializers, __propKey, __setFunctionName, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet, __classPrivateFieldIn, __addDisposableResource, __disposeResources, __rewriteRelativeImportExtension }; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/types.js var require_types5 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/types.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Def = void 0; var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var Op = Object.prototype; var objToStr = Op.toString; var hasOwn = Op.hasOwnProperty; var BaseType = ( /** @class */ function() { function BaseType2() { } BaseType2.prototype.assert = function(value, deep) { if (!this.check(value, deep)) { var str = shallowStringify(value); throw new Error(str + " does not match type " + this); } return true; }; BaseType2.prototype.arrayOf = function() { var elemType = this; return new ArrayType(elemType); }; return BaseType2; }() ); var ArrayType = ( /** @class */ function(_super) { tslib_1.__extends(ArrayType2, _super); function ArrayType2(elemType) { var _this = _super.call(this) || this; _this.elemType = elemType; _this.kind = "ArrayType"; return _this; } ArrayType2.prototype.toString = function() { return "[" + this.elemType + "]"; }; ArrayType2.prototype.check = function(value, deep) { var _this = this; return Array.isArray(value) && value.every(function(elem) { return _this.elemType.check(elem, deep); }); }; return ArrayType2; }(BaseType) ); var IdentityType = ( /** @class */ function(_super) { tslib_1.__extends(IdentityType2, _super); function IdentityType2(value) { var _this = _super.call(this) || this; _this.value = value; _this.kind = "IdentityType"; return _this; } IdentityType2.prototype.toString = function() { return String(this.value); }; IdentityType2.prototype.check = function(value, deep) { var result = value === this.value; if (!result && typeof deep === "function") { deep(this, value); } return result; }; return IdentityType2; }(BaseType) ); var ObjectType = ( /** @class */ function(_super) { tslib_1.__extends(ObjectType2, _super); function ObjectType2(fields) { var _this = _super.call(this) || this; _this.fields = fields; _this.kind = "ObjectType"; return _this; } ObjectType2.prototype.toString = function() { return "{ " + this.fields.join(", ") + " }"; }; ObjectType2.prototype.check = function(value, deep) { return objToStr.call(value) === objToStr.call({}) && this.fields.every(function(field) { return field.type.check(value[field.name], deep); }); }; return ObjectType2; }(BaseType) ); var OrType = ( /** @class */ function(_super) { tslib_1.__extends(OrType2, _super); function OrType2(types) { var _this = _super.call(this) || this; _this.types = types; _this.kind = "OrType"; return _this; } OrType2.prototype.toString = function() { return this.types.join(" | "); }; OrType2.prototype.check = function(value, deep) { return this.types.some(function(type) { return type.check(value, deep); }); }; return OrType2; }(BaseType) ); var PredicateType = ( /** @class */ function(_super) { tslib_1.__extends(PredicateType2, _super); function PredicateType2(name, predicate) { var _this = _super.call(this) || this; _this.name = name; _this.predicate = predicate; _this.kind = "PredicateType"; return _this; } PredicateType2.prototype.toString = function() { return this.name; }; PredicateType2.prototype.check = function(value, deep) { var result = this.predicate(value, deep); if (!result && typeof deep === "function") { deep(this, value); } return result; }; return PredicateType2; }(BaseType) ); var Def = ( /** @class */ function() { function Def2(type, typeName) { this.type = type; this.typeName = typeName; this.baseNames = []; this.ownFields = /* @__PURE__ */ Object.create(null); this.allSupertypes = /* @__PURE__ */ Object.create(null); this.supertypeList = []; this.allFields = /* @__PURE__ */ Object.create(null); this.fieldNames = []; this.finalized = false; this.buildable = false; this.buildParams = []; } Def2.prototype.isSupertypeOf = function(that) { if (that instanceof Def2) { if (this.finalized !== true || that.finalized !== true) { throw new Error(""); } return hasOwn.call(that.allSupertypes, this.typeName); } else { throw new Error(that + " is not a Def"); } }; Def2.prototype.checkAllFields = function(value, deep) { var allFields = this.allFields; if (this.finalized !== true) { throw new Error("" + this.typeName); } function checkFieldByName(name) { var field = allFields[name]; var type = field.type; var child = field.getValue(value); return type.check(child, deep); } return value !== null && typeof value === "object" && Object.keys(allFields).every(checkFieldByName); }; Def2.prototype.bases = function() { var supertypeNames = []; for (var _i = 0; _i < arguments.length; _i++) { supertypeNames[_i] = arguments[_i]; } var bases = this.baseNames; if (this.finalized) { if (supertypeNames.length !== bases.length) { throw new Error(""); } for (var i = 0; i < supertypeNames.length; i++) { if (supertypeNames[i] !== bases[i]) { throw new Error(""); } } return this; } supertypeNames.forEach(function(baseName) { if (bases.indexOf(baseName) < 0) { bases.push(baseName); } }); return this; }; return Def2; }() ); exports2.Def = Def; var Field = ( /** @class */ function() { function Field2(name, type, defaultFn, hidden) { this.name = name; this.type = type; this.defaultFn = defaultFn; this.hidden = !!hidden; } Field2.prototype.toString = function() { return JSON.stringify(this.name) + ": " + this.type; }; Field2.prototype.getValue = function(obj) { var value = obj[this.name]; if (typeof value !== "undefined") { return value; } if (typeof this.defaultFn === "function") { value = this.defaultFn.call(obj); } return value; }; return Field2; }() ); function shallowStringify(value) { if (Array.isArray(value)) { return "[" + value.map(shallowStringify).join(", ") + "]"; } if (value && typeof value === "object") { return "{ " + Object.keys(value).map(function(key) { return key + ": " + value[key]; }).join(", ") + " }"; } return JSON.stringify(value); } function typesPlugin(_fork) { var Type = { or: function() { var types = []; for (var _i = 0; _i < arguments.length; _i++) { types[_i] = arguments[_i]; } return new OrType(types.map(function(type) { return Type.from(type); })); }, from: function(value, name) { if (value instanceof ArrayType || value instanceof IdentityType || value instanceof ObjectType || value instanceof OrType || value instanceof PredicateType) { return value; } if (value instanceof Def) { return value.type; } if (isArray.check(value)) { if (value.length !== 1) { throw new Error("only one element type is permitted for typed arrays"); } return new ArrayType(Type.from(value[0])); } if (isObject2.check(value)) { return new ObjectType(Object.keys(value).map(function(name2) { return new Field(name2, Type.from(value[name2], name2)); })); } if (typeof value === "function") { var bicfIndex = builtInCtorFns.indexOf(value); if (bicfIndex >= 0) { return builtInCtorTypes[bicfIndex]; } if (typeof name !== "string") { throw new Error("missing name"); } return new PredicateType(name, value); } return new IdentityType(value); }, // Define a type whose name is registered in a namespace (the defCache) so // that future definitions will return the same type given the same name. // In particular, this system allows for circular and forward definitions. // The Def object d returned from Type.def may be used to configure the // type d.type by calling methods such as d.bases, d.build, and d.field. def: function(typeName) { return hasOwn.call(defCache, typeName) ? defCache[typeName] : defCache[typeName] = new DefImpl(typeName); }, hasDef: function(typeName) { return hasOwn.call(defCache, typeName); } }; var builtInCtorFns = []; var builtInCtorTypes = []; function defBuiltInType(name, example) { var objStr = objToStr.call(example); var type = new PredicateType(name, function(value) { return objToStr.call(value) === objStr; }); if (example && typeof example.constructor === "function") { builtInCtorFns.push(example.constructor); builtInCtorTypes.push(type); } return type; } var isString = defBuiltInType("string", "truthy"); var isFunction = defBuiltInType("function", function() { }); var isArray = defBuiltInType("array", []); var isObject2 = defBuiltInType("object", {}); var isRegExp = defBuiltInType("RegExp", /./); var isDate = defBuiltInType("Date", /* @__PURE__ */ new Date()); var isNumber = defBuiltInType("number", 3); var isBoolean = defBuiltInType("boolean", true); var isNull = defBuiltInType("null", null); var isUndefined = defBuiltInType("undefined", void 0); var builtInTypes = { string: isString, function: isFunction, array: isArray, object: isObject2, RegExp: isRegExp, Date: isDate, number: isNumber, boolean: isBoolean, null: isNull, undefined: isUndefined }; var defCache = /* @__PURE__ */ Object.create(null); function defFromValue(value) { if (value && typeof value === "object") { var type = value.type; if (typeof type === "string" && hasOwn.call(defCache, type)) { var d = defCache[type]; if (d.finalized) { return d; } } } return null; } var DefImpl = ( /** @class */ function(_super) { tslib_1.__extends(DefImpl2, _super); function DefImpl2(typeName) { var _this = _super.call(this, new PredicateType(typeName, function(value, deep) { return _this.check(value, deep); }), typeName) || this; return _this; } DefImpl2.prototype.check = function(value, deep) { if (this.finalized !== true) { throw new Error("prematurely checking unfinalized type " + this.typeName); } if (value === null || typeof value !== "object") { return false; } var vDef = defFromValue(value); if (!vDef) { if (this.typeName === "SourceLocation" || this.typeName === "Position") { return this.checkAllFields(value, deep); } return false; } if (deep && vDef === this) { return this.checkAllFields(value, deep); } if (!this.isSupertypeOf(vDef)) { return false; } if (!deep) { return true; } return vDef.checkAllFields(value, deep) && this.checkAllFields(value, false); }; DefImpl2.prototype.build = function() { var _this = this; var buildParams = []; for (var _i = 0; _i < arguments.length; _i++) { buildParams[_i] = arguments[_i]; } this.buildParams = buildParams; if (this.buildable) { return this; } this.field("type", String, function() { return _this.typeName; }); this.buildable = true; var addParam = function(built, param2, arg2, isArgAvailable) { if (hasOwn.call(built, param2)) return; var all = _this.allFields; if (!hasOwn.call(all, param2)) { throw new Error("" + param2); } var field = all[param2]; var type = field.type; var value; if (isArgAvailable) { value = arg2; } else if (field.defaultFn) { value = field.defaultFn.call(built); } else { var message2 = "no value or default function given for field " + JSON.stringify(param2) + " of " + _this.typeName + "(" + _this.buildParams.map(function(name) { return all[name]; }).join(", ") + ")"; throw new Error(message2); } if (!type.check(value)) { throw new Error(shallowStringify(value) + " does not match field " + field + " of type " + _this.typeName); } built[param2] = value; }; var builder = function() { var args2 = []; for (var _i2 = 0; _i2 < arguments.length; _i2++) { args2[_i2] = arguments[_i2]; } var argc = args2.length; if (!_this.finalized) { throw new Error("attempting to instantiate unfinalized type " + _this.typeName); } var built = Object.create(nodePrototype); _this.buildParams.forEach(function(param2, i) { if (i < argc) { addParam(built, param2, args2[i], true); } else { addParam(built, param2, null, false); } }); Object.keys(_this.allFields).forEach(function(param2) { addParam(built, param2, null, false); }); if (built.type !== _this.typeName) { throw new Error(""); } return built; }; builder.from = function(obj) { if (!_this.finalized) { throw new Error("attempting to instantiate unfinalized type " + _this.typeName); } var built = Object.create(nodePrototype); Object.keys(_this.allFields).forEach(function(param2) { if (hasOwn.call(obj, param2)) { addParam(built, param2, obj[param2], true); } else { addParam(built, param2, null, false); } }); if (built.type !== _this.typeName) { throw new Error(""); } return built; }; Object.defineProperty(builders, getBuilderName(this.typeName), { enumerable: true, value: builder }); return this; }; DefImpl2.prototype.field = function(name, type, defaultFn, hidden) { if (this.finalized) { console.error("Ignoring attempt to redefine field " + JSON.stringify(name) + " of finalized type " + JSON.stringify(this.typeName)); return this; } this.ownFields[name] = new Field(name, Type.from(type), defaultFn, hidden); return this; }; DefImpl2.prototype.finalize = function() { var _this = this; if (!this.finalized) { var allFields = this.allFields; var allSupertypes = this.allSupertypes; this.baseNames.forEach(function(name) { var def = defCache[name]; if (def instanceof Def) { def.finalize(); extend(allFields, def.allFields); extend(allSupertypes, def.allSupertypes); } else { var message2 = "unknown supertype name " + JSON.stringify(name) + " for subtype " + JSON.stringify(_this.typeName); throw new Error(message2); } }); extend(allFields, this.ownFields); allSupertypes[this.typeName] = this; this.fieldNames.length = 0; for (var fieldName in allFields) { if (hasOwn.call(allFields, fieldName) && !allFields[fieldName].hidden) { this.fieldNames.push(fieldName); } } Object.defineProperty(namedTypes, this.typeName, { enumerable: true, value: this.type }); this.finalized = true; populateSupertypeList(this.typeName, this.supertypeList); if (this.buildable && this.supertypeList.lastIndexOf("Expression") >= 0) { wrapExpressionBuilderWithStatement(this.typeName); } } }; return DefImpl2; }(Def) ); function getSupertypeNames(typeName) { if (!hasOwn.call(defCache, typeName)) { throw new Error(""); } var d = defCache[typeName]; if (d.finalized !== true) { throw new Error(""); } return d.supertypeList.slice(1); } function computeSupertypeLookupTable(candidates) { var table2 = {}; var typeNames = Object.keys(defCache); var typeNameCount = typeNames.length; for (var i = 0; i < typeNameCount; ++i) { var typeName = typeNames[i]; var d = defCache[typeName]; if (d.finalized !== true) { throw new Error("" + typeName); } for (var j = 0; j < d.supertypeList.length; ++j) { var superTypeName = d.supertypeList[j]; if (hasOwn.call(candidates, superTypeName)) { table2[typeName] = superTypeName; break; } } } return table2; } var builders = /* @__PURE__ */ Object.create(null); var nodePrototype = {}; function defineMethod(name, func) { var old = nodePrototype[name]; if (isUndefined.check(func)) { delete nodePrototype[name]; } else { isFunction.assert(func); Object.defineProperty(nodePrototype, name, { enumerable: true, configurable: true, value: func }); } return old; } function getBuilderName(typeName) { return typeName.replace(/^[A-Z]+/, function(upperCasePrefix) { var len = upperCasePrefix.length; switch (len) { case 0: return ""; case 1: return upperCasePrefix.toLowerCase(); default: return upperCasePrefix.slice(0, len - 1).toLowerCase() + upperCasePrefix.charAt(len - 1); } }); } function getStatementBuilderName(typeName) { typeName = getBuilderName(typeName); return typeName.replace(/(Expression)?$/, "Statement"); } var namedTypes = {}; function getFieldNames(object) { var d = defFromValue(object); if (d) { return d.fieldNames.slice(0); } if ("type" in object) { throw new Error("did not recognize object of type " + JSON.stringify(object.type)); } return Object.keys(object); } function getFieldValue(object, fieldName) { var d = defFromValue(object); if (d) { var field = d.allFields[fieldName]; if (field) { return field.getValue(object); } } return object && object[fieldName]; } function eachField(object, callback, context) { getFieldNames(object).forEach(function(name) { callback.call(this, name, getFieldValue(object, name)); }, context); } function someField(object, callback, context) { return getFieldNames(object).some(function(name) { return callback.call(this, name, getFieldValue(object, name)); }, context); } function wrapExpressionBuilderWithStatement(typeName) { var wrapperName = getStatementBuilderName(typeName); if (builders[wrapperName]) return; var wrapped = builders[getBuilderName(typeName)]; if (!wrapped) return; var builder = function() { var args2 = []; for (var _i = 0; _i < arguments.length; _i++) { args2[_i] = arguments[_i]; } return builders.expressionStatement(wrapped.apply(builders, args2)); }; builder.from = function() { var args2 = []; for (var _i = 0; _i < arguments.length; _i++) { args2[_i] = arguments[_i]; } return builders.expressionStatement(wrapped.from.apply(builders, args2)); }; builders[wrapperName] = builder; } function populateSupertypeList(typeName, list10) { list10.length = 0; list10.push(typeName); var lastSeen = /* @__PURE__ */ Object.create(null); for (var pos = 0; pos < list10.length; ++pos) { typeName = list10[pos]; var d = defCache[typeName]; if (d.finalized !== true) { throw new Error(""); } if (hasOwn.call(lastSeen, typeName)) { delete list10[lastSeen[typeName]]; } lastSeen[typeName] = pos; list10.push.apply(list10, d.baseNames); } for (var to = 0, from = to, len = list10.length; from < len; ++from) { if (hasOwn.call(list10, from)) { list10[to++] = list10[from]; } } list10.length = to; } function extend(into, from) { Object.keys(from).forEach(function(name) { into[name] = from[name]; }); return into; } function finalize() { Object.keys(defCache).forEach(function(name) { defCache[name].finalize(); }); } return { Type, builtInTypes, getSupertypeNames, computeSupertypeLookupTable, builders, defineMethod, getBuilderName, getStatementBuilderName, namedTypes, getFieldNames, getFieldValue, eachField, someField, finalize }; } exports2.default = typesPlugin; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/path.js var require_path4 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/path.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var Op = Object.prototype; var hasOwn = Op.hasOwnProperty; function pathPlugin(fork3) { var types = fork3.use(types_1.default); var isArray = types.builtInTypes.array; var isNumber = types.builtInTypes.number; var Path = function Path2(value, parentPath, name) { if (!(this instanceof Path2)) { throw new Error("Path constructor cannot be invoked without 'new'"); } if (parentPath) { if (!(parentPath instanceof Path2)) { throw new Error(""); } } else { parentPath = null; name = null; } this.value = value; this.parentPath = parentPath; this.name = name; this.__childCache = null; }; var Pp = Path.prototype; function getChildCache(path11) { return path11.__childCache || (path11.__childCache = /* @__PURE__ */ Object.create(null)); } function getChildPath(path11, name) { var cache = getChildCache(path11); var actualChildValue = path11.getValueProperty(name); var childPath = cache[name]; if (!hasOwn.call(cache, name) || // Ensure consistency between cache and reality. childPath.value !== actualChildValue) { childPath = cache[name] = new path11.constructor(actualChildValue, path11, name); } return childPath; } Pp.getValueProperty = function getValueProperty(name) { return this.value[name]; }; Pp.get = function get() { var names = []; for (var _i = 0; _i < arguments.length; _i++) { names[_i] = arguments[_i]; } var path11 = this; var count = names.length; for (var i = 0; i < count; ++i) { path11 = getChildPath(path11, names[i]); } return path11; }; Pp.each = function each(callback, context) { var childPaths = []; var len = this.value.length; var i = 0; for (var i = 0; i < len; ++i) { if (hasOwn.call(this.value, i)) { childPaths[i] = this.get(i); } } context = context || this; for (i = 0; i < len; ++i) { if (hasOwn.call(childPaths, i)) { callback.call(context, childPaths[i]); } } }; Pp.map = function map(callback, context) { var result = []; this.each(function(childPath) { result.push(callback.call(this, childPath)); }, context); return result; }; Pp.filter = function filter(callback, context) { var result = []; this.each(function(childPath) { if (callback.call(this, childPath)) { result.push(childPath); } }, context); return result; }; function emptyMoves() { } function getMoves(path11, offset, start, end) { isArray.assert(path11.value); if (offset === 0) { return emptyMoves; } var length = path11.value.length; if (length < 1) { return emptyMoves; } var argc = arguments.length; if (argc === 2) { start = 0; end = length; } else if (argc === 3) { start = Math.max(start, 0); end = length; } else { start = Math.max(start, 0); end = Math.min(end, length); } isNumber.assert(start); isNumber.assert(end); var moves = /* @__PURE__ */ Object.create(null); var cache = getChildCache(path11); for (var i = start; i < end; ++i) { if (hasOwn.call(path11.value, i)) { var childPath = path11.get(i); if (childPath.name !== i) { throw new Error(""); } var newIndex = i + offset; childPath.name = newIndex; moves[newIndex] = childPath; delete cache[i]; } } delete cache.length; return function() { for (var newIndex2 in moves) { var childPath2 = moves[newIndex2]; if (childPath2.name !== +newIndex2) { throw new Error(""); } cache[newIndex2] = childPath2; path11.value[newIndex2] = childPath2.value; } }; } Pp.shift = function shift() { var move3 = getMoves(this, -1); var result = this.value.shift(); move3(); return result; }; Pp.unshift = function unshift() { var args2 = []; for (var _i = 0; _i < arguments.length; _i++) { args2[_i] = arguments[_i]; } var move3 = getMoves(this, args2.length); var result = this.value.unshift.apply(this.value, args2); move3(); return result; }; Pp.push = function push() { var args2 = []; for (var _i = 0; _i < arguments.length; _i++) { args2[_i] = arguments[_i]; } isArray.assert(this.value); delete getChildCache(this).length; return this.value.push.apply(this.value, args2); }; Pp.pop = function pop() { isArray.assert(this.value); var cache = getChildCache(this); delete cache[this.value.length - 1]; delete cache.length; return this.value.pop(); }; Pp.insertAt = function insertAt(index) { var argc = arguments.length; var move3 = getMoves(this, argc - 1, index); if (move3 === emptyMoves && argc <= 1) { return this; } index = Math.max(index, 0); for (var i = 1; i < argc; ++i) { this.value[index + i - 1] = arguments[i]; } move3(); return this; }; Pp.insertBefore = function insertBefore() { var args2 = []; for (var _i = 0; _i < arguments.length; _i++) { args2[_i] = arguments[_i]; } var pp = this.parentPath; var argc = args2.length; var insertAtArgs = [this.name]; for (var i = 0; i < argc; ++i) { insertAtArgs.push(args2[i]); } return pp.insertAt.apply(pp, insertAtArgs); }; Pp.insertAfter = function insertAfter() { var args2 = []; for (var _i = 0; _i < arguments.length; _i++) { args2[_i] = arguments[_i]; } var pp = this.parentPath; var argc = args2.length; var insertAtArgs = [this.name + 1]; for (var i = 0; i < argc; ++i) { insertAtArgs.push(args2[i]); } return pp.insertAt.apply(pp, insertAtArgs); }; function repairRelationshipWithParent(path11) { if (!(path11 instanceof Path)) { throw new Error(""); } var pp = path11.parentPath; if (!pp) { return path11; } var parentValue = pp.value; var parentCache = getChildCache(pp); if (parentValue[path11.name] === path11.value) { parentCache[path11.name] = path11; } else if (isArray.check(parentValue)) { var i = parentValue.indexOf(path11.value); if (i >= 0) { parentCache[path11.name = i] = path11; } } else { parentValue[path11.name] = path11.value; parentCache[path11.name] = path11; } if (parentValue[path11.name] !== path11.value) { throw new Error(""); } if (path11.parentPath.get(path11.name) !== path11) { throw new Error(""); } return path11; } Pp.replace = function replace(replacement) { var results = []; var parentValue = this.parentPath.value; var parentCache = getChildCache(this.parentPath); var count = arguments.length; repairRelationshipWithParent(this); if (isArray.check(parentValue)) { var originalLength = parentValue.length; var move3 = getMoves(this.parentPath, count - 1, this.name + 1); var spliceArgs = [this.name, 1]; for (var i = 0; i < count; ++i) { spliceArgs.push(arguments[i]); } var splicedOut = parentValue.splice.apply(parentValue, spliceArgs); if (splicedOut[0] !== this.value) { throw new Error(""); } if (parentValue.length !== originalLength - 1 + count) { throw new Error(""); } move3(); if (count === 0) { delete this.value; delete parentCache[this.name]; this.__childCache = null; } else { if (parentValue[this.name] !== replacement) { throw new Error(""); } if (this.value !== replacement) { this.value = replacement; this.__childCache = null; } for (i = 0; i < count; ++i) { results.push(this.parentPath.get(this.name + i)); } if (results[0] !== this) { throw new Error(""); } } } else if (count === 1) { if (this.value !== replacement) { this.__childCache = null; } this.value = parentValue[this.name] = replacement; results.push(this); } else if (count === 0) { delete parentValue[this.name]; delete this.value; this.__childCache = null; } else { throw new Error("Could not replace path"); } return results; }; return Path; } exports2.default = pathPlugin; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/scope.js var require_scope2 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/scope.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var hasOwn = Object.prototype.hasOwnProperty; function scopePlugin(fork3) { var types = fork3.use(types_1.default); var Type = types.Type; var namedTypes = types.namedTypes; var Node = namedTypes.Node; var Expression = namedTypes.Expression; var isArray = types.builtInTypes.array; var b = types.builders; var Scope = function Scope2(path11, parentScope) { if (!(this instanceof Scope2)) { throw new Error("Scope constructor cannot be invoked without 'new'"); } ScopeType.assert(path11.value); var depth; if (parentScope) { if (!(parentScope instanceof Scope2)) { throw new Error(""); } depth = parentScope.depth + 1; } else { parentScope = null; depth = 0; } Object.defineProperties(this, { path: { value: path11 }, node: { value: path11.value }, isGlobal: { value: !parentScope, enumerable: true }, depth: { value: depth }, parent: { value: parentScope }, bindings: { value: {} }, types: { value: {} } }); }; var scopeTypes = [ // Program nodes introduce global scopes. namedTypes.Program, // Function is the supertype of FunctionExpression, // FunctionDeclaration, ArrowExpression, etc. namedTypes.Function, // In case you didn't know, the caught parameter shadows any variable // of the same name in an outer scope. namedTypes.CatchClause ]; var ScopeType = Type.or.apply(Type, scopeTypes); Scope.isEstablishedBy = function(node) { return ScopeType.check(node); }; var Sp = Scope.prototype; Sp.didScan = false; Sp.declares = function(name) { this.scan(); return hasOwn.call(this.bindings, name); }; Sp.declaresType = function(name) { this.scan(); return hasOwn.call(this.types, name); }; Sp.declareTemporary = function(prefix) { if (prefix) { if (!/^[a-z$_]/i.test(prefix)) { throw new Error(""); } } else { prefix = "t$"; } prefix += this.depth.toString(36) + "$"; this.scan(); var index = 0; while (this.declares(prefix + index)) { ++index; } var name = prefix + index; return this.bindings[name] = types.builders.identifier(name); }; Sp.injectTemporary = function(identifier, init2) { identifier || (identifier = this.declareTemporary()); var bodyPath = this.path.get("body"); if (namedTypes.BlockStatement.check(bodyPath.value)) { bodyPath = bodyPath.get("body"); } bodyPath.unshift(b.variableDeclaration("var", [b.variableDeclarator(identifier, init2 || null)])); return identifier; }; Sp.scan = function(force) { if (force || !this.didScan) { for (var name in this.bindings) { delete this.bindings[name]; } scanScope(this.path, this.bindings, this.types); this.didScan = true; } }; Sp.getBindings = function() { this.scan(); return this.bindings; }; Sp.getTypes = function() { this.scan(); return this.types; }; function scanScope(path11, bindings, scopeTypes2) { var node = path11.value; ScopeType.assert(node); if (namedTypes.CatchClause.check(node)) { var param2 = path11.get("param"); if (param2.value) { addPattern(param2, bindings); } } else { recursiveScanScope(path11, bindings, scopeTypes2); } } function recursiveScanScope(path11, bindings, scopeTypes2) { var node = path11.value; if (path11.parent && namedTypes.FunctionExpression.check(path11.parent.node) && path11.parent.node.id) { addPattern(path11.parent.get("id"), bindings); } if (!node) { } else if (isArray.check(node)) { path11.each(function(childPath) { recursiveScanChild(childPath, bindings, scopeTypes2); }); } else if (namedTypes.Function.check(node)) { path11.get("params").each(function(paramPath) { addPattern(paramPath, bindings); }); recursiveScanChild(path11.get("body"), bindings, scopeTypes2); } else if (namedTypes.TypeAlias && namedTypes.TypeAlias.check(node) || namedTypes.InterfaceDeclaration && namedTypes.InterfaceDeclaration.check(node) || namedTypes.TSTypeAliasDeclaration && namedTypes.TSTypeAliasDeclaration.check(node) || namedTypes.TSInterfaceDeclaration && namedTypes.TSInterfaceDeclaration.check(node)) { addTypePattern(path11.get("id"), scopeTypes2); } else if (namedTypes.VariableDeclarator.check(node)) { addPattern(path11.get("id"), bindings); recursiveScanChild(path11.get("init"), bindings, scopeTypes2); } else if (node.type === "ImportSpecifier" || node.type === "ImportNamespaceSpecifier" || node.type === "ImportDefaultSpecifier") { addPattern( // Esprima used to use the .name field to refer to the local // binding identifier for ImportSpecifier nodes, but .id for // ImportNamespaceSpecifier and ImportDefaultSpecifier nodes. // ESTree/Acorn/ESpree use .local for all three node types. path11.get(node.local ? "local" : node.name ? "name" : "id"), bindings ); } else if (Node.check(node) && !Expression.check(node)) { types.eachField(node, function(name, child) { var childPath = path11.get(name); if (!pathHasValue(childPath, child)) { throw new Error(""); } recursiveScanChild(childPath, bindings, scopeTypes2); }); } } function pathHasValue(path11, value) { if (path11.value === value) { return true; } if (Array.isArray(path11.value) && path11.value.length === 0 && Array.isArray(value) && value.length === 0) { return true; } return false; } function recursiveScanChild(path11, bindings, scopeTypes2) { var node = path11.value; if (!node || Expression.check(node)) { } else if (namedTypes.FunctionDeclaration.check(node) && node.id !== null) { addPattern(path11.get("id"), bindings); } else if (namedTypes.ClassDeclaration && namedTypes.ClassDeclaration.check(node)) { addPattern(path11.get("id"), bindings); } else if (ScopeType.check(node)) { if (namedTypes.CatchClause.check(node) && // TODO Broaden this to accept any pattern. namedTypes.Identifier.check(node.param)) { var catchParamName = node.param.name; var hadBinding = hasOwn.call(bindings, catchParamName); recursiveScanScope(path11.get("body"), bindings, scopeTypes2); if (!hadBinding) { delete bindings[catchParamName]; } } } else { recursiveScanScope(path11, bindings, scopeTypes2); } } function addPattern(patternPath, bindings) { var pattern = patternPath.value; namedTypes.Pattern.assert(pattern); if (namedTypes.Identifier.check(pattern)) { if (hasOwn.call(bindings, pattern.name)) { bindings[pattern.name].push(patternPath); } else { bindings[pattern.name] = [patternPath]; } } else if (namedTypes.AssignmentPattern && namedTypes.AssignmentPattern.check(pattern)) { addPattern(patternPath.get("left"), bindings); } else if (namedTypes.ObjectPattern && namedTypes.ObjectPattern.check(pattern)) { patternPath.get("properties").each(function(propertyPath) { var property = propertyPath.value; if (namedTypes.Pattern.check(property)) { addPattern(propertyPath, bindings); } else if (namedTypes.Property.check(property)) { addPattern(propertyPath.get("value"), bindings); } else if (namedTypes.SpreadProperty && namedTypes.SpreadProperty.check(property)) { addPattern(propertyPath.get("argument"), bindings); } }); } else if (namedTypes.ArrayPattern && namedTypes.ArrayPattern.check(pattern)) { patternPath.get("elements").each(function(elementPath) { var element = elementPath.value; if (namedTypes.Pattern.check(element)) { addPattern(elementPath, bindings); } else if (namedTypes.SpreadElement && namedTypes.SpreadElement.check(element)) { addPattern(elementPath.get("argument"), bindings); } }); } else if (namedTypes.PropertyPattern && namedTypes.PropertyPattern.check(pattern)) { addPattern(patternPath.get("pattern"), bindings); } else if (namedTypes.SpreadElementPattern && namedTypes.SpreadElementPattern.check(pattern) || namedTypes.SpreadPropertyPattern && namedTypes.SpreadPropertyPattern.check(pattern)) { addPattern(patternPath.get("argument"), bindings); } } function addTypePattern(patternPath, types2) { var pattern = patternPath.value; namedTypes.Pattern.assert(pattern); if (namedTypes.Identifier.check(pattern)) { if (hasOwn.call(types2, pattern.name)) { types2[pattern.name].push(patternPath); } else { types2[pattern.name] = [patternPath]; } } } Sp.lookup = function(name) { for (var scope = this; scope; scope = scope.parent) if (scope.declares(name)) break; return scope; }; Sp.lookupType = function(name) { for (var scope = this; scope; scope = scope.parent) if (scope.declaresType(name)) break; return scope; }; Sp.getGlobalScope = function() { var scope = this; while (!scope.isGlobal) scope = scope.parent; return scope; }; return Scope; } exports2.default = scopePlugin; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/node-path.js var require_node_path = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/node-path.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var path_1 = tslib_1.__importDefault(require_path4()); var scope_1 = tslib_1.__importDefault(require_scope2()); function nodePathPlugin(fork3) { var types = fork3.use(types_1.default); var n = types.namedTypes; var b = types.builders; var isNumber = types.builtInTypes.number; var isArray = types.builtInTypes.array; var Path = fork3.use(path_1.default); var Scope = fork3.use(scope_1.default); var NodePath = function NodePath2(value, parentPath, name) { if (!(this instanceof NodePath2)) { throw new Error("NodePath constructor cannot be invoked without 'new'"); } Path.call(this, value, parentPath, name); }; var NPp = NodePath.prototype = Object.create(Path.prototype, { constructor: { value: NodePath, enumerable: false, writable: true, configurable: true } }); Object.defineProperties(NPp, { node: { get: function() { Object.defineProperty(this, "node", { configurable: true, value: this._computeNode() }); return this.node; } }, parent: { get: function() { Object.defineProperty(this, "parent", { configurable: true, value: this._computeParent() }); return this.parent; } }, scope: { get: function() { Object.defineProperty(this, "scope", { configurable: true, value: this._computeScope() }); return this.scope; } } }); NPp.replace = function() { delete this.node; delete this.parent; delete this.scope; return Path.prototype.replace.apply(this, arguments); }; NPp.prune = function() { var remainingNodePath = this.parent; this.replace(); return cleanUpNodesAfterPrune(remainingNodePath); }; NPp._computeNode = function() { var value = this.value; if (n.Node.check(value)) { return value; } var pp = this.parentPath; return pp && pp.node || null; }; NPp._computeParent = function() { var value = this.value; var pp = this.parentPath; if (!n.Node.check(value)) { while (pp && !n.Node.check(pp.value)) { pp = pp.parentPath; } if (pp) { pp = pp.parentPath; } } while (pp && !n.Node.check(pp.value)) { pp = pp.parentPath; } return pp || null; }; NPp._computeScope = function() { var value = this.value; var pp = this.parentPath; var scope = pp && pp.scope; if (n.Node.check(value) && Scope.isEstablishedBy(value)) { scope = new Scope(this, scope); } return scope || null; }; NPp.getValueProperty = function(name) { return types.getFieldValue(this.value, name); }; NPp.needsParens = function(assumeExpressionContext) { var pp = this.parentPath; if (!pp) { return false; } var node = this.value; if (!n.Expression.check(node)) { return false; } if (node.type === "Identifier") { return false; } while (!n.Node.check(pp.value)) { pp = pp.parentPath; if (!pp) { return false; } } var parent = pp.value; switch (node.type) { case "UnaryExpression": case "SpreadElement": case "SpreadProperty": return parent.type === "MemberExpression" && this.name === "object" && parent.object === node; case "BinaryExpression": case "LogicalExpression": switch (parent.type) { case "CallExpression": return this.name === "callee" && parent.callee === node; case "UnaryExpression": case "SpreadElement": case "SpreadProperty": return true; case "MemberExpression": return this.name === "object" && parent.object === node; case "BinaryExpression": case "LogicalExpression": { var n_1 = node; var po = parent.operator; var pp_1 = PRECEDENCE[po]; var no = n_1.operator; var np = PRECEDENCE[no]; if (pp_1 > np) { return true; } if (pp_1 === np && this.name === "right") { if (parent.right !== n_1) { throw new Error("Nodes must be equal"); } return true; } } default: return false; } case "SequenceExpression": switch (parent.type) { case "ForStatement": return false; case "ExpressionStatement": return this.name !== "expression"; default: return true; } case "YieldExpression": switch (parent.type) { case "BinaryExpression": case "LogicalExpression": case "UnaryExpression": case "SpreadElement": case "SpreadProperty": case "CallExpression": case "MemberExpression": case "NewExpression": case "ConditionalExpression": case "YieldExpression": return true; default: return false; } case "Literal": return parent.type === "MemberExpression" && isNumber.check(node.value) && this.name === "object" && parent.object === node; case "AssignmentExpression": case "ConditionalExpression": switch (parent.type) { case "UnaryExpression": case "SpreadElement": case "SpreadProperty": case "BinaryExpression": case "LogicalExpression": return true; case "CallExpression": return this.name === "callee" && parent.callee === node; case "ConditionalExpression": return this.name === "test" && parent.test === node; case "MemberExpression": return this.name === "object" && parent.object === node; default: return false; } default: if (parent.type === "NewExpression" && this.name === "callee" && parent.callee === node) { return containsCallExpression(node); } } if (assumeExpressionContext !== true && !this.canBeFirstInStatement() && this.firstInStatement()) return true; return false; }; function isBinary(node) { return n.BinaryExpression.check(node) || n.LogicalExpression.check(node); } function isUnaryLike(node) { return n.UnaryExpression.check(node) || n.SpreadElement && n.SpreadElement.check(node) || n.SpreadProperty && n.SpreadProperty.check(node); } var PRECEDENCE = {}; [ ["||"], ["&&"], ["|"], ["^"], ["&"], ["==", "===", "!=", "!=="], ["<", ">", "<=", ">=", "in", "instanceof"], [">>", "<<", ">>>"], ["+", "-"], ["*", "/", "%"] ].forEach(function(tier, i) { tier.forEach(function(op) { PRECEDENCE[op] = i; }); }); function containsCallExpression(node) { if (n.CallExpression.check(node)) { return true; } if (isArray.check(node)) { return node.some(containsCallExpression); } if (n.Node.check(node)) { return types.someField(node, function(_name, child) { return containsCallExpression(child); }); } return false; } NPp.canBeFirstInStatement = function() { var node = this.node; return !n.FunctionExpression.check(node) && !n.ObjectExpression.check(node); }; NPp.firstInStatement = function() { return firstInStatement(this); }; function firstInStatement(path11) { for (var node, parent; path11.parent; path11 = path11.parent) { node = path11.node; parent = path11.parent.node; if (n.BlockStatement.check(parent) && path11.parent.name === "body" && path11.name === 0) { if (parent.body[0] !== node) { throw new Error("Nodes must be equal"); } return true; } if (n.ExpressionStatement.check(parent) && path11.name === "expression") { if (parent.expression !== node) { throw new Error("Nodes must be equal"); } return true; } if (n.SequenceExpression.check(parent) && path11.parent.name === "expressions" && path11.name === 0) { if (parent.expressions[0] !== node) { throw new Error("Nodes must be equal"); } continue; } if (n.CallExpression.check(parent) && path11.name === "callee") { if (parent.callee !== node) { throw new Error("Nodes must be equal"); } continue; } if (n.MemberExpression.check(parent) && path11.name === "object") { if (parent.object !== node) { throw new Error("Nodes must be equal"); } continue; } if (n.ConditionalExpression.check(parent) && path11.name === "test") { if (parent.test !== node) { throw new Error("Nodes must be equal"); } continue; } if (isBinary(parent) && path11.name === "left") { if (parent.left !== node) { throw new Error("Nodes must be equal"); } continue; } if (n.UnaryExpression.check(parent) && !parent.prefix && path11.name === "argument") { if (parent.argument !== node) { throw new Error("Nodes must be equal"); } continue; } return false; } return true; } function cleanUpNodesAfterPrune(remainingNodePath) { if (n.VariableDeclaration.check(remainingNodePath.node)) { var declarations = remainingNodePath.get("declarations").value; if (!declarations || declarations.length === 0) { return remainingNodePath.prune(); } } else if (n.ExpressionStatement.check(remainingNodePath.node)) { if (!remainingNodePath.get("expression").value) { return remainingNodePath.prune(); } } else if (n.IfStatement.check(remainingNodePath.node)) { cleanUpIfStatementAfterPrune(remainingNodePath); } return remainingNodePath; } function cleanUpIfStatementAfterPrune(ifStatement) { var testExpression = ifStatement.get("test").value; var alternate = ifStatement.get("alternate").value; var consequent = ifStatement.get("consequent").value; if (!consequent && !alternate) { var testExpressionStatement = b.expressionStatement(testExpression); ifStatement.replace(testExpressionStatement); } else if (!consequent && alternate) { var negatedTestExpression = b.unaryExpression("!", testExpression, true); if (n.UnaryExpression.check(testExpression) && testExpression.operator === "!") { negatedTestExpression = testExpression.argument; } ifStatement.get("test").replace(negatedTestExpression); ifStatement.get("consequent").replace(alternate); ifStatement.get("alternate").replace(); } } return NodePath; } exports2.default = nodePathPlugin; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/path-visitor.js var require_path_visitor = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/path-visitor.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var node_path_1 = tslib_1.__importDefault(require_node_path()); var hasOwn = Object.prototype.hasOwnProperty; function pathVisitorPlugin(fork3) { var types = fork3.use(types_1.default); var NodePath = fork3.use(node_path_1.default); var isArray = types.builtInTypes.array; var isObject2 = types.builtInTypes.object; var isFunction = types.builtInTypes.function; var undefined2; var PathVisitor = function PathVisitor2() { if (!(this instanceof PathVisitor2)) { throw new Error("PathVisitor constructor cannot be invoked without 'new'"); } this._reusableContextStack = []; this._methodNameTable = computeMethodNameTable(this); this._shouldVisitComments = hasOwn.call(this._methodNameTable, "Block") || hasOwn.call(this._methodNameTable, "Line"); this.Context = makeContextConstructor(this); this._visiting = false; this._changeReported = false; }; function computeMethodNameTable(visitor) { var typeNames = /* @__PURE__ */ Object.create(null); for (var methodName in visitor) { if (/^visit[A-Z]/.test(methodName)) { typeNames[methodName.slice("visit".length)] = true; } } var supertypeTable = types.computeSupertypeLookupTable(typeNames); var methodNameTable = /* @__PURE__ */ Object.create(null); var typeNameKeys = Object.keys(supertypeTable); var typeNameCount = typeNameKeys.length; for (var i = 0; i < typeNameCount; ++i) { var typeName = typeNameKeys[i]; methodName = "visit" + supertypeTable[typeName]; if (isFunction.check(visitor[methodName])) { methodNameTable[typeName] = methodName; } } return methodNameTable; } PathVisitor.fromMethodsObject = function fromMethodsObject(methods) { if (methods instanceof PathVisitor) { return methods; } if (!isObject2.check(methods)) { return new PathVisitor(); } var Visitor = function Visitor2() { if (!(this instanceof Visitor2)) { throw new Error("Visitor constructor cannot be invoked without 'new'"); } PathVisitor.call(this); }; var Vp = Visitor.prototype = Object.create(PVp); Vp.constructor = Visitor; extend(Vp, methods); extend(Visitor, PathVisitor); isFunction.assert(Visitor.fromMethodsObject); isFunction.assert(Visitor.visit); return new Visitor(); }; function extend(target, source) { for (var property in source) { if (hasOwn.call(source, property)) { target[property] = source[property]; } } return target; } PathVisitor.visit = function visit3(node, methods) { return PathVisitor.fromMethodsObject(methods).visit(node); }; var PVp = PathVisitor.prototype; PVp.visit = function() { if (this._visiting) { throw new Error("Recursively calling visitor.visit(path) resets visitor state. Try this.visit(path) or this.traverse(path) instead."); } this._visiting = true; this._changeReported = false; this._abortRequested = false; var argc = arguments.length; var args2 = new Array(argc); for (var i = 0; i < argc; ++i) { args2[i] = arguments[i]; } if (!(args2[0] instanceof NodePath)) { args2[0] = new NodePath({ root: args2[0] }).get("root"); } this.reset.apply(this, args2); var didNotThrow; try { var root = this.visitWithoutReset(args2[0]); didNotThrow = true; } finally { this._visiting = false; if (!didNotThrow && this._abortRequested) { return args2[0].value; } } return root; }; PVp.AbortRequest = function AbortRequest() { }; PVp.abort = function() { var visitor = this; visitor._abortRequested = true; var request = new visitor.AbortRequest(); request.cancel = function() { visitor._abortRequested = false; }; throw request; }; PVp.reset = function(_path) { }; PVp.visitWithoutReset = function(path11) { if (this instanceof this.Context) { return this.visitor.visitWithoutReset(path11); } if (!(path11 instanceof NodePath)) { throw new Error(""); } var value = path11.value; var methodName = value && typeof value === "object" && typeof value.type === "string" && this._methodNameTable[value.type]; if (methodName) { var context = this.acquireContext(path11); try { return context.invokeVisitorMethod(methodName); } finally { this.releaseContext(context); } } else { return visitChildren(path11, this); } }; function visitChildren(path11, visitor) { if (!(path11 instanceof NodePath)) { throw new Error(""); } if (!(visitor instanceof PathVisitor)) { throw new Error(""); } var value = path11.value; if (isArray.check(value)) { path11.each(visitor.visitWithoutReset, visitor); } else if (!isObject2.check(value)) { } else { var childNames = types.getFieldNames(value); if (visitor._shouldVisitComments && value.comments && childNames.indexOf("comments") < 0) { childNames.push("comments"); } var childCount = childNames.length; var childPaths = []; for (var i = 0; i < childCount; ++i) { var childName = childNames[i]; if (!hasOwn.call(value, childName)) { value[childName] = types.getFieldValue(value, childName); } childPaths.push(path11.get(childName)); } for (var i = 0; i < childCount; ++i) { visitor.visitWithoutReset(childPaths[i]); } } return path11.value; } PVp.acquireContext = function(path11) { if (this._reusableContextStack.length === 0) { return new this.Context(path11); } return this._reusableContextStack.pop().reset(path11); }; PVp.releaseContext = function(context) { if (!(context instanceof this.Context)) { throw new Error(""); } this._reusableContextStack.push(context); context.currentPath = null; }; PVp.reportChanged = function() { this._changeReported = true; }; PVp.wasChangeReported = function() { return this._changeReported; }; function makeContextConstructor(visitor) { function Context(path11) { if (!(this instanceof Context)) { throw new Error(""); } if (!(this instanceof PathVisitor)) { throw new Error(""); } if (!(path11 instanceof NodePath)) { throw new Error(""); } Object.defineProperty(this, "visitor", { value: visitor, writable: false, enumerable: true, configurable: false }); this.currentPath = path11; this.needToCallTraverse = true; Object.seal(this); } if (!(visitor instanceof PathVisitor)) { throw new Error(""); } var Cp = Context.prototype = Object.create(visitor); Cp.constructor = Context; extend(Cp, sharedContextProtoMethods); return Context; } var sharedContextProtoMethods = /* @__PURE__ */ Object.create(null); sharedContextProtoMethods.reset = function reset(path11) { if (!(this instanceof this.Context)) { throw new Error(""); } if (!(path11 instanceof NodePath)) { throw new Error(""); } this.currentPath = path11; this.needToCallTraverse = true; return this; }; sharedContextProtoMethods.invokeVisitorMethod = function invokeVisitorMethod(methodName) { if (!(this instanceof this.Context)) { throw new Error(""); } if (!(this.currentPath instanceof NodePath)) { throw new Error(""); } var result = this.visitor[methodName].call(this, this.currentPath); if (result === false) { this.needToCallTraverse = false; } else if (result !== undefined2) { this.currentPath = this.currentPath.replace(result)[0]; if (this.needToCallTraverse) { this.traverse(this.currentPath); } } if (this.needToCallTraverse !== false) { throw new Error("Must either call this.traverse or return false in " + methodName); } var path11 = this.currentPath; return path11 && path11.value; }; sharedContextProtoMethods.traverse = function traverse(path11, newVisitor) { if (!(this instanceof this.Context)) { throw new Error(""); } if (!(path11 instanceof NodePath)) { throw new Error(""); } if (!(this.currentPath instanceof NodePath)) { throw new Error(""); } this.needToCallTraverse = false; return visitChildren(path11, PathVisitor.fromMethodsObject(newVisitor || this.visitor)); }; sharedContextProtoMethods.visit = function visit3(path11, newVisitor) { if (!(this instanceof this.Context)) { throw new Error(""); } if (!(path11 instanceof NodePath)) { throw new Error(""); } if (!(this.currentPath instanceof NodePath)) { throw new Error(""); } this.needToCallTraverse = false; return PathVisitor.fromMethodsObject(newVisitor || this.visitor).visitWithoutReset(path11); }; sharedContextProtoMethods.reportChanged = function reportChanged() { this.visitor.reportChanged(); }; sharedContextProtoMethods.abort = function abort() { this.needToCallTraverse = false; this.visitor.abort(); }; return PathVisitor; } exports2.default = pathVisitorPlugin; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/equiv.js var require_equiv = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/equiv.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); function default_1(fork3) { var types = fork3.use(types_1.default); var getFieldNames = types.getFieldNames; var getFieldValue = types.getFieldValue; var isArray = types.builtInTypes.array; var isObject2 = types.builtInTypes.object; var isDate = types.builtInTypes.Date; var isRegExp = types.builtInTypes.RegExp; var hasOwn = Object.prototype.hasOwnProperty; function astNodesAreEquivalent(a, b, problemPath) { if (isArray.check(problemPath)) { problemPath.length = 0; } else { problemPath = null; } return areEquivalent(a, b, problemPath); } astNodesAreEquivalent.assert = function(a, b) { var problemPath = []; if (!astNodesAreEquivalent(a, b, problemPath)) { if (problemPath.length === 0) { if (a !== b) { throw new Error("Nodes must be equal"); } } else { throw new Error("Nodes differ in the following path: " + problemPath.map(subscriptForProperty).join("")); } } }; function subscriptForProperty(property) { if (/[_$a-z][_$a-z0-9]*/i.test(property)) { return "." + property; } return "[" + JSON.stringify(property) + "]"; } function areEquivalent(a, b, problemPath) { if (a === b) { return true; } if (isArray.check(a)) { return arraysAreEquivalent(a, b, problemPath); } if (isObject2.check(a)) { return objectsAreEquivalent(a, b, problemPath); } if (isDate.check(a)) { return isDate.check(b) && +a === +b; } if (isRegExp.check(a)) { return isRegExp.check(b) && (a.source === b.source && a.global === b.global && a.multiline === b.multiline && a.ignoreCase === b.ignoreCase); } return a == b; } function arraysAreEquivalent(a, b, problemPath) { isArray.assert(a); var aLength = a.length; if (!isArray.check(b) || b.length !== aLength) { if (problemPath) { problemPath.push("length"); } return false; } for (var i = 0; i < aLength; ++i) { if (problemPath) { problemPath.push(i); } if (i in a !== i in b) { return false; } if (!areEquivalent(a[i], b[i], problemPath)) { return false; } if (problemPath) { var problemPathTail = problemPath.pop(); if (problemPathTail !== i) { throw new Error("" + problemPathTail); } } } return true; } function objectsAreEquivalent(a, b, problemPath) { isObject2.assert(a); if (!isObject2.check(b)) { return false; } if (a.type !== b.type) { if (problemPath) { problemPath.push("type"); } return false; } var aNames = getFieldNames(a); var aNameCount = aNames.length; var bNames = getFieldNames(b); var bNameCount = bNames.length; if (aNameCount === bNameCount) { for (var i = 0; i < aNameCount; ++i) { var name = aNames[i]; var aChild = getFieldValue(a, name); var bChild = getFieldValue(b, name); if (problemPath) { problemPath.push(name); } if (!areEquivalent(aChild, bChild, problemPath)) { return false; } if (problemPath) { var problemPathTail = problemPath.pop(); if (problemPathTail !== name) { throw new Error("" + problemPathTail); } } } return true; } if (!problemPath) { return false; } var seenNames = /* @__PURE__ */ Object.create(null); for (i = 0; i < aNameCount; ++i) { seenNames[aNames[i]] = true; } for (i = 0; i < bNameCount; ++i) { name = bNames[i]; if (!hasOwn.call(seenNames, name)) { problemPath.push(name); return false; } delete seenNames[name]; } for (name in seenNames) { problemPath.push(name); break; } return false; } return astNodesAreEquivalent; } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/fork.js var require_fork = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/fork.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var path_visitor_1 = tslib_1.__importDefault(require_path_visitor()); var equiv_1 = tslib_1.__importDefault(require_equiv()); var path_1 = tslib_1.__importDefault(require_path4()); var node_path_1 = tslib_1.__importDefault(require_node_path()); function default_1(defs) { var fork3 = createFork(); var types = fork3.use(types_1.default); defs.forEach(fork3.use); types.finalize(); var PathVisitor = fork3.use(path_visitor_1.default); return { Type: types.Type, builtInTypes: types.builtInTypes, namedTypes: types.namedTypes, builders: types.builders, defineMethod: types.defineMethod, getFieldNames: types.getFieldNames, getFieldValue: types.getFieldValue, eachField: types.eachField, someField: types.someField, getSupertypeNames: types.getSupertypeNames, getBuilderName: types.getBuilderName, astNodesAreEquivalent: fork3.use(equiv_1.default), finalize: types.finalize, Path: fork3.use(path_1.default), NodePath: fork3.use(node_path_1.default), PathVisitor, use: fork3.use, visit: PathVisitor.visit }; } exports2.default = default_1; function createFork() { var used = []; var usedResult = []; function use(plugin) { var idx = used.indexOf(plugin); if (idx === -1) { idx = used.length; used.push(plugin); usedResult[idx] = plugin(fork3); } return usedResult[idx]; } var fork3 = { use }; return fork3; } module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/shared.js var require_shared = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/shared.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); function default_1(fork3) { var types = fork3.use(types_1.default); var Type = types.Type; var builtin = types.builtInTypes; var isNumber = builtin.number; function geq(than) { return Type.from(function(value) { return isNumber.check(value) && value >= than; }, isNumber + " >= " + than); } ; var defaults = { // Functions were used because (among other reasons) that's the most // elegant way to allow for the emptyArray one always to give a new // array instance. "null": function() { return null; }, "emptyArray": function() { return []; }, "false": function() { return false; }, "true": function() { return true; }, "undefined": function() { }, "use strict": function() { return "use strict"; } }; var naiveIsPrimitive = Type.or(builtin.string, builtin.number, builtin.boolean, builtin.null, builtin.undefined); var isPrimitive = Type.from(function(value) { if (value === null) return true; var type = typeof value; if (type === "object" || type === "function") { return false; } return true; }, naiveIsPrimitive.toString()); return { geq, defaults, isPrimitive }; } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/core.js var require_core3 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/core.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); function default_1(fork3) { var types = fork3.use(types_1.default); var Type = types.Type; var def = Type.def; var or = Type.or; var shared = fork3.use(shared_1.default); var defaults = shared.defaults; var geq = shared.geq; def("Printable").field("loc", or(def("SourceLocation"), null), defaults["null"], true); def("Node").bases("Printable").field("type", String).field("comments", or([def("Comment")], null), defaults["null"], true); def("SourceLocation").field("start", def("Position")).field("end", def("Position")).field("source", or(String, null), defaults["null"]); def("Position").field("line", geq(1)).field("column", geq(0)); def("File").bases("Node").build("program", "name").field("program", def("Program")).field("name", or(String, null), defaults["null"]); def("Program").bases("Node").build("body").field("body", [def("Statement")]); def("Function").bases("Node").field("id", or(def("Identifier"), null), defaults["null"]).field("params", [def("Pattern")]).field("body", def("BlockStatement")).field("generator", Boolean, defaults["false"]).field("async", Boolean, defaults["false"]); def("Statement").bases("Node"); def("EmptyStatement").bases("Statement").build(); def("BlockStatement").bases("Statement").build("body").field("body", [def("Statement")]); def("ExpressionStatement").bases("Statement").build("expression").field("expression", def("Expression")); def("IfStatement").bases("Statement").build("test", "consequent", "alternate").field("test", def("Expression")).field("consequent", def("Statement")).field("alternate", or(def("Statement"), null), defaults["null"]); def("LabeledStatement").bases("Statement").build("label", "body").field("label", def("Identifier")).field("body", def("Statement")); def("BreakStatement").bases("Statement").build("label").field("label", or(def("Identifier"), null), defaults["null"]); def("ContinueStatement").bases("Statement").build("label").field("label", or(def("Identifier"), null), defaults["null"]); def("WithStatement").bases("Statement").build("object", "body").field("object", def("Expression")).field("body", def("Statement")); def("SwitchStatement").bases("Statement").build("discriminant", "cases", "lexical").field("discriminant", def("Expression")).field("cases", [def("SwitchCase")]).field("lexical", Boolean, defaults["false"]); def("ReturnStatement").bases("Statement").build("argument").field("argument", or(def("Expression"), null)); def("ThrowStatement").bases("Statement").build("argument").field("argument", def("Expression")); def("TryStatement").bases("Statement").build("block", "handler", "finalizer").field("block", def("BlockStatement")).field("handler", or(def("CatchClause"), null), function() { return this.handlers && this.handlers[0] || null; }).field("handlers", [def("CatchClause")], function() { return this.handler ? [this.handler] : []; }, true).field("guardedHandlers", [def("CatchClause")], defaults.emptyArray).field("finalizer", or(def("BlockStatement"), null), defaults["null"]); def("CatchClause").bases("Node").build("param", "guard", "body").field("param", or(def("Pattern"), null), defaults["null"]).field("guard", or(def("Expression"), null), defaults["null"]).field("body", def("BlockStatement")); def("WhileStatement").bases("Statement").build("test", "body").field("test", def("Expression")).field("body", def("Statement")); def("DoWhileStatement").bases("Statement").build("body", "test").field("body", def("Statement")).field("test", def("Expression")); def("ForStatement").bases("Statement").build("init", "test", "update", "body").field("init", or(def("VariableDeclaration"), def("Expression"), null)).field("test", or(def("Expression"), null)).field("update", or(def("Expression"), null)).field("body", def("Statement")); def("ForInStatement").bases("Statement").build("left", "right", "body").field("left", or(def("VariableDeclaration"), def("Expression"))).field("right", def("Expression")).field("body", def("Statement")); def("DebuggerStatement").bases("Statement").build(); def("Declaration").bases("Statement"); def("FunctionDeclaration").bases("Function", "Declaration").build("id", "params", "body").field("id", def("Identifier")); def("FunctionExpression").bases("Function", "Expression").build("id", "params", "body"); def("VariableDeclaration").bases("Declaration").build("kind", "declarations").field("kind", or("var", "let", "const")).field("declarations", [def("VariableDeclarator")]); def("VariableDeclarator").bases("Node").build("id", "init").field("id", def("Pattern")).field("init", or(def("Expression"), null), defaults["null"]); def("Expression").bases("Node"); def("ThisExpression").bases("Expression").build(); def("ArrayExpression").bases("Expression").build("elements").field("elements", [or(def("Expression"), null)]); def("ObjectExpression").bases("Expression").build("properties").field("properties", [def("Property")]); def("Property").bases("Node").build("kind", "key", "value").field("kind", or("init", "get", "set")).field("key", or(def("Literal"), def("Identifier"))).field("value", def("Expression")); def("SequenceExpression").bases("Expression").build("expressions").field("expressions", [def("Expression")]); var UnaryOperator = or("-", "+", "!", "~", "typeof", "void", "delete"); def("UnaryExpression").bases("Expression").build("operator", "argument", "prefix").field("operator", UnaryOperator).field("argument", def("Expression")).field("prefix", Boolean, defaults["true"]); var BinaryOperator = or( "==", "!=", "===", "!==", "<", "<=", ">", ">=", "<<", ">>", ">>>", "+", "-", "*", "/", "%", "**", "&", // TODO Missing from the Parser API. "|", "^", "in", "instanceof" ); def("BinaryExpression").bases("Expression").build("operator", "left", "right").field("operator", BinaryOperator).field("left", def("Expression")).field("right", def("Expression")); var AssignmentOperator = or("=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "|=", "^=", "&="); def("AssignmentExpression").bases("Expression").build("operator", "left", "right").field("operator", AssignmentOperator).field("left", or(def("Pattern"), def("MemberExpression"))).field("right", def("Expression")); var UpdateOperator = or("++", "--"); def("UpdateExpression").bases("Expression").build("operator", "argument", "prefix").field("operator", UpdateOperator).field("argument", def("Expression")).field("prefix", Boolean); var LogicalOperator = or("||", "&&"); def("LogicalExpression").bases("Expression").build("operator", "left", "right").field("operator", LogicalOperator).field("left", def("Expression")).field("right", def("Expression")); def("ConditionalExpression").bases("Expression").build("test", "consequent", "alternate").field("test", def("Expression")).field("consequent", def("Expression")).field("alternate", def("Expression")); def("NewExpression").bases("Expression").build("callee", "arguments").field("callee", def("Expression")).field("arguments", [def("Expression")]); def("CallExpression").bases("Expression").build("callee", "arguments").field("callee", def("Expression")).field("arguments", [def("Expression")]); def("MemberExpression").bases("Expression").build("object", "property", "computed").field("object", def("Expression")).field("property", or(def("Identifier"), def("Expression"))).field("computed", Boolean, function() { var type = this.property.type; if (type === "Literal" || type === "MemberExpression" || type === "BinaryExpression") { return true; } return false; }); def("Pattern").bases("Node"); def("SwitchCase").bases("Node").build("test", "consequent").field("test", or(def("Expression"), null)).field("consequent", [def("Statement")]); def("Identifier").bases("Expression", "Pattern").build("name").field("name", String).field("optional", Boolean, defaults["false"]); def("Literal").bases("Expression").build("value").field("value", or(String, Boolean, null, Number, RegExp)).field("regex", or({ pattern: String, flags: String }, null), function() { if (this.value instanceof RegExp) { var flags = ""; if (this.value.ignoreCase) flags += "i"; if (this.value.multiline) flags += "m"; if (this.value.global) flags += "g"; return { pattern: this.value.source, flags }; } return null; }); def("Comment").bases("Printable").field("value", String).field("leading", Boolean, defaults["true"]).field("trailing", Boolean, defaults["false"]); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es6.js var require_es6 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es6.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var core_1 = tslib_1.__importDefault(require_core3()); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); function default_1(fork3) { fork3.use(core_1.default); var types = fork3.use(types_1.default); var def = types.Type.def; var or = types.Type.or; var defaults = fork3.use(shared_1.default).defaults; def("Function").field("generator", Boolean, defaults["false"]).field("expression", Boolean, defaults["false"]).field("defaults", [or(def("Expression"), null)], defaults.emptyArray).field("rest", or(def("Identifier"), null), defaults["null"]); def("RestElement").bases("Pattern").build("argument").field("argument", def("Pattern")).field( "typeAnnotation", // for Babylon. Flow parser puts it on the identifier or(def("TypeAnnotation"), def("TSTypeAnnotation"), null), defaults["null"] ); def("SpreadElementPattern").bases("Pattern").build("argument").field("argument", def("Pattern")); def("FunctionDeclaration").build("id", "params", "body", "generator", "expression"); def("FunctionExpression").build("id", "params", "body", "generator", "expression"); def("ArrowFunctionExpression").bases("Function", "Expression").build("params", "body", "expression").field("id", null, defaults["null"]).field("body", or(def("BlockStatement"), def("Expression"))).field("generator", false, defaults["false"]); def("ForOfStatement").bases("Statement").build("left", "right", "body").field("left", or(def("VariableDeclaration"), def("Pattern"))).field("right", def("Expression")).field("body", def("Statement")); def("YieldExpression").bases("Expression").build("argument", "delegate").field("argument", or(def("Expression"), null)).field("delegate", Boolean, defaults["false"]); def("GeneratorExpression").bases("Expression").build("body", "blocks", "filter").field("body", def("Expression")).field("blocks", [def("ComprehensionBlock")]).field("filter", or(def("Expression"), null)); def("ComprehensionExpression").bases("Expression").build("body", "blocks", "filter").field("body", def("Expression")).field("blocks", [def("ComprehensionBlock")]).field("filter", or(def("Expression"), null)); def("ComprehensionBlock").bases("Node").build("left", "right", "each").field("left", def("Pattern")).field("right", def("Expression")).field("each", Boolean); def("Property").field("key", or(def("Literal"), def("Identifier"), def("Expression"))).field("value", or(def("Expression"), def("Pattern"))).field("method", Boolean, defaults["false"]).field("shorthand", Boolean, defaults["false"]).field("computed", Boolean, defaults["false"]); def("ObjectProperty").field("shorthand", Boolean, defaults["false"]); def("PropertyPattern").bases("Pattern").build("key", "pattern").field("key", or(def("Literal"), def("Identifier"), def("Expression"))).field("pattern", def("Pattern")).field("computed", Boolean, defaults["false"]); def("ObjectPattern").bases("Pattern").build("properties").field("properties", [or(def("PropertyPattern"), def("Property"))]); def("ArrayPattern").bases("Pattern").build("elements").field("elements", [or(def("Pattern"), null)]); def("MethodDefinition").bases("Declaration").build("kind", "key", "value", "static").field("kind", or("constructor", "method", "get", "set")).field("key", def("Expression")).field("value", def("Function")).field("computed", Boolean, defaults["false"]).field("static", Boolean, defaults["false"]); def("SpreadElement").bases("Node").build("argument").field("argument", def("Expression")); def("ArrayExpression").field("elements", [or(def("Expression"), def("SpreadElement"), def("RestElement"), null)]); def("NewExpression").field("arguments", [or(def("Expression"), def("SpreadElement"))]); def("CallExpression").field("arguments", [or(def("Expression"), def("SpreadElement"))]); def("AssignmentPattern").bases("Pattern").build("left", "right").field("left", def("Pattern")).field("right", def("Expression")); var ClassBodyElement = or(def("MethodDefinition"), def("VariableDeclarator"), def("ClassPropertyDefinition"), def("ClassProperty")); def("ClassProperty").bases("Declaration").build("key").field("key", or(def("Literal"), def("Identifier"), def("Expression"))).field("computed", Boolean, defaults["false"]); def("ClassPropertyDefinition").bases("Declaration").build("definition").field("definition", ClassBodyElement); def("ClassBody").bases("Declaration").build("body").field("body", [ClassBodyElement]); def("ClassDeclaration").bases("Declaration").build("id", "body", "superClass").field("id", or(def("Identifier"), null)).field("body", def("ClassBody")).field("superClass", or(def("Expression"), null), defaults["null"]); def("ClassExpression").bases("Expression").build("id", "body", "superClass").field("id", or(def("Identifier"), null), defaults["null"]).field("body", def("ClassBody")).field("superClass", or(def("Expression"), null), defaults["null"]); def("Specifier").bases("Node"); def("ModuleSpecifier").bases("Specifier").field("local", or(def("Identifier"), null), defaults["null"]).field("id", or(def("Identifier"), null), defaults["null"]).field("name", or(def("Identifier"), null), defaults["null"]); def("ImportSpecifier").bases("ModuleSpecifier").build("id", "name"); def("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("id"); def("ImportDefaultSpecifier").bases("ModuleSpecifier").build("id"); def("ImportDeclaration").bases("Declaration").build("specifiers", "source", "importKind").field("specifiers", [or(def("ImportSpecifier"), def("ImportNamespaceSpecifier"), def("ImportDefaultSpecifier"))], defaults.emptyArray).field("source", def("Literal")).field("importKind", or("value", "type"), function() { return "value"; }); def("TaggedTemplateExpression").bases("Expression").build("tag", "quasi").field("tag", def("Expression")).field("quasi", def("TemplateLiteral")); def("TemplateLiteral").bases("Expression").build("quasis", "expressions").field("quasis", [def("TemplateElement")]).field("expressions", [def("Expression")]); def("TemplateElement").bases("Node").build("value", "tail").field("value", { "cooked": String, "raw": String }).field("tail", Boolean); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es7.js var require_es7 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es7.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var es6_1 = tslib_1.__importDefault(require_es6()); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); function default_1(fork3) { fork3.use(es6_1.default); var types = fork3.use(types_1.default); var def = types.Type.def; var or = types.Type.or; var defaults = fork3.use(shared_1.default).defaults; def("Function").field("async", Boolean, defaults["false"]); def("SpreadProperty").bases("Node").build("argument").field("argument", def("Expression")); def("ObjectExpression").field("properties", [or(def("Property"), def("SpreadProperty"), def("SpreadElement"))]); def("SpreadPropertyPattern").bases("Pattern").build("argument").field("argument", def("Pattern")); def("ObjectPattern").field("properties", [or(def("Property"), def("PropertyPattern"), def("SpreadPropertyPattern"))]); def("AwaitExpression").bases("Expression").build("argument", "all").field("argument", or(def("Expression"), null)).field("all", Boolean, defaults["false"]); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es2020.js var require_es2020 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es2020.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var es7_1 = tslib_1.__importDefault(require_es7()); var types_1 = tslib_1.__importDefault(require_types5()); function default_1(fork3) { fork3.use(es7_1.default); var types = fork3.use(types_1.default); var def = types.Type.def; def("ImportExpression").bases("Expression").build("source").field("source", def("Expression")); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/jsx.js var require_jsx = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/jsx.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var es7_1 = tslib_1.__importDefault(require_es7()); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); function default_1(fork3) { fork3.use(es7_1.default); var types = fork3.use(types_1.default); var def = types.Type.def; var or = types.Type.or; var defaults = fork3.use(shared_1.default).defaults; def("JSXAttribute").bases("Node").build("name", "value").field("name", or(def("JSXIdentifier"), def("JSXNamespacedName"))).field("value", or( def("Literal"), // attr="value" def("JSXExpressionContainer"), // attr={value} null // attr= or just attr ), defaults["null"]); def("JSXIdentifier").bases("Identifier").build("name").field("name", String); def("JSXNamespacedName").bases("Node").build("namespace", "name").field("namespace", def("JSXIdentifier")).field("name", def("JSXIdentifier")); def("JSXMemberExpression").bases("MemberExpression").build("object", "property").field("object", or(def("JSXIdentifier"), def("JSXMemberExpression"))).field("property", def("JSXIdentifier")).field("computed", Boolean, defaults.false); var JSXElementName = or(def("JSXIdentifier"), def("JSXNamespacedName"), def("JSXMemberExpression")); def("JSXSpreadAttribute").bases("Node").build("argument").field("argument", def("Expression")); var JSXAttributes = [or(def("JSXAttribute"), def("JSXSpreadAttribute"))]; def("JSXExpressionContainer").bases("Expression").build("expression").field("expression", def("Expression")); def("JSXElement").bases("Expression").build("openingElement", "closingElement", "children").field("openingElement", def("JSXOpeningElement")).field("closingElement", or(def("JSXClosingElement"), null), defaults["null"]).field("children", [or( def("JSXElement"), def("JSXExpressionContainer"), def("JSXFragment"), def("JSXText"), def("Literal") // TODO Esprima should return JSXText instead. )], defaults.emptyArray).field("name", JSXElementName, function() { return this.openingElement.name; }, true).field("selfClosing", Boolean, function() { return this.openingElement.selfClosing; }, true).field("attributes", JSXAttributes, function() { return this.openingElement.attributes; }, true); def("JSXOpeningElement").bases("Node").build("name", "attributes", "selfClosing").field("name", JSXElementName).field("attributes", JSXAttributes, defaults.emptyArray).field("selfClosing", Boolean, defaults["false"]); def("JSXClosingElement").bases("Node").build("name").field("name", JSXElementName); def("JSXFragment").bases("Expression").build("openingElement", "closingElement", "children").field("openingElement", def("JSXOpeningFragment")).field("closingElement", def("JSXClosingFragment")).field("children", [or( def("JSXElement"), def("JSXExpressionContainer"), def("JSXFragment"), def("JSXText"), def("Literal") // TODO Esprima should return JSXText instead. )], defaults.emptyArray); def("JSXOpeningFragment").bases("Node").build(); def("JSXClosingFragment").bases("Node").build(); def("JSXText").bases("Literal").build("value").field("value", String); def("JSXEmptyExpression").bases("Expression").build(); def("JSXSpreadChild").bases("Expression").build("expression").field("expression", def("Expression")); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/type-annotations.js var require_type_annotations = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/type-annotations.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); function default_1(fork3) { var types = fork3.use(types_1.default); var def = types.Type.def; var or = types.Type.or; var defaults = fork3.use(shared_1.default).defaults; var TypeAnnotation = or(def("TypeAnnotation"), def("TSTypeAnnotation"), null); var TypeParamDecl = or(def("TypeParameterDeclaration"), def("TSTypeParameterDeclaration"), null); def("Identifier").field("typeAnnotation", TypeAnnotation, defaults["null"]); def("ObjectPattern").field("typeAnnotation", TypeAnnotation, defaults["null"]); def("Function").field("returnType", TypeAnnotation, defaults["null"]).field("typeParameters", TypeParamDecl, defaults["null"]); def("ClassProperty").build("key", "value", "typeAnnotation", "static").field("value", or(def("Expression"), null)).field("static", Boolean, defaults["false"]).field("typeAnnotation", TypeAnnotation, defaults["null"]); [ "ClassDeclaration", "ClassExpression" ].forEach(function(typeName) { def(typeName).field("typeParameters", TypeParamDecl, defaults["null"]).field("superTypeParameters", or(def("TypeParameterInstantiation"), def("TSTypeParameterInstantiation"), null), defaults["null"]).field("implements", or([def("ClassImplements")], [def("TSExpressionWithTypeArguments")]), defaults.emptyArray); }); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/flow.js var require_flow = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/flow.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var es7_1 = tslib_1.__importDefault(require_es7()); var type_annotations_1 = tslib_1.__importDefault(require_type_annotations()); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); function default_1(fork3) { fork3.use(es7_1.default); fork3.use(type_annotations_1.default); var types = fork3.use(types_1.default); var def = types.Type.def; var or = types.Type.or; var defaults = fork3.use(shared_1.default).defaults; def("Flow").bases("Node"); def("FlowType").bases("Flow"); def("AnyTypeAnnotation").bases("FlowType").build(); def("EmptyTypeAnnotation").bases("FlowType").build(); def("MixedTypeAnnotation").bases("FlowType").build(); def("VoidTypeAnnotation").bases("FlowType").build(); def("NumberTypeAnnotation").bases("FlowType").build(); def("NumberLiteralTypeAnnotation").bases("FlowType").build("value", "raw").field("value", Number).field("raw", String); def("NumericLiteralTypeAnnotation").bases("FlowType").build("value", "raw").field("value", Number).field("raw", String); def("StringTypeAnnotation").bases("FlowType").build(); def("StringLiteralTypeAnnotation").bases("FlowType").build("value", "raw").field("value", String).field("raw", String); def("BooleanTypeAnnotation").bases("FlowType").build(); def("BooleanLiteralTypeAnnotation").bases("FlowType").build("value", "raw").field("value", Boolean).field("raw", String); def("TypeAnnotation").bases("Node").build("typeAnnotation").field("typeAnnotation", def("FlowType")); def("NullableTypeAnnotation").bases("FlowType").build("typeAnnotation").field("typeAnnotation", def("FlowType")); def("NullLiteralTypeAnnotation").bases("FlowType").build(); def("NullTypeAnnotation").bases("FlowType").build(); def("ThisTypeAnnotation").bases("FlowType").build(); def("ExistsTypeAnnotation").bases("FlowType").build(); def("ExistentialTypeParam").bases("FlowType").build(); def("FunctionTypeAnnotation").bases("FlowType").build("params", "returnType", "rest", "typeParameters").field("params", [def("FunctionTypeParam")]).field("returnType", def("FlowType")).field("rest", or(def("FunctionTypeParam"), null)).field("typeParameters", or(def("TypeParameterDeclaration"), null)); def("FunctionTypeParam").bases("Node").build("name", "typeAnnotation", "optional").field("name", def("Identifier")).field("typeAnnotation", def("FlowType")).field("optional", Boolean); def("ArrayTypeAnnotation").bases("FlowType").build("elementType").field("elementType", def("FlowType")); def("ObjectTypeAnnotation").bases("FlowType").build("properties", "indexers", "callProperties").field("properties", [ or(def("ObjectTypeProperty"), def("ObjectTypeSpreadProperty")) ]).field("indexers", [def("ObjectTypeIndexer")], defaults.emptyArray).field("callProperties", [def("ObjectTypeCallProperty")], defaults.emptyArray).field("inexact", or(Boolean, void 0), defaults["undefined"]).field("exact", Boolean, defaults["false"]).field("internalSlots", [def("ObjectTypeInternalSlot")], defaults.emptyArray); def("Variance").bases("Node").build("kind").field("kind", or("plus", "minus")); var LegacyVariance = or(def("Variance"), "plus", "minus", null); def("ObjectTypeProperty").bases("Node").build("key", "value", "optional").field("key", or(def("Literal"), def("Identifier"))).field("value", def("FlowType")).field("optional", Boolean).field("variance", LegacyVariance, defaults["null"]); def("ObjectTypeIndexer").bases("Node").build("id", "key", "value").field("id", def("Identifier")).field("key", def("FlowType")).field("value", def("FlowType")).field("variance", LegacyVariance, defaults["null"]); def("ObjectTypeCallProperty").bases("Node").build("value").field("value", def("FunctionTypeAnnotation")).field("static", Boolean, defaults["false"]); def("QualifiedTypeIdentifier").bases("Node").build("qualification", "id").field("qualification", or(def("Identifier"), def("QualifiedTypeIdentifier"))).field("id", def("Identifier")); def("GenericTypeAnnotation").bases("FlowType").build("id", "typeParameters").field("id", or(def("Identifier"), def("QualifiedTypeIdentifier"))).field("typeParameters", or(def("TypeParameterInstantiation"), null)); def("MemberTypeAnnotation").bases("FlowType").build("object", "property").field("object", def("Identifier")).field("property", or(def("MemberTypeAnnotation"), def("GenericTypeAnnotation"))); def("UnionTypeAnnotation").bases("FlowType").build("types").field("types", [def("FlowType")]); def("IntersectionTypeAnnotation").bases("FlowType").build("types").field("types", [def("FlowType")]); def("TypeofTypeAnnotation").bases("FlowType").build("argument").field("argument", def("FlowType")); def("ObjectTypeSpreadProperty").bases("Node").build("argument").field("argument", def("FlowType")); def("ObjectTypeInternalSlot").bases("Node").build("id", "value", "optional", "static", "method").field("id", def("Identifier")).field("value", def("FlowType")).field("optional", Boolean).field("static", Boolean).field("method", Boolean); def("TypeParameterDeclaration").bases("Node").build("params").field("params", [def("TypeParameter")]); def("TypeParameterInstantiation").bases("Node").build("params").field("params", [def("FlowType")]); def("TypeParameter").bases("FlowType").build("name", "variance", "bound").field("name", String).field("variance", LegacyVariance, defaults["null"]).field("bound", or(def("TypeAnnotation"), null), defaults["null"]); def("ClassProperty").field("variance", LegacyVariance, defaults["null"]); def("ClassImplements").bases("Node").build("id").field("id", def("Identifier")).field("superClass", or(def("Expression"), null), defaults["null"]).field("typeParameters", or(def("TypeParameterInstantiation"), null), defaults["null"]); def("InterfaceTypeAnnotation").bases("FlowType").build("body", "extends").field("body", def("ObjectTypeAnnotation")).field("extends", or([def("InterfaceExtends")], null), defaults["null"]); def("InterfaceDeclaration").bases("Declaration").build("id", "body", "extends").field("id", def("Identifier")).field("typeParameters", or(def("TypeParameterDeclaration"), null), defaults["null"]).field("body", def("ObjectTypeAnnotation")).field("extends", [def("InterfaceExtends")]); def("DeclareInterface").bases("InterfaceDeclaration").build("id", "body", "extends"); def("InterfaceExtends").bases("Node").build("id").field("id", def("Identifier")).field("typeParameters", or(def("TypeParameterInstantiation"), null), defaults["null"]); def("TypeAlias").bases("Declaration").build("id", "typeParameters", "right").field("id", def("Identifier")).field("typeParameters", or(def("TypeParameterDeclaration"), null)).field("right", def("FlowType")); def("OpaqueType").bases("Declaration").build("id", "typeParameters", "impltype", "supertype").field("id", def("Identifier")).field("typeParameters", or(def("TypeParameterDeclaration"), null)).field("impltype", def("FlowType")).field("supertype", def("FlowType")); def("DeclareTypeAlias").bases("TypeAlias").build("id", "typeParameters", "right"); def("DeclareOpaqueType").bases("TypeAlias").build("id", "typeParameters", "supertype"); def("TypeCastExpression").bases("Expression").build("expression", "typeAnnotation").field("expression", def("Expression")).field("typeAnnotation", def("TypeAnnotation")); def("TupleTypeAnnotation").bases("FlowType").build("types").field("types", [def("FlowType")]); def("DeclareVariable").bases("Statement").build("id").field("id", def("Identifier")); def("DeclareFunction").bases("Statement").build("id").field("id", def("Identifier")); def("DeclareClass").bases("InterfaceDeclaration").build("id"); def("DeclareModule").bases("Statement").build("id", "body").field("id", or(def("Identifier"), def("Literal"))).field("body", def("BlockStatement")); def("DeclareModuleExports").bases("Statement").build("typeAnnotation").field("typeAnnotation", def("TypeAnnotation")); def("DeclareExportDeclaration").bases("Declaration").build("default", "declaration", "specifiers", "source").field("default", Boolean).field("declaration", or( def("DeclareVariable"), def("DeclareFunction"), def("DeclareClass"), def("FlowType"), // Implies default. null )).field("specifiers", [or(def("ExportSpecifier"), def("ExportBatchSpecifier"))], defaults.emptyArray).field("source", or(def("Literal"), null), defaults["null"]); def("DeclareExportAllDeclaration").bases("Declaration").build("source").field("source", or(def("Literal"), null), defaults["null"]); def("FlowPredicate").bases("Flow"); def("InferredPredicate").bases("FlowPredicate").build(); def("DeclaredPredicate").bases("FlowPredicate").build("value").field("value", def("Expression")); def("CallExpression").field("typeArguments", or(null, def("TypeParameterInstantiation")), defaults["null"]); def("NewExpression").field("typeArguments", or(null, def("TypeParameterInstantiation")), defaults["null"]); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/esprima.js var require_esprima2 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/esprima.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var es7_1 = tslib_1.__importDefault(require_es7()); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); function default_1(fork3) { fork3.use(es7_1.default); var types = fork3.use(types_1.default); var defaults = fork3.use(shared_1.default).defaults; var def = types.Type.def; var or = types.Type.or; def("VariableDeclaration").field("declarations", [or( def("VariableDeclarator"), def("Identifier") // Esprima deviation. )]); def("Property").field("value", or( def("Expression"), def("Pattern") // Esprima deviation. )); def("ArrayPattern").field("elements", [or(def("Pattern"), def("SpreadElement"), null)]); def("ObjectPattern").field("properties", [or( def("Property"), def("PropertyPattern"), def("SpreadPropertyPattern"), def("SpreadProperty") // Used by Esprima. )]); def("ExportSpecifier").bases("ModuleSpecifier").build("id", "name"); def("ExportBatchSpecifier").bases("Specifier").build(); def("ExportDeclaration").bases("Declaration").build("default", "declaration", "specifiers", "source").field("default", Boolean).field("declaration", or( def("Declaration"), def("Expression"), // Implies default. null )).field("specifiers", [or(def("ExportSpecifier"), def("ExportBatchSpecifier"))], defaults.emptyArray).field("source", or(def("Literal"), null), defaults["null"]); def("Block").bases("Comment").build( "value", /*optional:*/ "leading", "trailing" ); def("Line").bases("Comment").build( "value", /*optional:*/ "leading", "trailing" ); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/babel-core.js var require_babel_core = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/babel-core.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); var es7_1 = tslib_1.__importDefault(require_es7()); function default_1(fork3) { fork3.use(es7_1.default); var types = fork3.use(types_1.default); var defaults = fork3.use(shared_1.default).defaults; var def = types.Type.def; var or = types.Type.or; def("Noop").bases("Statement").build(); def("DoExpression").bases("Expression").build("body").field("body", [def("Statement")]); def("Super").bases("Expression").build(); def("BindExpression").bases("Expression").build("object", "callee").field("object", or(def("Expression"), null)).field("callee", def("Expression")); def("Decorator").bases("Node").build("expression").field("expression", def("Expression")); def("Property").field("decorators", or([def("Decorator")], null), defaults["null"]); def("MethodDefinition").field("decorators", or([def("Decorator")], null), defaults["null"]); def("MetaProperty").bases("Expression").build("meta", "property").field("meta", def("Identifier")).field("property", def("Identifier")); def("ParenthesizedExpression").bases("Expression").build("expression").field("expression", def("Expression")); def("ImportSpecifier").bases("ModuleSpecifier").build("imported", "local").field("imported", def("Identifier")); def("ImportDefaultSpecifier").bases("ModuleSpecifier").build("local"); def("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("local"); def("ExportDefaultDeclaration").bases("Declaration").build("declaration").field("declaration", or(def("Declaration"), def("Expression"))); def("ExportNamedDeclaration").bases("Declaration").build("declaration", "specifiers", "source").field("declaration", or(def("Declaration"), null)).field("specifiers", [def("ExportSpecifier")], defaults.emptyArray).field("source", or(def("Literal"), null), defaults["null"]); def("ExportSpecifier").bases("ModuleSpecifier").build("local", "exported").field("exported", def("Identifier")); def("ExportNamespaceSpecifier").bases("Specifier").build("exported").field("exported", def("Identifier")); def("ExportDefaultSpecifier").bases("Specifier").build("exported").field("exported", def("Identifier")); def("ExportAllDeclaration").bases("Declaration").build("exported", "source").field("exported", or(def("Identifier"), null)).field("source", def("Literal")); def("CommentBlock").bases("Comment").build( "value", /*optional:*/ "leading", "trailing" ); def("CommentLine").bases("Comment").build( "value", /*optional:*/ "leading", "trailing" ); def("Directive").bases("Node").build("value").field("value", def("DirectiveLiteral")); def("DirectiveLiteral").bases("Node", "Expression").build("value").field("value", String, defaults["use strict"]); def("InterpreterDirective").bases("Node").build("value").field("value", String); def("BlockStatement").bases("Statement").build("body").field("body", [def("Statement")]).field("directives", [def("Directive")], defaults.emptyArray); def("Program").bases("Node").build("body").field("body", [def("Statement")]).field("directives", [def("Directive")], defaults.emptyArray).field("interpreter", or(def("InterpreterDirective"), null), defaults["null"]); def("StringLiteral").bases("Literal").build("value").field("value", String); def("NumericLiteral").bases("Literal").build("value").field("value", Number).field("raw", or(String, null), defaults["null"]).field("extra", { rawValue: Number, raw: String }, function getDefault() { return { rawValue: this.value, raw: this.value + "" }; }); def("BigIntLiteral").bases("Literal").build("value").field("value", or(String, Number)).field("extra", { rawValue: String, raw: String }, function getDefault() { return { rawValue: String(this.value), raw: this.value + "n" }; }); def("NullLiteral").bases("Literal").build().field("value", null, defaults["null"]); def("BooleanLiteral").bases("Literal").build("value").field("value", Boolean); def("RegExpLiteral").bases("Literal").build("pattern", "flags").field("pattern", String).field("flags", String).field("value", RegExp, function() { return new RegExp(this.pattern, this.flags); }); var ObjectExpressionProperty = or(def("Property"), def("ObjectMethod"), def("ObjectProperty"), def("SpreadProperty"), def("SpreadElement")); def("ObjectExpression").bases("Expression").build("properties").field("properties", [ObjectExpressionProperty]); def("ObjectMethod").bases("Node", "Function").build("kind", "key", "params", "body", "computed").field("kind", or("method", "get", "set")).field("key", or(def("Literal"), def("Identifier"), def("Expression"))).field("params", [def("Pattern")]).field("body", def("BlockStatement")).field("computed", Boolean, defaults["false"]).field("generator", Boolean, defaults["false"]).field("async", Boolean, defaults["false"]).field( "accessibility", // TypeScript or(def("Literal"), null), defaults["null"] ).field("decorators", or([def("Decorator")], null), defaults["null"]); def("ObjectProperty").bases("Node").build("key", "value").field("key", or(def("Literal"), def("Identifier"), def("Expression"))).field("value", or(def("Expression"), def("Pattern"))).field( "accessibility", // TypeScript or(def("Literal"), null), defaults["null"] ).field("computed", Boolean, defaults["false"]); var ClassBodyElement = or(def("MethodDefinition"), def("VariableDeclarator"), def("ClassPropertyDefinition"), def("ClassProperty"), def("ClassPrivateProperty"), def("ClassMethod"), def("ClassPrivateMethod")); def("ClassBody").bases("Declaration").build("body").field("body", [ClassBodyElement]); def("ClassMethod").bases("Declaration", "Function").build("kind", "key", "params", "body", "computed", "static").field("key", or(def("Literal"), def("Identifier"), def("Expression"))); def("ClassPrivateMethod").bases("Declaration", "Function").build("key", "params", "body", "kind", "computed", "static").field("key", def("PrivateName")); [ "ClassMethod", "ClassPrivateMethod" ].forEach(function(typeName) { def(typeName).field("kind", or("get", "set", "method", "constructor"), function() { return "method"; }).field("body", def("BlockStatement")).field("computed", Boolean, defaults["false"]).field("static", or(Boolean, null), defaults["null"]).field("abstract", or(Boolean, null), defaults["null"]).field("access", or("public", "private", "protected", null), defaults["null"]).field("accessibility", or("public", "private", "protected", null), defaults["null"]).field("decorators", or([def("Decorator")], null), defaults["null"]).field("optional", or(Boolean, null), defaults["null"]); }); def("ClassPrivateProperty").bases("ClassProperty").build("key", "value").field("key", def("PrivateName")).field("value", or(def("Expression"), null), defaults["null"]); def("PrivateName").bases("Expression", "Pattern").build("id").field("id", def("Identifier")); var ObjectPatternProperty = or( def("Property"), def("PropertyPattern"), def("SpreadPropertyPattern"), def("SpreadProperty"), // Used by Esprima def("ObjectProperty"), // Babel 6 def("RestProperty") // Babel 6 ); def("ObjectPattern").bases("Pattern").build("properties").field("properties", [ObjectPatternProperty]).field("decorators", or([def("Decorator")], null), defaults["null"]); def("SpreadProperty").bases("Node").build("argument").field("argument", def("Expression")); def("RestProperty").bases("Node").build("argument").field("argument", def("Expression")); def("ForAwaitStatement").bases("Statement").build("left", "right", "body").field("left", or(def("VariableDeclaration"), def("Expression"))).field("right", def("Expression")).field("body", def("Statement")); def("Import").bases("Expression").build(); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/babel.js var require_babel = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/babel.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var babel_core_1 = tslib_1.__importDefault(require_babel_core()); var flow_1 = tslib_1.__importDefault(require_flow()); function default_1(fork3) { fork3.use(babel_core_1.default); fork3.use(flow_1.default); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/typescript.js var require_typescript = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/typescript.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var babel_core_1 = tslib_1.__importDefault(require_babel_core()); var type_annotations_1 = tslib_1.__importDefault(require_type_annotations()); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); function default_1(fork3) { fork3.use(babel_core_1.default); fork3.use(type_annotations_1.default); var types = fork3.use(types_1.default); var n = types.namedTypes; var def = types.Type.def; var or = types.Type.or; var defaults = fork3.use(shared_1.default).defaults; var StringLiteral = types.Type.from(function(value, deep) { if (n.StringLiteral && n.StringLiteral.check(value, deep)) { return true; } if (n.Literal && n.Literal.check(value, deep) && typeof value.value === "string") { return true; } return false; }, "StringLiteral"); def("TSType").bases("Node"); var TSEntityName = or(def("Identifier"), def("TSQualifiedName")); def("TSTypeReference").bases("TSType", "TSHasOptionalTypeParameterInstantiation").build("typeName", "typeParameters").field("typeName", TSEntityName); def("TSHasOptionalTypeParameterInstantiation").field("typeParameters", or(def("TSTypeParameterInstantiation"), null), defaults["null"]); def("TSHasOptionalTypeParameters").field("typeParameters", or(def("TSTypeParameterDeclaration"), null, void 0), defaults["null"]); def("TSHasOptionalTypeAnnotation").field("typeAnnotation", or(def("TSTypeAnnotation"), null), defaults["null"]); def("TSQualifiedName").bases("Node").build("left", "right").field("left", TSEntityName).field("right", TSEntityName); def("TSAsExpression").bases("Expression", "Pattern").build("expression", "typeAnnotation").field("expression", def("Expression")).field("typeAnnotation", def("TSType")).field("extra", or({ parenthesized: Boolean }, null), defaults["null"]); def("TSNonNullExpression").bases("Expression", "Pattern").build("expression").field("expression", def("Expression")); [ "TSAnyKeyword", "TSBigIntKeyword", "TSBooleanKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword", "TSThisType" ].forEach(function(keywordType) { def(keywordType).bases("TSType").build(); }); def("TSArrayType").bases("TSType").build("elementType").field("elementType", def("TSType")); def("TSLiteralType").bases("TSType").build("literal").field("literal", or(def("NumericLiteral"), def("StringLiteral"), def("BooleanLiteral"), def("TemplateLiteral"), def("UnaryExpression"))); [ "TSUnionType", "TSIntersectionType" ].forEach(function(typeName) { def(typeName).bases("TSType").build("types").field("types", [def("TSType")]); }); def("TSConditionalType").bases("TSType").build("checkType", "extendsType", "trueType", "falseType").field("checkType", def("TSType")).field("extendsType", def("TSType")).field("trueType", def("TSType")).field("falseType", def("TSType")); def("TSInferType").bases("TSType").build("typeParameter").field("typeParameter", def("TSTypeParameter")); def("TSParenthesizedType").bases("TSType").build("typeAnnotation").field("typeAnnotation", def("TSType")); var ParametersType = [or(def("Identifier"), def("RestElement"), def("ArrayPattern"), def("ObjectPattern"))]; [ "TSFunctionType", "TSConstructorType" ].forEach(function(typeName) { def(typeName).bases("TSType", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation").build("parameters").field("parameters", ParametersType); }); def("TSDeclareFunction").bases("Declaration", "TSHasOptionalTypeParameters").build("id", "params", "returnType").field("declare", Boolean, defaults["false"]).field("async", Boolean, defaults["false"]).field("generator", Boolean, defaults["false"]).field("id", or(def("Identifier"), null), defaults["null"]).field("params", [def("Pattern")]).field("returnType", or( def("TSTypeAnnotation"), def("Noop"), // Still used? null ), defaults["null"]); def("TSDeclareMethod").bases("Declaration", "TSHasOptionalTypeParameters").build("key", "params", "returnType").field("async", Boolean, defaults["false"]).field("generator", Boolean, defaults["false"]).field("params", [def("Pattern")]).field("abstract", Boolean, defaults["false"]).field("accessibility", or("public", "private", "protected", void 0), defaults["undefined"]).field("static", Boolean, defaults["false"]).field("computed", Boolean, defaults["false"]).field("optional", Boolean, defaults["false"]).field("key", or( def("Identifier"), def("StringLiteral"), def("NumericLiteral"), // Only allowed if .computed is true. def("Expression") )).field("kind", or("get", "set", "method", "constructor"), function getDefault() { return "method"; }).field( "access", // Not "accessibility"? or("public", "private", "protected", void 0), defaults["undefined"] ).field("decorators", or([def("Decorator")], null), defaults["null"]).field("returnType", or( def("TSTypeAnnotation"), def("Noop"), // Still used? null ), defaults["null"]); def("TSMappedType").bases("TSType").build("typeParameter", "typeAnnotation").field("readonly", or(Boolean, "+", "-"), defaults["false"]).field("typeParameter", def("TSTypeParameter")).field("optional", or(Boolean, "+", "-"), defaults["false"]).field("typeAnnotation", or(def("TSType"), null), defaults["null"]); def("TSTupleType").bases("TSType").build("elementTypes").field("elementTypes", [or(def("TSType"), def("TSNamedTupleMember"))]); def("TSNamedTupleMember").bases("TSType").build("label", "elementType", "optional").field("label", def("Identifier")).field("optional", Boolean, defaults["false"]).field("elementType", def("TSType")); def("TSRestType").bases("TSType").build("typeAnnotation").field("typeAnnotation", def("TSType")); def("TSOptionalType").bases("TSType").build("typeAnnotation").field("typeAnnotation", def("TSType")); def("TSIndexedAccessType").bases("TSType").build("objectType", "indexType").field("objectType", def("TSType")).field("indexType", def("TSType")); def("TSTypeOperator").bases("TSType").build("operator").field("operator", String).field("typeAnnotation", def("TSType")); def("TSTypeAnnotation").bases("Node").build("typeAnnotation").field("typeAnnotation", or(def("TSType"), def("TSTypeAnnotation"))); def("TSIndexSignature").bases("Declaration", "TSHasOptionalTypeAnnotation").build("parameters", "typeAnnotation").field("parameters", [def("Identifier")]).field("readonly", Boolean, defaults["false"]); def("TSPropertySignature").bases("Declaration", "TSHasOptionalTypeAnnotation").build("key", "typeAnnotation", "optional").field("key", def("Expression")).field("computed", Boolean, defaults["false"]).field("readonly", Boolean, defaults["false"]).field("optional", Boolean, defaults["false"]).field("initializer", or(def("Expression"), null), defaults["null"]); def("TSMethodSignature").bases("Declaration", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation").build("key", "parameters", "typeAnnotation").field("key", def("Expression")).field("computed", Boolean, defaults["false"]).field("optional", Boolean, defaults["false"]).field("parameters", ParametersType); def("TSTypePredicate").bases("TSTypeAnnotation", "TSType").build("parameterName", "typeAnnotation", "asserts").field("parameterName", or(def("Identifier"), def("TSThisType"))).field("typeAnnotation", or(def("TSTypeAnnotation"), null), defaults["null"]).field("asserts", Boolean, defaults["false"]); [ "TSCallSignatureDeclaration", "TSConstructSignatureDeclaration" ].forEach(function(typeName) { def(typeName).bases("Declaration", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation").build("parameters", "typeAnnotation").field("parameters", ParametersType); }); def("TSEnumMember").bases("Node").build("id", "initializer").field("id", or(def("Identifier"), StringLiteral)).field("initializer", or(def("Expression"), null), defaults["null"]); def("TSTypeQuery").bases("TSType").build("exprName").field("exprName", or(TSEntityName, def("TSImportType"))); var TSTypeMember = or(def("TSCallSignatureDeclaration"), def("TSConstructSignatureDeclaration"), def("TSIndexSignature"), def("TSMethodSignature"), def("TSPropertySignature")); def("TSTypeLiteral").bases("TSType").build("members").field("members", [TSTypeMember]); def("TSTypeParameter").bases("Identifier").build("name", "constraint", "default").field("name", String).field("constraint", or(def("TSType"), void 0), defaults["undefined"]).field("default", or(def("TSType"), void 0), defaults["undefined"]); def("TSTypeAssertion").bases("Expression", "Pattern").build("typeAnnotation", "expression").field("typeAnnotation", def("TSType")).field("expression", def("Expression")).field("extra", or({ parenthesized: Boolean }, null), defaults["null"]); def("TSTypeParameterDeclaration").bases("Declaration").build("params").field("params", [def("TSTypeParameter")]); def("TSTypeParameterInstantiation").bases("Node").build("params").field("params", [def("TSType")]); def("TSEnumDeclaration").bases("Declaration").build("id", "members").field("id", def("Identifier")).field("const", Boolean, defaults["false"]).field("declare", Boolean, defaults["false"]).field("members", [def("TSEnumMember")]).field("initializer", or(def("Expression"), null), defaults["null"]); def("TSTypeAliasDeclaration").bases("Declaration", "TSHasOptionalTypeParameters").build("id", "typeAnnotation").field("id", def("Identifier")).field("declare", Boolean, defaults["false"]).field("typeAnnotation", def("TSType")); def("TSModuleBlock").bases("Node").build("body").field("body", [def("Statement")]); def("TSModuleDeclaration").bases("Declaration").build("id", "body").field("id", or(StringLiteral, TSEntityName)).field("declare", Boolean, defaults["false"]).field("global", Boolean, defaults["false"]).field("body", or(def("TSModuleBlock"), def("TSModuleDeclaration"), null), defaults["null"]); def("TSImportType").bases("TSType", "TSHasOptionalTypeParameterInstantiation").build("argument", "qualifier", "typeParameters").field("argument", StringLiteral).field("qualifier", or(TSEntityName, void 0), defaults["undefined"]); def("TSImportEqualsDeclaration").bases("Declaration").build("id", "moduleReference").field("id", def("Identifier")).field("isExport", Boolean, defaults["false"]).field("moduleReference", or(TSEntityName, def("TSExternalModuleReference"))); def("TSExternalModuleReference").bases("Declaration").build("expression").field("expression", StringLiteral); def("TSExportAssignment").bases("Statement").build("expression").field("expression", def("Expression")); def("TSNamespaceExportDeclaration").bases("Declaration").build("id").field("id", def("Identifier")); def("TSInterfaceBody").bases("Node").build("body").field("body", [TSTypeMember]); def("TSExpressionWithTypeArguments").bases("TSType", "TSHasOptionalTypeParameterInstantiation").build("expression", "typeParameters").field("expression", TSEntityName); def("TSInterfaceDeclaration").bases("Declaration", "TSHasOptionalTypeParameters").build("id", "body").field("id", TSEntityName).field("declare", Boolean, defaults["false"]).field("extends", or([def("TSExpressionWithTypeArguments")], null), defaults["null"]).field("body", def("TSInterfaceBody")); def("TSParameterProperty").bases("Pattern").build("parameter").field("accessibility", or("public", "private", "protected", void 0), defaults["undefined"]).field("readonly", Boolean, defaults["false"]).field("parameter", or(def("Identifier"), def("AssignmentPattern"))); def("ClassProperty").field( "access", // Not "accessibility"? or("public", "private", "protected", void 0), defaults["undefined"] ); def("ClassBody").field("body", [or( def("MethodDefinition"), def("VariableDeclarator"), def("ClassPropertyDefinition"), def("ClassProperty"), def("ClassPrivateProperty"), def("ClassMethod"), def("ClassPrivateMethod"), // Just need to add these types: def("TSDeclareMethod"), TSTypeMember )]); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es-proposals.js var require_es_proposals = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es-proposals.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var types_1 = tslib_1.__importDefault(require_types5()); var shared_1 = tslib_1.__importDefault(require_shared()); var core_1 = tslib_1.__importDefault(require_core3()); function default_1(fork3) { fork3.use(core_1.default); var types = fork3.use(types_1.default); var Type = types.Type; var def = types.Type.def; var or = Type.or; var shared = fork3.use(shared_1.default); var defaults = shared.defaults; def("OptionalMemberExpression").bases("MemberExpression").build("object", "property", "computed", "optional").field("optional", Boolean, defaults["true"]); def("OptionalCallExpression").bases("CallExpression").build("callee", "arguments", "optional").field("optional", Boolean, defaults["true"]); var LogicalOperator = or("||", "&&", "??"); def("LogicalExpression").field("operator", LogicalOperator); } exports2.default = default_1; module2.exports = exports2["default"]; } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/gen/namedTypes.js var require_namedTypes = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/gen/namedTypes.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.namedTypes = void 0; var namedTypes; /* @__PURE__ */ (function(namedTypes2) { })(namedTypes = exports2.namedTypes || (exports2.namedTypes = {})); } }); // ../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/main.js var require_main2 = __commonJS2({ "../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/main.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.visit = exports2.use = exports2.Type = exports2.someField = exports2.PathVisitor = exports2.Path = exports2.NodePath = exports2.namedTypes = exports2.getSupertypeNames = exports2.getFieldValue = exports2.getFieldNames = exports2.getBuilderName = exports2.finalize = exports2.eachField = exports2.defineMethod = exports2.builtInTypes = exports2.builders = exports2.astNodesAreEquivalent = void 0; var tslib_1 = (init_tslib_es6(), __toCommonJS3(tslib_es6_exports)); var fork_1 = tslib_1.__importDefault(require_fork()); var core_1 = tslib_1.__importDefault(require_core3()); var es6_1 = tslib_1.__importDefault(require_es6()); var es7_1 = tslib_1.__importDefault(require_es7()); var es2020_1 = tslib_1.__importDefault(require_es2020()); var jsx_1 = tslib_1.__importDefault(require_jsx()); var flow_1 = tslib_1.__importDefault(require_flow()); var esprima_1 = tslib_1.__importDefault(require_esprima2()); var babel_1 = tslib_1.__importDefault(require_babel()); var typescript_1 = tslib_1.__importDefault(require_typescript()); var es_proposals_1 = tslib_1.__importDefault(require_es_proposals()); var namedTypes_1 = require_namedTypes(); Object.defineProperty(exports2, "namedTypes", { enumerable: true, get: function() { return namedTypes_1.namedTypes; } }); var _a = fork_1.default([ // This core module of AST types captures ES5 as it is parsed today by // git://github.com/ariya/esprima.git#master. core_1.default, // Feel free to add to or remove from this list of extension modules to // configure the precise type hierarchy that you need. es6_1.default, es7_1.default, es2020_1.default, jsx_1.default, flow_1.default, esprima_1.default, babel_1.default, typescript_1.default, es_proposals_1.default ]); var astNodesAreEquivalent = _a.astNodesAreEquivalent; var builders = _a.builders; var builtInTypes = _a.builtInTypes; var defineMethod = _a.defineMethod; var eachField = _a.eachField; var finalize = _a.finalize; var getBuilderName = _a.getBuilderName; var getFieldNames = _a.getFieldNames; var getFieldValue = _a.getFieldValue; var getSupertypeNames = _a.getSupertypeNames; var n = _a.namedTypes; var NodePath = _a.NodePath; var Path = _a.Path; var PathVisitor = _a.PathVisitor; var someField = _a.someField; var Type = _a.Type; var use = _a.use; var visit3 = _a.visit; exports2.astNodesAreEquivalent = astNodesAreEquivalent; exports2.builders = builders; exports2.builtInTypes = builtInTypes; exports2.defineMethod = defineMethod; exports2.eachField = eachField; exports2.finalize = finalize; exports2.getBuilderName = getBuilderName; exports2.getFieldNames = getFieldNames; exports2.getFieldValue = getFieldValue; exports2.getSupertypeNames = getSupertypeNames; exports2.NodePath = NodePath; exports2.Path = Path; exports2.PathVisitor = PathVisitor; exports2.someField = someField; exports2.Type = Type; exports2.use = use; exports2.visit = visit3; Object.assign(namedTypes_1.namedTypes, n); } }); // ../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/degenerator.js var require_degenerator = __commonJS2({ "../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/degenerator.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.degenerator = void 0; var util_1 = __require("util"); var escodegen_1 = require_escodegen(); var esprima_1 = require_esprima(); var ast_types_1 = require_main2(); function degenerator(code2, _names) { if (!Array.isArray(_names)) { throw new TypeError('an array of async function "names" is required'); } const names = _names.slice(0); const ast = (0, esprima_1.parseScript)(code2); let lastNamesLength = 0; do { lastNamesLength = names.length; (0, ast_types_1.visit)(ast, { visitVariableDeclaration(path11) { if (path11.node.declarations) { for (let i = 0; i < path11.node.declarations.length; i++) { const declaration = path11.node.declarations[i]; if (ast_types_1.namedTypes.VariableDeclarator.check(declaration) && ast_types_1.namedTypes.Identifier.check(declaration.init) && ast_types_1.namedTypes.Identifier.check(declaration.id) && checkName(declaration.init.name, names) && !checkName(declaration.id.name, names)) { names.push(declaration.id.name); } } } return false; }, visitAssignmentExpression(path11) { if (ast_types_1.namedTypes.Identifier.check(path11.node.left) && ast_types_1.namedTypes.Identifier.check(path11.node.right) && checkName(path11.node.right.name, names) && !checkName(path11.node.left.name, names)) { names.push(path11.node.left.name); } return false; }, visitFunction(path11) { if (path11.node.id) { let shouldDegenerate = false; (0, ast_types_1.visit)(path11.node, { visitCallExpression(path12) { if (checkNames(path12.node, names)) { shouldDegenerate = true; } return false; } }); if (!shouldDegenerate) { return false; } path11.node.async = true; if (!checkName(path11.node.id.name, names)) { names.push(path11.node.id.name); } } this.traverse(path11); } }); } while (lastNamesLength !== names.length); (0, ast_types_1.visit)(ast, { visitCallExpression(path11) { if (checkNames(path11.node, names)) { const delegate = false; const { name, parent: { node: pNode } } = path11; const expr = ast_types_1.builders.awaitExpression(path11.node, delegate); if (ast_types_1.namedTypes.CallExpression.check(pNode)) { pNode.arguments[name] = expr; } else { pNode[name] = expr; } } this.traverse(path11); } }); return (0, escodegen_1.generate)(ast); } exports2.degenerator = degenerator; function checkNames({ callee }, names) { let name; if (ast_types_1.namedTypes.Identifier.check(callee)) { name = callee.name; } else if (ast_types_1.namedTypes.MemberExpression.check(callee)) { if (ast_types_1.namedTypes.Identifier.check(callee.object) && ast_types_1.namedTypes.Identifier.check(callee.property)) { name = `${callee.object.name}.${callee.property.name}`; } else { return false; } } else if (ast_types_1.namedTypes.FunctionExpression.check(callee)) { if (callee.id) { name = callee.id.name; } else { return false; } } else { throw new Error(`Don't know how to get name for: ${callee.type}`); } return checkName(name, names); } function checkName(name, names) { for (let i = 0; i < names.length; i++) { const n = names[i]; if (util_1.types.isRegExp(n)) { if (n.test(name)) { return true; } } else if (name === n) { return true; } } return false; } } }); // ../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/compile.js var require_compile3 = __commonJS2({ "../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/compile.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.compile = void 0; var util_1 = __require("util"); var degenerator_1 = require_degenerator(); function compile(qjs, code2, returnName, options = {}) { const compiled = (0, degenerator_1.degenerator)(code2, options.names ?? []); const vm = qjs.newContext(); if (options.sandbox) { for (const [name, value] of Object.entries(options.sandbox)) { if (typeof value !== "function") { throw new Error(`Expected a "function" for sandbox property \`${name}\`, but got "${typeof value}"`); } const fnHandle = vm.newFunction(name, (...args2) => { const result = value(...args2.map((arg2) => quickJSHandleToHost(vm, arg2))); vm.runtime.executePendingJobs(); return hostToQuickJSHandle(vm, result); }); fnHandle.consume((handle) => vm.setProp(vm.global, name, handle)); } } const fnResult = vm.evalCode(`${compiled};${returnName}`, options.filename); const fn2 = vm.unwrapResult(fnResult); const t = vm.typeof(fn2); if (t !== "function") { throw new Error(`Expected a "function" named \`${returnName}\` to be defined, but got "${t}"`); } const r = async function(...args2) { let promiseHandle; let resolvedHandle; try { const result = vm.callFunction(fn2, vm.undefined, ...args2.map((arg2) => hostToQuickJSHandle(vm, arg2))); promiseHandle = vm.unwrapResult(result); const resolvedResultP = vm.resolvePromise(promiseHandle); vm.runtime.executePendingJobs(); const resolvedResult = await resolvedResultP; resolvedHandle = vm.unwrapResult(resolvedResult); return quickJSHandleToHost(vm, resolvedHandle); } catch (err) { if (err && typeof err === "object" && "cause" in err && err.cause) { if (typeof err.cause === "object" && "stack" in err.cause && "name" in err.cause && "message" in err.cause && typeof err.cause.stack === "string" && typeof err.cause.name === "string" && typeof err.cause.message === "string") { err.cause.stack = `${err.cause.name}: ${err.cause.message} ${err.cause.stack}`; } throw err.cause; } throw err; } finally { promiseHandle?.dispose(); resolvedHandle?.dispose(); } }; Object.defineProperty(r, "toString", { value: () => compiled, enumerable: false }); return r; } exports2.compile = compile; function quickJSHandleToHost(vm, val) { return vm.dump(val); } function hostToQuickJSHandle(vm, val) { if (typeof val === "undefined") { return vm.undefined; } else if (val === null) { return vm.null; } else if (typeof val === "string") { return vm.newString(val); } else if (typeof val === "number") { return vm.newNumber(val); } else if (typeof val === "bigint") { return vm.newBigInt(val); } else if (typeof val === "boolean") { return val ? vm.true : vm.false; } else if (util_1.types.isPromise(val)) { const promise = vm.newPromise(); promise.settled.then(vm.runtime.executePendingJobs); val.then((r) => { promise.resolve(hostToQuickJSHandle(vm, r)); }, (err) => { promise.reject(hostToQuickJSHandle(vm, err)); }); return promise.handle; } else if (util_1.types.isNativeError(val)) { return vm.newError(val); } throw new Error(`Unsupported value: ${val}`); } } }); // ../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/index.js var require_dist12 = __commonJS2({ "../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/index.js"(exports2) { "use strict"; 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_degenerator(), exports2); __exportStar2(require_compile3(), exports2); } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dateRange.js var require_dateRange = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dateRange.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function dateRange() { return false; } exports2.default = dateRange; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsDomainIs.js var require_dnsDomainIs = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsDomainIs.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function dnsDomainIs(host, domain) { host = String(host); domain = String(domain); return host.substr(domain.length * -1) === domain; } exports2.default = dnsDomainIs; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsDomainLevels.js var require_dnsDomainLevels = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsDomainLevels.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function dnsDomainLevels(host) { const match = String(host).match(/\./g); let levels = 0; if (match) { levels = match.length; } return levels; } exports2.default = dnsDomainLevels; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/util.js var require_util7 = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/util.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.isGMT = exports2.dnsLookup = void 0; var dns_1 = __require("dns"); function dnsLookup(host, opts) { return new Promise((resolve14, reject) => { (0, dns_1.lookup)(host, opts, (err, res) => { if (err) { reject(err); } else { resolve14(res); } }); }); } exports2.dnsLookup = dnsLookup; function isGMT(v) { return v === "GMT"; } exports2.isGMT = isGMT; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsResolve.js var require_dnsResolve = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsResolve.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var util_1 = require_util7(); async function dnsResolve(host) { const family = 4; try { const r = await (0, util_1.dnsLookup)(host, { family }); if (typeof r === "string") { return r; } } catch (err) { } return null; } exports2.default = dnsResolve; } }); // ../../node_modules/.pnpm/netmask@2.0.2/node_modules/netmask/lib/netmask.js var require_netmask = __commonJS2({ "../../node_modules/.pnpm/netmask@2.0.2/node_modules/netmask/lib/netmask.js"(exports2) { (function() { var Netmask, atob2, chr, chr0, chrA, chra, ip2long, long2ip; long2ip = function(long) { var a, b, c, d; a = (long & 255 << 24) >>> 24; b = (long & 255 << 16) >>> 16; c = (long & 255 << 8) >>> 8; d = long & 255; return [a, b, c, d].join("."); }; ip2long = function(ip) { var b, c, i, j, n, ref; b = []; for (i = j = 0; j <= 3; i = ++j) { if (ip.length === 0) { break; } if (i > 0) { if (ip[0] !== ".") { throw new Error("Invalid IP"); } ip = ip.substring(1); } ref = atob2(ip), n = ref[0], c = ref[1]; ip = ip.substring(c); b.push(n); } if (ip.length !== 0) { throw new Error("Invalid IP"); } switch (b.length) { case 1: if (b[0] > 4294967295) { throw new Error("Invalid IP"); } return b[0] >>> 0; case 2: if (b[0] > 255 || b[1] > 16777215) { throw new Error("Invalid IP"); } return (b[0] << 24 | b[1]) >>> 0; case 3: if (b[0] > 255 || b[1] > 255 || b[2] > 65535) { throw new Error("Invalid IP"); } return (b[0] << 24 | b[1] << 16 | b[2]) >>> 0; case 4: if (b[0] > 255 || b[1] > 255 || b[2] > 255 || b[3] > 255) { throw new Error("Invalid IP"); } return (b[0] << 24 | b[1] << 16 | b[2] << 8 | b[3]) >>> 0; default: throw new Error("Invalid IP"); } }; chr = function(b) { return b.charCodeAt(0); }; chr0 = chr("0"); chra = chr("a"); chrA = chr("A"); atob2 = function(s) { var base, dmax, i, n, start; n = 0; base = 10; dmax = "9"; i = 0; if (s.length > 1 && s[i] === "0") { if (s[i + 1] === "x" || s[i + 1] === "X") { i += 2; base = 16; } else if ("0" <= s[i + 1] && s[i + 1] <= "9") { i++; base = 8; dmax = "7"; } } start = i; while (i < s.length) { if ("0" <= s[i] && s[i] <= dmax) { n = n * base + (chr(s[i]) - chr0) >>> 0; } else if (base === 16) { if ("a" <= s[i] && s[i] <= "f") { n = n * base + (10 + chr(s[i]) - chra) >>> 0; } else if ("A" <= s[i] && s[i] <= "F") { n = n * base + (10 + chr(s[i]) - chrA) >>> 0; } else { break; } } else { break; } if (n > 4294967295) { throw new Error("too large"); } i++; } if (i === start) { throw new Error("empty octet"); } return [n, i]; }; Netmask = function() { function Netmask2(net, mask) { var error3, i, j, ref; if (typeof net !== "string") { throw new Error("Missing `net' parameter"); } if (!mask) { ref = net.split("/", 2), net = ref[0], mask = ref[1]; } if (!mask) { mask = 32; } if (typeof mask === "string" && mask.indexOf(".") > -1) { try { this.maskLong = ip2long(mask); } catch (error1) { error3 = error1; throw new Error("Invalid mask: " + mask); } for (i = j = 32; j >= 0; i = --j) { if (this.maskLong === 4294967295 << 32 - i >>> 0) { this.bitmask = i; break; } } } else if (mask || mask === 0) { this.bitmask = parseInt(mask, 10); this.maskLong = 0; if (this.bitmask > 0) { this.maskLong = 4294967295 << 32 - this.bitmask >>> 0; } } else { throw new Error("Invalid mask: empty"); } try { this.netLong = (ip2long(net) & this.maskLong) >>> 0; } catch (error1) { error3 = error1; throw new Error("Invalid net address: " + net); } if (!(this.bitmask <= 32)) { throw new Error("Invalid mask for ip4: " + mask); } this.size = Math.pow(2, 32 - this.bitmask); this.base = long2ip(this.netLong); this.mask = long2ip(this.maskLong); this.hostmask = long2ip(~this.maskLong); this.first = this.bitmask <= 30 ? long2ip(this.netLong + 1) : this.base; this.last = this.bitmask <= 30 ? long2ip(this.netLong + this.size - 2) : long2ip(this.netLong + this.size - 1); this.broadcast = this.bitmask <= 30 ? long2ip(this.netLong + this.size - 1) : void 0; } Netmask2.prototype.contains = function(ip) { if (typeof ip === "string" && (ip.indexOf("/") > 0 || ip.split(".").length !== 4)) { ip = new Netmask2(ip); } if (ip instanceof Netmask2) { return this.contains(ip.base) && this.contains(ip.broadcast || ip.last); } else { return (ip2long(ip) & this.maskLong) >>> 0 === (this.netLong & this.maskLong) >>> 0; } }; Netmask2.prototype.next = function(count) { if (count == null) { count = 1; } return new Netmask2(long2ip(this.netLong + this.size * count), this.mask); }; Netmask2.prototype.forEach = function(fn2) { var index, lastLong, long; long = ip2long(this.first); lastLong = ip2long(this.last); index = 0; while (long <= lastLong) { fn2(long2ip(long), long, index); index++; long++; } }; Netmask2.prototype.toString = function() { return this.base + "/" + this.bitmask; }; return Netmask2; }(); exports2.ip2long = ip2long; exports2.long2ip = long2ip; exports2.Netmask = Netmask; }).call(exports2); } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isInNet.js var require_isInNet = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isInNet.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var netmask_1 = require_netmask(); var util_1 = require_util7(); async function isInNet(host, pattern, mask) { const family = 4; try { const ip = await (0, util_1.dnsLookup)(host, { family }); if (typeof ip === "string") { const netmask = new netmask_1.Netmask(pattern, mask); return netmask.contains(ip); } } catch (err) { } return false; } exports2.default = isInNet; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isPlainHostName.js var require_isPlainHostName = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isPlainHostName.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function isPlainHostName(host) { return !/\./.test(host); } exports2.default = isPlainHostName; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isResolvable.js var require_isResolvable = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isResolvable.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var util_1 = require_util7(); async function isResolvable(host) { const family = 4; try { if (await (0, util_1.dnsLookup)(host, { family })) { return true; } } catch (err) { } return false; } exports2.default = isResolvable; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/localHostOrDomainIs.js var require_localHostOrDomainIs = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/localHostOrDomainIs.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function localHostOrDomainIs(host, hostdom) { const parts = host.split("."); const domparts = hostdom.split("."); let matches = true; for (let i = 0; i < parts.length; i++) { if (parts[i] !== domparts[i]) { matches = false; break; } } return matches; } exports2.default = localHostOrDomainIs; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/ip.js var require_ip = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/ip.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ip = void 0; var os_1 = __importDefault2(__require("os")); exports2.ip = { address() { const interfaces = os_1.default.networkInterfaces(); const family = normalizeFamily(); const all = Object.values(interfaces).map((addrs = []) => { const addresses = addrs.filter((details) => { const detailsFamily = normalizeFamily(details.family); if (detailsFamily !== family || exports2.ip.isLoopback(details.address)) { return false; } return true; }); return addresses.length ? addresses[0].address : void 0; }).filter(Boolean); return !all.length ? exports2.ip.loopback(family) : all[0]; }, isLoopback(addr) { return /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/.test(addr) || /^fe80::1$/.test(addr) || /^::1$/.test(addr) || /^::$/.test(addr); }, loopback(family) { family = normalizeFamily(family); if (family !== "ipv4" && family !== "ipv6") { throw new Error("family must be ipv4 or ipv6"); } return family === "ipv4" ? "127.0.0.1" : "fe80::1"; } }; function normalizeFamily(family) { if (family === 4) { return "ipv4"; } if (family === 6) { return "ipv6"; } return family ? family.toLowerCase() : "ipv4"; } } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/myIpAddress.js var require_myIpAddress = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/myIpAddress.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); var ip_1 = require_ip(); var net_1 = __importDefault2(__require("net")); async function myIpAddress() { return new Promise((resolve14, reject) => { const socket = net_1.default.connect({ host: "8.8.8.8", port: 53 }); const onError = () => { resolve14(ip_1.ip.address()); }; socket.once("error", onError); socket.once("connect", () => { socket.removeListener("error", onError); const addr = socket.address(); socket.destroy(); if (typeof addr === "string") { resolve14(addr); } else if (addr.address) { resolve14(addr.address); } else { reject(new Error("Expected a `string`")); } }); }); } exports2.default = myIpAddress; } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/shExpMatch.js var require_shExpMatch = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/shExpMatch.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function shExpMatch(str, shexp) { const re = toRegExp(shexp); return re.test(str); } exports2.default = shExpMatch; function toRegExp(str) { str = String(str).replace(/\./g, "\\.").replace(/\?/g, ".").replace(/\*/g, ".*"); return new RegExp(`^${str}$`); } } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/timeRange.js var require_timeRange = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/timeRange.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function timeRange() { const args2 = Array.prototype.slice.call(arguments); const lastArg = args2.pop(); const useGMTzone = lastArg === "GMT"; const currentDate = /* @__PURE__ */ new Date(); if (!useGMTzone) { args2.push(lastArg); } let result = false; const noOfArgs = args2.length; const numericArgs = args2.map((n) => parseInt(n, 10)); if (noOfArgs === 1) { result = getCurrentHour(useGMTzone, currentDate) === numericArgs[0]; } else if (noOfArgs === 2) { const currentHour = getCurrentHour(useGMTzone, currentDate); result = numericArgs[0] <= currentHour && currentHour < numericArgs[1]; } else if (noOfArgs === 4) { result = valueInRange(secondsElapsedToday(numericArgs[0], numericArgs[1], 0), secondsElapsedToday(getCurrentHour(useGMTzone, currentDate), getCurrentMinute(useGMTzone, currentDate), 0), secondsElapsedToday(numericArgs[2], numericArgs[3], 59)); } else if (noOfArgs === 6) { result = valueInRange(secondsElapsedToday(numericArgs[0], numericArgs[1], numericArgs[2]), secondsElapsedToday(getCurrentHour(useGMTzone, currentDate), getCurrentMinute(useGMTzone, currentDate), getCurrentSecond(useGMTzone, currentDate)), secondsElapsedToday(numericArgs[3], numericArgs[4], numericArgs[5])); } return result; } exports2.default = timeRange; function secondsElapsedToday(hh, mm, ss) { return hh * 3600 + mm * 60 + ss; } function getCurrentHour(gmt, currentDate) { return gmt ? currentDate.getUTCHours() : currentDate.getHours(); } function getCurrentMinute(gmt, currentDate) { return gmt ? currentDate.getUTCMinutes() : currentDate.getMinutes(); } function getCurrentSecond(gmt, currentDate) { return gmt ? currentDate.getUTCSeconds() : currentDate.getSeconds(); } function valueInRange(start, value, finish) { return start <= value && value <= finish; } } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/weekdayRange.js var require_weekdayRange = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/weekdayRange.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var util_1 = require_util7(); var weekdays = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]; function weekdayRange(wd1, wd2, gmt) { let useGMTzone = false; let wd1Index = -1; let wd2Index = -1; let wd2IsGmt = false; if ((0, util_1.isGMT)(gmt)) { useGMTzone = true; } else if ((0, util_1.isGMT)(wd2)) { useGMTzone = true; wd2IsGmt = true; } wd1Index = weekdays.indexOf(wd1); if (!wd2IsGmt && isWeekday(wd2)) { wd2Index = weekdays.indexOf(wd2); } const todaysDay = getTodaysDay(useGMTzone); let result; if (wd2Index < 0) { result = todaysDay === wd1Index; } else if (wd1Index <= wd2Index) { result = valueInRange(wd1Index, todaysDay, wd2Index); } else { result = valueInRange(wd1Index, todaysDay, 6) || valueInRange(0, todaysDay, wd2Index); } return result; } exports2.default = weekdayRange; function getTodaysDay(gmt) { return gmt ? (/* @__PURE__ */ new Date()).getUTCDay() : (/* @__PURE__ */ new Date()).getDay(); } function valueInRange(start, value, finish) { return start <= value && value <= finish; } function isWeekday(v) { if (!v) return false; return weekdays.includes(v); } } }); // ../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/index.js var require_dist13 = __commonJS2({ "../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/index.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.sandbox = exports2.createPacResolver = void 0; var degenerator_1 = require_dist12(); var dateRange_1 = __importDefault2(require_dateRange()); var dnsDomainIs_1 = __importDefault2(require_dnsDomainIs()); var dnsDomainLevels_1 = __importDefault2(require_dnsDomainLevels()); var dnsResolve_1 = __importDefault2(require_dnsResolve()); var isInNet_1 = __importDefault2(require_isInNet()); var isPlainHostName_1 = __importDefault2(require_isPlainHostName()); var isResolvable_1 = __importDefault2(require_isResolvable()); var localHostOrDomainIs_1 = __importDefault2(require_localHostOrDomainIs()); var myIpAddress_1 = __importDefault2(require_myIpAddress()); var shExpMatch_1 = __importDefault2(require_shExpMatch()); var timeRange_1 = __importDefault2(require_timeRange()); var weekdayRange_1 = __importDefault2(require_weekdayRange()); function createPacResolver(qjs, _str, _opts = {}) { const str = Buffer.isBuffer(_str) ? _str.toString("utf8") : _str; const context = { ...exports2.sandbox, ..._opts.sandbox }; const names = Object.keys(context).filter((k) => isAsyncFunction(context[k])); const opts = { filename: "proxy.pac", names, ..._opts, sandbox: context }; const resolver = (0, degenerator_1.compile)(qjs, str, "FindProxyForURL", opts); function FindProxyForURL(url3, _host) { const urlObj = typeof url3 === "string" ? new URL(url3) : url3; const host = _host || urlObj.hostname; if (!host) { throw new TypeError("Could not determine `host`"); } return resolver(urlObj.href, host); } Object.defineProperty(FindProxyForURL, "toString", { value: () => resolver.toString(), enumerable: false }); return FindProxyForURL; } exports2.createPacResolver = createPacResolver; exports2.sandbox = Object.freeze({ alert: (message2 = "") => console.log("%s", message2), dateRange: dateRange_1.default, dnsDomainIs: dnsDomainIs_1.default, dnsDomainLevels: dnsDomainLevels_1.default, dnsResolve: dnsResolve_1.default, isInNet: isInNet_1.default, isPlainHostName: isPlainHostName_1.default, isResolvable: isResolvable_1.default, localHostOrDomainIs: localHostOrDomainIs_1.default, myIpAddress: myIpAddress_1.default, shExpMatch: shExpMatch_1.default, timeRange: timeRange_1.default, weekdayRange: weekdayRange_1.default }); function isAsyncFunction(v) { if (typeof v !== "function") return false; if (v.constructor.name === "AsyncFunction") return true; if (String(v).indexOf("__awaiter(") !== -1) return true; return Boolean(v.async); } } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/esmHelpers.js var require_esmHelpers = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/esmHelpers.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.unwrapJavascript = exports2.unwrapTypescript = void 0; function fakeUnwrapDefault(mod) { return mod.default; } function actualUnwrapDefault(mod) { const maybeUnwrap = mod.default; return maybeUnwrap ?? mod; } exports2.unwrapTypescript = actualUnwrapDefault; exports2.unwrapJavascript = fakeUnwrapDefault; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js var require_debug3 = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.debugLog = exports2.QTS_DEBUG = void 0; exports2.QTS_DEBUG = Boolean(typeof process === "object" && process.env.QTS_DEBUG); exports2.debugLog = exports2.QTS_DEBUG ? console.log.bind(console) : () => { }; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/errors.js var require_errors3 = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/errors.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSMemoryLeakDetected = exports2.QuickJSAsyncifySuspended = exports2.QuickJSAsyncifyError = exports2.QuickJSNotImplemented = exports2.QuickJSUseAfterFree = exports2.QuickJSWrongOwner = exports2.QuickJSUnwrapError = void 0; var QuickJSUnwrapError = class extends Error { constructor(cause, context) { super(String(cause)); this.cause = cause; this.context = context; this.name = "QuickJSUnwrapError"; } }; exports2.QuickJSUnwrapError = QuickJSUnwrapError; var QuickJSWrongOwner = class extends Error { constructor() { super(...arguments); this.name = "QuickJSWrongOwner"; } }; exports2.QuickJSWrongOwner = QuickJSWrongOwner; var QuickJSUseAfterFree = class extends Error { constructor() { super(...arguments); this.name = "QuickJSUseAfterFree"; } }; exports2.QuickJSUseAfterFree = QuickJSUseAfterFree; var QuickJSNotImplemented = class extends Error { constructor() { super(...arguments); this.name = "QuickJSNotImplemented"; } }; exports2.QuickJSNotImplemented = QuickJSNotImplemented; var QuickJSAsyncifyError = class extends Error { constructor() { super(...arguments); this.name = "QuickJSAsyncifyError"; } }; exports2.QuickJSAsyncifyError = QuickJSAsyncifyError; var QuickJSAsyncifySuspended = class extends Error { constructor() { super(...arguments); this.name = "QuickJSAsyncifySuspended"; } }; exports2.QuickJSAsyncifySuspended = QuickJSAsyncifySuspended; var QuickJSMemoryLeakDetected = class extends Error { constructor() { super(...arguments); this.name = "QuickJSMemoryLeakDetected"; } }; exports2.QuickJSMemoryLeakDetected = QuickJSMemoryLeakDetected; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js var require_asyncify_helpers = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.awaitEachYieldedPromise = exports2.maybeAsync = exports2.maybeAsyncFn = void 0; function* awaitYield(value) { return yield value; } function awaitYieldOf(generator) { return awaitYield(awaitEachYieldedPromise(generator)); } var AwaitYield = awaitYield; AwaitYield.of = awaitYieldOf; function maybeAsyncFn(that, fn2) { return (...args2) => { const generator = fn2.call(that, AwaitYield, ...args2); return awaitEachYieldedPromise(generator); }; } exports2.maybeAsyncFn = maybeAsyncFn; function maybeAsync(that, startGenerator) { const generator = startGenerator.call(that, AwaitYield); return awaitEachYieldedPromise(generator); } exports2.maybeAsync = maybeAsync; function awaitEachYieldedPromise(gen) { function handleNextStep(step) { if (step.done) { return step.value; } if (step.value instanceof Promise) { return step.value.then((value) => handleNextStep(gen.next(value)), (error3) => handleNextStep(gen.throw(error3))); } return handleNextStep(gen.next(step.value)); } return handleNextStep(gen.next()); } exports2.awaitEachYieldedPromise = awaitEachYieldedPromise; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.js var require_lifetime = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Scope = exports2.WeakLifetime = exports2.StaticLifetime = exports2.Lifetime = void 0; var asyncify_helpers_1 = require_asyncify_helpers(); var debug_1 = require_debug3(); var errors_1 = require_errors3(); var Lifetime = class _Lifetime { /** * When the Lifetime is disposed, it will call `disposer(_value)`. Use the * disposer function to implement whatever cleanup needs to happen at the end * of `value`'s lifetime. * * `_owner` is not used or controlled by the lifetime. It's just metadata for * the creator. */ constructor(_value, copier, disposer, _owner) { this._value = _value; this.copier = copier; this.disposer = disposer; this._owner = _owner; this._alive = true; this._constructorStack = debug_1.QTS_DEBUG ? new Error("Lifetime constructed").stack : void 0; } get alive() { return this._alive; } /** * The value this Lifetime protects. You must never retain the value - it * may become invalid, leading to memory errors. * * @throws If the lifetime has been [[dispose]]d already. */ get value() { this.assertAlive(); return this._value; } get owner() { return this._owner; } get dupable() { return !!this.copier; } /** * Create a new handle pointing to the same [[value]]. */ dup() { this.assertAlive(); if (!this.copier) { throw new Error("Non-dupable lifetime"); } return new _Lifetime(this.copier(this._value), this.copier, this.disposer, this._owner); } consume(map) { this.assertAlive(); const result = map(this); this.dispose(); return result; } /** * Dispose of [[value]] and perform cleanup. */ dispose() { this.assertAlive(); if (this.disposer) { this.disposer(this._value); } this._alive = false; } assertAlive() { if (!this.alive) { if (this._constructorStack) { throw new errors_1.QuickJSUseAfterFree(`Lifetime not alive ${this._constructorStack} Lifetime used`); } throw new errors_1.QuickJSUseAfterFree("Lifetime not alive"); } } }; exports2.Lifetime = Lifetime; var StaticLifetime = class extends Lifetime { constructor(value, owner) { super(value, void 0, void 0, owner); } // Static lifetime doesn't need a copier to be copiable get dupable() { return true; } // Copy returns the same instance. dup() { return this; } // Dispose does nothing. dispose() { } }; exports2.StaticLifetime = StaticLifetime; var WeakLifetime = class extends Lifetime { constructor(value, copier, disposer, owner) { super(value, copier, disposer, owner); } dispose() { this._alive = false; } }; exports2.WeakLifetime = WeakLifetime; function scopeFinally(scope, blockError) { let disposeError; try { scope.dispose(); } catch (error3) { disposeError = error3; } if (blockError && disposeError) { Object.assign(blockError, { message: `${blockError.message} Then, failed to dispose scope: ${disposeError.message}`, disposeError }); throw blockError; } if (blockError || disposeError) { throw blockError || disposeError; } } var Scope = class _Scope { constructor() { this._disposables = new Lifetime(/* @__PURE__ */ new Set()); } /** * Run `block` with a new Scope instance that will be disposed after the block returns. * Inside `block`, call `scope.manage` on each lifetime you create to have the lifetime * automatically disposed after the block returns. * * @warning Do not use with async functions. Instead, use [[withScopeAsync]]. */ static withScope(block) { const scope = new _Scope(); let blockError; try { return block(scope); } catch (error3) { blockError = error3; throw error3; } finally { scopeFinally(scope, blockError); } } static withScopeMaybeAsync(_this, block) { return (0, asyncify_helpers_1.maybeAsync)(void 0, function* (awaited) { const scope = new _Scope(); let blockError; try { return yield* awaited.of(block.call(_this, awaited, scope)); } catch (error3) { blockError = error3; throw error3; } finally { scopeFinally(scope, blockError); } }); } /** * Run `block` with a new Scope instance that will be disposed after the * block's returned promise settles. Inside `block`, call `scope.manage` on each * lifetime you create to have the lifetime automatically disposed after the * block returns. */ static async withScopeAsync(block) { const scope = new _Scope(); let blockError; try { return await block(scope); } catch (error3) { blockError = error3; throw error3; } finally { scopeFinally(scope, blockError); } } /** * Track `lifetime` so that it is disposed when this scope is disposed. */ manage(lifetime) { this._disposables.value.add(lifetime); return lifetime; } get alive() { return this._disposables.alive; } dispose() { const lifetimes = Array.from(this._disposables.value.values()).reverse(); for (const lifetime of lifetimes) { if (lifetime.alive) { lifetime.dispose(); } } this._disposables.dispose(); } }; exports2.Scope = Scope; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js var require_deferred_promise = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSDeferredPromise = void 0; var QuickJSDeferredPromise = class { /** * Use [[QuickJSContext.newPromise]] to create a new promise instead of calling * this constructor directly. * @unstable */ constructor(args2) { this.resolve = (value) => { if (!this.resolveHandle.alive) { return; } this.context.unwrapResult(this.context.callFunction(this.resolveHandle, this.context.undefined, value || this.context.undefined)).dispose(); this.disposeResolvers(); this.onSettled(); }; this.reject = (value) => { if (!this.rejectHandle.alive) { return; } this.context.unwrapResult(this.context.callFunction(this.rejectHandle, this.context.undefined, value || this.context.undefined)).dispose(); this.disposeResolvers(); this.onSettled(); }; this.dispose = () => { if (this.handle.alive) { this.handle.dispose(); } this.disposeResolvers(); }; this.context = args2.context; this.owner = args2.context.runtime; this.handle = args2.promiseHandle; this.settled = new Promise((resolve14) => { this.onSettled = resolve14; }); this.resolveHandle = args2.resolveHandle; this.rejectHandle = args2.rejectHandle; } get alive() { return this.handle.alive || this.resolveHandle.alive || this.rejectHandle.alive; } disposeResolvers() { if (this.resolveHandle.alive) { this.resolveHandle.dispose(); } if (this.rejectHandle.alive) { this.rejectHandle.dispose(); } } }; exports2.QuickJSDeferredPromise = QuickJSDeferredPromise; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/memory.js var require_memory = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/memory.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ModuleMemory = void 0; var lifetime_1 = require_lifetime(); var ModuleMemory = class { constructor(module3) { this.module = module3; } toPointerArray(handleArray) { const typedArray = new Int32Array(handleArray.map((handle) => handle.value)); const numBytes = typedArray.length * typedArray.BYTES_PER_ELEMENT; const ptr = this.module._malloc(numBytes); var heapBytes = new Uint8Array(this.module.HEAPU8.buffer, ptr, numBytes); heapBytes.set(new Uint8Array(typedArray.buffer)); return new lifetime_1.Lifetime(ptr, void 0, (ptr2) => this.module._free(ptr2)); } newMutablePointerArray(length) { const zeros = new Int32Array(new Array(length).fill(0)); const numBytes = zeros.length * zeros.BYTES_PER_ELEMENT; const ptr = this.module._malloc(numBytes); const typedArray = new Int32Array(this.module.HEAPU8.buffer, ptr, length); typedArray.set(zeros); return new lifetime_1.Lifetime({ typedArray, ptr }, void 0, (value) => this.module._free(value.ptr)); } newHeapCharPointer(string) { const numBytes = this.module.lengthBytesUTF8(string) + 1; const ptr = this.module._malloc(numBytes); this.module.stringToUTF8(string, ptr, numBytes); return new lifetime_1.Lifetime(ptr, void 0, (value) => this.module._free(value)); } consumeHeapCharPointer(ptr) { const str = this.module.UTF8ToString(ptr); this.module._free(ptr); return str; } }; exports2.ModuleMemory = ModuleMemory; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.js var require_types_ffi = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.EvalFlags = exports2.assertSync = void 0; function assertSync(fn2) { return function mustBeSync(...args2) { const result = fn2(...args2); if (result && typeof result === "object" && result instanceof Promise) { throw new Error("Function unexpectedly returned a Promise"); } return result; }; } exports2.assertSync = assertSync; exports2.EvalFlags = { /** global code (default) */ JS_EVAL_TYPE_GLOBAL: 0 << 0, /** module code */ JS_EVAL_TYPE_MODULE: 1 << 0, /** direct call (internal use) */ JS_EVAL_TYPE_DIRECT: 2 << 0, /** indirect call (internal use) */ JS_EVAL_TYPE_INDIRECT: 3 << 0, JS_EVAL_TYPE_MASK: 3 << 0, /** force 'strict' mode */ JS_EVAL_FLAG_STRICT: 1 << 3, /** force 'strip' mode */ JS_EVAL_FLAG_STRIP: 1 << 4, /** * compile but do not run. The result is an object with a * JS_TAG_FUNCTION_BYTECODE or JS_TAG_MODULE tag. It can be executed * with JS_EvalFunction(). */ JS_EVAL_FLAG_COMPILE_ONLY: 1 << 5, /** don't include the stack frames before this eval in the Error() backtraces */ JS_EVAL_FLAG_BACKTRACE_BARRIER: 1 << 6 }; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types.js var require_types6 = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.concat = exports2.evalOptionsToFlags = exports2.DefaultIntrinsics = void 0; var types_ffi_1 = require_types_ffi(); var UnstableSymbol = Symbol("Unstable"); exports2.DefaultIntrinsics = Symbol("DefaultIntrinsics"); function evalOptionsToFlags(evalOptions) { if (typeof evalOptions === "number") { return evalOptions; } if (evalOptions === void 0) { return 0; } const { type, strict, strip, compileOnly, backtraceBarrier } = evalOptions; let flags = 0; if (type === "global") flags |= types_ffi_1.EvalFlags.JS_EVAL_TYPE_GLOBAL; if (type === "module") flags |= types_ffi_1.EvalFlags.JS_EVAL_TYPE_MODULE; if (strict) flags |= types_ffi_1.EvalFlags.JS_EVAL_FLAG_STRICT; if (strip) flags |= types_ffi_1.EvalFlags.JS_EVAL_FLAG_STRIP; if (compileOnly) flags |= types_ffi_1.EvalFlags.JS_EVAL_FLAG_COMPILE_ONLY; if (backtraceBarrier) flags |= types_ffi_1.EvalFlags.JS_EVAL_FLAG_BACKTRACE_BARRIER; return flags; } exports2.evalOptionsToFlags = evalOptionsToFlags; function concat(...values) { let result = []; for (const value of values) { if (value !== void 0) { result = result.concat(value); } } return result; } exports2.concat = concat; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context.js var require_context2 = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSContext = void 0; var debug_1 = require_debug3(); var deferred_promise_1 = require_deferred_promise(); var errors_1 = require_errors3(); var lifetime_1 = require_lifetime(); var memory_1 = require_memory(); var types_1 = require_types6(); var ContextMemory = class extends memory_1.ModuleMemory { /** @private */ constructor(args2) { super(args2.module); this.scope = new lifetime_1.Scope(); this.copyJSValue = (ptr) => { return this.ffi.QTS_DupValuePointer(this.ctx.value, ptr); }; this.freeJSValue = (ptr) => { this.ffi.QTS_FreeValuePointer(this.ctx.value, ptr); }; args2.ownedLifetimes?.forEach((lifetime) => this.scope.manage(lifetime)); this.owner = args2.owner; this.module = args2.module; this.ffi = args2.ffi; this.rt = args2.rt; this.ctx = this.scope.manage(args2.ctx); } get alive() { return this.scope.alive; } dispose() { return this.scope.dispose(); } /** * Track `lifetime` so that it is disposed when this scope is disposed. */ manage(lifetime) { return this.scope.manage(lifetime); } consumeJSCharPointer(ptr) { const str = this.module.UTF8ToString(ptr); this.ffi.QTS_FreeCString(this.ctx.value, ptr); return str; } heapValueHandle(ptr) { return new lifetime_1.Lifetime(ptr, this.copyJSValue, this.freeJSValue, this.owner); } }; var QuickJSContext = class { /** * Use {@link QuickJS.createVm} to create a QuickJSContext instance. */ constructor(args2) { this._undefined = void 0; this._null = void 0; this._false = void 0; this._true = void 0; this._global = void 0; this._BigInt = void 0; this.fnNextId = -32768; this.fnMaps = /* @__PURE__ */ new Map(); this.cToHostCallbacks = { callFunction: (ctx, this_ptr, argc, argv, fn_id) => { if (ctx !== this.ctx.value) { throw new Error("QuickJSContext instance received C -> JS call with mismatched ctx"); } const fn2 = this.getFunction(fn_id); if (!fn2) { throw new Error(`QuickJSContext had no callback with id ${fn_id}`); } return lifetime_1.Scope.withScopeMaybeAsync(this, function* (awaited, scope) { const thisHandle = scope.manage(new lifetime_1.WeakLifetime(this_ptr, this.memory.copyJSValue, this.memory.freeJSValue, this.runtime)); const argHandles = new Array(argc); for (let i = 0; i < argc; i++) { const ptr = this.ffi.QTS_ArgvGetJSValueConstPointer(argv, i); argHandles[i] = scope.manage(new lifetime_1.WeakLifetime(ptr, this.memory.copyJSValue, this.memory.freeJSValue, this.runtime)); } try { const result = yield* awaited(fn2.apply(thisHandle, argHandles)); if (result) { if ("error" in result && result.error) { (0, debug_1.debugLog)("throw error", result.error); throw result.error; } const handle = scope.manage(result instanceof lifetime_1.Lifetime ? result : result.value); return this.ffi.QTS_DupValuePointer(this.ctx.value, handle.value); } return 0; } catch (error3) { return this.errorToHandle(error3).consume((errorHandle) => this.ffi.QTS_Throw(this.ctx.value, errorHandle.value)); } }); } }; this.runtime = args2.runtime; this.module = args2.module; this.ffi = args2.ffi; this.rt = args2.rt; this.ctx = args2.ctx; this.memory = new ContextMemory({ ...args2, owner: this.runtime }); args2.callbacks.setContextCallbacks(this.ctx.value, this.cToHostCallbacks); this.dump = this.dump.bind(this); this.getString = this.getString.bind(this); this.getNumber = this.getNumber.bind(this); this.resolvePromise = this.resolvePromise.bind(this); } // @implement Disposable ---------------------------------------------------- get alive() { return this.memory.alive; } /** * Dispose of this VM's underlying resources. * * @throws Calling this method without disposing of all created handles * will result in an error. */ dispose() { this.memory.dispose(); } // Globals ------------------------------------------------------------------ /** * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined). */ get undefined() { if (this._undefined) { return this._undefined; } const ptr = this.ffi.QTS_GetUndefined(); return this._undefined = new lifetime_1.StaticLifetime(ptr); } /** * [`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null). */ get null() { if (this._null) { return this._null; } const ptr = this.ffi.QTS_GetNull(); return this._null = new lifetime_1.StaticLifetime(ptr); } /** * [`true`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/true). */ get true() { if (this._true) { return this._true; } const ptr = this.ffi.QTS_GetTrue(); return this._true = new lifetime_1.StaticLifetime(ptr); } /** * [`false`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/false). */ get false() { if (this._false) { return this._false; } const ptr = this.ffi.QTS_GetFalse(); return this._false = new lifetime_1.StaticLifetime(ptr); } /** * [`global`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects). * A handle to the global object inside the interpreter. * You can set properties to create global variables. */ get global() { if (this._global) { return this._global; } const ptr = this.ffi.QTS_GetGlobalObject(this.ctx.value); this.memory.manage(this.memory.heapValueHandle(ptr)); this._global = new lifetime_1.StaticLifetime(ptr, this.runtime); return this._global; } // New values --------------------------------------------------------------- /** * Converts a Javascript number into a QuickJS value. */ newNumber(num) { return this.memory.heapValueHandle(this.ffi.QTS_NewFloat64(this.ctx.value, num)); } /** * Create a QuickJS [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) value. */ newString(str) { const ptr = this.memory.newHeapCharPointer(str).consume((charHandle) => this.ffi.QTS_NewString(this.ctx.value, charHandle.value)); return this.memory.heapValueHandle(ptr); } /** * Create a QuickJS [symbol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) value. * No two symbols created with this function will be the same value. */ newUniqueSymbol(description) { const key = (typeof description === "symbol" ? description.description : description) ?? ""; const ptr = this.memory.newHeapCharPointer(key).consume((charHandle) => this.ffi.QTS_NewSymbol(this.ctx.value, charHandle.value, 0)); return this.memory.heapValueHandle(ptr); } /** * Get a symbol from the [global registry](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#shared_symbols_in_the_global_symbol_registry) for the given key. * All symbols created with the same key will be the same value. */ newSymbolFor(key) { const description = (typeof key === "symbol" ? key.description : key) ?? ""; const ptr = this.memory.newHeapCharPointer(description).consume((charHandle) => this.ffi.QTS_NewSymbol(this.ctx.value, charHandle.value, 1)); return this.memory.heapValueHandle(ptr); } /** * Create a QuickJS [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) value. */ newBigInt(num) { if (!this._BigInt) { const bigIntHandle2 = this.getProp(this.global, "BigInt"); this.memory.manage(bigIntHandle2); this._BigInt = new lifetime_1.StaticLifetime(bigIntHandle2.value, this.runtime); } const bigIntHandle = this._BigInt; const asString = String(num); return this.newString(asString).consume((handle) => this.unwrapResult(this.callFunction(bigIntHandle, this.undefined, handle))); } /** * `{}`. * Create a new QuickJS [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer). * * @param prototype - Like [`Object.create`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create). */ newObject(prototype) { if (prototype) { this.runtime.assertOwned(prototype); } const ptr = prototype ? this.ffi.QTS_NewObjectProto(this.ctx.value, prototype.value) : this.ffi.QTS_NewObject(this.ctx.value); return this.memory.heapValueHandle(ptr); } /** * `[]`. * Create a new QuickJS [array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array). */ newArray() { const ptr = this.ffi.QTS_NewArray(this.ctx.value); return this.memory.heapValueHandle(ptr); } newPromise(value) { const deferredPromise = lifetime_1.Scope.withScope((scope) => { const mutablePointerArray = scope.manage(this.memory.newMutablePointerArray(2)); const promisePtr = this.ffi.QTS_NewPromiseCapability(this.ctx.value, mutablePointerArray.value.ptr); const promiseHandle = this.memory.heapValueHandle(promisePtr); const [resolveHandle, rejectHandle] = Array.from(mutablePointerArray.value.typedArray).map((jsvaluePtr) => this.memory.heapValueHandle(jsvaluePtr)); return new deferred_promise_1.QuickJSDeferredPromise({ context: this, promiseHandle, resolveHandle, rejectHandle }); }); if (value && typeof value === "function") { value = new Promise(value); } if (value) { Promise.resolve(value).then(deferredPromise.resolve, (error3) => error3 instanceof lifetime_1.Lifetime ? deferredPromise.reject(error3) : this.newError(error3).consume(deferredPromise.reject)); } return deferredPromise; } /** * Convert a Javascript function into a QuickJS function value. * See [[VmFunctionImplementation]] for more details. * * A [[VmFunctionImplementation]] should not free its arguments or its return * value. A VmFunctionImplementation should also not retain any references to * its return value. * * To implement an async function, create a promise with [[newPromise]], then * return the deferred promise handle from `deferred.handle` from your * function implementation: * * ``` * const deferred = vm.newPromise() * someNativeAsyncFunction().then(deferred.resolve) * return deferred.handle * ``` */ newFunction(name, fn2) { const fnId = ++this.fnNextId; this.setFunction(fnId, fn2); return this.memory.heapValueHandle(this.ffi.QTS_NewFunction(this.ctx.value, fnId, name)); } newError(error3) { const errorHandle = this.memory.heapValueHandle(this.ffi.QTS_NewError(this.ctx.value)); if (error3 && typeof error3 === "object") { if (error3.name !== void 0) { this.newString(error3.name).consume((handle) => this.setProp(errorHandle, "name", handle)); } if (error3.message !== void 0) { this.newString(error3.message).consume((handle) => this.setProp(errorHandle, "message", handle)); } } else if (typeof error3 === "string") { this.newString(error3).consume((handle) => this.setProp(errorHandle, "message", handle)); } else if (error3 !== void 0) { this.newString(String(error3)).consume((handle) => this.setProp(errorHandle, "message", handle)); } return errorHandle; } // Read values -------------------------------------------------------------- /** * `typeof` operator. **Not** [standards compliant](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof). * * @remarks * Does not support BigInt values correctly. */ typeof(handle) { this.runtime.assertOwned(handle); return this.memory.consumeHeapCharPointer(this.ffi.QTS_Typeof(this.ctx.value, handle.value)); } /** * Converts `handle` into a Javascript number. * @returns `NaN` on error, otherwise a `number`. */ getNumber(handle) { this.runtime.assertOwned(handle); return this.ffi.QTS_GetFloat64(this.ctx.value, handle.value); } /** * Converts `handle` to a Javascript string. */ getString(handle) { this.runtime.assertOwned(handle); return this.memory.consumeJSCharPointer(this.ffi.QTS_GetString(this.ctx.value, handle.value)); } /** * Converts `handle` into a Javascript symbol. If the symbol is in the global * registry in the guest, it will be created with Symbol.for on the host. */ getSymbol(handle) { this.runtime.assertOwned(handle); const key = this.memory.consumeJSCharPointer(this.ffi.QTS_GetSymbolDescriptionOrKey(this.ctx.value, handle.value)); const isGlobal2 = this.ffi.QTS_IsGlobalSymbol(this.ctx.value, handle.value); return isGlobal2 ? Symbol.for(key) : Symbol(key); } /** * Converts `handle` to a Javascript bigint. */ getBigInt(handle) { this.runtime.assertOwned(handle); const asString = this.getString(handle); return BigInt(asString); } /** * `Promise.resolve(value)`. * Convert a handle containing a Promise-like value inside the VM into an * actual promise on the host. * * @remarks * You may need to call [[executePendingJobs]] to ensure that the promise is resolved. * * @param promiseLikeHandle - A handle to a Promise-like value with a `.then(onSuccess, onError)` method. */ resolvePromise(promiseLikeHandle) { this.runtime.assertOwned(promiseLikeHandle); const vmResolveResult = lifetime_1.Scope.withScope((scope) => { const vmPromise = scope.manage(this.getProp(this.global, "Promise")); const vmPromiseResolve = scope.manage(this.getProp(vmPromise, "resolve")); return this.callFunction(vmPromiseResolve, vmPromise, promiseLikeHandle); }); if (vmResolveResult.error) { return Promise.resolve(vmResolveResult); } return new Promise((resolve14) => { lifetime_1.Scope.withScope((scope) => { const resolveHandle = scope.manage(this.newFunction("resolve", (value) => { resolve14({ value: value && value.dup() }); })); const rejectHandle = scope.manage(this.newFunction("reject", (error3) => { resolve14({ error: error3 && error3.dup() }); })); const promiseHandle = scope.manage(vmResolveResult.value); const promiseThenHandle = scope.manage(this.getProp(promiseHandle, "then")); this.unwrapResult(this.callFunction(promiseThenHandle, promiseHandle, resolveHandle, rejectHandle)).dispose(); }); }); } // Properties --------------------------------------------------------------- /** * `handle[key]`. * Get a property from a JSValue. * * @param key - The property may be specified as a JSValue handle, or as a * Javascript string (which will be converted automatically). */ getProp(handle, key) { this.runtime.assertOwned(handle); const ptr = this.borrowPropertyKey(key).consume((quickJSKey) => this.ffi.QTS_GetProp(this.ctx.value, handle.value, quickJSKey.value)); const result = this.memory.heapValueHandle(ptr); return result; } /** * `handle[key] = value`. * Set a property on a JSValue. * * @remarks * Note that the QuickJS authors recommend using [[defineProp]] to define new * properties. * * @param key - The property may be specified as a JSValue handle, or as a * Javascript string or number (which will be converted automatically to a JSValue). */ setProp(handle, key, value) { this.runtime.assertOwned(handle); this.borrowPropertyKey(key).consume((quickJSKey) => this.ffi.QTS_SetProp(this.ctx.value, handle.value, quickJSKey.value, value.value)); } /** * [`Object.defineProperty(handle, key, descriptor)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty). * * @param key - The property may be specified as a JSValue handle, or as a * Javascript string or number (which will be converted automatically to a JSValue). */ defineProp(handle, key, descriptor2) { this.runtime.assertOwned(handle); lifetime_1.Scope.withScope((scope) => { const quickJSKey = scope.manage(this.borrowPropertyKey(key)); const value = descriptor2.value || this.undefined; const configurable = Boolean(descriptor2.configurable); const enumerable = Boolean(descriptor2.enumerable); const hasValue = Boolean(descriptor2.value); const get = descriptor2.get ? scope.manage(this.newFunction(descriptor2.get.name, descriptor2.get)) : this.undefined; const set2 = descriptor2.set ? scope.manage(this.newFunction(descriptor2.set.name, descriptor2.set)) : this.undefined; this.ffi.QTS_DefineProp(this.ctx.value, handle.value, quickJSKey.value, value.value, get.value, set2.value, configurable, enumerable, hasValue); }); } // Evaluation --------------------------------------------------------------- /** * [`func.call(thisVal, ...args)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call). * Call a JSValue as a function. * * See [[unwrapResult]], which will throw if the function returned an error, or * return the result handle directly. If evaluation returned a handle containing * a promise, use [[resolvePromise]] to convert it to a native promise and * [[executePendingJobs]] to finish evaluating the promise. * * @returns A result. If the function threw synchronously, `result.error` be a * handle to the exception. Otherwise `result.value` will be a handle to the * value. */ callFunction(func, thisVal, ...args2) { this.runtime.assertOwned(func); const resultPtr = this.memory.toPointerArray(args2).consume((argsArrayPtr) => this.ffi.QTS_Call(this.ctx.value, func.value, thisVal.value, args2.length, argsArrayPtr.value)); const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr); if (errorPtr) { this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr); return { error: this.memory.heapValueHandle(errorPtr) }; } return { value: this.memory.heapValueHandle(resultPtr) }; } /** * Like [`eval(code)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Description). * Evaluates the Javascript source `code` in the global scope of this VM. * When working with async code, you many need to call [[executePendingJobs]] * to execute callbacks pending after synchronous evaluation returns. * * See [[unwrapResult]], which will throw if the function returned an error, or * return the result handle directly. If evaluation returned a handle containing * a promise, use [[resolvePromise]] to convert it to a native promise and * [[executePendingJobs]] to finish evaluating the promise. * * *Note*: to protect against infinite loops, provide an interrupt handler to * [[setInterruptHandler]]. You can use [[shouldInterruptAfterDeadline]] to * create a time-based deadline. * * @returns The last statement's value. If the code threw synchronously, * `result.error` will be a handle to the exception. If execution was * interrupted, the error will have name `InternalError` and message * `interrupted`. */ evalCode(code2, filename = "eval.js", options) { const detectModule = options === void 0 ? 1 : 0; const flags = (0, types_1.evalOptionsToFlags)(options); const resultPtr = this.memory.newHeapCharPointer(code2).consume((charHandle) => this.ffi.QTS_Eval(this.ctx.value, charHandle.value, filename, detectModule, flags)); const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr); if (errorPtr) { this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr); return { error: this.memory.heapValueHandle(errorPtr) }; } return { value: this.memory.heapValueHandle(resultPtr) }; } /** * Throw an error in the VM, interrupted whatever current execution is in progress when execution resumes. * @experimental */ throw(error3) { return this.errorToHandle(error3).consume((handle) => this.ffi.QTS_Throw(this.ctx.value, handle.value)); } /** * @private */ borrowPropertyKey(key) { if (typeof key === "number") { return this.newNumber(key); } if (typeof key === "string") { return this.newString(key); } return new lifetime_1.StaticLifetime(key.value, this.runtime); } /** * @private */ getMemory(rt) { if (rt === this.rt.value) { return this.memory; } else { throw new Error("Private API. Cannot get memory from a different runtime"); } } // Utilities ---------------------------------------------------------------- /** * Dump a JSValue to Javascript in a best-effort fashion. * Returns `handle.toString()` if it cannot be serialized to JSON. */ dump(handle) { this.runtime.assertOwned(handle); const type = this.typeof(handle); if (type === "string") { return this.getString(handle); } else if (type === "number") { return this.getNumber(handle); } else if (type === "bigint") { return this.getBigInt(handle); } else if (type === "undefined") { return void 0; } else if (type === "symbol") { return this.getSymbol(handle); } const str = this.memory.consumeJSCharPointer(this.ffi.QTS_Dump(this.ctx.value, handle.value)); try { return JSON.parse(str); } catch (err) { return str; } } /** * Unwrap a SuccessOrFail result such as a [[VmCallResult]] or a * [[ExecutePendingJobsResult]], where the fail branch contains a handle to a QuickJS error value. * If the result is a success, returns the value. * If the result is an error, converts the error to a native object and throws the error. */ unwrapResult(result) { if (result.error) { const context = "context" in result.error ? result.error.context : this; const cause = result.error.consume((error3) => this.dump(error3)); if (cause && typeof cause === "object" && typeof cause.message === "string") { const { message: message2, name, stack: stack2 } = cause; const exception = new errors_1.QuickJSUnwrapError(""); const hostStack = exception.stack; if (typeof name === "string") { exception.name = cause.name; } if (typeof stack2 === "string") { exception.stack = `${name}: ${message2} ${cause.stack}Host: ${hostStack}`; } Object.assign(exception, { cause, context, message: message2 }); throw exception; } throw new errors_1.QuickJSUnwrapError(cause, context); } return result.value; } /** @private */ getFunction(fn_id) { const map_id = fn_id >> 8; const fnMap = this.fnMaps.get(map_id); if (!fnMap) { return void 0; } return fnMap.get(fn_id); } /** @private */ setFunction(fn_id, handle) { const map_id = fn_id >> 8; let fnMap = this.fnMaps.get(map_id); if (!fnMap) { fnMap = /* @__PURE__ */ new Map(); this.fnMaps.set(map_id, fnMap); } return fnMap.set(fn_id, handle); } errorToHandle(error3) { if (error3 instanceof lifetime_1.Lifetime) { return error3; } return this.newError(error3); } }; exports2.QuickJSContext = QuickJSContext; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.js var require_runtime = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSRuntime = void 0; var asyncify_helpers_1 = require_asyncify_helpers(); var context_1 = require_context2(); var debug_1 = require_debug3(); var errors_1 = require_errors3(); var lifetime_1 = require_lifetime(); var memory_1 = require_memory(); var types_1 = require_types6(); var QuickJSRuntime = class { /** @private */ constructor(args2) { this.scope = new lifetime_1.Scope(); this.contextMap = /* @__PURE__ */ new Map(); this.cToHostCallbacks = { shouldInterrupt: (rt) => { if (rt !== this.rt.value) { throw new Error("QuickJSContext instance received C -> JS interrupt with mismatched rt"); } const fn2 = this.interruptHandler; if (!fn2) { throw new Error("QuickJSContext had no interrupt handler"); } return fn2(this) ? 1 : 0; }, loadModuleSource: (0, asyncify_helpers_1.maybeAsyncFn)(this, function* (awaited, rt, ctx, moduleName) { const moduleLoader = this.moduleLoader; if (!moduleLoader) { throw new Error("Runtime has no module loader"); } if (rt !== this.rt.value) { throw new Error("Runtime pointer mismatch"); } const context = this.contextMap.get(ctx) ?? this.newContext({ contextPointer: ctx }); try { const result = yield* awaited(moduleLoader(moduleName, context)); if (typeof result === "object" && "error" in result && result.error) { (0, debug_1.debugLog)("cToHostLoadModule: loader returned error", result.error); throw result.error; } const moduleSource = typeof result === "string" ? result : "value" in result ? result.value : result; return this.memory.newHeapCharPointer(moduleSource).value; } catch (error3) { (0, debug_1.debugLog)("cToHostLoadModule: caught error", error3); context.throw(error3); return 0; } }), normalizeModule: (0, asyncify_helpers_1.maybeAsyncFn)(this, function* (awaited, rt, ctx, baseModuleName, moduleNameRequest) { const moduleNormalizer = this.moduleNormalizer; if (!moduleNormalizer) { throw new Error("Runtime has no module normalizer"); } if (rt !== this.rt.value) { throw new Error("Runtime pointer mismatch"); } const context = this.contextMap.get(ctx) ?? this.newContext({ /* TODO: Does this happen? Are we responsible for disposing? I don't think so */ contextPointer: ctx }); try { const result = yield* awaited(moduleNormalizer(baseModuleName, moduleNameRequest, context)); if (typeof result === "object" && "error" in result && result.error) { (0, debug_1.debugLog)("cToHostNormalizeModule: normalizer returned error", result.error); throw result.error; } const name = typeof result === "string" ? result : result.value; return context.getMemory(this.rt.value).newHeapCharPointer(name).value; } catch (error3) { (0, debug_1.debugLog)("normalizeModule: caught error", error3); context.throw(error3); return 0; } }) }; args2.ownedLifetimes?.forEach((lifetime) => this.scope.manage(lifetime)); this.module = args2.module; this.memory = new memory_1.ModuleMemory(this.module); this.ffi = args2.ffi; this.rt = args2.rt; this.callbacks = args2.callbacks; this.scope.manage(this.rt); this.callbacks.setRuntimeCallbacks(this.rt.value, this.cToHostCallbacks); this.executePendingJobs = this.executePendingJobs.bind(this); } get alive() { return this.scope.alive; } dispose() { return this.scope.dispose(); } newContext(options = {}) { if (options.intrinsics && options.intrinsics !== types_1.DefaultIntrinsics) { throw new Error("TODO: Custom intrinsics are not supported yet"); } const ctx = new lifetime_1.Lifetime(options.contextPointer || this.ffi.QTS_NewContext(this.rt.value), void 0, (ctx_ptr) => { this.contextMap.delete(ctx_ptr); this.callbacks.deleteContext(ctx_ptr); this.ffi.QTS_FreeContext(ctx_ptr); }); const context = new context_1.QuickJSContext({ module: this.module, ctx, ffi: this.ffi, rt: this.rt, ownedLifetimes: options.ownedLifetimes, runtime: this, callbacks: this.callbacks }); this.contextMap.set(ctx.value, context); return context; } /** * Set the loader for EcmaScript modules requested by any context in this * runtime. * * The loader can be removed with [[removeModuleLoader]]. */ setModuleLoader(moduleLoader, moduleNormalizer) { this.moduleLoader = moduleLoader; this.moduleNormalizer = moduleNormalizer; this.ffi.QTS_RuntimeEnableModuleLoader(this.rt.value, this.moduleNormalizer ? 1 : 0); } /** * Remove the the loader set by [[setModuleLoader]]. This disables module loading. */ removeModuleLoader() { this.moduleLoader = void 0; this.ffi.QTS_RuntimeDisableModuleLoader(this.rt.value); } // Runtime management ------------------------------------------------------- /** * In QuickJS, promises and async functions create pendingJobs. These do not execute * immediately and need to be run by calling [[executePendingJobs]]. * * @return true if there is at least one pendingJob queued up. */ hasPendingJob() { return Boolean(this.ffi.QTS_IsJobPending(this.rt.value)); } /** * Set a callback which is regularly called by the QuickJS engine when it is * executing code. This callback can be used to implement an execution * timeout. * * The interrupt handler can be removed with [[removeInterruptHandler]]. */ setInterruptHandler(cb) { const prevInterruptHandler = this.interruptHandler; this.interruptHandler = cb; if (!prevInterruptHandler) { this.ffi.QTS_RuntimeEnableInterruptHandler(this.rt.value); } } /** * Remove the interrupt handler, if any. * See [[setInterruptHandler]]. */ removeInterruptHandler() { if (this.interruptHandler) { this.ffi.QTS_RuntimeDisableInterruptHandler(this.rt.value); this.interruptHandler = void 0; } } /** * Execute pendingJobs on the runtime until `maxJobsToExecute` jobs are * executed (default all pendingJobs), the queue is exhausted, or the runtime * encounters an exception. * * In QuickJS, promises and async functions *inside the runtime* create * pendingJobs. These do not execute immediately and need to triggered to run. * * @param maxJobsToExecute - When negative, run all pending jobs. Otherwise execute * at most `maxJobsToExecute` before returning. * * @return On success, the number of executed jobs. On error, the exception * that stopped execution, and the context it occurred in. Note that * executePendingJobs will not normally return errors thrown inside async * functions or rejected promises. Those errors are available by calling * [[resolvePromise]] on the promise handle returned by the async function. */ executePendingJobs(maxJobsToExecute = -1) { const ctxPtrOut = this.memory.newMutablePointerArray(1); const valuePtr = this.ffi.QTS_ExecutePendingJob(this.rt.value, maxJobsToExecute ?? -1, ctxPtrOut.value.ptr); const ctxPtr = ctxPtrOut.value.typedArray[0]; ctxPtrOut.dispose(); if (ctxPtr === 0) { this.ffi.QTS_FreeValuePointerRuntime(this.rt.value, valuePtr); return { value: 0 }; } const context = this.contextMap.get(ctxPtr) ?? this.newContext({ contextPointer: ctxPtr }); const resultValue = context.getMemory(this.rt.value).heapValueHandle(valuePtr); const typeOfRet = context.typeof(resultValue); if (typeOfRet === "number") { const executedJobs = context.getNumber(resultValue); resultValue.dispose(); return { value: executedJobs }; } else { const error3 = Object.assign(resultValue, { context }); return { error: error3 }; } } /** * Set the max memory this runtime can allocate. * To remove the limit, set to `-1`. */ setMemoryLimit(limitBytes) { if (limitBytes < 0 && limitBytes !== -1) { throw new Error("Cannot set memory limit to negative number. To unset, pass -1"); } this.ffi.QTS_RuntimeSetMemoryLimit(this.rt.value, limitBytes); } /** * Compute memory usage for this runtime. Returns the result as a handle to a * JSValue object. Use [[QuickJSContext.dump]] to convert to a native object. * Calling this method will allocate more memory inside the runtime. The information * is accurate as of just before the call to `computeMemoryUsage`. * For a human-digestible representation, see [[dumpMemoryUsage]]. */ computeMemoryUsage() { const serviceContextMemory = this.getSystemContext().getMemory(this.rt.value); return serviceContextMemory.heapValueHandle(this.ffi.QTS_RuntimeComputeMemoryUsage(this.rt.value, serviceContextMemory.ctx.value)); } /** * @returns a human-readable description of memory usage in this runtime. * For programmatic access to this information, see [[computeMemoryUsage]]. */ dumpMemoryUsage() { return this.memory.consumeHeapCharPointer(this.ffi.QTS_RuntimeDumpMemoryUsage(this.rt.value)); } /** * Set the max stack size for this runtime, in bytes. * To remove the limit, set to `0`. */ setMaxStackSize(stackSize) { if (stackSize < 0) { throw new Error("Cannot set memory limit to negative number. To unset, pass 0."); } this.ffi.QTS_RuntimeSetMaxStackSize(this.rt.value, stackSize); } /** * Assert that `handle` is owned by this runtime. * @throws QuickJSWrongOwner if owned by a different runtime. */ assertOwned(handle) { if (handle.owner && handle.owner.rt !== this.rt) { throw new errors_1.QuickJSWrongOwner(`Handle is not owned by this runtime: ${handle.owner.rt.value} != ${this.rt.value}`); } } getSystemContext() { if (!this.context) { this.context = this.scope.manage(this.newContext()); } return this.context; } }; exports2.QuickJSRuntime = QuickJSRuntime; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module.js var require_module2 = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSWASMModule = exports2.applyModuleEvalRuntimeOptions = exports2.applyBaseRuntimeOptions = exports2.QuickJSModuleCallbacks = void 0; var debug_1 = require_debug3(); var errors_1 = require_errors3(); var lifetime_1 = require_lifetime(); var runtime_1 = require_runtime(); var types_1 = require_types6(); var QuickJSEmscriptenModuleCallbacks = class { constructor(args2) { this.callFunction = args2.callFunction; this.shouldInterrupt = args2.shouldInterrupt; this.loadModuleSource = args2.loadModuleSource; this.normalizeModule = args2.normalizeModule; } }; var QuickJSModuleCallbacks = class { constructor(module3) { this.contextCallbacks = /* @__PURE__ */ new Map(); this.runtimeCallbacks = /* @__PURE__ */ new Map(); this.suspendedCount = 0; this.cToHostCallbacks = new QuickJSEmscriptenModuleCallbacks({ callFunction: (asyncify, ctx, this_ptr, argc, argv, fn_id) => this.handleAsyncify(asyncify, () => { try { const vm = this.contextCallbacks.get(ctx); if (!vm) { throw new Error(`QuickJSContext(ctx = ${ctx}) not found for C function call "${fn_id}"`); } return vm.callFunction(ctx, this_ptr, argc, argv, fn_id); } catch (error3) { console.error("[C to host error: returning null]", error3); return 0; } }), shouldInterrupt: (asyncify, rt) => this.handleAsyncify(asyncify, () => { try { const vm = this.runtimeCallbacks.get(rt); if (!vm) { throw new Error(`QuickJSRuntime(rt = ${rt}) not found for C interrupt`); } return vm.shouldInterrupt(rt); } catch (error3) { console.error("[C to host interrupt: returning error]", error3); return 1; } }), loadModuleSource: (asyncify, rt, ctx, moduleName) => this.handleAsyncify(asyncify, () => { try { const runtimeCallbacks = this.runtimeCallbacks.get(rt); if (!runtimeCallbacks) { throw new Error(`QuickJSRuntime(rt = ${rt}) not found for C module loader`); } const loadModule = runtimeCallbacks.loadModuleSource; if (!loadModule) { throw new Error(`QuickJSRuntime(rt = ${rt}) does not support module loading`); } return loadModule(rt, ctx, moduleName); } catch (error3) { console.error("[C to host module loader error: returning null]", error3); return 0; } }), normalizeModule: (asyncify, rt, ctx, moduleBaseName, moduleName) => this.handleAsyncify(asyncify, () => { try { const runtimeCallbacks = this.runtimeCallbacks.get(rt); if (!runtimeCallbacks) { throw new Error(`QuickJSRuntime(rt = ${rt}) not found for C module loader`); } const normalizeModule = runtimeCallbacks.normalizeModule; if (!normalizeModule) { throw new Error(`QuickJSRuntime(rt = ${rt}) does not support module loading`); } return normalizeModule(rt, ctx, moduleBaseName, moduleName); } catch (error3) { console.error("[C to host module loader error: returning null]", error3); return 0; } }) }); this.module = module3; this.module.callbacks = this.cToHostCallbacks; } setRuntimeCallbacks(rt, callbacks) { this.runtimeCallbacks.set(rt, callbacks); } deleteRuntime(rt) { this.runtimeCallbacks.delete(rt); } setContextCallbacks(ctx, callbacks) { this.contextCallbacks.set(ctx, callbacks); } deleteContext(ctx) { this.contextCallbacks.delete(ctx); } handleAsyncify(asyncify, fn2) { if (asyncify) { return asyncify.handleSleep((done) => { try { const result = fn2(); if (!(result instanceof Promise)) { (0, debug_1.debugLog)("asyncify.handleSleep: not suspending:", result); done(result); return; } if (this.suspended) { throw new errors_1.QuickJSAsyncifyError(`Already suspended at: ${this.suspended.stack} Attempted to suspend at:`); } else { this.suspended = new errors_1.QuickJSAsyncifySuspended(`(${this.suspendedCount++})`); (0, debug_1.debugLog)("asyncify.handleSleep: suspending:", this.suspended); } result.then((resolvedResult) => { this.suspended = void 0; (0, debug_1.debugLog)("asyncify.handleSleep: resolved:", resolvedResult); done(resolvedResult); }, (error3) => { (0, debug_1.debugLog)("asyncify.handleSleep: rejected:", error3); console.error("QuickJS: cannot handle error in suspended function", error3); this.suspended = void 0; }); } catch (error3) { (0, debug_1.debugLog)("asyncify.handleSleep: error:", error3); this.suspended = void 0; throw error3; } }); } const value = fn2(); if (value instanceof Promise) { throw new Error("Promise return value not supported in non-asyncify context."); } return value; } }; exports2.QuickJSModuleCallbacks = QuickJSModuleCallbacks; function applyBaseRuntimeOptions(runtime, options) { if (options.interruptHandler) { runtime.setInterruptHandler(options.interruptHandler); } if (options.maxStackSizeBytes !== void 0) { runtime.setMaxStackSize(options.maxStackSizeBytes); } if (options.memoryLimitBytes !== void 0) { runtime.setMemoryLimit(options.memoryLimitBytes); } } exports2.applyBaseRuntimeOptions = applyBaseRuntimeOptions; function applyModuleEvalRuntimeOptions(runtime, options) { if (options.moduleLoader) { runtime.setModuleLoader(options.moduleLoader); } if (options.shouldInterrupt) { runtime.setInterruptHandler(options.shouldInterrupt); } if (options.memoryLimitBytes !== void 0) { runtime.setMemoryLimit(options.memoryLimitBytes); } if (options.maxStackSizeBytes !== void 0) { runtime.setMaxStackSize(options.maxStackSizeBytes); } } exports2.applyModuleEvalRuntimeOptions = applyModuleEvalRuntimeOptions; var QuickJSWASMModule = class { /** @private */ constructor(module3, ffi) { this.module = module3; this.ffi = ffi; this.callbacks = new QuickJSModuleCallbacks(module3); } /** * Create a runtime. * Use the runtime to set limits on CPU and memory usage and configure module * loading for one or more [[QuickJSContext]]s inside the runtime. */ newRuntime(options = {}) { const rt = new lifetime_1.Lifetime(this.ffi.QTS_NewRuntime(), void 0, (rt_ptr) => { this.callbacks.deleteRuntime(rt_ptr); this.ffi.QTS_FreeRuntime(rt_ptr); }); const runtime = new runtime_1.QuickJSRuntime({ module: this.module, callbacks: this.callbacks, ffi: this.ffi, rt }); applyBaseRuntimeOptions(runtime, options); if (options.moduleLoader) { runtime.setModuleLoader(options.moduleLoader); } return runtime; } /** * A simplified API to create a new [[QuickJSRuntime]] and a * [[QuickJSContext]] inside that runtime at the same time. The runtime will * be disposed when the context is disposed. */ newContext(options = {}) { const runtime = this.newRuntime(); const context = runtime.newContext({ ...options, ownedLifetimes: (0, types_1.concat)(runtime, options.ownedLifetimes) }); runtime.context = context; return context; } /** * One-off evaluate code without needing to create a [[QuickJSRuntime]] or * [[QuickJSContext]] explicitly. * * To protect against infinite loops, use the `shouldInterrupt` option. The * [[shouldInterruptAfterDeadline]] function will create a time-based deadline. * * If you need more control over how the code executes, create a * [[QuickJSRuntime]] (with [[newRuntime]]) or a [[QuickJSContext]] (with * [[newContext]] or [[QuickJSRuntime.newContext]]), and use its * [[QuickJSContext.evalCode]] method. * * Asynchronous callbacks may not run during the first call to `evalCode`. If * you need to work with async code inside QuickJS, create a runtime and use * [[QuickJSRuntime.executePendingJobs]]. * * @returns The result is coerced to a native Javascript value using JSON * serialization, so properties and values unsupported by JSON will be dropped. * * @throws If `code` throws during evaluation, the exception will be * converted into a native Javascript value and thrown. * * @throws if `options.shouldInterrupt` interrupted execution, will throw a Error * with name `"InternalError"` and message `"interrupted"`. */ evalCode(code2, options = {}) { return lifetime_1.Scope.withScope((scope) => { const vm = scope.manage(this.newContext()); applyModuleEvalRuntimeOptions(vm.runtime, options); const result = vm.evalCode(code2, "eval.js"); if (options.memoryLimitBytes !== void 0) { vm.runtime.setMemoryLimit(-1); } if (result.error) { const error3 = vm.dump(scope.manage(result.error)); throw error3; } const value = vm.dump(scope.manage(result.value)); return value; }); } /** * Get a low-level interface to the QuickJS functions in this WebAssembly * module. * @experimental * @unstable No warranty is provided with this API. It could change at any time. * @private */ getFFI() { return this.ffi; } }; exports2.QuickJSWASMModule = QuickJSWASMModule; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js var require_context_asyncify = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSAsyncContext = void 0; var context_1 = require_context2(); var debug_1 = require_debug3(); var types_1 = require_types6(); var QuickJSAsyncContext = class extends context_1.QuickJSContext { /** * Asyncified version of [[evalCode]]. */ async evalCodeAsync(code2, filename = "eval.js", options) { const detectModule = options === void 0 ? 1 : 0; const flags = (0, types_1.evalOptionsToFlags)(options); let resultPtr = 0; try { resultPtr = await this.memory.newHeapCharPointer(code2).consume((charHandle) => this.ffi.QTS_Eval_MaybeAsync(this.ctx.value, charHandle.value, filename, detectModule, flags)); } catch (error3) { (0, debug_1.debugLog)("QTS_Eval_MaybeAsync threw", error3); throw error3; } const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr); if (errorPtr) { this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr); return { error: this.memory.heapValueHandle(errorPtr) }; } return { value: this.memory.heapValueHandle(resultPtr) }; } /** * Similar to [[newFunction]]. * Convert an async host Javascript function into a synchronous QuickJS function value. * * Whenever QuickJS calls this function, the VM's stack will be unwound while * waiting the async function to complete, and then restored when the returned * promise resolves. * * Asyncified functions must never call other asyncified functions or * `import`, even indirectly, because the stack cannot be unwound twice. * * See [Emscripten's docs on Asyncify](https://emscripten.org/docs/porting/asyncify.html). */ newAsyncifiedFunction(name, fn2) { return this.newFunction(name, fn2); } }; exports2.QuickJSAsyncContext = QuickJSAsyncContext; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.js var require_runtime_asyncify = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSAsyncRuntime = void 0; var _1 = require_dist14(); var context_asyncify_1 = require_context_asyncify(); var runtime_1 = require_runtime(); var types_1 = require_types6(); var QuickJSAsyncRuntime = class extends runtime_1.QuickJSRuntime { /** @private */ constructor(args2) { super(args2); } newContext(options = {}) { if (options.intrinsics && options.intrinsics !== types_1.DefaultIntrinsics) { throw new Error("TODO: Custom intrinsics are not supported yet"); } const ctx = new _1.Lifetime(this.ffi.QTS_NewContext(this.rt.value), void 0, (ctx_ptr) => { this.contextMap.delete(ctx_ptr); this.callbacks.deleteContext(ctx_ptr); this.ffi.QTS_FreeContext(ctx_ptr); }); const context = new context_asyncify_1.QuickJSAsyncContext({ module: this.module, ctx, ffi: this.ffi, rt: this.rt, ownedLifetimes: [], runtime: this, callbacks: this.callbacks }); this.contextMap.set(ctx.value, context); return context; } setModuleLoader(moduleLoader, moduleNormalizer) { super.setModuleLoader(moduleLoader, moduleNormalizer); } /** * Set the max stack size for this runtime in bytes. * To remove the limit, set to `0`. * * Setting this limit also adjusts the global `ASYNCIFY_STACK_SIZE` for the entire {@link QuickJSAsyncWASMModule}. * See the [pull request](https://github.com/justjake/quickjs-emscripten/pull/114) for more details. */ setMaxStackSize(stackSize) { return super.setMaxStackSize(stackSize); } }; exports2.QuickJSAsyncRuntime = QuickJSAsyncRuntime; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.js var require_module_asyncify = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSAsyncWASMModule = void 0; var errors_1 = require_errors3(); var lifetime_1 = require_lifetime(); var module_1 = require_module2(); var runtime_asyncify_1 = require_runtime_asyncify(); var QuickJSAsyncWASMModule = class extends module_1.QuickJSWASMModule { /** @private */ constructor(module3, ffi) { super(module3, ffi); this.ffi = ffi; this.module = module3; } /** * Create a new async runtime inside this WebAssembly module. All runtimes inside a * module are limited to a single async call at a time. For multiple * concurrent async actions, create multiple WebAssembly modules. */ newRuntime(options = {}) { const rt = new lifetime_1.Lifetime(this.ffi.QTS_NewRuntime(), void 0, (rt_ptr) => { this.callbacks.deleteRuntime(rt_ptr); this.ffi.QTS_FreeRuntime(rt_ptr); }); const runtime = new runtime_asyncify_1.QuickJSAsyncRuntime({ module: this.module, ffi: this.ffi, rt, callbacks: this.callbacks }); (0, module_1.applyBaseRuntimeOptions)(runtime, options); if (options.moduleLoader) { runtime.setModuleLoader(options.moduleLoader); } return runtime; } /** * A simplified API to create a new [[QuickJSRuntime]] and a * [[QuickJSContext]] inside that runtime at the same time. The runtime will * be disposed when the context is disposed. */ newContext(options = {}) { const runtime = this.newRuntime(); const lifetimes = options.ownedLifetimes ? options.ownedLifetimes.concat([runtime]) : [runtime]; const context = runtime.newContext({ ...options, ownedLifetimes: lifetimes }); runtime.context = context; return context; } /** Synchronous evalCode is not supported. */ evalCode() { throw new errors_1.QuickJSNotImplemented("QuickJSWASMModuleAsyncify.evalCode: use evalCodeAsync instead"); } /** * One-off evaluate code without needing to create a [[QuickJSRuntimeAsync]] or * [[QuickJSContextSync]] explicitly. * * This version allows for asynchronous Ecmascript module loading. * * Note that only a single async action can occur at a time inside the entire WebAssembly module. * **Multiple concurrent async actions is an error.** * * See the documentation for [[QuickJSWASMModule.evalCode]] for more details. */ evalCodeAsync(code2, options) { return lifetime_1.Scope.withScopeAsync(async (scope) => { const vm = scope.manage(this.newContext()); (0, module_1.applyModuleEvalRuntimeOptions)(vm.runtime, options); const result = await vm.evalCodeAsync(code2, "eval.js"); if (options.memoryLimitBytes !== void 0) { vm.runtime.setMemoryLimit(-1); } if (result.error) { const error3 = vm.dump(scope.manage(result.error)); throw error3; } const value = vm.dump(scope.manage(result.value)); return value; }); } }; exports2.QuickJSAsyncWASMModule = QuickJSAsyncWASMModule; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.WASM_RELEASE_SYNC.js var require_ffi_WASM_RELEASE_SYNC = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.WASM_RELEASE_SYNC.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuickJSFFI = void 0; var QuickJSFFI = class { constructor(module3) { this.module = module3; this.DEBUG = false; this.QTS_Throw = this.module.cwrap("QTS_Throw", "number", ["number", "number"]); this.QTS_NewError = this.module.cwrap("QTS_NewError", "number", ["number"]); this.QTS_RuntimeSetMemoryLimit = this.module.cwrap("QTS_RuntimeSetMemoryLimit", null, ["number", "number"]); this.QTS_RuntimeComputeMemoryUsage = this.module.cwrap("QTS_RuntimeComputeMemoryUsage", "number", ["number", "number"]); this.QTS_RuntimeDumpMemoryUsage = this.module.cwrap("QTS_RuntimeDumpMemoryUsage", "number", ["number"]); this.QTS_RecoverableLeakCheck = this.module.cwrap("QTS_RecoverableLeakCheck", "number", []); this.QTS_BuildIsSanitizeLeak = this.module.cwrap("QTS_BuildIsSanitizeLeak", "number", []); this.QTS_RuntimeSetMaxStackSize = this.module.cwrap("QTS_RuntimeSetMaxStackSize", null, ["number", "number"]); this.QTS_GetUndefined = this.module.cwrap("QTS_GetUndefined", "number", []); this.QTS_GetNull = this.module.cwrap("QTS_GetNull", "number", []); this.QTS_GetFalse = this.module.cwrap("QTS_GetFalse", "number", []); this.QTS_GetTrue = this.module.cwrap("QTS_GetTrue", "number", []); this.QTS_NewRuntime = this.module.cwrap("QTS_NewRuntime", "number", []); this.QTS_FreeRuntime = this.module.cwrap("QTS_FreeRuntime", null, ["number"]); this.QTS_NewContext = this.module.cwrap("QTS_NewContext", "number", ["number"]); this.QTS_FreeContext = this.module.cwrap("QTS_FreeContext", null, ["number"]); this.QTS_FreeValuePointer = this.module.cwrap("QTS_FreeValuePointer", null, ["number", "number"]); this.QTS_FreeValuePointerRuntime = this.module.cwrap("QTS_FreeValuePointerRuntime", null, ["number", "number"]); this.QTS_FreeVoidPointer = this.module.cwrap("QTS_FreeVoidPointer", null, ["number", "number"]); this.QTS_FreeCString = this.module.cwrap("QTS_FreeCString", null, ["number", "number"]); this.QTS_DupValuePointer = this.module.cwrap("QTS_DupValuePointer", "number", ["number", "number"]); this.QTS_NewObject = this.module.cwrap("QTS_NewObject", "number", ["number"]); this.QTS_NewObjectProto = this.module.cwrap("QTS_NewObjectProto", "number", ["number", "number"]); this.QTS_NewArray = this.module.cwrap("QTS_NewArray", "number", ["number"]); this.QTS_NewFloat64 = this.module.cwrap("QTS_NewFloat64", "number", ["number", "number"]); this.QTS_GetFloat64 = this.module.cwrap("QTS_GetFloat64", "number", ["number", "number"]); this.QTS_NewString = this.module.cwrap("QTS_NewString", "number", ["number", "number"]); this.QTS_GetString = this.module.cwrap("QTS_GetString", "number", ["number", "number"]); this.QTS_NewSymbol = this.module.cwrap("QTS_NewSymbol", "number", ["number", "number", "number"]); this.QTS_GetSymbolDescriptionOrKey = this.module.cwrap("QTS_GetSymbolDescriptionOrKey", "number", ["number", "number"]); this.QTS_IsGlobalSymbol = this.module.cwrap("QTS_IsGlobalSymbol", "number", ["number", "number"]); this.QTS_IsJobPending = this.module.cwrap("QTS_IsJobPending", "number", ["number"]); this.QTS_ExecutePendingJob = this.module.cwrap("QTS_ExecutePendingJob", "number", ["number", "number", "number"]); this.QTS_GetProp = this.module.cwrap("QTS_GetProp", "number", ["number", "number", "number"]); this.QTS_SetProp = this.module.cwrap("QTS_SetProp", null, ["number", "number", "number", "number"]); this.QTS_DefineProp = this.module.cwrap("QTS_DefineProp", null, ["number", "number", "number", "number", "number", "number", "boolean", "boolean", "boolean"]); this.QTS_Call = this.module.cwrap("QTS_Call", "number", ["number", "number", "number", "number", "number"]); this.QTS_ResolveException = this.module.cwrap("QTS_ResolveException", "number", ["number", "number"]); this.QTS_Dump = this.module.cwrap("QTS_Dump", "number", ["number", "number"]); this.QTS_Eval = this.module.cwrap("QTS_Eval", "number", ["number", "number", "string", "number", "number"]); this.QTS_Typeof = this.module.cwrap("QTS_Typeof", "number", ["number", "number"]); this.QTS_GetGlobalObject = this.module.cwrap("QTS_GetGlobalObject", "number", ["number"]); this.QTS_NewPromiseCapability = this.module.cwrap("QTS_NewPromiseCapability", "number", ["number", "number"]); this.QTS_TestStringArg = this.module.cwrap("QTS_TestStringArg", null, ["string"]); this.QTS_BuildIsDebug = this.module.cwrap("QTS_BuildIsDebug", "number", []); this.QTS_BuildIsAsyncify = this.module.cwrap("QTS_BuildIsAsyncify", "number", []); this.QTS_NewFunction = this.module.cwrap("QTS_NewFunction", "number", ["number", "number", "string"]); this.QTS_ArgvGetJSValueConstPointer = this.module.cwrap("QTS_ArgvGetJSValueConstPointer", "number", ["number", "number"]); this.QTS_RuntimeEnableInterruptHandler = this.module.cwrap("QTS_RuntimeEnableInterruptHandler", null, ["number"]); this.QTS_RuntimeDisableInterruptHandler = this.module.cwrap("QTS_RuntimeDisableInterruptHandler", null, ["number"]); this.QTS_RuntimeEnableModuleLoader = this.module.cwrap("QTS_RuntimeEnableModuleLoader", null, ["number", "number"]); this.QTS_RuntimeDisableModuleLoader = this.module.cwrap("QTS_RuntimeDisableModuleLoader", null, ["number"]); } }; exports2.QuickJSFFI = QuickJSFFI; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/emscripten-module.WASM_RELEASE_SYNC.js var require_emscripten_module_WASM_RELEASE_SYNC = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/emscripten-module.WASM_RELEASE_SYNC.js"(exports2, module2) { "use strict"; var QuickJSRaw = (() => { var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0; if (typeof __filename !== "undefined") _scriptDir = _scriptDir || __filename; return function(QuickJSRaw2 = {}) { var a; a || (a = typeof QuickJSRaw2 !== "undefined" ? QuickJSRaw2 : {}); var m, n; a.ready = new Promise(function(b, c) { m = b; n = c; }); var p = Object.assign({}, a), t = "./this.program", u = "object" == typeof window, v = "function" == typeof importScripts, w = "object" == typeof process && "object" == typeof process.versions && "string" == typeof process.versions.node, x = "", y, z, A; if (w) { var fs15 = __require("fs"), B = __require("path"); x = v ? B.dirname(x) + "/" : __dirname + "/"; y = (b, c) => { var d = C(b); if (d) return c ? d : d.toString(); b = b.startsWith("file://") ? new URL(b) : B.normalize(b); return fs15.readFileSync(b, c ? void 0 : "utf8"); }; A = (b) => { b = y(b, true); b.buffer || (b = new Uint8Array(b)); return b; }; z = (b, c, d) => { var e2 = C(b); e2 && c(e2); b = b.startsWith("file://") ? new URL(b) : B.normalize(b); fs15.readFile(b, function(f, g) { f ? d(f) : c(g.buffer); }); }; !a.thisProgram && 1 < process.argv.length && (t = process.argv[1].replace(/\\/g, "/")); process.argv.slice(2); a.inspect = function() { return "[Emscripten Module object]"; }; } else if (u || v) v ? x = self.location.href : "undefined" != typeof document && document.currentScript && (x = document.currentScript.src), _scriptDir && (x = _scriptDir), 0 !== x.indexOf("blob:") ? x = x.substr(0, x.replace(/[?#].*/, "").lastIndexOf("/") + 1) : x = "", y = (b) => { try { var c = new XMLHttpRequest(); c.open("GET", b, false); c.send(null); return c.responseText; } catch (f) { if (b = C(b)) { c = []; for (var d = 0; d < b.length; d++) { var e2 = b[d]; 255 < e2 && (e2 &= 255); c.push(String.fromCharCode(e2)); } return c.join(""); } throw f; } }, v && (A = (b) => { try { var c = new XMLHttpRequest(); c.open("GET", b, false); c.responseType = "arraybuffer"; c.send(null); return new Uint8Array(c.response); } catch (d) { if (b = C(b)) return b; throw d; } }), z = (b, c, d) => { var e2 = new XMLHttpRequest(); e2.open("GET", b, true); e2.responseType = "arraybuffer"; e2.onload = () => { if (200 == e2.status || 0 == e2.status && e2.response) c(e2.response); else { var f = C(b); f ? c(f.buffer) : d(); } }; e2.onerror = d; e2.send(null); }; var aa = a.print || console.log.bind(console), D = a.printErr || console.warn.bind(console); Object.assign(a, p); p = null; a.thisProgram && (t = a.thisProgram); var E; a.wasmBinary && (E = a.wasmBinary); var noExitRuntime = a.noExitRuntime || true; "object" != typeof WebAssembly && F("no native wasm support detected"); var G, H = false, I, J, K, L; function M() { var b = G.buffer; a.HEAP8 = I = new Int8Array(b); a.HEAP16 = new Int16Array(b); a.HEAP32 = K = new Int32Array(b); a.HEAPU8 = J = new Uint8Array(b); a.HEAPU16 = new Uint16Array(b); a.HEAPU32 = L = new Uint32Array(b); a.HEAPF32 = new Float32Array(b); a.HEAPF64 = new Float64Array(b); } var ba = [], ca = [], da = []; function ea() { var b = a.preRun.shift(); ba.unshift(b); } var N = 0, O = null, P = null; function F(b) { if (a.onAbort) a.onAbort(b); b = "Aborted(" + b + ")"; D(b); H = true; b = new WebAssembly.RuntimeError(b + ". Build with -sASSERTIONS for more info."); n(b); throw b; } var Q = "data:application/octet-stream;base64,", R; R = "data:application/octet-stream;base64,AGFzbQEAAAAB9QZxYAJ/fwBgA39/fwF/YAR/fn9/AX5gAn9/AX9gAX8Bf2AFf35/f38BfmADf39/AGAEf39/fwF/YAJ/fgF+YAF/AGAFf39/f38Bf2ABfAF8YAJ/fgBgAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmADf35/AGAGf35/f39/AX5gBn9/f39/fwF/YAR/f39/AGADf35/AX9gBn9+fn9/fwF+YAR/f35/AX9gA39+fgF+YAN/f38BfmAFf39/fn4Bf2AEf39/fgF/YAR/f35+AX9gBX9+fn5+AGABfwF+YAN/fn4Bf2AEf39/fwF+YAd/f39/f39/AX9gBX9/f39/AX5gAnx8AXxgAAF/YAV/f39/fwBgBX9+f35/AX9gBX9+fn9/AX5gAX4Bf2AEf35+fwBgB39+f35+fn8Bf2AIf39/f39/f38Bf2AFf35+fn8Bf2AGf35/fn5/AX9gBH9+f34BfmAEf35/fwBgBH9+f34AYAZ/f39/f38BfmAEf35+fwF/YAl/f39/f39/f38Bf2AEf35+fwF+YAR/fn9/AX9gA39+fgBgA35/fwF/YAV/fn5/fwBgA39/fgF+YAd/fn9/f39/AX5gAABgA39/fgBgBH9+f34Bf2AFf39+f38Bf2AEf35+fgF/YAd/f39/f39/AGACfH8BfGABfAF/YAN8fH8BfGACf38BfGAEf39+fwBgBH9+fn4BfmABfgF+YAJ/fAF/YAZ/fH9/f38Bf2AAAXxgBX9+f35/AX5gBn9/fn5+fgF/YAJ+fwBgAn98AGAEf39+fwF+YAV/f39/fgF+YAd/fn5+f39/AX5gBH5+fn4Bf2AHf39/f39/fgF+YAp/f39/f39/f39/AX9gB39/fn5/f38Bf2AFf3x/f38BfmACfn8Bf2AGfH9/f39/AGAFf35/f38AYAV/f35/fwBgBn9+fn5+fwF/YAV/f35+fwF/YAZ/fn9/f38Bf2ADf3x/AX9gBX9+f39/AX9gBX9/fn5+AX5gBX9+fn5+AX9gBn9/fn5/fwF/YAd/f39+fn5/AX9gBH9/f34BfmACfH8Bf2AGf39/f39/AGAIf39/f39/f38AYAN/fnwBfmAAAX5gAnx8AX9gAn5+AXxgAX8BfGADfn5+AX9gA39/fABgCH9+fn5+f35+AX5gCX9/f39/f39/fwACWw8B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rgitCKcIqAimCKUIpAj0B44JjQmKCYgJjAnwB/EH7gfrB+QH4gfhB9MHwQeaB/EEvAmbCZoJmQmYCZcJlgmVCZQJkwmSCZEJiwntCOwInQicCJsImgiZCKAFmAiXCJYIlQiUCJMIkQiQCI8IjgiNCIwIiwiKCIkIiAiHCIYI6QOFCOkDhAiDCIIIgQieCKEIoAifCKII2QP/B/4HkQeQB5kHmAeWB5UHlAeTB5IH4AffB94H6QPdB6AF3AfbB9oH2AerCKoIqQj/BooHiQeIB4cHhgeFB4QHgweCB4EHgAfoB4sHjweOB5sHpAehB6MHogefB54HnQecB6UH5wfmB+UH/gHsB+kH7QfvB/IH9QbPBPQG8wbyBvEGyATwBu8G9wbRBPYG9gf1B/sH+gf5B/gH/QeoCeMGpwnmBqYJpQmkCaMJ4QbfBsYEogmhCaAJsQafCZ4JnQmwBrIJsQmwCa8JrgmtCawJqwmqCbgJnQO3CbYJtQm0CbMJxgnJB8gHxQnECcMJwgnWA8EJwAn3BPgEvwm+CbsJugm5CckJyAnHCdAJzwm9BLwEzgnNCcwJywnKCbQG1AnTCdIJ0Qm4BrcGtga1BroGuQa9BrwGuwbSBtEG0AbPBs4GzQbMBssGygbJBsgGxwbGBsUGxAbDBsEGwAa/Br4G0wbcBoAJ+gj7CNsGgwmECYEJnQT+CPkI6wPMAtoG9QjxCO8I2Qb4CPQI8AiCCf8I/QiXAqcD1gnyCPwI2AbXBtYG1QbUBugG5wblBuQG4gbgBt4G3QbrBuoG6QbtBuwG7gapB6cHpgfPB4EF1weABc4HzQfMB8sHxwfGB8UHxAfDB8IHwAe/B9IH0AfWB9QHtAezB7EHsAevB64HrQesB6sHqge+B70HvAe7B7oHuQe4B7cHtge1B4cJhQmGCdgD8wgK15YXyAk1AQF/AkAgAUIgiKdBdUkNACABpyICIAIoAgAiAkEBazYCACACQQFKDQAgACgCECABEJYECwtNAQJ/IAAoAkAiAkGAAmohAyACKAKcAiAAKAIERwRAIANBwgEQESADIAAoAgQQHSACIAAoAgQ2ApwCCyACIAIoAoQCNgKYAiADIAEQEQsmAQF/IwBBEGsiAiQAIAIgAToADyAAIAJBD2pBARByIAJBEGokAAv/FwIGfwJ+IwBBEGsiAiQAAn8CQCAAKAIA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NwMgIABBgH82AhAMAwsgACACQQxqIAJBCGogBkEAEOoEIgFFDQAgACABNgIgIAIoAgghBSAAQQA2AiggACAFNgIkAkAgAUElSQ0AIAFBLU0EQCAAKAJAIgMtAG5BAXENASABQS1HDQMgAy8BbCIGQQFxDQEgBkGA/gNxQYAGRw0DIAMoAmQNAyADKAIEIgNFDQMgAy0AbEEBcQ0BDAMLIAFBLkcNAiAAKAJEDQAgACgCQCIDLwFsIgZBAnENACAGQYD+A3FBgAZHDQIgAygCZA0CIAMoAgQiA0UNAiADLQBsQQJxRQ0CCyAFBEAgAEGDfzYCECAAQQE2AigMAwsgBCABQdQAazYCAAwCCyAEQap/NgIADAULIARBg382AgALIAAgAigCDDYCOEEADAQLIABBATYCMCAAIANBAWo2AggLIAIoAgwhAQwACwALQX8LIQEgAkEQaiQAIAELFQAgAUHeAU4EQCAAKAIQIAEQ6AULC7oHAgZ/AX4jAEEgayIHJABCgICAgOAAIQsCQAJAAkACQAJAAkACQAJAAkACQCABQiCIpyIGQQFqDggDBQUAAQUFCQILIAAgAkGH1AAQjwEMBgsgACACQff4ABCPAQwFCyAGQXlGDQEMAgsgAachBgwCCyABpyEGIAJBAEgEQCACQf////8HcSIFIAYpAgQiC6dB/////wdxTw0BIAZBEGohAiAAAn8gC0KAgICACINQRQRAIAIgBUEBdGovAQAMAQsgAiAFai0AAAtB//8DcRCfAyELDAULIAJBMEcNACAGKQIEQv////8HgyELDAQLIAAgARCNBKciBkUNAgsgAkH/////B3EhCQNAIAYoAhAiBUEwaiEKIAUgBSgCGCACcUF/c0ECdGooAgAhBQJAA0AgBUUNASACIAogBUEBa0EDdCIFaiIIKAIERwRAIAgoAgBB////H3EhBQwBCwsgBigCFCAFaiEFAkACQAJAAkAgCCgCAEEedkEBaw4DAAECAwsgBSgCACICRQ0GIAIgAigCAEEBajYCACAAIAKtQoCAgIBwhCADQQBBABAvIQsMBwsgBSgCACgCECkDACILQoCAgIBwg0KAgICAwABRBEAgACACENkBDAULIAtCIIinQXVJDQYgC6ciACAAKAIAQQFqNgIADAYLIAAgBiACIAUgCBDIAkUNAgwDCyAFKQMAIgtCIIinQXVJDQQgC6ciACAAKAIAQQFqNgIADAQLAkAgBi0ABSIFQQRxRQ0AIAVBCHEEQCACQQBIBEAgBigCKCAJSwRAIAAgBq1CgICAgHCEIAkQsAEhCwwHCyAGLwEGQSBrQf//A3FB9f8DTw0FDAILIAYvAQZBFWtB//8DcUEKSw0BIAAgAhCeAyIFRQ0BQoCAgIDgAEKAgICAMCAFQQBIGyELDAULIAAoAhAoAkQgBi8BBkEYbGooAhQiBUUNACAFKAIUIggEQCAGIAYoAgBBAWo2AgAgACAGrUKAgICAcIQiASACIAMgCBEuACELIAAgARAPDAULIAUoAgAiBUUNACAGIAYoAgBBAWo2AgAgACAHIAatQoCAgIBwhCIBIAIgBREXACEFIAAgARAPIAVBAEgNAiAFRQ0AIActAABBEHEEQCAAIAcpAxgQDyAAIAcpAxAgA0EAQQAQLyELDAULIAcpAwghCwwECyAGKAIQKAIsIgYNAAtCgICAgDAhCyAERQ0CIAAgAhDHAgtCgICAgOAAIQsMAQtCgICAgDAhCwsgB0EgaiQAIAsLDQAgACABIAJBBBDOAgtfAQN/IwBBEGsiBCQAIAAoAgAhAyAEIAI2AgwgA0EDIAEgAkEAEPAFIAMgAygCECkDgAEgACgCDCAAKAIIIAAoAkAiAQR/IAEoAmhBAEdBAXQFQQALEMoCIARBEGokAAsMACAAQYACaiABECoLKwAgAUHeAU4EQCAAKAIQKAI4IAFBAnRqKAIAIgAgACgCAEEBajYCAAsgAQspACAAIAEgAiADQoCAgIAwQoCAgIAwIARBgM4AchBtIQIgACADEA8gAgsZACAAKAIAIAEQGCEBIABBQGsoAgAgARA5Cy0BAX8CQCAAKAIAIgFFDQAgACgCECIARQ0AIAEoAgAgAEEAIAEoAgQRAQAaCwtcAQF/IABBQGsoAgAiAxDmAkUEQEF/DwsgAkEASARAIAMQMiECCyAAIAFB/wFxEBAgAEFAayIAKAIAIAIQOSAAKAIAKAKkAiACQRRsaiIAIAAoAgBBAWo2AgAgAgsmAQF/IwBBEGsiAiQAIAIgATYCDCAAIAJBDGpBBBByIAJBEGokAAs5ACABQQBOBEAgAEG2ARAQIABBQGsiACgCACABEDkgACgCACIAKAKkAiABQRRsaiAAKAKEAjYCBAsLMwEBfyACBEAgACEDA0AgAyABLQAAOgAAIANBAWohAyABQQFqIQEgAkEBayICDQALCyAACxgBAX4gASkDACEDIAEgAjcDACAAIAMQDwsXACAAIAEgAkKAgICAMCADIARBAhDYAQvABQICfgZ/IwBB4ABrIgkkACADQQAgA0EAShshCwNAIAogC0ZFBEAgACACIApBBHRqIgMoAgAQtAUhBiADLQAEIQdCgICAgDAhBAJAAkACQAJAAkACQAJAAkACQAJAIAMtAAUOCgECAgUHAwQIBQAGCyAAIAMoAggQtAUhCAJ+AkACQAJAIAMoAgxBAWoOAwIAAQkLIAAgACkDwAEiBCAIIARBABAUDAILIAAgACgCKCkDECIEIAggBEEAEBQMAQsgACABIAggAUEAEBQLIQQgACAIEBMgBkHQAUYEQEEBIQcMCAsgBkHZAUcNB0EAIQcMBwsCQCAGQdABRgRAQQEhBwwBCyAGQdkBRw0AQQAhBwsgACABIAZBAiADIAcQlQMaDAcLQoCAgIAwIQUgAygCCARAIAkgAygCADYCECAJQSBqIghBwABBzDwgCUEQahBOGiAAIAMoAgggCEEAQQpBCCADLQAFQQJGGyADLgEGEIIBIQULIAMoAgwEQCAJIAMoAgA2AgAgCUEgaiIIQcAAQcU8IAkQThogACADKAIMIAhBAUELQQkgAy0ABUECRhsgAy4BBhCCASEECyAAIAEgBkKAgICAMCAFIAQgB0GAOnIQbRogACAFEA8gACAEEA8MBgsgAykDCCIEQoCAgIAIfEL/////D1gEQCAEQv////8PgyEEDAULQoCAgIDAfiAEub0iBEKAgICAwIGA/P8AfSAEQv///////////wCDQoCAgICAgID4/wBWGyEEDAQLQoCAgIDAfiADKQMIIgRCgICAgMCBgPz/AH0gBEL///////////8Ag0KAgICAgICA+P8AVhshBAwDCyAAIAEgBkECIAMgBxCVAxoMAwsQAQALIAM1AgghBAsgACABIAYgBCAHEBkaCyAAIAYQEyAKQQFqIQoMAQsLIAlB4ABqJAALMgEBfwJAIAFCIIinQXVJDQAgAaciAiACKAIAIgJBAWs2AgAgAkEBSg0AIAAgARCWBAsLCwAgAEGAMUEAEBULogICAn4BfwJAAkACQAJAAkACQAJAAkACQAJAAkBBByABQiCIpyIEIARBB2tBbkkbQQtqDhMEAgMIBgAAAAAAAQUHAAAAAAEFAAsgAEGVMEEAEBVCgICAgOAADwsgBEF1SQ0IIAGnIgAgACgCAEEBajYCAAwICyAAQSEQdiECDAYLIABBIhB2IQIMBQsgAEEkEHYhAgwECyAAQQQQdiECDAMLIAAgAEEFEHYiAkEwIAGnKQIEQv////8Hg0EAEBkaDAILIABBBhB2IQIMAQsgAEEHEHYhAgtCgICAgOAAIQMgAkKAgICAcINCgICAgOAAUgR+IARBdU8EQCABpyIEIAQoAgBBAWo2AgALIAAgAiABENsBIAIFQoCAgIDgAAsPCyABC9kBAgJ/AX5BfyECAkACQAJAAkACQAJAAkACQCABQiCIpyIDQQtqDhIHBwcFAgUFBQUFBAABAQEFBQYFCyABp0EARw8LIAGnDwsgAacpAgQhBCAAIAEQDyAEQv////8Hg0IAUg8LAAsgAacsAAUhAiAAIAEQDyACQQBODwsgA0EHa0FtTQRAIAFCgICAgMCBgPz/AHxC////////////AINCAX1CgICAgICAgPj/AFQPCyAAIAEQD0EBIQILIAIPCyABpygCDCECIAAgARAPIAJB/////wdqQX5JC6gEAQt/IAAoAgAhBSMAQRBrIgggAjYCDEF/IQkCQANAAkAgCCACIgNBBGoiAjYCDCADKAIAIgdBf0YNACAAKAIEIQoDQCABIgQgCk4NAyAEIAQgBWoiDC0AACIGQQJ0Ig1BgLgBai0AAGoiASAKSg0DIAZBwgFGBEAgDCgAASEJDAELCyAGIAdHBEAgBiAHQf8BcUYgBiAHQQh2Qf8BcUZyIAYgB0EQdkH/AXFGckUgB0EYdiAGR3EgBkUgB0GAAklycg0DIAAgBjYCEAsgBEEBaiEEAkACQAJAAkACQAJAAkACQCANQYO4AWotAABBBWsOGAAJAAkJAQkJAQkJAQEBAgICAgQFBgcJAwkLIAQgBWotAAAhBCAIIANBCGoiAjYCDCADKAIEIgNBf0YEQCAAIAQ2AhQMCQsgAyAERg0IDAkLIAQgBWovAAAhBCAIIANBCGoiAjYCDCADKAIEIgNBf0YEQCAAIAQ2AhQMCAsgAyAERg0HDAgLIAAgBCAFaigAADYCGAwGCyAAIAQgBWoiAygAADYCGCAAIAMvAAQ2AhwMBQsgACAEIAVqKAAANgIgDAQLIAAgBCAFaiIDKAAANgIgIAAgAy0ABDYCHAwDCyAAIAQgBWoiAygAADYCICAAIAMvAAQ2AhwMAgsgACAEIAVqIgMoAAA2AiAgACADKAAENgIYIAAgAy0ACDYCHAwBCwsgACAJNgIMIAAgATYCCEEBIQsLIAsLCwAgACABQQAQjgQLJAEBfyAAKAIQIgJBEGogASACKAIAEQMAIgFFBEAgABB8CyABCyYBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEHIgAkEQaiQACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkEBayICDQALCyAACz8BAX8jAEEQayICJAACfyABIAAoAhBHBEAgAiABNgIAIABBoJgBIAIQFkF/DAELIAAQEgshACACQRBqJAAgAAsLACAAIAFBARDmBQvDCgIFfw9+IwBB4ABrIgUkACAEQv///////z+DIQwgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDUIgiCEOIARCMIinQf//AXEhBwJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAdB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4QhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC////////P1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQZ0EQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQZyAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFatfHxCIIYgEkIgiIR8IgJWrXwgAiACIA8gFFStIA8gF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIAtCP4ghAyAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIAtCAYYhCyADIAFCAYaEIQELIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogCyABIAZB/wBqIgYQZyAFQSBqIAIgBCAGEGcgBUEQaiALIAEgBxCOAiAFIAIgBCAHEI4CIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQsgBSkDKCAFKQMYhCEBIAUpAwAhAiAFKQMIDAILQgAhAQwCCyAEQv///////z+DIAatQjCGhAsgCoQhCiALUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBUK18IQoMAQsgCyABQoCAgICAgICAgH+FhFBFBEAgAiEBDAELIAogAiACQgGDfCIBIAJUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQACyEAIAAgASACQoCAgIAwIAMgBEECENgBIQIgACABEA8gAgumAQEEfyAAQQA2AgQgAVAEQCAAQYCAgIB4NgIIIABBABBBGkEADwsCQCABQv////8PWARAIABBARBBDQEgACgCECABIAGnZyICrYY+AgAg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IAMQ2QEMAgtBACEEIAItAAUiBUEEcUUNACAFQQhxBEAgA0EATg0BIANB/////wdxIgMgAigCKCIFSSEEIAFFIAMgBU9yDQEgAUKAgICAMDcDGCABQoCAgIAwNwMQIAFBBzYCACABIAAgAq1CgICAgHCEIAMQsAE3AwgMAwsgACgCECgCRCACLwEGQRhsaigCFCIFRQ0AIAUoAgAiBUUNACAAIAEgAq1CgICAgHCEIAMgBREXACEECyAEDwtBfw8LQQELoQQBAn8CQAJAIAFCgICAgHBUIAJC/////w9Wcg0AIAKnIgQgAaciAygCKE8NAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAy8BBkECaw4eAAsLCwsLAAsLCwsLCwsLCwsLCwIBAgMEBQYHCAkKCwsgAygCJCAEQQN0aikDACIBQiCIp0F1SQ0LIAGnIgAgACgCAEEBajYCACABDwsgAygCJCAEajAAAEL/////D4MPCyADKAIkIARqMQAADwsgAygCJCAEQQF0ajIBAEL/////D4MPCyADKAIkIARBAXRqMwEADwsgAygCJCAEQQJ0ajUCAA8LIAMoAiQgBEECdGooAgAiAEEATgRAIACtDwtCgICAgMB+IAC4vSIBQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbDwsgACADKAIkIARBA3RqKQMAEIcCDwsgACADKAIkIARBA3RqKQMAEPsDDwtCgICAgMB+IAMoAiQgBEECdGoqAgC7vSIBQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbDwtCgICAgMB+IAMoAiQgBEEDdGopAwAiAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGw8LIAAgAhAxIQMgACACEA8gA0UEQEKAgICA4AAPCyAAIAEgAyABQQAQFCEBIAAgAxATCyABCyoBAX8jAEEQayIEJAAgBCADNgIMIAAgASACIAMQywIhACAEQRBqJAAgAAuMAQECfyABKAJ8IgRBgIAETgRAIABBjTpBABBGQX8PC0F/IQMgACABQfQAakEQIAFB+ABqIARBAWoQeAR/QX8FIAEgASgCfCIDQQFqNgJ8IAEoAnQgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAYNgIA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AwsNACAAIAEgARA/EJMCC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siA0GAAiADQYACSSIBGxArGiABRQRAA0AgACAFQYACEFsgA0GAAmsiA0H/AUsNAAsLIAAgBSADEFsLIAVBgAJqJAALDAAgAEGAAmogARARC74BAgF+AX8CQAJAIAFCgICAgHCDQoCAgIAwUQRAIAAoAiggAkEDdGopAwAiA0IgiKdBdEsNAQwCCyAAIAFBOyABQQAQFCIDQoCAgIBwg0KAgICA4ABRBEAgAw8LIANC/////29WDQEgACADEA8gACABEIADIgRFBEBCgICAgOAADwsgBCgCKCACQQN0aikDACIDQiCIp0F1SQ0BCyADpyIEIAQoAgBBAWo2AgALIAAgAyACEEkhASAAIAMQDyABC3UBAX4gACABIAR+IAIgA358IANCIIgiAiABQiCIIgR+fCADQv////8PgyIDIAFC/////w+DIgF+IgVCIIggAyAEfnwiA0IgiHwgASACfiADQv////8Pg3wiAUIgiHw3AwggACAFQv////8PgyABQiCGhDcDAAtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAtVAQN/IAEgAkEFdSIESwRAIAAgBEECdGooAgAhAwsgAkEfcSICBH8gASAEQQFqIgRLBH8gACAEQQJ0aigCAAVBAAtBAXQgAkEfc3QgAyACdnIFIAMLC2QAAkACQCABQQBIDQAgACgCrAIgAUwNACAAKAKkAiABQRRsaiIAIAAoAgAgAmoiADYCACAAQQBIDQEgAA8LQYUpQa78AEHIqAFBlNUAEAAAC0GmjgFBrvwAQcuoAUGU1QAQAAALYAAgACABIAJCgICAgAh8Qv////8PWAR+IAJC/////w+DBUKAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLIANBh4ABEL0BCwwAIABBhvsAQQAQFQsLACAAIAFBARDBBQvSEAIMfwF+IwBBEGsiCiQAAkACQCABQv////9vWARAIAAQJAwBCyAGQYAwcSIORSAGIAZBCHYiEHEgEEF/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A6ciAiACKAIAQQFqNgIACyAAIAkgAyAGEMsFIQILIAZBggRxQYAERgRAIAogCSgCECIGQTBqNgIMQX8hByAAIAkgCkEMaiAGKAIwQRp2QT1xEJEDDQULIAIhBwwECyAMBEAgACAIKQMAEA8gA0IgiKdBdU8EQCADpyICIAIoAgBBAWo2AgALIAggAzcDAAsgBkGABHFFDQBBfyEHIAAgCSAKQQxqIAooAgwoAgBBGnZBPXEgBkECcXIQkQMNAwtBf0EBIAAgCSAKQQxqIBBBBXEiAEF/cyAKKAIMKAIAQRp2cSAAIAZxchCRAxshBwwCCyAAIAZB4ekAEG8hBwwBC0F/IQcLIApBEGokACAHC/8BAgJ/AXwjAEEQayIEJAACQCACQiCIpyIDQQJNBEAgASACp7c5AwBBACEADAELIANBB2tBbU0EQCABIAJCgICAgMCBgPz/AHw3AwBBACEADAELAn8gACACEI0BIgJCgICAgHCDQoCAgIDgAFEEQEQAAAAAAAD4fyEFQX8MAQsCfAJAAkBBByACQiCIpyIDIANBB2tBbkkbIgNBCmpBAk8EQCADQQdGDQIgAw0BIAKntwwDCyACp0EEaiAEQQhqELUFIAAgAhAPIAQrAwghBUEADAMLEAEACyACQoCAgIDAgYD8/wB8vwshBUEACyEAIAEgBTkDAAsgBEEQaiQAIAALXQECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgACgCECgCjAEiAUUNASABLQAoQQFxRQ0BCyADQQA2AgwgAEEEIAJBABCSBEF/IQQLIANBEGokACAEC8YJAgR/BX4jAEHwAGsiBiQAIARC////////////AIMhCQJAAkAgAVAiBSACQv///////////wCDIgpCgICAgICAwP//AH1CgICAgICAwICAf1QgClAbRQRAIANCAFIgCUKAgICAgIDA//8AfSILQoCAgICAgMCAgH9WIAtCgICAgICAwICAf1EbDQELIAUgCkKAgICAgIDA//8AVCAKQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQQgASEDDAILIANQIAlCgICAgICAwP//AFQgCUKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEEDAILIAEgCkKAgICAgIDA//8AhYRQBEBCgICAgICA4P//ACAC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IAAgAaciAkEAIAIoAgRB/////wdxEFEhAiAAKAIAIAEQDyACC7UCAQd/IwBBEGsiBSQAAkAgAEFAaygCACIBRQRADAELAkAgAQJ/IAEoAsgBIgQgASgCxAEiAkgEQCABKALMASEDIAQMAQsgBEEBaiIDIAJBA2xBAm0iAiACIANIGyIGQQN0IQIgACgCACEDAkAgASgCzAEiByABQdABakYEQCADQQAgAiAFQQxqEKgBIgNFDQMgAyABKALMASABKALIAUEDdBAfGgwBCyADIAcgAiAFQQxqEKgBIgNFDQILIAUoAgwhAiABIAM2AswBIAEgAkEDdiAGajYCxAEgASgCyAELQQFqNgLIASADIARBA3RqIgIgASgCvAE2AgAgAiABKALAATYCBCAAQbQBEBAgAEFAaygCACAEQf//A3EQFyABIAQ2ArwBDAELQX8hBAsgBUEQaiQAIAQLoQECA38BfiMAIQYCQCACQoCAgIBwVA0AIAKnIgUvAQZBMEcNACAFKAIgIQQLAn8gBiAAKAIQKAJ4SQRAIAAQ6QFBAAwBCyAELQARBEAgABC2AkEADAELQQAgACAEKQMIIgIgAyACQQAQFCIHQoCAgIBwgyICQoCAgIDgAFENABogAUKAgICAMCAHIAJCgICAgCBRGzcDACAECyEFIAYkACAFCxYAIAAgASACIAMgBCAFIAApAzAQ8QELKQEBfyMAQRBrIgIkACACIAA2AgwgAkEMaiABEJMEIQAgAkEQaiQAIAALngICA38BfiACIAEpAgQiB6dB/////wdxIANHckUEQCABIAEoAgBBAWo2AgAgAa1CgICAgJB/hA8LIAFBEGohBSAHQoCAgIAIg1AgAyACayIEQQBMckUEQCADIAIgAiADSBshBkEAIQMgAiEBA0AgASAGRkUEQCAFIAFBAXRqLwEAIANyIQMgAUEBaiEBDAELCyADQf//A3FBgAJPBEAgACAFIAJBAXRqIAQQ7gMPC0EAIQEgACAEQQAQ6gEiAEUEQEKAgICA4AAPCyAAQRBqIQMDQCABIARGRQRAIAEgA2ogBSABIAJqQQF0ai0AADoAACABQQFqIQEMAQsLIAMgBGpBADoAACAArUKAgICAkH+EDwsgACACIAVqIAQQhAMLugEBAn8CQAJAIAJC/////wdYBEAgACABIAKnQYCAgIB4chBx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IANBCGogAhDiA0UEQEEAIQQgASADKQMIIgJCgICAgICAgBBaBH4gAEGAIEEAEFBBfyEEQgAFIAILNwMACyADQRBqJAAgBAsRACAAIAEgASACIANBAhCKBAtTAQF/IAAoAhAiBEEQaiABIAIgBCgCCBEBACIBIAJFckUEQCAAEHwgAQ8LIAMEQCADIAEgACgCECgCDBEEACIAIAJrIgJBACAAIAJPGzYCAAsgAQvAAQAgAAJ/IAEoAggiAEH+////B04EQEEAIAJBAXENARpB/////wcgAEH+////B0cNARogASgCBEH/////B2oMAQtBACAAQQBMDQAaIABBH00EQEEAIAEoAhAgASgCDEECdGpBBGsoAgBBICAAa3YiAmsgAiABKAIEGwwBCyACQQFxRQRAQYCAgIB4Qf////8HIAEoAgQbDAELQQAgASgCECABKAIMIgIgAkEFdCAAaxBoIgJrIAIgASgCBBsLNgIACw0AIAAgASABED8QhQML+QECA34CfyMAQRBrIgUkAAJ+IAG9IgNC////////////AIMiAkKAgICAgICACH1C/////////+//AFgEQCACQjyGIQQgAkIEiEKAgICAgICAgDx8DAELIAJCgICAgICAgPj/AFoEQCADQjyGIQQgA0IEiEKAgICAgIDA//8AhAwBCyACUARAQgAMAQsgBSACQgAgA6dnQSBqIAJCIIinZyACQoCAgIAQVBsiBkExahBnIAUpAwAhBCAFKQMIQoCAgICAgMAAhUGM+AAgBmutQjCGhAshAiAAIAQ3AwAgACACIANCgICAgICAgICAf4OENwMIIAVBEGokAAu2AQEBfyMAQRBrIgMkAAJAAkAgAkEASARAIAEgAkH/////B3E2AgBBASECDAELIAAoAhAiACgCLCACTQ0BAn8CQCAAKAI4IAJBAnRqKAIAIgApAgRCgICAgICAgIBAg0KAgICAgICAgMAAUg0AIANBDGogABC9BUUNAEEBIAMoAgwiAEF/Rw0BGgtBACEAQQALIQIgASAANgIACyADQRBqJAAgAg8LQe/fAEGu/ABBvxhBryAQAAAL1QECAn8DfgJ/IAJFBEBCgICAgDAhBUEADAELIAAoAhAiAykDgAEhBSADQoCAgIAgNwOAAUF/CyEDAkAgACABQQYgAUEAEBQiB0KAgICAcIMiBkKA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BUEgahBGQX8MAQsCQCABKAIEIARODQAgASAENgIEIARB//8DSA0AIAUgAjYCBCAFIAM2AgAgAEGjkwEgBRBGQX8MAQsgASgCCCACQQF0aiIDLwEAIgZB//8DRwRAQQAgBCAGRg0BGiAFIAI2AhggBSAENgIUIAUgBjYCECAAQdSSASAFQRBqEEZBfwwBCyADIAQ7AQBBfyAAIAFBDGpBBCABQRRqIAEoAhBBAWoQeA0AGiABIAEoAhAiAEEBajYCECABKAIMIABBAnRqIAI2AgBBAAshAyAFQTBqJAAgAwsTACAAIAEgAiADIARBAEEAEPgBCzkAIABB/wBNBEAgAEEDdkH8////AXFBoIECaigCACAAdkEBcQ8LIABBfnFBjMAARiAAENIEQQBHcgtmAQF/An9BACAAKAIIIgIgAU8NABpBfyAAKAIMDQAaIAAoAhQgACgCACACQQNsQQF2IgIgASABIAJJGyIBIAAoAhARAQAiAkUEQCAAQQE2AgxBfw8LIAAgATYCCCAAIAI2AgBBAAsLrAECAX8BfiAAKQIEIgSnQf////8HcSEDAkACQCAEQoCAgIAIg1BFBEAgAiADIAIgA0obIQMgAEEQaiEAA0AgAiADRg0CIAAgAkEBdGovAQAgAUYNAyACQQFqIQIMAAsACyABQf8BSw0AIAIgAyACIANKGyEDIABBEGohACABQf8BcSEBA0AgAiADRg0BIAAgAmotAAAgAUYNAiACQQFqIQIMAAsAC0F/IQILIAILpgEBAX8jAEEQayIDJAAgAyACNwMIAkAgACABQYYBIAFBABAUIgJCgICAgHCDQoCAgIDgAFENACAAIAIQOARAIAAgAiABQQEgA0EIahAvIgJC/////29WIAJCgICAgLB/g0KAgICAIFFyDQEgACACEA8gAEGK0wBBABAVQoCAgIDgACECDAELIAAgAhAPIAAgASADIANBCGoQ8QQhAgsgA0EQaiQAIAILowECA38BfiAAQRBqIQIgASgCACIEQQFqIQMCQCAAKQIEIgVCgICAgAiDUEUEQCACIARBAXRqLwEAIgBBgPgDcUGAsANHIAMgBadB/////wdxTnINASACIANBAXRqLwEAIgJBgPgDcUGAuANHDQEgAEEKdEGA+D9xIAJB/wdxckGAgARqIQAgBEECaiEDDAELIAIgBGotAAAhAAsgASADNgIAIAALUQEDfwJAA0AgAUKAgICAcFQNASABpyICLwEGIgRBMEYEQCACKAIgIgJFDQIgAi0AEQRAIAAQtgJBfw8LIAIpAwAhAQwBCwsgBEECRiEDCyADCxIAIAAgASACIAMgBEHKABCkBAtOAQF/IAAoAgwiBEUEQEEADwsgACAAKAIIQf////8DQYGAgIB8IAEgAUGBgICAfEwbIgEgAUH/////A04bajYCCCAAIAIgAyAEQQAQqgMLJQAgACABIAAoAhAoAowBIgAEfyAAKAIoQQJ2QQFxBUEACxCWBQsfAQF/IAAoAgwiA0UEQEEADwsgACABIAIgA0EAEKoDC90BAgJ/An4CQCAAIAApAzBBDxBJIghCgICAgHCDQoCAgIDgAFENACAAIARBA3RBCGoQKSIGRQRAIAAgCBAPDAELIAYgAzsBBiAGIAQ6AAUgBiACOgAEIAYgATYCAEEAIQMgBEEAIARBAEobIQEDQCABIANHBEAgBSADQQN0IgRqKQMAIglCIIinQXVPBEAgCaciByAHKAIAQQFqNgIACyAEIAZqIAk3AwggA0EBaiEDDAELCyAIQoCAgIBwWgRAIAinIAY2AiALIAAgCEEvIAIQlgMgCA8LQoCAgIDgAAuDCwIHfwF+IwBBIGsiCSQAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAIAFCIIinQQFqDgUDAgIAAQILIAAgAxAPIAAgAkHm0wAQjwFBfyEFDAoLIAAgAxAPIAAgAkHR+AAQjwFBfyEFDAkLIAAgARCNBKchBgwBCyABpyEGAkADQCAGKAIQIgdBMGohCCAHIAcoAhggAnFBf3NBAnRqKAIAIQUDQCAFRQRAIAYhB0EADAULIAIgCCAFQQFrQQN0IgdqIgUoAgRHBEAgBSgCAEH///8fcSEFDAELCyAGKAIUIAdqIQcgBSgCACIIQYCAgMB+cUGAgIDAAEYEQCAAIAcgAxAgDAULAkAgCEGAgICAAnEEQCAGLwEGQQJHDQEgAkEwRw0DIAAgBiADIAQQywUhBQwLCyAIQRp2QTBxIghBMEcEQCAIQSBHBEAgCEEQRw0IIAAgBygCBCABIAMgBBCLAyEFDAwLIAYvAQZBC0YNByAAIAcoAgAoAhAgAxAgDAYLIAAgBiACIAcgBRDIAkUNAQwJCwtB2YABQa78AEGPwgBBuNYAEAAAC0HK2ABBrvwAQZDCAEG41gAQAAALQQELIQUDQAJAAkAgBUUEQAJAIAYtAAUiBUEEcUUNAAJAIAVBCHEEQCACQQBIBEAgAkH/////B3EiBSAGKAIoTw0CIAYgB0cNBSAAIAEgBa0gAyAEENcBIQUMDQsgBi8BBkEVa0H//wNxQQpLDQIgACACEJ4DIghFDQJBfyEFIAhBAE4NCQwKCyAAKAIQKAJEIAYvAQZBGGxqKAIUIgVFDQEgBSgCGCIIBEAgBiAGKAIAQQFqNgIAIAAgBq1CgICAgHCEIgwgAiADIAEgBCAIES0AIQUgACAMEA8MCgsgBSgCACIFRQ0BIAYgBigCAEEBajYCACAAIAkgBq1CgICAgHCEIgwgAiAFERcAIQUgACAMEA8gBUEASA0JIAVFDQEgCS0AAEEQcQRAIAAgCSkDGCIMp0EAIAxCgICAgHCDQoCAgIAwUhsgASADIAQQiwMhBSAAIAkpAxAQDyAAIAkpAxgQDwwMCyAAIAkpAwgQDyAJLQAAQQJxRQ0HIAYgB0cNAyAAIAEgAiADQoCAgIAwQoCAgIAwQYDAABBtIQUMCQsgBi8BBkEVa0H//wNxQQtJDQcLIAYoAhAoAiwhBkEBIQUMAwsgBkUNAANAIAYoAhAiBUEwaiEKIAUgBSgCGCACcUF/c0ECdGooAgAhBQNAIAVFDQMgAiAKIAVBAWtBA3QiBWoiCCgCBEcEQCAIKAIAQf///x9xIQUMAQsLIAYoAhQgBWohCgJAIAgoAgAiBUEadkEwcSILQTBHBEAgC0EQRw0BIAAgCigCBCABIAMgBBCLAyEFDAsLQX8hBSAAIAYgAiAKIAgQyAJFDQEMCgsLIAVBgICAwABxDQEMBAsgBEGAgARxBEAgACADEA8gACACEMcCQX8hBQwICyAHRQRAIAAgAxAPIAAgBEGAMRBvIQUMCAsgBy0ABSIGQQFxRQRAIAAgAxAPIAAgBEH36AAQbyEFDAgLIAZBBHEEQAJAIAJBAE4NACAGQQhxRSAHLwEGQQJHcg0AIAcoAiggAkH/////B3FHDQAgACAHIAMgBBD9AyEFDAkLIAAgByACIANCgICAgDBCgICAgDAgBEGHzgByEIEEIQUMBgsgACAHIAJBBxB6IgJFDQYgAiADNwMADAILQQAhBQwACwALQQEhBQwECyAAIAMQDyAAIAQgAhDAAiEFDAMLIAAgACADEI0BIgEQD0F/IQUgAUKAgICAcINCgICAgOAAUQ0CIAAgBEGUIBBvIQUMAgsgACADEA8MAQsgACADEA9BfyEFCyAJQSBqJAAgBQsOACAAQQAgAUEQchDOAQthACAAIAEgAkKAgICACHxC/////w9YBH4gAkL/////D4MFQoCAgIDAfiACub0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsgAyAEQQdyEL0BC6sBAQh/IAAoAggiAyABKAIIIgJHBEBBf0EBIAIgA0obDwsgASgCDCIFIAAoAgwiBiAFIAUgBkgbIgJrIQggBiACayEJAn8DQEEAIAJBAWsiAkEASA0BGkEAIQNBACEEIAIgCWoiByAGSQRAIAAoAhAgB0ECdGooAgAhBAsgAiAIaiIHIAVJBEAgASgCECAHQQJ0aigCACEDCyADIARGDQALQX9BASADIARLGwsLigEBAn8gASgCECIDLQAQRQRAQQAPCwJAIAMoAgBBAUcEQCACBH8gAigCACADa0Ewa0EDdQVBAAshBCAAIAMQzgUiA0UEQEF/DwsgACgCECABKAIQEJECIAEgAzYCECACRQ0BIAIgAyAEQQN0akEwajYCAEEADwsgACgCECADEJAEIANBADoAEAtBAAt7AQF/QX8hBAJAIAAgARAlIgFCgICAgHCDQoCAgIDgAFENACAAIAGnIAIQ+QMhBCAAIAEQDyAEDQAgA0GAgAFxRQRAQQAhBCADQYCAAnFFDQEgACgCECgCjAEiAkUNASACLQAoQQFxRQ0BCyAAQawbQQAQFUF/IQQLIAQLNQAgACACQTAgAkEAEBQiAkKAgICAcINCgICAgOAAUQRAIAFBADYCAEF/DwsgACABIAIQmAELxAUBBH8jAEEgayIIJAACQAJAAkACQAJAIAFCgICAgHBUIAJC/////w9Wcg0AIAKnIQYCQAJAAkACQAJAAkACQAJAAkACQCABpyIFLwEGQQJrDh4ACgoKCgoJCgoKCgoKCgoKCgoKBwYGBQUEBAMDAgEKCyAFKAIoIgcgBksNCyAGIAdHDQkgBS0ABUEJcUEJRw0JIAUoAhAhBgNAAkAgBigCLCIHBEAgBygCECEGAkAgBy8BBkEBaw4CAAINCyAGLQARRQ0CDAwLIAAgBSADIAQQ/QMhBwwPCyAHLQAFQQhxDQALDAkLQX8hByAAIAhBGGogAxBuDQwgBSgCKCAGTQ0GIAUoAiQgBkEDdGogCCsDGDkDAAwLC0F/IQcgACAIQRhqIAMQbg0LIAUoAiggBk0NBSAFKAIkIAZBAnRqIAgrAxi2OAIADAoLIAAgCEEIaiADEMUFDQcgBSgCKCAGTQ0EIAUoAiQgBkEDdGogCCkDCDcDAAwJC0F/IQcgACAIQRRqIAMQmAENCSAFKAIoIAZNDQMgBSgCJCAGQQJ0aiAIKAIUNgIADAgLQX8hByAAIAhBFGogAxCYAQ0IIAUoAiggBk0NAkEBIQcgBSgCJCAGQQF0aiAIKAIUOwEADAgLQX8hByAAIAhBFGogAxCYAQ0HIAUoAiggBk0NASAFKAIkIAZqIAgoAhQ6AAAMBgtBfyEHIAAgCEEUaiADEMQFDQYgBSgCKCAGTQ0AIAUoAiQgBmogCCgCFDoAAAwFCyAAIARBlCAQbyEHDAULIAUoAiggBk0NACAAIAUoAiQgBkEDdGogAxAgDAMLIAAgAhAxIQUgACACEA8gBUUEQCAAIAMQDwwBCyAAIAEgBSADIAQQ0AEhByAAIAUQEwwDC0F/IQcMAgsgACAFKAIkIAZBA3RqIAMQIAtBASEHCyAIQSBqJAAgBwuuyAEDJn8HfgN8IwBBoAFrIgghDiAIJAAgACgCECEWQoCAgIDgACEuAkAgABB7DQACfwJAAkACQAJAAkAgAUL/////b1gEQCAGQQRxRQ0BIAGnIgcoAjwhCCAHKAIYIhooAiQhFCAaKAIgIhMoAjAhBiATLwEqIQ0gB0EANgI8IAcgFigCjAE2AhAgBygCICEVIAcoAjAhCiAHKAIkIREgFiAHQRBqIhI2AowBIBEgDUEDdGohHCAVIRcgCiENIAcoAgxFDQQMBQsgAaciGi8BBiIHQQ1GDQIgFigCRCAHQRhsaigCECIIDQELIABBm8wAQQAQFQwFCyAAIAEgAiAEIAUgBiAIERYAIS4MBAsgFigCeCAOIBooAiAiEy8BLiATLwEqIgtqIBMvASgiByAHQQAgBCAHSBsgBkECcUEBdhsiBmpBA3QiFWtLBEAgABDpAQwECyATLQAQIQogDiAOQcgAaiIXNgJMIA4gBDYCVCAOIAo2AlggDiAXNgJIIA4gATcDOCAaKAIkIRQgCCAVQQ9qQfD//wFxayIXJAAgBSEVIAYEQCAHIAQgByAEIAdIGyIIQQAgCEEAShsiCGsiFUEAIAcgFU8bIREDQAJAIAggCUYEQANAIAggEUYNAiAXIAhBA3RqQoCAgIAwNwMAIAhBAWohCAwACwALIAUgCUEDdCIVaikDACIBQiCIp0F1TwRAIAGnIgogCigCAEEBajYCAAsgFSAXaiABNwMAIBFBAWohESAJQQFqIQkMAQsLIA4gBzYCVCAXIRULIA4gFTYCQCAOIBcgBkEDdGoiETYCREEAIQgDQCAIIAtHBEAgESAIQQN0akKAgICAMDcDACAIQQFqIQgMAQsLIBMoAhQhCiAOIBYoAowBNgIwIBYgDkEwaiISNgKMASATKAIwIQYgESALQQN0aiIIIRwLQQAMAQtBAQshBwNAAkACQAJAAkAgB0UEQCAEQQN0IScgA0KAgICAcIMhMyARQQhqIR0gEUEQaiEeIBFBGGohHyAVQQhqISAgFUEQaiEhIBVBGGohIiASQRhqISggBkHIAWohGyAcQRhqISkgBkHAAWohGSACQiCIpyIkQX5xISogA0IgiKchKyAErSEyIAOnISUgDkEwaiEsIA5B6ABqISYgCCEHAkADQAJAIApBAWohDUIBIS5CgICAgDAhAQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCi0AACIJQQFrDvUBAAElCZIBCgsMDQ4PEBESExQVGBYXGRobHCEiIyQdIB4fKScnKiorLNsB+gEtLi8w2QExMjM0NTY3ODk5Ojo7nwGiAT08Po8BkAGRAZMBlAGVAZ0BngGhAaABowGWAZcBmAGZAZoBpAGmAacBmwGbAZwBnAE/QEFCQ0RsbW5yc3R1b3Bxdn18eYABgQGCAcsBzAHNAc4BzgHOAc4BzgHOAXd3d3iDAYUBhwGEAYYBiQGIAYoBiwGMAY0B2QH5AdgB2AHaAbABrwGyAbEBswGzAbUBtAGpAbYBjgHIAckBygGrAawBrQGoAaoBrgG3AbkBuAG9Ab4BvwHAAccBxgHBAcIBwwHEAboBvAG7AdQBxQGtAfMBAgICAgICAgICAwQFBgdFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamsIf357eiYmJibPAdAB0QHSAdYBCyAIIAo1AAE3AwAgCkEFaiENIAhBCGohBwzyAQsgEygCNCANKAAAQQN0aikDACIBQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCCABNwMAIApBBWohDSAIQQhqIQcM8QELIAggCUG1AWutNwMAIAhBCGohBwzwAQsgCCAKMAABQv////8PgzcDACAKQQJqIQ0gCEEIaiEHDO8BCyAIIAoyAAFC/////w+DNwMAIApBA2ohDSAIQQhqIQcM7gELIBMoAjQgCi0AAUEDdGopAwAiAUIgiKdBdU8EQCABpyIHIAcoAgBBAWo2AgALIApBAmohDSAIIAE3AwAgCEEIaiEHDO0BCyATKAI0IAotAAFBA3RqKQMAIgFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAKQQJqIQ0gCCAGIAEgFCASEIwEIgE3AwAgCEEIaiEHIAFCgICAgHCDQoCAgIDgAFIN7AEM7gELIAggBkEvEC03AwAgCEEIaiEHDOsBCyAGIAhBCGsiBykDACIBQTAgAUEAEBQiAUKAgICAcINCgICAgOAAUQ3uASAGIAcpAwAQDyAHIAE3AwAM5AELIAggBiAKKAABEFw3AwAgCkEFaiENIAhBCGohBwzpAQsgCEKAgICAMDcDACAIQQhqIQcM6AELIAhCgICAgCA3AwAgCEEIaiEHDOcBCwJAAkACQCAkQX9GDQAgEy0AEEEBcQ0AICpBAkYEQCAZKQMAIi5CIIinQXRLDQIMAwsgBiACECUiLkKAgICAcINCgICAgOAAUg0CDO0BCyACIS4gJEF1SQ0BCyAupyIHIAcoAgBBAWo2AgALIAggLjcDACAIQQhqIQcM5gELIAhCgICAgBA3AwAgCEEIaiEHDOUBCyAIQoGAgIAQNwMAIAhBCGohBwzkAQsgCCAGEDQiATcDACAIQQhqIQcgAUKAgICAcINCgICAgOAAUg3jAQzlAQsgCkECaiENAkACQAJAAkACQAJAAkACQCAKLQABDgcAAQIDBAUGBwsCQCAGIAYoAigpAwhBCBBJIgFCgICAgHCDQoCAgIDgAFIEQCAGIAGnIgtBMEEDEHogMjcDACAEQQBMBEBBACEJDOsBC0EAIQcgBiAnECkiCQ0BIAYgARAPCyAIQoCAgIDgADcDACAIQQhqIQgM7gELA0AgBCAHRg3pASAFIAdBA3QiCmopAwAiLUIgiKdBdU8EQCAtpyIMIAwoAgBBAWo2AgALIAkgCmogLTcDACAHQQFqIQcMAAsACyATLwEoIQkgBiAGKAIoKQMIQQkQSSIBQoCAgIBwg0KAgICA4ABRDeYBIAYgAaciDEEwQQMQeiAyNwMAQQAhByAEIAkgBCAJSBsiCUEAIAlBAEobIQ8DQCAHIA9HBEAgBiASIAdBARCLBCILRQ3nASAGIAwgB0GAgICAeHJBJxB6IhAEQCAQIAs2AgAgB0EBaiEHDAIFIAYoAhAgCxDrAQzoAQsACwsDQCAEIAlHBEAgBSAJQQN0aikDACItQiCIp0F1TwRAIC2nIgcgBygCAEEBajYCAAsgBiABIAkgLUEHEK8BIQcgCUEBaiEJIAdBAE4NAQznAQsLIAYpA6gBIi1CIIinQXVPBEAgLaciByAHKAIAQQFqNgIACyAGIAFB0QEgLUEDEBkaIAYoAhAoAowBKQMIIi1CIIinQXVPBEAgLaciByAHKAIAQQFqNgIACyAGIAFBzgAgLUEDEBkaIAggATcDACAIQQhqIQcM6AELIBIpAwgiAUIgiKdBdU8EQCABpyIHIAcoAgBBAWo2AgALIAggATcDACAIQQhqIQcM5wELICtBdU8EQCAlICUoAgBBAWo2AgALIAggAzcDACAIQQhqIQcM5gELIAggGigCKCIHBH4gByAHKAIAQQFqNgIAIAetQoCAgIBwhAVCgICAgDALNwMAIAhBCGohBwzlAQsgCCAGQoCAgIAgEEciATcDACAIQQhqIQcgAUKAgICAcINCgICAgOAAUg3kAQzmAQsCQCAGEOIFIgkEQCAGIAkQ4QUhByAGIAkQEyAHDQELIAZBgyVBABAVIAhCgICAgOAANwMAIAhBCGohCAzoAQsgBykDaCIuQoCAgIBwg0KAgICAMFEEQCAGQoCAgIAgEEciLkKAgICAcINCgICAgOAAUQRAIAhCgICAgOAANwMAIAhBCGohCAzpAQsgByAuNwNoCyAuQiCIp0F1TwRAIC6nIgcgBygCAEEBajYCAAsgCCAuNwMAIAhBCGohByAuQoCAgIBwg0KAgICA4ABSDeMBDOUBCxABAAsgCkEDaiENIAovAAEhCQJAIAYQPiIBQoCAgIBwg0KAgICA4ABSBEAgBCAJIAQgCUobIQsgCSEHA0AgByALRg0CIAUgB0EDdGopAwAiLUIgiKdBdU8EQCAtpyIMIAwoAgBBAWo2AgALIAcgCWshDCAHQQFqIQcgBiABIAwgLUEHEK8BQQBODQALIAYgARAPCyAIQoCAgIDgADcDACAIQQhqIQgM5gELIAggATcDACAIQQhqIQcM4QELIAYgCEEIayIHKQMAEA8M4AELIAYgCEEQayIHKQMAEA8gByAIQQhrIgcpAwA3AwAM3wELIAYgCEEYayIHKQMAEA8gByAIQRBrIgcpAwA3AwAgByAIQQhrIgcpAwA3AwAM3gELIAhBCGspAwAiAUIgiKdBdU8EQCABpyIHIAcoAgBBAWo2AgALIAggATcDACAIQQhqIQcM3QELIAhBEGspAwAiAUIgiKdBdU8EQCABpyIHIAcoAgBBAWo2AgALIAggATcDACAIQQhrKQMAIgFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAIIAE3AwggCEEQaiEHDNwBCyAIQRhrKQMAIgFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAIIAE3AwAgCEEQaykDACIBQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCCABNwMIIAhBCGspAwAiAUIgiKdBdU8EQCABpyIHIAcoAgBBAWo2AgALIAggATcDECAIQRhqIQcM2wELIAggCEEIayIHKQMANwMAIAhBEGspAwAiAUIgiKdBdU8EQCABpyIKIAooAgBBAWo2AgALIAcgATcDACAIQQhqIQcM2gELIAggCEEIayIHKQMAIgE3AwAgByAIQRBrIgcpAwA3AwAgAUIgiKdBdU8EQCABpyIKIAooAgBBAWo2AgALIAcgATcDACAIQQhqIQcM2QELIAggCEEIayIHKQMAIgE3AwAgCEEQayIKKQMAIS0gCiAIQRhrIgopAwA3AwAgByAtNwMAIAFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAKIAE3AwAgCEEIaiEHDNgBCyAIIAhBCGsiBykDACIBNwMAIAhBEGsiCikDACEtIAogCEEYayIKKQMANwMAIAcgLTcDACAKIAhBIGsiBykDADcDACABQiCIp0F1TwRAIAGnIgogCigCAEEBajYCAAsgByABNwMAIAhBCGohBwzXAQsgCEEQayIHKQMAIQEgByAIQRhrIgcpAwA3AwAgByABNwMADNABCyAIQRhrIgcpAwAhASAHIAhBEGsiBykDADcDACAIQQhrIgopAwAhLSAKIAE3AwAgByAtNwMADM8BCyAIQSBrIgcpAwAhASAHIAhBGGsiBykDADcDACAIQRBrIgopAwAhLSAKIAhBCGsiCikDADcDACAHIC03AwAgCiABNwMADM4BCyAIQShrIgcpAwAhASAHIAhBIGsiBykDADcDACAIQRhrIgopAwAhLSAKIAhBEGsiCikDADcDACAHIC03AwAgCiAIQQhrIgcpAwA3AwAgByABNwMADM0BCyAIQQhrIgcpAwAhASAHIAhBEGsiBykDADcDACAIQRhrIgopAwAhLSAKIAE3AwAgByAtNwMADMwBCyAIQRBrIgcpAwAhASAHIAhBGGsiBykDADcDACAIQSBrIgopAwAhLSAKIAE3AwAgByAtNwMADMsBCyAIQRBrIgcpAwAhASAHIAhBGGsiBykDADcDACAIQSBrIgopAwAhLSAKIAhBKGsiCikDADcDACAHIC03AwAgCiABNwMADMoBCyAIQQhrIgcpAwAhASAHIAhBEGsiBykDADcDACAHIAE3AwAMyQEL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ayIHKQMAIgFC/////z9YBEAgAacMAQsgBiABECYLBH8gCQUgDSgAACAJakEEawshDSAGEHtFDXUMJwsgCkECaiEJAn8gCEEIayIHKQMAIgFC/////z9YBEAgAacMAQsgBiABECYLBH8gDSwAACAJakEBawUgCQshDSAGEHtFDXQMJgsgCkECaiEJAn8gCEEIayIHKQMAIgFC/////z9YBEAgAacMAQsgBiABECYLBH8gCQUgDSwAACAJakEBawshDSAGEHtFDXMMJQsgCCANIAooAAFqIBMoAhRrrUKAgICA0ACENwMAIApBBWohDSAIQQhqIQcMcgsgCigAASEHIAggCiATKAIUa0EFaq03AwAgByANaiENIAhBCGohBwxxCwJAIAhBCGsiBykDACIBQv////8PVg0AIAGnIgkgEygCGE8NACATKAIUIAlqIQ0McQsgBkH14QBBABBGDHQLIAhBCGsiDykDACItQiCIpyIHQQFqIglBBE1BAEEBIAl0QRlxG0UEQCAGIC0Q3AUhLQsCQCAGQRgQKSIJBEAgBkKAgICAIEEREEkiLkKAgICAcINCgICAgOAAUg0BIAYoAhAiB0EQaiAJIAcoAgQRAAALIC0hLgxlCyAJQQA2AhAgCSAtNwMAIAlBADYCCCAupyAJNgIgIAdBfnFBAkYNZSAtIgFCIIinIgdBdU8EQCAtpyILIAsoAgBBAWo2AgALA0AgBiABEIwCIgFCgICAgHCDIi9CgICAgCBSBEAgL0KAgICA4ABRDWYgBiAOQeAAaiAOQYABaiABp0EREI4BDWUgBiAOKAJgIA4oAoABIgsQWiALBEAgBiABEA8gB0F1SQ1lIC2nIgcgBygCAEEBajYCAAxlCyAGEHtFDQEMZQsLAkACQCAtpyIMLQAFQQhxRQ0AQQAhByAMKAIQIgsoAiAiEEEAIBBBAEobIRAgC0EwaiELA0AgByAQRg0CIAstAANBEHENASALQQhqIQsgB0EBaiEHDAALAAsgBiAOQeAAaiAOQYABaiAMQREQjgENZUEAIQcgDigCYCEKIA4oAoABIQkDQCAHIAlHBEAgBiAuIAogB0EDdGooAgRCgICAgCBBABDQARogB0EBaiEHDAELCyAGIAogCRBaDGYLIAlBATYCCCAJIAwoAig2AgwMZQtCgYCAgBAhLgJAIAhBCGspAwAi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/wB8v6G9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhs3AwAMSAsCfCAIQQhrIgcpAwAiLUIgiKciDCAIQRBrIgspAwAiLkIgiKciD3JFBEAgLcQgLsR+IgFCgICAgAh8QoCAgIAQWgRAIBItAChBBHFBACABQoCAgICAgIAQfUKBgICAgICAYFQbDQUgAbkMAgtEAAAAAAAAAIAgLSAuhEKAgICACINQIAFCAFJyRQ0BGiALIAFC/////w+DNwMADEkLIA9BB2tBbUsgDEEHa0FtS3INAyASLQAoQQRxDQMgLkKAgICAwIGA/P8AfL8gLUKAgICAwIGA/P8AfL+iCyE0IAtCgICAgMB+IDS9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhs3AwAMRwsgCEEIayIHKQMAIgEgCEEQayILKQMAIi2EQv////8PVg0BIBItAChBBHENASALAn4gLae3IAGnt6MiNL0iAQJ/IDSZRAAAAAAAAOBBYwRAIDSqDAELQYCAgIB4CyIIt71RBEAgCK0MAQtCgICAgMB+IAFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhsLNwMADEYLIAhBCGsiBykDACIBIAhBEGsiCykDACIthEL/////D1YNACAtpyIMQQBIDQAgAaciD0EATA0AIAsgDCAPcK03AwAMRQsjAEEgayIHJAACfwJAAkACQAJAAn4CQAJAAkACQAJAAkACQEEHIAhBEGsiCykDACIBQiCIpyIMIAxBB2tBbkkbIgxBB0dBByAIQQhrIiMpAwAiLkIgiKciDyAPQQdrQW5JGyIPQQdHckUEQCAHIC5CgICAgMCBgPz/AHw3AwggByABQoCAgIDAgYD8/wB8NwMQDAELAkAgDEF/RiAPQX5xQQJHcUUgDEF+cUECRiAPQX9HcnENACAGIAdBGGogASAuIAlBAUEAEIUCIgxFDQAgBiABEA8gBiAuEA8gDEEASA0MIAsgBykDGDcDAAwJCyAGIAEQbCIBQoCAgIBwg0KAgICA4ABRDQogBiAuEGwiLkKAgICAcINCgICAgOAAUQRAIAYgARAPDAwLQQcgAUIgiKciDCAMQQdrQW5JGyIMQQcgLkIgiKciDyAPQQdrQW5JGyIPckUEQCAupyEMIAGnIQ8CQAJAAkACQAJAAkAgCUGaAWsOBgABAgkFAwQLIC7EIAHEfiEtAkAgBigCECIQKAKMASIYRQ0AIBgtAChBBHFFDQAgLUKAgICAgICAEH1CgYCAgICAgGBUDQgLQgAhASAtQgBSDQogDCAPckEATg0LIAtCgICAgMD+/wM3AwAMDgsgBigCECIQKAKMASIYBEAgGC0AKEEEcQ0HCyALQoCAgIDAfiAPtyAMt6O9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhs3AwAMDQsgDEEASiAPQQBOcUUEQCALAn4gD7cgDLcQjgMiNL0iAQJ/IDSZRAAAAAAAAOBBYwRAIDSqDAELQYCAgIB4CyIJt71RBEAgCa0MAQtCgICAgMB+IAFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhsLNwMADA0LIA8gDHCtIS0MCAsgBigCECIQKAKMASIYBEAgGC0AKEEEcQ0FCyAPtyE0IAsCfgJ8IAy3IjW9QoCAgICAgID4/wCDQoCAgICAgID4/wBRBEBEAAAAAAAA+H8gNJlEAAAAAAAA8D9hDQEaCyA0IDUQjwMLIjS9IgECfyA0mUQAAAAAAADgQWMEQCA0qgwBC0GAgICAeAsiCbe9UQRAIAmtDAELQoCAgIDAfiABQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbCzcDAAwLCyAJQbIBRg0FDAQLIAHEIC7EfSEtDAULIAxBdUcgD0F1R3FFBEAgBiAJIAsgASAuIAYoAhAoAtgCERoADQwMCQsgDEF3RyAPQXdHcUUEQCAGIAkgCyABIC4gBigCECgCvAIRGgBFDQkMDAsgDEF2RyAPQXZHcUUEQCAGKAIQIRAMAgsgBiAHQRBqIAEQbg0KIAYgB0EIaiAuEG4NCwsCQCAGKAIQIhAoAowBIgxFDQAgDC0AKEEEcUUNACAHKwMQEL0CRQ0AIAcrAwgQvQINAQsCQAJAAkACQAJAAkACQCAJQZoBaw4GAAECCAUEAwsgBysDECAHKwMIoiE0DAULIAcrAxAgBysDCKMhNAwECyAHKwMQIAcrAwgQjgMhNAwDCyAJQbIBRw0EIAcrAxAgBysDCJkiNRCOAyI0RAAAAAAAAAAAY0UNAiA1IDSgITQMAgsgBysDECE1IAcrAwgiNr1CgICAgICAgPj/AINCgICAgICAgPj/AFEEQEQAAAAAAAD4fyE0IDWZRAAAAAAAAPA/YQ0CCyA1IDYQjwMhNAwBCyAHKwMQIAcrAwihITQLIAtCgICAgMB+IDS9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhs3AwAMBwsgBiAJIAsgASAuIBAoAqACERoARQ0GDAkLEAEACyAMRQ0FIAHEIC7EIgGBIi1CAFkNACAMQQBIBEAgLSABfSEtDAELIAEgLXwhLQsgLUKAgICACHxC/////w9WDQEgLSEBCyABQv////8PgwwBC0KAgICAwH4gLbm9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhsLIQEgCyABNwMAC0EADAMLIAZBAhCEAgwBCyAGIC4QDwsgC0KAgICAMDcDACAjQoCAgIAwNwMAQX8LIQkgB0EgaiQAIAkNSCAIQQhrIQcMRAsgCEEEaygCACIHRSAHQQdrQW5Jcg09IAghByAGIAhBjQEQ5gFFDUMMRwsCQAJ8IAhBCGsiBykDACIBQiCIpyIJRQRARAAAAAAAAACAIAGnIgpFDQEaRAAAAAAAAOBBIApBgICAgHhGDQEaIAdCACABfUL/////D4M3AwAMPwsgCUEHa0FtSw0BIAFCgICAgMD+/wN9vwshNCAHQoCAgIDAfiA0vSIBQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbNwMADD0LIAghByAGIAhBjAEQ5gFFDUIMRgsgCEEIayIHKQMAIgFC/////w9WIAFC/////w+DQv////8HUXJFBEAgByABQgF8Qv////8PgzcDAAw8CyAIIQcgBiAIQY8BEOYBRQ1BDEULIAhBCGsiBykDACIBQv////8PViABQv////8Pg0KAgICACFFyRQRAIAcgAUIBfUL/////D4M3AwAMOwsgCCEHIAYgCEGOARDmAUUNQAxECyAGIAhBCGsiBykDABBsIgFCgICAgHCDQoCAgIDgAFEEQCAHQoCAgIAwNwMADEQLIAcgATcDACABQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCCABNwMAIAYgCEEIaiIHIAlBAmsQ5gFFDT8MQwsgCkECaiENIBEgCi0AAUEDdGoiBykDACIBQv////8PViABQv////8Pg0L/////B1FyRQRAIAcgAUIBfEL/////D4M3AwAMOQsgAUIgiKdBdU8EQCABpyIJIAkoAgBBAWo2AgALIA4gATcDYCAGICZBjwEQ5gENQiAGIAcgDikDYBAgDDgLIApBAmohDSARIAotAAFBA3RqIgcpAwAiAUL/////D1YgAUL/////D4NCgICAgAhRckUEQCAHIAFCAX1C/////w+DNwMADDgLIAFCIIinQXVPBEAgAaciCSAJKAIAQQFqNgIACyAOIAE3A2AgBiAmQY4BEOYBDUEgBiAHIA4pA2AQIAw3CyAIQQhrIgcpAwAiAUL/////D1gEQCAHIAFC/////w+FNwMADDcLIAghByMAQRBrIgkkAAJ/AkACQAJAIAhBCGsiCykDACIBQoCAgIBwVA0AIAYgCUEIaiABQZUBEMIFIgxBAEgNASAMRQ0AIAYgARAPIAsgCSkDCDcDAAwCCwJAIAYgARBsIgFCgICAgHCDIi1CgICAgOAAUQ0AIAYoAhAiDCgCjAEiDwR/IA8tAChBBHFBAnYFQQALRSAtQoCAgIDgflJxRQRAIAYgC0GVASABIAwoApwCERsADQEMAwsgBiAJQQRqIAEQmAENACALIAk1AgRC/////w+FNwMADAILIAtCgICAgDA3AwALQX8MAQtBAAshCyAJQRBqJAAgC0UNPAxACwJAAkACQCAIQQhrIgcpAwAiASAIQRBrIgspAwAiLYRC/////w9WDQAgAachCSASLQAoQQRxRQ0BIAlBH0sNACAtIAGGQoCAgIAIfEKAgICAEFQNAgsgBiAIQaABEMMCRQ09DEELIAlBH3EhCQsgCyAtpyAJdK03AwAMOwsgCEEIayIHKQMAIgEgCEEQayIJKQMAIi2EQv////8PWARAIAkCfiAtpyABp3YiCEEATgRAIAitDAELQoCAgIDAfiAIuL0iAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGws3AwAMOwsjAEEQayIJJAAgCEEIayIMKQMAIS0CfwJAAkAgBiAIQRBrIgspAwAQbCIBQoCAgIBwgyIuQoCAgIDgAFEEQCAGIC0QDwwBCyAGIC0QbCItQoCAgIBw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gICAgOAAIQEgACACKQMAEOgBIgZCgICAgHCDQoCAgIDgAFEEQCAAIAUQDwwGCyAAIAYQDyAGpyAFp0YNBAsgACAFEA8gAEGE5ABBABAVC0KAgICA4AAhAQwDCyACKAIQKAIsIgBFBEBCgICAgCAhAQwDCyAAIAAoAgBBAWo2AgAgAK1CgICAgHCEIQEMAgsgACABEI0EIgFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIADAELIAUhAQsgA0EQaiQAIAELCwAgAEGNIkEAEEYLGgAgACgCECABIAIQ7wQiAUUEQCAAEHwLIAELgAEBAn8CQAJAIAFFDQAgASgCACICQQBMDQEgASACQQFrIgI2AgAgAg0AIAEtAAVBAXEEQCAAIAEpAxgQIwsgASgCCCICIAEoAgwiAzYCBCADIAI2AgAgAUIANwIIIABBEGogASAAKAIEEQAACw8LQdaNAUGu/ABB9ChB6t0AEAAACxIAIAFB3gFOBEAgACABEOgFCwvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEBBfyEEIAAgAlQgASADUyABIANRGw0BIAAgAoUgASADhYRCAFIPC0F/IQQgACACViABIANVIAEgA1EbDQAgACAChSABIAOFhEIAUiEECyAECy0BAX9BASEBAkACQAJAIABBDWsOBAIBAQIACyAAQTRGDQELIABBOEYhAQsgAQsfACAAIAEgACACEKoBIgIgAyAEEBkhBCAAIAIQEyAEC0QBAX9BfyEDIAAgACgCBCACahDGAQR/QX8FIAAoAgAgAWoiAyACaiADIAAoAgQgAWsQnAEgACAAKAIEIAJqNgIEQQALC44BAQF/IAAgBkEMEEkiBkKAgICAcINCgICAgOAAUgRAIAAgACgCAEEBajYCACAGpyIHIAU7ASogByAEOgApIAcgAzoAKCAHIAE2AiQgByAANgIgIAcgBy0ABUHvAXEgBEECa0EESUEEdHI6AAUgACAGIAAgAkHMngEgAhsQqgEiASADEJYDIAAgARATCyAGCykBAX9B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IAAgD0ElEEsiCEUNACAAIANB3QEgA0EAEBQiDkKAgICAcIMiDUKAgICA4ABRDQAgDUKAgICAMFEEQCAAIA8QD0EADAILIAAgDkElEEsiC0UNAAJAIAgoAgRFDQAgCygCBEUNACAAIA8QDyAAIA4QD0EADAILIAQQ9wMhBwJ/IAgoAgAiCiALKAIAIgxGBEAgCCAHQQJ0aigCCAwBCyAKIAxLBEAgCEHUAGogDCAHELgFDAELIAtB3ABqIAogBxC4BQsiCkUEQCAJIAdBAnRBwMABajYCACAAQZL6ACAJEBUMAQsCQCAIKAIEBEACfiAFBEAgACACELkCDAELIAAgAiAGEJACCyICQoCAgIBwg0KAgICA4ABSDQEMAgsgAkIgiKdBdUkNACACpyIIIAgoAgBBAWo2AgALAkAgCygCBARAAn4gBQRAIAAgAxC5AgwBCyAAIAMgBhCQAgsiA0KAgICAcINCgICAgOAAUg0BIAAgAhAPDAILIANCIIinQXVJDQAgA6ciBSAFKAIAQQFqNgIACyAKIAooAgBBAWo2AgAgCSACIAMgBEF+cUGkAUYgB0ENRnEiBRs3AxggCSADIAIgBRs3AxAgACAKrUKAgICAcIRCgICAgDBBAiAJQRBqEC8hDSAAIAIQDyAAIAMQDyANQoCAgIBwgyICQoCAgIDgAFENAAJ+IAdBDEYEQCAAIA0QJiAEQaoBRketQoCAgIAQhAwBCyANIAdBDUcNABpCgICAgBAgAkKAgICAMFENABogACANECYgBEF9cUGkAUZHrUKAgICAEIQLIQMgACAPEA8gACAOEA8gASADNwMAQQEMAQsgACAPEA8gACAOEA8gAUKAgICAMDcDAEF/CyEHIAlBIGokACAHC2MCAX8BfiMAQRBrIgIkACAAAn4gAUUEQEIADAELIAIgAa1CACABZyIBQdEAahBnIAIpAwhCgICAgICAwACFQZ6AASABa61CMIZ8IQMgAikDAAs3AwAgACADNwMIIAJBEGokAAvHAQIBfgF/AkAgACgCECgCjAEiA0UgAUL/////////D3xC/v///////x9Wcg0AIAMoAihBBHFFDQAgAUKAgICACHxC/////w9YBEAgAUL/////D4MPC0KAgICAwH4gAbm9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA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ACAAIAEQiANBH3YLvgEBB38gACgCDCIFIQMCQANAIAMiBEUNASAAKAIQIgkgBEEBayIDQQJ0aiIGKAIARQ0ACyAAIAAoAgggBCAFa0EFdGo2AgggBigCAGciBwRAQSAgB2shBUEAIQMDQCADIARGRQRAIAkgA0ECdGoiBiAIIAV2IAYoAgAiCCAHdHI2AgAgA0EBaiEDDAELCyAAIAAoAgggB2s2AggLIAAgASACIARBABCqAw8LIABBgICAgHg2AgggAEEAEEEaQQALTgIBfwF+An4jACICIAAoAhAoAnhJBEAgABDpAUKAgICA4AAMAQsgACABrSABKQMAQoCAgIAwIAEoAgggASgCIEEEENgBCyEDIAIkACADCwwAIABB+swAQQAQFQsLACAAQcMaQQAQFQvVAQEDfyMAQRBrIgUkAEF/IQMCQCAAKAIUDQACQAJAIAFBgICAgAROBEAgACgCAEHA2gBBABBGDAELIAEgACgCDEEDbEECbSIEIAEgBEobIQEgACgCECIEIAJBgAJIckUEQCAAIAEQ9QMhAwwDCyAAKAIAIAAoAgQgASAEdCAEa0ERaiAFQQxqEKgBIgINAQsgABCDAwwBCyAFKAIMIQMgACACNgIEIABB/////wMgAyAAKAIQdiABaiIAIABB/////wNOGzYCDEEAIQMLIAVBEGokACADCxEAIAAgASACIAMgBEEAELcFCyYBAX8gAUIgiKdBdU8EQCABpyICIAIoAgBBAWo2AgALIAAgARBsCycBAX8gAUIAUwRAIABCACABfRAwIQIgAEEBNgIEIAIPCyAAIAEQMAvsAQEBfwJAAkACQAJAAkACQAJAQQcgAkIgiKciAyADQQdrQW5JGyIDDggAAAAEBAQEAQMLIAAoAtgBIQAgAUIANwIMIAFCgICAgICAgICAfzcCBCABIAA2AgAgASACxBC6Ag0BDAQLIAAoAtgBIQAgAUIANwIMIAFCgICAgICAgICAfzcCBCABIAA2AgAgASACQoCAgIDAgYD8/wB8vxC6BUUNAwsgARAbQQAPCyADQQpqQQJJDQILIAAoAtgBIQAgAUIANwIMIAFCgICAgICAgICAfzcCBCABIAA2AgAgARA1CyABDwsgAqdBBGoL5AEBBH8jAEEQayICJAAgACACQQhqIAEQ5QEhAyAAIAEQDwJAIANFBEBC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IAMoAgAgAygCBHEMBAsgAygCACADKAIEcgwDCyADKAIAIAMoAgRzDAILEAEACyADKAIEIAMoAgB0C603AwAMAQsgAUKAgICAMDcDACAGQoCAgIAwNwMAQX8MAQtBAAshACADQRBqJAAgAAuGBQIHfwJ+AkAgAUKAgICAcINCgICAgJB/UgRAQoCAgIDgACEKIAAgARA3IgFCgICAgHCDQoCAgIDgAFENAQsCQCACQoCAgIBwg0KAgICAkH9RDQBCgICAgOAAIQogACACEDciAkKAgICAcINCgICAgOAAUg0AIAEhAgwBCwJAIAKnIgUpAgQiCkL/////B4NQDQAgAaciAykCBCELAkAgAygCAEEBRyAKIAuFQoCAgIAIg0IAUnINACADIAAoAhAoAgwRBAAgBSkCBCIKpyIEQf////8HcSIHIAMpAgQiC6ciBkH/////B3EiCGogBEEfdnQgBkEfdiIJQRFzakkNACAFQRBqIQYgA0EQaiEEIAkEQCAEIAhBAXRqIAYgB0EBdBAfGiADIAMpAgQiCiAFKQIEfEL/////B4MgCkKAgICAeIOENwIEDAILIAQgCGogBiAHEB8aIAMgAykCBCIKIAUpAgR8Qv////8HgyILIApCgICAgHiDhDcCBCAEIAunakEAOgAADAELAn4CQAJAIAunQf////8HcSAKp0H/////B3FqIgdBgICAgARPBEAgAEHA2gBBABBGDAELIAAgByAKIAuEpyIGQR92EOoBIggNAQtCgICAgOAADAELIAhBEGohBAJAIAZBAE4EQCAEIANBEGogAygCBEH/////B3EQHyIEIAMoAgRB/////wdxaiAFQRBqIAUoAgRB/////wdxEB8aIAQgB2pBADoAAAwBCyAEIAMgAygCBEH/////B3EQwwUgBCADKAIEQQF0aiAFIAUoAgRB/////wdxEMMFCyAIrUKAgICAkH+ECyEKIAAgARAPDAELIAEhCgsgACACEA8gCgtAACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoIAJqQQR0agsoAgALENkBCw0AIAAgASACQQIQzgILNQEBfyMAQdAAayICJAAgAiAAKAIQIAJBEGogARCQATYCACAAQef5ACACEMYCIAJB0ABqJAALowECAX8BfiMAQRBrIgUkACAFIAQ2AgxBfyEEIAAgASAFQQxqENQBRQRAIAMoAgAiAEF8cSABIAIgAygCBCAAQQNxQQJ0QZTAAWooAgARIAAhBiADKAIAEOoFIAUoAgwiACAAKAIAQf////8DcTYCACADQoCAgIAwIAYgBkKAgICAcINCgICAgOAAUSIAGzcDAEF/QQAgABshBAsgBUEQaiQAIAQL9QEBA38jAEEQayIGJAAgBiAAOQMIIAYgAUEBayIHNgIAIAVBgAFB+PAAIAYQThogAyAFLQAAQS1GNgIAIAQgBS0AAToAACABQQJOBEAgBEEBaiAFQQNqIAcQHxoLIAEgBGpBADoAACACIQggASAFaiABQQFKakECaiECQQAhA0EAIQQDQCACIgFBAWohAiABLAAAIgUQjgYNAAsCQAJAAkAgBUEraw4DAQIAAgtBASEECyACIQELA0AgASwAACICENECBEAgAUEBaiEBIANBCmwgAmtBMGohAwwBCwsgCCADQQAgA2sgBBtBAWo2AgAgBkEQaiQAC5kHAgp/AX4jAEHwAGsiBSQAIAAoAhAhBiAFQgA3A1ggBUIANwNQIAUgBjYCZCAFQTs2AmACQCACBH8gBSACNgJAIAVB0ABqQdM8IAVBQGsQkgIgA0F/RwRAIAUgAzYCMCAFQdAAakHZ+wAgBUEwahCSAgsgBUHQAGpBChARIAAgAUExIAAgAhBiQQMQGRogACABQTIgA61BAxAZGiAEQQJxDQEgACgCEAUgBgtBjAFqIQggBEEBcUUhCwNAIAgoAgAiCEUNASALRQRAQQEhCwwBC0HgiAEhAkEAIQYCQCAIKQMIIg9CgICAgHBUDQAgD6ciBCgCECIDQTBqIQcgAyADKAIYQX9zQQJ0QaR+cmooAgAhAwNAIANFDQEgByADQQFrQQN0IglqIgooAgAhAyAKKAIEQTZHBEAgA0H///8fcSEDDAELCyADQf////8DSw0AIAQoAhQgCWopAwAiD0KAgICAcINCgICAgJB/Ug0AIAAgDxCzASIDRQ0AIANB4IgBIAMtAAAbIQIgAyEGCyAFIAI2AiAgBUHQAGpB0zwgBUEgahCSAiAAIAYQVAJAIAgoAggiAi8BBhDuAQRAIAIoAiAiBy8AESICQQt2QQFxIQogAkGACHFFDQFBfyEGAkAgBygCUCICRQ0AIAgoAiAgBygCFEF/c2ohDiACIAcoAkxqIQkgBygCRCEEQQAhDANAIAQhBiACIAlPDQEgAkEBaiEDAn8gAi0AACICRQRAAkAgBUHoAGogAyAJEO4FIgJBAEgNACAFKAJoIQ0gBUHsAGogAiADaiICIAkQ7gUiA0EASA0AIAUoAmwiBEEBdkEAIARBAXFrcyAGaiEEIAIgA2oMAgsgBygCRCEGDAMLIAYgAkEBayICQf8BcUEFbiINQXtsIAJqQf8BcWpBAWshBCADCyECIAwgDWoiDCAOTQ0ACwsgBSAAIAcoAkAQkQQiAkHziAEgAhs2AhAgBUHQAGpBwDwgBUEQahCSAiAAIAIQVCAGQX9HBEAgBSAGNgIAIAVB0ABqQdn7ACAFEJICCyAFQdAAakEpEBEMAQtBACEKIAVB0ABqQaeSAUEAEJICCyAFQdAAakEKEBEgCkUNAAsLIAVB0ABqQQAQEUKAgICAICEPIAUoAlAhAiAFKAJcRQRAIAAgAhBiIQ8LIAIEQCAFKAJkIAJBACAFKAJgEQEAGgsgACABQTUgD0EDEBkaIAVB8ABqJAALpgEBA38jAEGgAWsiBCQAIAQgACAEQZ4BaiABGyIFNgKUAUF/IQAgBCABQQFrIgZBACABIAZPGzYCmAEgBEEAQZABECsiBEF/NgJMIARBOjYCJCAEQX82AlAgBCAEQZ8BajYCLCAEIARBlAFqNgJUAkAgAUEASARAQaDUBEE9NgIADAELIAVBADoAACAEIAIgA0HjAEHkABCZBCEACyAEQaABaiQAIAALnQMDAX4DfwN8AkACQAJAAkAgAL0iAUIAWQRAIAFCIIinIgJB//8/Sw0BCyABQv///////////wCDUARARAAAAAAAAPC/IAAgAKKjDwsgAUIAWQ0BIAAgAKFEAAAAAAAAAACjDwsgAkH//7//B0sNAkGAgMD/AyEDQYF4IQQgAkGAgMD/A0cEQCACIQMMAgsgAacNAUQAAAAAAAAAAA8LIABEAAAAAAAAUEOivSIBQiCIpyEDQct3IQQLIAQgA0HiviVqIgJBFHZqtyIGRAAA4P5CLuY/oiABQv////8PgyACQf//P3FBnsGa/wNqrUIghoS/RAAAAAAAAPC/oCIAIAAgAEQAAAAAAAAAQKCjIgUgACAARAAAAAAAAOA/oqIiByAFIAWiIgUgBaIiACAAIABEn8Z40Amawz+iRK94jh3Fccw/oKJEBPqXmZmZ2T+goiAFIAAgACAARERSPt8S8cI/okTeA8uWZEbHP6CiRFmTIpQkSdI/oKJEk1VVVVVV5T+goqCgoiAGRHY8eTXvOeo9oqAgB6GgoCEACyAACw8AIAAgAUKAgICAMBC/AgsmAQF/IwBBEGsiBCQAIAQgAjYCDCAAIAMgASACEJIEIARBEGokAAuZAQEDfCAAIACiIgMgAyADoqIgA0R81c9aOtnlPaJE65wriublWr6goiADIANEff6xV+Mdxz6iRNVhwRmgASq/oKJEpvgQERERgT+goCEFIAMgAKIhBCACRQRAIAQgAyAFokRJVVVVVVXFv6CiIACgDwsgACADIAFEAAAAAAAA4D+iIAUgBKKhoiABoSAERElVVVVVVcU/oqChC5IBAQN8RAAAAAAAAPA/IAAgAKIiAkQAAAAAAADgP6IiA6EiBEQAAAAAAADwPyAEoSADoSACIAIgAiACRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgAiACoiIDIAOiIAIgAkTUOIi+6fqovaJExLG0vZ7uIT6gokStUpyAT36SvqCioKIgACABoqGgoAsKACAAQTBrQQpJC40BACAAIAAgACAAIABECff9DeE9Aj+iRIiyAXXg70k/oKJEO49otSiCpL+gokRVRIgOVcHJP6CiRH1v6wMS1tS/oKJEVVVVVVVVxT+gIACiIAAgACAAIABEgpIuscW4sz+iRFkBjRtsBua/oKJEyIpZnOUqAECgokRLLYocJzoDwKCiRAAAAAAAAPA/oKMLqwIBCH8jAEEwayIEJAAgAkEHcSEJIAAoAgAiBUEIaiEGQSAhBwNAIAUoAhwiAyABIAdqIghJBEACQCAFKAIUBEAgBigCACEDDAELIAAoAgAhAyAFQgA3AhQgBUKAgICAgICAgIB/NwIMIAUgAzYCCAsgBEIANwIoIARCgICAgICAgICAfzcCICAEIAM2AhwgBEIANwIUIARCgICAgICAgICAfzcCDCAEIAM2AgggBiAEQRxqIgogBEEIaiIDQQAgCEEPakEDbkEBakEAEKAEIAYgBiADIAhBABCVARogChAbIAMQGyAFIAg2AhwgCCEDCyAAIAYQRBogAEEANgIEIAAgASAJIAMQ4QNFBEAgB0EBdiAHaiEHDAELCyAAIAEgAhDOARogBEEwaiQAC1cBAn8jAEEgayIFJAAgACgCACEGIAVCADcCGCAFQoCAgICAgICAgH83AhAgBSAGNgIMIAVBDGoiBiACELoCGiAAIAEgBiADIAQQQxogBhAbIAVBIGokAAseACABBEAgACgCACIAKAIAIAFBACAAKAIEEQEAGgsLEAAgAa0gAK1+IAIgAxCoBAtiAQF/IwBBIGsiBiQAAkACQCADIAUgAyAFSBtB5ABOBEAgBiABNgIcQX8hASAAIAZBDGogAiADIAQgBUEEEJ8GRQ0BDAILIAEgAiADIAQgBRCeBgtBACEBCyAGQSBqJAAgAQtQAQJ/IAJBACACQQBKGyECAkADQCACIARGDQEgACAEQQJ0aiIDIAMoAgAiAyABazYCACAEQQFqIQQgASADSyEDQQEhASADDQALQQAhAQsgAQtTAQF/IAEgACgCBCICSgRAIAAoAgwgACgCCCABIAJBA2xBAm0iAiABIAJKGyIBQQJ0IAAoAhARAQAiAkUEQEF/DwsgACABNgIEIAAgAjYCCAtBAAtZAQN/QX8hASAAIAAoAgAiAkECaiIDENkCBH9BfwUgACgCCCIBQQRqIAEgAkECdCICEJwBIAAoAggiAUEANgIAIAEgAmpBfzYCBCAAIAM2AgAgABCiBkEACwulAgEFfwNAAkACQAJAAkACfyACIAdMIgkgBCAGTHJFBEAgASAHQQJ0aigCACIIIAMgBkECdGooAgAiCUkEQCAIDAILIAggCUcNAyAGQQFqIQYgB0EBaiEHIAghCQwECyAJDQEgASAHQQJ0aigCAAshCSAHQQFqIQcMAgsgBCAGTA0CIAMgBkECdGooAgAhCQsgBkEBaiEGCwJ/AkACQAJAAkAgBQ4DAwABAgsgBiAHcUEBcQwDCyAGIAdzQQFxDAILEAEACyAGIAdyQQFxCyEKIAogACgCACIIQQFxRg0BIAAoAgQgCEwEQCAAIAhBAWoQ2QIEQEF/DwsgACgCACEICyAAIAhBAWo2AgAgACgCCCAIQQJ0aiAJNgIADAELCyAAEKIGQQALawIBfgJ/IAAoAgAhAwNAIAMtAAAiBEE6a0H/AXFB9gFPBEAgAkIKfiAErUL/AYN8QjB9IgJC/////wdUIgQgAXIEQCACQv////8HIAQbIQIgA0EBaiEDDAIFQX8PCwALCyAAIAM2AgAgAqcLZAEBfwJAIAFCIIinIgJFIAJBC2pBEUtyDQACQCABQoCAgIBwVA0AIAGnIgIvAQZBBEcNACACKQMgIgFCIIinIgJFIAJBC2pBEUtyDQELIABB9scAQQAQFUKAgICA4AAhAQsgAQsRACAAIAEgAiADQQBBABCCAQu+AQIGfwJ+IAEoAgAiAyAAKQIEIgmnQf////8HcSIEIAMgBEobIANrIQcgAEEQaiEFIANBAmohCCAJQoCAgIAIgyEKQQAhAEIAIQkCQANAIABBAkcEQEF/IQYgACAHRg0CAn8gClBFBEAgBSADQQF0ai8BAAwBCyADIAVqLQAACyIEQTBrQQlLDQIgAEEBaiEAIANBAWohAyAErSAJQgp+fEIwfSEJDAELCyACIAk3AwAgASAINgIAQQAhBgsgBguaAwMCfAN/AX4CfyAAKwMIIgJEAAAAAAAAKEAQjgMiA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLIgRBDGogBCAEQQBIGyIEQQBKIQYgBEEAIAYbIQYCfiAAKwMAIAJEAAAAAAAAKECjnKAiAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwsiBxDMBLkhAgNAIAUgBkZFBEAgBUECdEGQ0gFqKAIAIQQgBUEBRgRAIAQgBxDLBKdqQe0CayEECyAFQQFqIQUgAiAEt6AhAgwBCwsgAiAAKwMQRAAAAAAAAPC/oKBEAAAAAHCZlEGiIAArAzAgACsDKEQAAAAAAECPQKIgACsDGEQAAAAAQHdLQaIgACsDIEQAAAAAAEztQKKgoKCgIQIgAQRAIAICfiACmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB/CxC4A0Hg1ANst6AhAgsgAp1EAAAAAAAAAACgRAAAAAAAAPh/IAJEAADcwgiyPkNlG0QAAAAAAAD4fyACRAAA3MIIsj7DZhsLdgECfyABKAIAQQBIBEAgASAAQUBrKAIAEDI2AgALIABBERAQIABBsAEQECACQQAgAkEAShshAiAAQekAQX8QHCEEA0AgAiADRkUEQCAAQQ4QECADQQFqIQMMAQsLIABBBhAQIABB6wAgASgCABAcGiAAIAQQHgtPAQF/QX8hAQJAIABB+wAQLA0AIAAoAhBB/QBHBEAgABCAARoDQCAAQQcQ4QENAiAAKAIQQf0ARw0ACyAAEPMBC0F/QQAgABASGyEBCyABC2gAIAAgASACEE8iAEEATgRAIAEoAnQgAEEEdGoiAiACKAIMQYd/cSADQQN0QfgAcXI2AgwgAiABKAK8ASIDNgIEIAIgASgCwAE2AgggASgCzAEgA0EDdGogADYCBCABIAA2AsABCyAAC20BAX8gACABQfwBakEQIAFB+AFqIAEoAvQBQQFqEHhFBEAgASABKAL0ASIDQQFqNgL0ASABKAL8ASADQQR0aiIDQX82AgAgAyADLQAEQfgBcToABCADIAEoArwBNgIIIAMgACACEBg2AgwLIAMLxgMBBH8gAEFAayIFKAIAQbACaiEDA0BBACECAkADQCADKAIAIgNFDQEgAygCHARAIAFFBEAgAEEGEBALIABBhAEQEEGDASECIAAgBSgCAC0AbEEDRgR/IABBDhAQIABBDhAQIABBwgAQECAAQQYQGiAAQREQECAAQbABEBAgAEHqAEF/EBwhASAAQSQQECAFKAIAQQAQFyAAQYEBEBAgAEGLARAQIABB6wBBfxAcIQQgACABEB4gAEEOEBAgACAEEB5BDgVBgwELEBBBfSECQQEhAQsgAygCECACaiECIAMoAhRBf0YNAAtBD0EOIAEbIQQDQCACBEAgACAEEBAgAkEBayECDAELCyABRQRAIABBBhAQCyAAQe0AIAMoAhQQHBpBASEBDAELCwJAIABBQGsoAgAiAigCYARAAkAgAUUEQEF/IQIMAQsgAEEqEBAgAEHpAEF/EBwhAiAAQQ4QEAsgAEG4ARAQIABBCBAaIABBQGsoAgBBABAXIAAgAhAeQSghAgwBCyACLQBsIgMEQCABRQRAIABBBhAQQS4hAgwCC0EuIQIgA0EDRw0BIABBiwEQEAwBC0EoQSkgARshAgsgACACEBALXQECfwJAAkAgACgCmAIiAUEASA0AIAAoAoACIAFqLQAAIgBBI2siAUENTUEAQQEgAXRB5fAAcRsNAQJAIABB6wBrDgQCAQECAAsgAEHsAWtBAkkNAQtBASECCyACCy8AIAAgASACIAMQ4wIiAEEATgRAIAEoAnQgAEEEdGoiASABKAIMQQNyNgIMCyAACy4AIABBDBApIgAEQCAAIAM2AgggACACNgIEIAAgASgCEDYCACABIAA2AhALIAALawEBfwJAIAEoAqABIgNBAE4NACAAIAEgAhBPIgNBAEgNACABIAM2AqABIANBBHQiACABKAJ0aiICIAIoAgxBh39xQSByNgIMIAEtAG5BAXFFDQAgASgCdCAAaiIAIAAoAgxBAXI2AgwLIAMLLgEBfwJAIAEoApgBIgJBAE4NACAAIAFBzQAQTyICQQBIDQAgASACNgKYAQsgAguYAQEEfyABKAIUIgVBACAFQQBKGyEGIAFBEGohBAJAA0AgAyAGRwRAIAQoAgAgA0EDdGooAgAgAkYNAiADQQFqIQMMAQsLQX8hAyAAIARBCCABQRhqIAVBAWoQeA0AIAEgASgCFCIEQQFqNgIUIAEoAhAhAyAAIAIQGCEBIAMgBEEDdGoiAEEANgIEIAAgATYCACAGIQMLIAMLZQEBfyAAQfoAEEpFBEAgAEGd9wBBABAWQQAPCwJAIAAQEg0AIAAoAhBBgX9HBEAgAEGN9wBBABAWQQAPCyAAKAIAIAApAyAQMSIBRQ0AIAAQEkUEQCABDwsgACgCACABEBMLQQAL4BMBGH8jAEHQAGsiBCQAIABBQGsoAgAhBSAAKAIAIQcgBEEANgI8IAAoAhghEiAFIAUtAG4iFUEBcjoAbgJ/AkACQCAAEBINAAJAAkAgACgCEEGDf0YEQCAAKAIoRQ0BIAAQ4gEMAwsgASACQQJGcg0BIABBxugAQQAQFgwCCyAHIAAoAiAQGCEJIAAQEg0CCyABRQRAIAcgCUH8ACAJGxAYIQsLIAAQgAEaAn8gACgCECIOQU5GBEAgABASDQMgABCjAg0DQQEMAQsgAEEGEBBBAAshASAJBEAgACAFIAlBAhCgAUEASA0CCyAAQfsAECwNASAOQU5GIRYgABCAARogAEECEBAgBSgChAIhFyAAQUBrIgMoAgBBABA5IABB1gAQECAAIAlBFkEvIAsbIAkbEBogAygCACABEGQgBSgCmAIhGEEAIQMDQCADQQJGRQRAIARBEGogA0EEdGoiAUEANgIIIAFCADcDACADQQFqIQMMAQsLIARBADYCNEEIQQcgDkFORhshEyAOQU5HIRkgAEFAayEKA0ACQAJAAkACQAJAAkACQAJAAkACfwJ/AkAgACgCECIDQTtHBEAgA0H9AEYNBEEAIANBWEcNAhogABASRQ0BDAwLQQAhAyAAEBJFDQwMDgsCQAJAIAAoAhBBO2sOAwABAAELQSwhASAEQSw2AjwgACgCGCERQQAhD0EAIQZBAAwCCyAAQRsQEEEBCyEPIAAoAhghESAAIARBPGpBAUEAQQEQxAMhBiAEKAI8IQEgBkEASA0EIANBWEYLIRBBPCEDAkAgAUE8RyAQciIaQQEgBkFvcSINGwRAIAFBO0YgEHFFIAFB+ABHcQ0BIAEhAwsgAEGK6ABBABAWDAwLIAZBEHEhDAJAAkACQCAGQW5xQQJGBEAgDEUNBiAFIAEgBSgCvAEQwwMiA0EATgRAIAUoAnQgA0EEdGoiBigCDCIIQQN2QQ9xIgNBCU1BAEEBIAN0QeAEcRsgAyANQQVqRnINAiAGIAhBh39xQcgAcjYCDAwGCyAAKAIAIAUgASANQQVqEOcCQQBODQUMBwtBBiEUQQEhA0EAIQhBACEGAkACQAJAAkACQAJAIA0OBwACAgIFAwECCyAAKAIQQShGDQEgAUE7a0EBTQRAIABBs+gAQQAQFgwMCyAMBEAgBSABIAUoArwBEMMDQQBODQYgACgCACAFIAFBBRDnAkEASA0MIABBBRAQIAAgARAaIABBvQEQECAAIAEQGiAKKAIAIgMgAy8BvAEQFwsgBEEQaiAPQQR0aiIIKAIARQRAIAAgCBDeBA0MCyABRQRAIAQgCCgCBDYCACAEQUBrIgZBEEHcIiAEEE4aQQAhAyAHQfUAQfQAIBAbIAYQ4QQiBkUNFCAAIAUgBkECEKABQQBIBEAgByAGEBMMFQsgAEHwABAQIABBvQEQECAAIAYQGiAKKAIAIgMgAy8BvAEQFwsgCiAIKAIANgIAIABBuAEQECAAQQgQGiAKKAIAQQAQFwJAIAFFBEAgAEG4ARAQIAAgBhAaIAooAgAiAyADLwG8ARAXIAggCCgCBEEBajYCBCAHIAYQEwwBCyAMRQ0AIABBuAEQECAAIAEQGiAKKAIAIgMgAy8BvAEQFwsCQCAAKAIQQT1GBEAgABASDQ0gABBWDQ0MAQsgAEEGEBALAkAgDARAIAAQwgMgAEHGABAQDAELIAFFBEAgABDCAyAAQdEAEBAgAEEOEBAMAQsgACABEKEBIABBzAAQECAAIAEQGgsgCiAKKAIAKAIENgIAIAAQtwENCwwPC0EDIQMMAgtBACEDIBoEQAwCCyAWIQggGSEGIBMhFCAEKAI0RQ0CIABBiPAAQQAQFkE8IQMMEQtBAiEDCwsgDARAIAAgBEEQaiAPQQR0ahDdBEEASA0HCyAAIBQgAyARIAAoAhRBACAEQThqEPgBDQYgBiAIckEBRgRAIAQgBCgCODYCNAwLCyAMRQ0CIAQoAjhBATYCuAEgBSABIAUoArwBEMMDQQBIDQELIABBwPkAQQAQFgwFCyAAKAIAIAUgAUEGEOcCQQBIDQQgAEHQABAQIABBzQAQECAAIAEQGiAAQb0BEBAgACABEBogCigCACIDIAMvAbwBEBcMCAsCQCABRQRAIABB1QAQEAwBCyAAQdQAEBAgACABEBoLIAooAgBBABBkDAcLIAQoAjQiA0UEQCAEIAAoAgQ2AkAgBCAAKAIUIgY2AkQgBCAAKAIYNgJMIAQgACgCMDYCSCAAQaUZQaAZIA5BTkYiARsiAzYCOCAAKAI8IQggACADQRhBBCABG2o2AjxBfyEBIAAQEkUEQCAAIBNBACADIAZBACAEQTRqEPgBIQELIAAgCDYCPEEAIQMgACAEQUBrEO4CIAFyDQsgBCgCNCEDCyAFKAKAAiAXaiADKAIINgAAIAUtAG5BAnFFBEAgBygCECIBQRBqIAMoAowDIAEoAgQRAAAgBCgCNCAAKAI4IBJrIgE2ApADIAcgEiABEIEDIQEgBCgCNCABNgKMAyABRQ0IC0EAIQMgABASDQogACAFQfYAQQIQoAFBAEgNCgJAIAQoAhAEQCAAIARBEGoQ3AQMAQsgAEEGEBALIABBvQEQECAAQfYAEBogAEFAayIBKAIAIgMgAy8BvAEQFyAAQQ4QECAEKAIgBEAgAEEREBAgACAEQSBqENwEIABBJBAQIAEoAgBBABAXIABBDhAQCyAJBEAgAEEREBAgAEG9ARAQIAAgCRAaIABBQGsoAgAgBS8BvAEQFwsgABDzASAAEPMBAkAgCwRAQQAhAyAAIAUgC0EBEKABQQBIDQwgAEG9ARAQIAAgCxAaIABBQGsoAgAgBS8BvAEQFwwBCyAJDQAgAEHBARAQIABBQGsoAgAgBSgCmAIgGGtBAWoQOQtBACACRQ0LGkEAIgMgACAFKAKUAyALQRYgCyACQQFHG0EAEPcBDQsaDAoLIAAgBEEQaiAPQQR0ahDdBEEASA0BCyAAIA1BAmpBACARIAAoAhRBACAEQUBrEPgBDQAgDEUNAyAEKAJAQQE2ArgBIABB0AAQECAAQb0BEBAgDUECRg0BIAcgARDnBCIDRQ0AIAAgAxAaIAAoAgAgBSADQQgQ5wIhBiAHIAMQEyAGQQBODQILIAEhAwwHCyAAIAEQGgsgCigCACIDIAMvAbwBEBcMAQsCQCABRQRAIABB1QAQEAwBCyAAQdQAEBAgACABEBoLIAooAgAgDUEBa0H/AXEQZAsgEARAIABBGxAQCyAHIAEQEyAEQQA2AjwMAQsLQQAhAwwBCwsgByADEBNBfwshAyAHIAkQEyAHIAsQEyAFIBU6AG4gBEHQAGokACADCy4AIAAgASgCADYCFCAAIAEoAgQ2AgggACABKAIMNgI4IAAgASgCCDYCMCAAEBILKwAgAEH/AE0EQCAAQQN2Qfz///8BcUGQgQJqKAIAIAB2QQFxDwsgABC5AwsuAQF/AkAgAUKAgICAcFQNACABpyICLwEGQRJHDQAgAkEgag8LIABBEhCGA0EAC2cCAX8BfiMAQRBrIgMkAAJ+AkACQCACRQ0AIAApAgQiBEL/////B4MgAVcNACAEQoCAgIAIg0IAUg0BCyABQgF8DAELIAMgAT4CDCAAIANBDGoQyQEaIAM0AgwLIQEgA0EQaiQAIAELzgEBBH8CQCMAIgUgACgCQCgCECgCeEkEQCAAQY0iQQAQOkF/IQQMAQsgACgCBCEDQX8hBCAAIAEQrQYNAANAIAAoAhgiAi0AAEH8AEcEQEEAIQQMAgsgACACQQFqNgIYIAAoAgQhAiAAIANBBRDwAQRAIAAQqAIMAgsgACgCACADakEJOgAAIAAoAgAgA2ogAiADa0EFajYAASAAQQdBABC4ASECIAAgARCtBg0BIAAoAgAgAmogACgCBCACa0EEazYAAAwACwALIAUkACAEC5EGAQZ/IwBBIGsiByQAIAcgAzYCHAJ/AkAgACgCACAHQQRqQSAQPQ0AIAFB4ABHIQsDQAJAAkACQAJAIAMgACgCPCIKTw0AAkAgAy0AACIGQR9LDQAgACgCQEUEQEGv2wAhBiACDQMMBwsgC0UEQCAGQQ1HDQFBCiEGIANBAWogAyADLQABQQpGGyEDDAELIAZBCmsOBAEAAAEACyAHIANBAWoiCDYCHAJAAkACQAJAAkAgASAGRwRAIAZB3ABGDQEgBkEkRw0CQSQhBiALDQkgCC0AAEH7AEcNCSADQQJqIQhBJCEBCyAEQYF/NgIAIAQgATYCGCAEIAdBBGoQNjcDECAFIAg2AgBBAAwLC0EBIQYCQAJAAkACQCAILQAAIglBCmsOBAIDAwEACyAJQdwARiAJQSJGciAJQSdGcg0EIAkNAiAIIApPDQcgByADQQJqNgIcQQAhBgwKC0ECQQEgAy0AAkEKRhshBgsgByAGIAhqIgM2AhwgAUHgAEYNCSAAIAAoAghBAWo2AggMCQsCQAJAAkAgCcAiBkEwa0H/AXFBCU0EQCAAKAJAIgpFDQIgAUHgAEcEQCAKLQBuQQFxRQ0CCyABQeAARiAGQTBGBH8gAy0AAkEwa0H/AXFBCk8NC0EwBSAGC0E3S3INAkHF7AAhBiACDQkMDQsgBkEATg0AIAhBBiAHEFgiBkGAgMQATw0GIAcgBygCACIDNgIcIAZBfnFBqMAARg0LDAoLIAdBHGpBARD5ASIGQX9HDQELQezVACEGIAINBgwKCyAGQQBODQcgByAHKAIcQQFqNgIcDAILIAbAQQBODQYgA0EGIAcQWCIGQf//wwBLDQIgByAHKAIANgIcDAYLIAcgA0ECajYCHAsgCSEGDAQLQbTwACEGIAINAQwFC0GJ2wAhBiACRQ0ECyAAIAZBABAWDAMLIAcgA0ECajYCHEEAIQYLIAdBBGogBhC5AQ0BIAcoAhwhAwwACwALIAcoAgQoAhAiAEEQaiAHKAIIIAAoAgQRAABBfwshBiAHQSBqJAAgBgujAQIDfgN/IwBBEGsiCSQAIARCACAEQgBVGyEIIAVBAEghCgNAAkAgBiAIUQRAQQAhBQwBC0F/IQUgACABIAZCf4UgBHwgBiAKGyIHIAN8IAlBCGoQhQEiC0EASA0AIAIgB3whBwJAIAsEQCAAIAEgByAJKQMIEIYBQQBODQEMAgsgACABIAcQ+gFBAEgNAQsgBkIBfCEGDAELCyAJQRBqJAAgBQukAQIFfwF+IAEoAhAiBCABKAIUQQFrIAIQ1wNxQQN0IgZqQQRqIQMgAqchBSACQiCIp0F1SSEHA38gAygCACIDIAQgBmpGBEBBAA8LIAMpAwgiCEIgiKdBdU8EQCAIpyIEIAQoAgBBAWo2AgALIAdFBEAgBSAFKAIAQQFqNgIACyAAIAggAkECELwBBH8gA0EYawUgA0EEaiEDIAEoAhAhBAwBCwsLkAECAn4BfyAAIAIpAwAiA0EAEJMBIgVFBEBCgICAgOAADwsgACADQoCAgIAwEOMBIgNCgICAgHCDIgRCgICAgOAAUQRAIAMPCyACQQhqIQIgBEKAgICAMFEEQCAAQoCAgIAwIAAgAiAFLwEGEPoFDwsgACADQQEgASABQQFMG0EBayACENoDIQQgACADEA8gBAswAQJ/AkAgACABQQAQkwEiAwRAIAMoAiAoAgwoAiAtAARFDQEgABBrC0F/IQILIAILcwECfyMAQTBrIgIkAAJ/IAGnQYCAgIB4ciABQv////8HWA0AGiACIAE3AwAgAkEQaiIDQRhByvQAIAIQThpBACAAIAMQYiIBQoCAgIBwg0KAgICA4ABRDQAaIAAoAhAgAadBARCnAgshACACQTBqJAAgAAsNACAAIAEgAkETENwDCz8BAX8gAkIgiKdBdU8EQCACpyIEIAQoAgBBAWo2AgALIAAgAiADEP8CIQIgACABKAJMIAJBABCDBSAAIAIQDwsMACAAIAEgARA/EHILggEBAn8jAEEgayIFJAACQCABQQpHIAJBCUtyRQRAIAAgAkECdEGQpQRqNQIAEDAhAgwBCyAAKAIAIQYgBUIANwIYIAVCgICAgICAgICAfzcCECAFIAY2AgwgBUEMaiIGIAGtEDAgACAGIAIgAyAEEKIEciECIAYQGwsgBUEgaiQAIAILmwUBA38gAUEQaiEDIAEoAhQhAgNAIAIgA0ZFBEAgAkEYayEEIAIoAgQhAiAAIAQQ/QIMAQsLIAAoAhAgASgCgAIgASgChAIgASgCoAIQ6wUgAUGAAmoQ9gEgACgCECICQRBqIAEoAswCIAIoAgQRAAAgACgCECICQRBqIAEoAqQCIAIoAgQRAAAgACgCECICQRBqIAEoAtgCIAIoAgQRAABBACECA0AgASgCtAIhAyACIAEoArgCTkUEQCAAIAMgAkEDdGopAwAQDyACQQFqIQIMAQsLIAAoAhAiAkEQaiADIAIoAgQRAAAgACABKAJwEBNBACECA0AgASgCdCEDIAIgASgCfE5FBEAgACADIAJBBHRqKAIAEBMgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAQQAhAgNAIAEoAoABIQMgAiABKAKIAU5FBEAgACADIAJBBHRqKAIAEBMgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAQQAhAgNAIAEoAvwBIQMgAiABKAL0AU5FBEAgACADIAJBBHRqKAIMEBMgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAQQAhAgNAIAEoAsgCIQMgAiABKALAAk5FBEAgACADIAJBA3RqKAIEEBMgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAIAEoAswBIgIgAUHQAWpHBEAgACgCECIDQRBqIAIgAygCBBEAAAsgACABKALsAhATIAFB9AJqEPYBIAAoAhAiAkEQaiABKAKMAyACKAIEEQAAIAEoAgQEQCABKAIYIgIgASgCHCIDNgIEIAMgAjYCACABQgA3AhgLIAAoAhAiAEEQaiABIAAoAgQRAAALggEBAn8gACABQRBqEM8FAkAgASgCICICBEAgASgCPCIDRQ0BA0AgAiADT0UEQCAAIAIpAwAQIyACQQhqIQIgASgCPCEDDAELCyAAQRBqIAEoAiAgACgCBBEAAAsgACABKQMYECMgACABKQMAECMPC0GEhAFBrvwAQYmUAUHC6wAQAAALaAEBfgJAAkAgABA0IgNCgICAgHCDQoCAgIDgAFEEQCABIQMMAQsgACADQcAAIAFBBxAZQQBIDQAgACADQekAIAJBAEetQoCAgIAQhEEHEBlBAE4NAQsgACADEA9CgICAgOAAIQMLIAMLjAEBAn8CQANAIAFCgICAgHBUDQECQAJAAkACQAJAAkAgAaciAi8BBiIDQQxrDgUFAQMHAQALIANBMEYNASADQTRrDgUABgYGAAYLIAIoAiAoAjAPCyACKAIgIgJFDQQgAi0AEUUNASAAELYCQQAPCyACKAIgIQILIAIpAwAhAQwBCwsgAigCICEACyAACyIAIAAgAkEBahApIgAEQCAAIAEgAhAfIAJqQQA6AAALIAALjQMCA34EfwJAIAEoAggiBkH+////B04EQEEBIQcgAkEBcQ0BQv///////////wAhAyAGQf7///8HRw0BIAE0AgRC////////////AHwhAwwBCyAGQQBMBEAMAQsgBkE/TQRAIAEoAhAiCSABKAIMIgJBAnRqQQRrKAIAIQhCACAGQSBNBH4gCEEgIAZrdq0FIAJBAk8EfiACQQJ0IAlqQQhrNQIABUIACyAIrUIghoRBwAAg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LQAFQf4BcToABSABIAs3A0ALIAtCIIinQXVPBEAgC6ciACAAKAIAQQFqNgIACyALIQwLIANBIGokACAMC4kEAgR+An8CQAJAIAG9IgRCAYYiA1ANACABvSECIAC9IgVCNIinQf8PcSIGQf8PRg0AIAJC////////////AINCgYCAgICAgPj/AFQNAQsgACABoiIAIACjDwsgAyAFQgGGIgJaBEAgAEQAAAAAAAAAAKIgACACIANRGw8LIARCNIinQf8PcSEHAn4gBkUEQEEAIQYgBUIMhiICQgBZBEADQCAGQQFrIQYgAkIBhiICQgBZDQALCyAFQQEgBmuthgwBCyAFQv////////8Hg0KAgICAgICACIQLIQICfiAHRQRAQQAhByAEQgyGIgNCAFkEQANAIAdBAWshByADQgGGIgNCAFkNAAsLIARBASAHa62GDAELIARC/////////weDQoCAgICAgIAIhAshBCAGIAdKBEADQAJAIAIgBH0iA0IAUw0AIAMiAkIAUg0AIABEAAAAAAAAAACiDwsgAkIBhiECIAZBAWsiBiAHSg0ACyAHIQYLAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCwJAIAJC/////////wdWBEAgAiEDDAELA0AgBkEBayEGIAJCgICAgICAgARUIQcgAkIBhiIDIQIgBw0ACwsgBUKAgICAgICAgIB/gyADQoCAgICAgIAIfSAGrUI0hoQgA0EBIAZrrYggBkEAShuEvwvoDwMHfAh/An5EAAAAAAAA8D8hAwJAAkACQCABvSIRQiCIpyIPQf////8HcSIJIBGnIgxyRQ0AIAC9IhJCIIinIQogEqciEEUgCkGAgMD/A0ZxDQAgCkH/////B3EiC0GAgMD/B0sgC0GAgMD/B0YgEEEAR3FyIAlBgIDA/wdLckUgDEUgCUGAgMD/B0dycUUEQCAAIAGgDwsCQAJAAkACQAJAAn9BACASQgBZDQAaQQIgCUH///+ZBEsNABpBACAJQYCAwP8DSQ0AGiAJQRR2IQ0gCUGAgICKBEkNAUEAIAxBswggDWsiDnYiDSAOdCAMRw0AGkECIA1BAXFrCyEOIAwNAiAJQYCAwP8HRw0BIAtBgIDA/wNrIBByRQ0FIAtBgIDA/wNJDQMgAUQAAAAAAAAAACARQgBZGw8L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A38jAEFAaiIGJAACQCAEIANrIghBAUYEQAJAIANFBEAgAUIDEDAaDAELIAEgA60QMBogAUEBNgIECyACIANBAXRBAXKtEDAaIAIgAigCCEECajYCCCAAIAEQRBoMAQsgACgCACEHIAAgASACIAMgCEEBdiADaiIDQQEQoAQgBkIANwI4IAZCgICAgICAgICAfzcCMCAGIAc2AiwgBkIANwIkIAZCgICAgICAgICAfzcCHCAGIAc2AhggBkIANwIQIAZCgICAgICAgICAfzcCCCAGIAc2AgQgBkEsaiIHIAZBGGogBkEEaiIIIAMgBCAFEKAEIAAgACAIQf////8DQQEQQxogByAHIAFB/////wNBARBDGiAAIAAgB0H/////A0EBEMsBGiAFBEAgASABIAZBGGpB/////wNBARBDGgsgAiACIAZBBGoiAEH/////A0EBEEMaIAZBLGoQGyAGQRhqEBsgABAbCyAGQUBrJAALzgUCB38DfiMAQTBrIggkAAJ/AkACQAJAAkACQCADDgMAAQIDC0HcjAFB1PwAQbUaQZb8ABAAAAsgASACKAIQIAIoAgwiACAAQQV0IAIoAghrEGg2AgAMAgsgAigCECIDIAIoAgwiACAAQQV0IAIoAghrIgJBIGoQaK1CIIYgAyAAIAIQaK2EIQ8gBkGAlOvcA0YEQCABIA9CgJTr3AOAIhA+AgQgASAQQoDslKMMfiAPfD4CAAwCCyABIA8gBq0iEIAiET4CBCABIA8gECARfn0+AgAMAQsgAigCACEKIAhCADcCKCAIQoCAgICAgICAgH83AiAgCCAKNgIcIAhCADcCFCAIQoCAgICAgICAgH83AgwgCCAKNgIIIAMgBUEBdCAEQQFqIgt2QQFqQQF2IgprIQwgACAEQQF0QQFyQRRsaiENQQAhAyAAIARBKGxqIgQoAgxFBEAgBCAGIApB/////wNBARD8AiAIQQhqIglCARAwciANIAkgBCAKQQFqIAdsQQJqQQAQlQFyIQkLAkACQCAIQRxqIg4gAiANIAcgDGxBABBDIAlyIA5BARDRAXIgCEEIaiIJIA4gBEH/////A0EBEENyIAkgAiAJQf////8DQQEQ5AFyQSBxDQADQAJAIAgoAgxFDQAgCCgCFEUNACAIQQhqIgIgAiAEQf////8DQQEQywENAiADQQFrIQMMAQsLA0AgCEEIaiAEENMBQQBOBEAgCEEIaiICIAIgBEH/////A0EBEOQBDQIgA0EBaiEDDAELCyADBEAgCEEcaiICIAIgA6xB/////wNBARB1DQELIAAgASAKQQJ0aiAIQRxqIAwgCyAFIAYgBxChBA0AIAAgASAIQQhqIAogCyAFIAYgBxChBEUNAQsgCEEcahAbIAhBCGoQG0F/DAILIAhBHGoQGyAIQQhqEBsLQQALIQMgCEEwaiQAIAMLhAEBAn8CQCAAIAFHBEAgAkUEQCAAQgEQMCEFDAILQR4gAmdrIQYgACABEEQhBQNAIAZBAEgNAiAAIAAgACADIAQQQyAFciEFIAIgBnZBAXEEQCAAIAAgASADIAQQQyAFciEFCyAGQQFrIQYMAAsAC0HY/QBB1PwAQdoRQezXABAAAAsgBQt1AgJ8AX4gAAJ+EAwiAUQAAAAAAECPQKMiAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwsiAzcDACAAAn8gASADQugHfrmhRAAAAAAAQI9AoiIBmUQAAAAAAADgQWMEQCABqgwBC0GAgICAeAs2AggLfQECfyMAQSBrIgYkAAJAIAAgAUcgACACR3FFBEAgACgCACEHIAZCADcCGCAGQoCAgICAgICAgH83AhAgBiAHNgIMIAZBDGoiByABIAIgAyAEIAURCgAhASAAIAcQoAYMAQsgACABIAIgAyAEIAURCgAhAQsgBkEgaiQAIAEL5goCC38DfiMAQRBrIg0kACAEIAVBAWsiBkECdGooAgAhBwJAAkACQCAFQQFGBEBBACEGIA1BADYCDAJAIANBAk0EQCAHrSERA0AgA0EATA0CIAEgA0EBayIDQQJ0IgBqIAAgAmo1AgAgBq1CIIaEIhIgEYAiEz4CACASIBEgE359pyEGDAALAAsgB0F/c61CIIZC/////w+EIAetgKchAANAIANBAWsiA0EASA0BIAEgA0ECdCIEaiANQQxqIAYgAiAEaigCACAHIAAQmAY2AgAgDSgCDCEGDAALAAsgAiAGNgIADAELAkACQAJAAkACQCADIAVrIgggBSAFIAhKG0EyTgRAIAgEQCAAKAIAQQAgCEEBaiIOIAggBSAISxsiCUEBaiIMQQJ0IAAoAgQRAQAiC0UgACgCAEEAIAxBA3QgACgCBBEBACIHRXINBSAFIAlLDQIgCSAFayEPQQAhBgNAIAogD0YEQANAIAUgBkYNBiAHIAYgD2pBAnRqIAQgBkECdGooAgA2AgAgBkEBaiEGDAALAAUgByAKQQJ0akEANgIAIApBAWohCgwBCwALAAtBzIwBQdT8AEGkC0GV6wAQAAALIAhBA08EQCAHQX9zrUIghkL/////D4QgB62ApyEJCwJAAkACQANAIAZBAEgNASAGQQJ0IQAgBiAIaiEDIAZBAWshBiACIANBAnRqKAIAIgMgACAEaigCACIARg0ACyABIAhBAnRqIAAgA00iADYCACAADQEMAgsgASAIQQJ0akEBNgIACyACIAhBAnRqIgAgACAEIAUQmAIaCyAHrSERA0AgCEEBayIIQQBIDQggAiAIQQJ0Ig5qIQwCf0F/IAcgAiAFIAhqQQJ0aiIGKAIAIgBNDQAaIAkEQCANQQhqIAAgBkEEaygCACAHIAkQmAYMAQsgBkEEazUCACAArUIghoQgEYCnCyIArSESQQAhCkEAIQMDQCADIAVGRQRAIAwgA0ECdCIPaiIQIBA1AgAgCq0gBCAPajUCACASfnx9IhM+AgBBACATQiCIp2shCiADQQFqIQMMAQsLIAYgBigCACIDIAprNgIAIAMgCkkEQANAIABBAWshACAMIAwgBCAFEKoERQ0AIAYgBigCAEEBaiIDNgIAIAMNAAsLIAEgDmogADYCAAwACwALIAUgCWshCkEAIQYDQCAGIAlGRQRAIAcgBkECdGogBCAGIApqQQJ0aigCADYCACAGQQFqIQYMAQsLIAdBASAJEKkDRQ0AIAtBACAJQQJ0IgYQKyAGakEBNgIADAELIAAgCyAHIAkQmQYNAQsgACAHIAsgDCACIANBAnRqIAlBf3NBAnRqIAwQ1wINACAIQX9zIAxBAXRqIQhBACEGA0AgBiAORkUEQCABIAZBAnRqIAcgBiAIakECdGooAgA2AgAgBkEBaiEGDAELCyAAKAIAIAdBACAAKAIEEQEAGiAAKAIAIAtBACAAKAIEEQEAGiAAKAIAQQAgA0ECdEEEaiAAKAIEEQEAIgdFDQMgACAHIAEgDiAEIAUQ1wINASACIAIgByAFQQFqEJgCGiAAKAIAIAdBACAAKAIEEQEAGiACIAVBAnRqIQADQCAFIQMCQCAAKAIADQADQCADQQBMDQEgAiADQQFrIgNBAnQiBmooAgAiCCAEIAZqKAIAIgZGDQALIAYgCEsNBAsgAiACIAQgBRCYAiEDIAAgACgCACADazYCACABQQEgDhCpAxoMAAsACyALBEAgACgCACALQQAgACgCBBEBABoLIAdFDQILIAAoAgAgB0EAIAAoAgQRAQAaDAELQQAhCwwBC0F/IQsLIA1BEGokACALC5YFAhF/A35BASAEdCIQQQF2IRIgBkECdEGQqQRqKAIAIhVBAXQhCkEBIQsDQCACIQwCQAJAIBBBAkYEQEEAIQADQCARIBJGDQIgASARQQJ0IgNqIAwgESASakECdCIEaigCACICIAMgDGooAgAiA2oiBSAKQQAgBSAKTxtrNgIAIAEgBGogAyACayAKQQAgAiADSxtqNgIAIBFBAWohEQwACwALQQAhAgJAIARBE0oNACAAIAZBoAFsaiAFQdAAbGogBEECdGpBqA1qIg0oAgAiAg0AIAZBAnRBkKkEaigCACEHQQAhAiAAKAIAIggoAgBBAEEEIAR0IAgoAgQRAQAiCEUNACAEQQFrIQ4gACAGQagBbGogBUHUAGxqIARBAnRqIgI1AuAGIRggAigCGCETIAetIRlBASECQQAhCQNAIAkgDnZFBEAgCCAJQQN0aiIPIAI2AgAgDyACrSIaQiCGIBmAPgIEIAIgE2wgByAYIBp+QiCIp2xrIgIgB0EAIAIgB08bayECIAlBAWohCQwBCwsgDSAINgIAIAghAgsgAiIHDQFBfyEACyAADwsgEEEBdiEQIAtBAXQhCEEAIQlBACENQQAhDgNAIAkgEEcEQCAHNQIEIRggBygCACETQQAhAgNAIAIgC0cEQCADIAIgDmoiD0ECdGogDCACIA1qIhQgEmpBAnRqKAIAIhYgDCAUQQJ0aigCACIUaiIXIApBACAKIBdNG2s2AgAgAyALIA9qQQJ0aiAUIBZrIApqIg8gE2wgFSAPrSAYfkIgiKdsazYCACACQQFqIQIMAQsLIAlBAWohCSAIIA5qIQ4gCyANaiENIAdBCGohBwwBCwsgBEEBayEEIAMhAiAMIQMgCCELDAALAAvUBAEJfwJAIAAoAgAiCSgCAEEAIARBAnQgCSgCBBEBACILRQ0AAkAgA0UEQCAAIAEgASALIAIgBiAHEKYERQ0BDAILIAAoAgAiCSgCAEEAIARBBnQgCSgCBBEBACIJRQ0BAkAgBUEPcUUEQCAAIAdBqAFsaiAGQdQAbGogAiADakECdGooAhghECAHQQJ0IgNBkKkEaigCACEOIAAgA2ooAgQhD0EBIQ0DQEEAIQMgBSAMTQ0CA0BBACEKIAMgBEYEQEEAIQgDQAJAIAhBEEcEQCAJIAQgCGxBAnRqIQMCQCAGRQRAIAAgAyADIAsgAkEAIAcQpgQNASADIAQgDSAOIA8QmgYMAwsgAyAEIA0gDiAPEJoGIAAgAyADIAsgAkEBIAcQpgRFDQILIAkhCAwJCwNAAkAgBCAKRwRAIAUgCmwgDGohA0EAIQgDQCAIQRBGDQIgASADIAhqQQJ0aiAJIAQgCGwgCmpBAnRqKAIANgIAIAhBAWohCAwACwALIAxBEGohDAwGCyAKQQFqIQoMAAsACyAIQQFqIQggDSAQIA4gDxDWAiENDAALAAUgAyAFbCAMaiEKQQAhCANAIAhBEEZFBEAgCSAEIAhsIANqQQJ0aiABIAggCmpBAnRqKAIANgIAIAhBAWohCAwBCwsgA0EBaiEDDAELAAsACwALQbWPAUHU/ABB4T1Bi9cAEAAACyAAKAIAIgEoAgAgCUEAIAEoAgQRAQAaCyAAKAIAIgAoAgAgC0EAIAAoAgQRAQAaQQAPCyAAIAgQ1QIgACALENUCQX8LQAAgACABQQF0rSABrSACrSAAQh2IQv////8Pg35CIIh+fH0iACAAQiCIp0EBdSABca18IgBCIIinIAFxIACnagv9AgILfwJ+IAFBACACIAdsQQJ0ECshCyACIAUgBEEFdGpBAWsgBW4iASABIAJKGyIBQQAgAUEAShshDEF/IAV0QX9zQX8gBUEfcRshCiAHQQAgB0EAShshDSAFQSBKIQ4gBUE+SCEPIAVBPUshECAFQcEASSERA0AgCSAMRkUEQCADIAQgBSAJbCIBEGghBwJ+IA5FBEAgByAKca0iEwwBCyADIAQgAUEgahBoIQggEEUEQCAHrSITIAggCnGtQiCGhAwBCwJ/IBFFBEAgAyAEIAFBQGsQaCAKcQwBCyAIIApxIQhBAAshASAHQf////8Hca0hEyAHQR92rSAIrUIBhoQgAa1CIYaECyEUQQAhBwNAIAcgDUZFBEAgFCAGIAdqQQJ0IgFBkKkEaigCACIIIAAgAWooAgQiEhCoBCEBIAsgAiAHbCAJakECdGogDwR/IAEFIAGtQh+GIBOEIAggEhCoBAs2AgAgB0EBaiEHDAELCyAJQQFqIQkMAQsLC08BBH8DQCADIAVGRQRAIAAgBUECdCIGaiAEIAIgBmooAgAiByABIAZqKAIAaiIEaiIGNgIAIAQgB0kgBCAGS3IhBCAFQQFqIQUMAQsLIAQL4wEBA38CQAJAIANBA3FFIANBB3EiBEEFRiACQf////8DRnJyIAFBAUYgBEECRnFyRQRAIAEgBEEDR3INAQsgACABEIwBDAELIAAgAkEfakEFdiIEEEEEQCAAEDVBIA8LIAAoAhAiBUF/QSBBACACayICQR9xIgZrdEF/cyACdEF/IAYbNgIAQQEgBCAEQQFNGyEEQQEhAgNAIAIgBEZFBEAgBSACQQJ0akF/NgIAIAJBAWohAgwBCwsgACABNgIEIABBgICAgAJBAUEcIANBBXZBP3EiAGt0IABBP0YbNgIIC0EUC2sAAkACQAJAAkACQCAAIAFyQQ9xDg8ABAMEAgQDBAEEAwQCBAMEC0HYAEHZACABQRBGGw8LQdoAQdsAIAFBCEYbDwtB3ABB3QAgAUEERhsPC0HeAEHfACABQQJGGw8LQeAAQeEAIAFBAUYbCzEBAX9BASEBAkACQAJAIABBCmsOBAIBAQIACyAAQajAAEYNAQsgAEGpwABGIQELIAELtQIBA38CQAJAIAAoAjAiCUEBaiIKIAAoAiwiCE0EQCAAKAIoIQgMAQsgACgCICgCECIJQRBqIAAoAihBCCAIQQNsQQF2IgggCEEITRsiCiAAKAIkbCAJKAIIEQEAIghFBEBBfyEIDAILIAAgCDYCKCAAIAo2AiwgACgCMCIJQQFqIQoLIAAgCjYCMCAIIAAoAiQgCWxqIgggBzYCBCAIIAY6AAAgCCAENgIMIAggBTYCCCAIIAM6AAEgCEEQaiEEIAAoAgxBAXQhBUEAIQADQCAAIAVGRQRAIAQgAEECdCIGaiABIAZqKAIANgIAIABBAWohAAwBCwsgBCAFQQJ0aiEBQQAhCEEAIQADQCAAIANGDQEgASAAQQJ0IgRqIAIgBGooAgA2AgAgAEEBaiEADAALAAsgCAtpAQR/IAEQPyEDA0ACQCAALQAARQRAQX8hAgwBCwNAAn8gAEEsEKYDIgRFBEAgABA/DAELIAQgAGsLIgUgA0YEQCAAIAEgAxBhRQ0CCyAAIAVqQQFqIQAgBA0ACyACQQFqIQIMAQsLIAILTAECfwJAIAAoAgQiAyACaiIEIAAoAghLBH8gACAEEMYBDQEgACgCBAUgAwsgACgCACIDaiABIANqIAIQHxogACAAKAIEIAJqNgIECwtNAQR/IAAoAgghAyAAQQA2AgggACgCACEEIABCADcCACAAKAIQIQUgACgCDCEGIAAgAyAEIAEgAkEAENsCIQAgBiADQQAgBREBABogAAsXACAAIAFB/wFxEBEgACACQf//A3EQKgujGgENfyMAQdAFayIEJAAgBCACKAIAIgU2ApwEAkACQAJAAkACQAJAAkACQAJAAkACQCAFLQAAIggEQCAIQdwARw0GIAVBAWoiByAAKAIcTw0BIAQgBUECaiIGNgKcBAJAAkACQAJAAkACQAJAAkACQAJAIAUtAAEiCEHTAGsOBQQBAQEGAAsCQCAIQeMAaw4CCAcACwJAIAhB8wBrDgUDAQEBBQALIAhBxABGDQEgCEHQAEYgCEHwAEZyDQgLIAAoAighAQwNC0EBIQkMBAtBAiEJDAMLQQMhCQwCC0EEIQkMAQtBBSEJCyAJQQF0QQxxQbCBAmooAgAiBi8BACEFIAAoAkAhACABQTQ2AhAgASAANgIMQQAhAyABQQA2AgggAUIANwIAIAlBAXEhACAGQQJqIQYgBUEBdCEJQQAhCAJAA0AgCCAJRwRAIAYgCEEBdGovAQAhByABKAIAIgUgASgCBE4EQCABIAVBAWoQ2QINAyABKAIAIQUgASgCCCEDCyABIAVBAWo2AgAgAyAFQQJ0aiAHNgIAIAhBAWohCAwBCwtBgICAgAQhCCAARQ0LIAEQ2gJFDQsLIAEoAgwgASgCCEEAIAEoAhARAQAaDAwLAkAgBi0AACIBQd8BcUHBAGtB/wFxQRpPBEAgACgCKCEGIANFIAFB3wBGIAFBMGtB/wFxQQpJckVyDQEgBg0MCyAEIAVBA2o2ApwEIAFBH3EhCAwKCyAGDQogBCAHNgKcBEHcACEIDAkLIAAoAihFBEBBACEBDAYLIAYtAABB+wBHDQIgBEHgBGohBQJAAkACQAJAAkADQAJAIAZBAWohCSAGLQABIgMQrwNFDQAgBSAEQeAEamtBPksNAiAFIAM6AAAgBUEBaiEFIAkhBgwBCwsgBUEAOgAAIARBoARqIQUCQCAJLQAAIgNBPUcNACAGQQJqIQkgBEGgBGohBQNAIAktAAAiAxCvA0UNASAFIARBoARqa0E/TwRAIABBreEAQQAQOgwSBSAFIAM6AAAgBUEBaiEFIAlBAWohCQwBCwALAAsgBUEAOgAAIANB/QBHBEAgAEHDlAFBABA6DBALQQEhAwJAAkAgBEHgBGpByidBBxBhRQ0AIARB4ARqQff7AEEDEGFFDQBBACEDIARB4ARqQbk3QRIQYUUNACAEKALgBEHzxuEDRw0BCyAAKAJAIQYgAUE0NgIQIAEgBjYCDCABQQA2AgggAUIANwIAQeCnAiAEQaAEahCvBCIMQQBIBEAgBkEAQQAQ8wQaIABBsydBABA6DBELIAEhBSADRQRAIARBNDYCzAUgBCAGNgLIBSAEQQA2AsQFIARCADcCvAUgBEE0NgK4BSAEIAY2ArQFIARBADYCsAUgBEIANwKoBSAEQbwFaiEFCyAMQQFqIQ5B0LkCIQBBACEHAkADQCAAQYHOAkkEQCAHIQsgAC0AACIGwCENAn8gAEEBaiAGQf8AcSIHQeAASQ0AGiAALQABIQogB0HvAE0EQCAHQQh0IApyQaC/AWshByAAQQJqDAELIAAtAAIgB0EQdHIgCkEIdHJBoN+/A2shByAAQQNqCyEGIA1BAE4EQCAHIAtqQQFqIQcgBiEADAILIAZBAWohACAHIAtqQQFqIQcgDiAGLQAARw0BIAUgCyAHEH5FDQEMAgsLIAMNC0GQzgIhAEEAIQYgDEE2RiENIAxBGEchDwNAIABBr9QCSQRAIAYhCyAALAAAIgZB/wFxIQcCfyAAQQFqIAZBAE4NABogAC0AASEKIAZBv39NBEAgB0EIdCAKckGA/wFrIQcgAEECagwBCyAALQACIAdBEHRyIApBCHRyQYD//gVrIQcgAEEDagsiAEEBaiEKIAcgC2pBAWohBiAALQAAIQcCQAJAIA1FBEBBACEAIA8NAQsgB0UNASAEQagFaiALIAYQfkUNAQwECwNAIAAgB0YNASAAIApqIRAgAEEBaiEAIA4gEC0AAEcNAAsgBEGoBWogCyAGEH4NAwsgByAKaiEADAELCyAMQTZHIAxBGEdxRQRAIARBqAVqENoCDQEgASAFKAIIIAUoAgAgBCgCsAUiACAEKAKoBUEBENsCDQEMCwsgASAFKAIIIAUoAgAgBCgCsAUiACAEKAKoBUEAENsCRQ0KCyAEKAKwBSEAIAQoArQFIQEgBCgCuAUhAgNAIAMNACAFKAIMIAUoAghBACAFKAIQEQEAGiABIABBACACEQEAGgwACwALAkAgBEHgBGpBrR1BERBhBEAgBEHgBGpBjvwAQQMQYQ0BCyAAKAJAIQMgAUE0NgIQIAEgAzYCDCABQQA2AgggAUIANwIAIAEgBEGgBGoQpwYiA0UNCiABKAIMIAEoAghBACABKAIQEQEAGiADQX5HDQUgAEGMHUEAEDoMEAsgBC0AoAQNACAAKAJAIQMgAUE0NgIQIAEgAzYCDCABQQA2AgggAUIANwIAIAEgBEHgBGoQpwYiA0F/Rg0DIANBAE4NCQJAQfDZAiAEQeAEahCvBCIDQQBIDQACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADQSJrDhMWBRUABA4MCw8NCgYHEAIBAwkIEQsgBEKGgICA8AA3AwggBEKAgICAEDcDACABIAQQfQwRCyAEQoOAgIDwADcDICAEQoGAgIAQNwMYIARCgICAgICABDcDECABIARBEGoQfQwQCyAEQUBrQoOAgIDwADcDACAEQoGAgIAwNwM4IARCgICAgMAANwMwIAEgBEEwahB9DA8LIARCg4CAgPAANwNgIARCgYCAgMAANwNYIARCgICAgCA3A1AgASAEQdAAahB9DA4LIARBBzYCkAEgBEKDgICAMDcDiAEgBEKDgICAEDcDgAEgBEKBgICAwAA3A3ggBEKAgICA4AE3A3AgASAEQfAAahB9DA0LIARCg4CAgPAANwPIASAEQoGAgIAgNwPAASAEQoOAgIAwNwO4ASAEQoOAgIAQNwOwASAEQoGAgIDAADcDqAEgBEKAgICA4IcBNwOgASABIARBoAFqEH0MDAsgBEEHNgLoASAEQoOAgIDgADcD4AEgBEKBgICA0AA3A9gBIARCgICAgJCogIA/NwPQASABIARB0AFqEH0MCwsgBEKDgICA8AA3A4ACIARCgYCAgNAANwP4ASAEQoCAgICAKDcD8AEgASAEQfABahB9DAoLIARChICAgPAANwPIAiAEQoOAgIDgADcDwAIgBEKBgICAsAE3A7gCIARCnoCAgDA3A7ACIARCnYCAgBA3A6gCIARCg4CAgBA3A6ACIARCgYCAgPAANwOYAiAEQoCAgIDghwE3A5ACIAEgBEGQAmoQfQwJCyAEQQc2ApgDIARChoCAgMAANwOQAyAEQoyAgIAwNwOIAyAEQoOAgIAQNwOAAyAEQoGAgIDgAzcD+AIgBEKBgICA0AM3A/ACIARCiICAgDA3A+gCIARCg4CAgBA3A+ACIARCgYCAgPAANwPYAiAEQoCAgIDg38EANwPQAiABIARB0AJqEH0MCAsgAUEBEK0DDAcLIAFBAhCtAwwGCyABQQcQrQMMBQsgBEKFgICA8AA3A7ADIARCgYCAgNABNwOoAyAEQoKAgIAQNwOgAyABIARBoANqEH0MBAsgBEKFgICA8AA3A9ADIARCgYCAgOABNwPIAyAEQoKAgIDAADcDwAMgASAEQcADahB9DAMLIARChYCAgPAANwPwAyAEQoGAgIDwATcD6AMgBEKCgICAwAA3A+ADIAEgBEHgA2oQfQwCCyAEQoWAgIDwADcDkAQgBEKBgICAoAE3A4gEIARCgYCAgIAGNwOABCABIARBgARqEH0MAQsgA0EhSw0BIAEgA0EQahCmBgtFDQoMBAsgASgCDCABKAIIQQAgASgCEBEBABoLIABB9eUAQQAQOgwOCyABQQBBgIDEABB+DQEMBwsgAUEAQYABEH5FDQYLIAEoAgwgASgCCEEAIAEoAhARAQAaCyAAEKgCDAoLQQAhCCAFIAAoAhxJDQYLIABBy/MAQQAQOgwICyAAQafKAEEAEDoMBwsgBSgCDCAFKAIIQQAgBSgCEBEBABogBCgCtAUgAEEAIAQoArgFEQEAGgsCQCAIQdAARw0AIAEQ2gJFDQAgASgCDCABKAIIQQAgASgCEBEBABoMBgsgBCAJQQFqNgKcBEGAgICABCEIDAMLIAQgBzYCnAQgBEGcBGogAUEBdBD5ASIDQQBOBEAgAyEIDAMLAkAgA0F+Rw0AIAQoApwEIgUtAAAiA0UNAEGqkAEgA0EQEPsBIAFFcg0BDAQLIAENAyAEKAKcBCEFCyAIwEEATg0AIAVBBiAEQZwEahBYIghBgIAESQ0BIAAoAigNASAAQY7IAEEAEDoMAwsgBCAFQQFqNgKcBAsgAiAEKAKcBDYCAAwCCyAAQafOAEEAEDoLQX8hCAsgBEHQBWokACAICx8BAX8gACgCPCIBQQBIBH8gABCqBhogACgCPAUgAQsLgQMBBH8jAEEQayIEJAAgBCABKAIAIgU2AgwgAkEBdCEGIAAhAwJ/A0ACQAJAAkACfwJAAkAgBS0AACICQdwARwRAIAJBPkcNASAAIANGDQYgA0EAOgAAIAEgBCgCDEEBajYCAEEADAgLIAQgBUEBajYCDCAFLQABQfUARg0BDAULIALAQQBODQIgBUEGIARBDGoQWAwBCyAEQQxqIAYQ+QELIgJB///DAEsNAgwBCyAEIAVBAWo2AgwLAkAgACADRgRAAn8gAkH/AE0EQCACQQN2Qfz///8BcUGQgQJqKAIAIAJ2QQFxDAELIAIQuQMLRQ0CDAELAn8gAkH/AE0EQCACQQN2Qfz///8BcUGggQJqKAIAIAJ2QQFxDAELIAJB/v//AHFBjMAARiACENIEQQBHcgtFDQELIAMgAGtB+QBKDQACfyACQf8ATQRAIAMgAjoAACADQQFqDAELIAMgAhChAyADagshAyAEKAIMIQUMAQsLQX8LIQIgBEEQaiQAIAILDQAgAEEGQX9BBRD/BQtgAQF8IAApAgRC//////////8/WARAIAEgASsDCEQAAAAAAADwPyAAKAIAtyICo6A5AwggASABKwMQIAAoAgQiAEEfdSAAQf////8HcSAAQR92dGpBEWq4IAKjoDkDEAsLmgEBBH8gAEEQaiEFIAAhBgJAA0AgAkEATA0BAkACQAJ/IAYtAAdBgAFxBEAgBSABQQF0ai8BAAwBCyABIAVqLQAACyIAQTBrIgRBCkkNACAAQcEAa0EFTQRAIABBN2shBAwBCyAAQecAa0F6SQ0BIABB1wBrIQQLIAJBAWshAiABQQFqIQEgBCADQQR0ciEDDAELC0F/IQMLIAMLJgEBfyMAQRBrIgIkACACQQA2AgwgAEEFIAFBABCSBCACQRBqJAALwQEBA38CQCABIAIoAhAiAwR/IAMFIAIQzgMNASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRAQAPCwJAIAIoAlBBAEgEQEEAIQMMAQsgASEEA0AgBCIDRQRAQQAhAwwCCyAAIANBAWsiBGotAABBCkcNAAsgAiAAIAMgAigCJBEBACIEIANJDQEgACADaiEAIAEgA2shASACKAIUIQULIAUgACABEB8aIAIgAigCFCABajYCFCABIANqIQQLIAQLiwEBA38jAEEQayIAJAACQCAAQQxqIABBCGoQBQ0AQYzeBCAAKAIMQQJ0QQRqELEBIgE2AgAgAUUNACAAKAIIELEBIgEEQEGM3gQoAgAiAiAAKAIMQQJ0akEANgIAIAIgARAERQ0BC0GM3gRBADYCAAsgAEEQaiQAQYjVBEHM1QQ2AgBBwNQEQSo2AgALVAAjAEEQayICJAAgACACQQhqIAMpAwAQQgR+QoCAgIDgAAUgAikDCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUq1CgICAgBCECyEBIAJBEGokACABC1QAIwBBEGsiAiQAIAAgAkEIaiADKQMAEEIEfkKAgICA4AAFIAIpAwhC////////////AINCgICAgICAgPj/AFatQoCAgIAQhAshASACQRBqJAAgAQtVAQF/AkACQAJAIAFCIIinQQFqDgMAAQIBCyABpyICLwEGQQZHDQAgAikDICIBQoCAgIBwg0KAgICAEFENAQsgAEHk0QBBABAVQoCAgIDgACEBCyABC24BBX9B6AIhAQNAIAEgAk4EQCAAIAEgAmpBAXYiA0ECdEGQggJqKAIAIgRBD3YiBUkEQCADQQFrIQEMAgsgACAEQQh2Qf8AcSAFakkEQEEBDwUgA0EBaiECDAILAAsLIABBsJECQeCSAkEGEKwDCxEAIABBgJMCQcCYAkEWEKwDC0YBAX8CQCAAKAIIIAJqIgMgACgCDEoEQCAAIAMgARC3Ag0BCwNAIAJBAEwEQEEADwsgAkEBayECIAAgARCLAUUNAAsLQX8LmAECBX8BfiABKQIEIginQf////8HcSIERQRAIAIPCyAAKAIEIQMCfyAIQoCAgIAIg1BFBEAgAS8BEAwBCyABLQAQCyEGIANB/////wdxIQUgBEEBayEHAkADQCACIARqIAVKDQEgACAGIAIQxwEiA0EASCADIARqIAVKcg0BIAAgASADQQFqIgJBASAHELMDDQALIAMPC0F/C5YCAQR/IAAoAhAhBiABKAIAIgUtABAEfyAGIAUQkAQgBSgCFCADakGBgNzxeWwgBGpBgYDc8XlsBUEACyEHAn8gBSgCICIIIAUoAhxOBEAgACABIAIgCEEBahC8BQRAQX8gBS0AEEUNAhogBiAFEJQDQX8PCyABKAIAIQULIAUtABAEQCAFIAc2AhQgBiAFEJQDCyAFIAUoAiAiAUEBajYCICAFIAFBA3RqIgEgACADEBgiADYCNCABIAEoAjBB////H3EgBEEadHI2AjAgBSAFLQARIABBH3ZyOgARIAEgASgCMEGAgIBgcSAFIAAgBSgCGHFBf3NBAnRqIgAoAgBB////H3FyNgIwIAAgBSgCIDYCAEEACwunAQICfwF+AkACQCAAIAEQ0AMiA0EASA0AIANFDQFBlTAhAiAAIAAgAUHtACABQQAQFCIEQoCAgIBwgyIBQoCAgIAgUSABQoCAgIAwUXIEf0GVMAUgAUKAgICA4ABRDQEgACAEEDciAUKAgICAcINCgICAgOAAUQ0BQQAhAiABp0HnAEEAEMcBIQMgACABEA8gA0EATg0CQYvdAAtBABAVC0F/IQILIAILqQMBC38CQCAAKAIQIgQoAtABQQF0QQJqIAQoAswBTA0AIARBEGoiCUEEIAQoAsgBIgNBAWoiCHQiBSAEKAIAEQMAIgdFDQBBASAIdCEKIAdBACAFECshByAEKALMASIFQQAgBUEAShshC0EfIANrIQwDQCAEKALUASEDIAYgC0ZFBEAgAyAGQQJ0aigCACEDA0AgAwRAIAMoAighBSADIAcgAygCFCAMdkECdGoiDSgCADYCKCANIAM2AgAgBSEDDAELCyAGQQFqIQYMAQsLIAkgAyAEKAIEEQAAIAQgBzYC1AEgBCAKNgLMASAEIAg2AsgBCyAAIAJBA3RBQGsQKSIDRQRAQQAPCyADQQI6ABQgA0EBNgIQIAQoAlAiBSADQRhqIgY2AgQgAyAEQdAAajYCHCADIAU2AhggBCAGNgJQIAEEQCABIAEoAgBBAWo2AgALIANCADcCACADIAE2AjwgA0IANwIwIAMgAjYCLCADQQM2AiggA0EBOwEgIANCADcCCCADIAFBgYDc8XlsQf//o44GazYCJCAAKAIQIANBEGoiABCUAyAAC44EAQJ+IwBBIGsiAiQAIAMpAwAhBQJAAkACQCAEBEAgBUL/////b1gEQCAAECQMAwsgBaciBCAEKAIAQQFqNgIADAELIAAgBRAlIgUhASAFQoCAgIBwg0KAgICA4ABRDQILAkAgACADKQMIEDEiA0UNAEKAgICAMCEBAkACQCAFQoCAgIBwVA0AIAAgAiAFpyADEEwiBEEASA0CIARFDQAgABA0IgFCgICAgHCDQoCAgIDgAFENAQJAIAItAABBEHEEQCACKQMQIgZCIIinQXVPBEAgBqciBCAEKAIAQQFqNgIACyAAIAFBwQAgBkGHgAEQGUEASA0DIAIpAxgiBkIgiKdBdU8EQCAGpyIEIAQoAgBBAWo2AgALIAAgAUHCACAGQYeAARAZQQBODQEMAwsgAikDCCIGQiCIp0F1TwRAIAanIgQgBCgCAEEBajYCAAsgACABQcAAIAZBh4ABEBlBAEgNAiAAIAFBPiACNQIAQgGIQgGDQoCAgIAQhEGHgAEQGUEASA0CCyAAIAFBPyACNQIAQgKIQgGDQoCAgIAQhEGHgAEQGUEASA0BIAAgAUE9IAI1AgBCAYNCgICAgBCEQYeAARAZQQBIDQEgACACEEgLIAAgAxATIAAgBRAPDAMLIAAgAhBIIAAgARAPCyAAIAMQEyAAIAUQDwtCgICAgOAAIQELIAJBIGokACABC1UBAX8jAEEgayIFJAACQCAAIAUgAxD7BEEASARAQX8hBAwBCyAAIAEgAiAFKQMIIAUpAxAgBSkDGCAFKAIAIARyEG0hBCAAIAUQSAsgBUEgaiQAIAQLggIDBH8BfgJ8IwBB4ABrIgYkAEKAgICA4AAhCQJAIAAgASAGQRBqIARBD3EiCCAEQQh2QQ9xIgdFELcDIgVBAEgNAEQAAAAAAAD4fyEKAkAgBUUgAkEATHINAEEAIQUgBEEEdkEPcSAHayIEIAIgAiAEShsiAkEAIAJBAEobIQIDQCACIAVHBEAgACAGQQhqIAMgBUEDdGopAwAQQg0DIAYrAwgiC71CgICAgICAgPj/AINCgICAgICAgPj/AFENAiAGQRBqIAUgB2pBA3RqIAudOQMAIAVBAWohBQwBCwsgBkEQaiAIEOACIQoLIAAgASAKEMkEIQkLIAZB4ABqJAAgCQvHAQEBfwJAAkAgAUKAgICAcFQNACABpyIDLwEGQQpHDQAgACADKQMgEA8gAwJ+IAK9IgECfyACmUQAAAAAAADgQWMEQCACqgwBC0GAgICAeAsiALe9UQRAIACtDAELQoCAgIDAfiABQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbCyIBNwMgIAFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIAIAEPCyAAQa0xQQAQFUKAgICA4AAhAQsgAQspAQF+IAAgARCqASIBRQRAQoCAgIDgAA8LIAAgARAtIQIgACABEBMgAgshACAAQpADgVCtQu4CQu0CIABCA4NQGyAAQuQAgVCtfXwLWQEBfiAAQu0CfiAAQrEPfUICh3wgAELtDn0iASABQuQAgSIBfSABQj+HQpx/g3xCnH9/fCAAQsEMfSIAIABCkAOBIgB9IABCP4dC8HyDfEKQA398QsrxK30LxQECCH8BfiAAIAEQnAJBfyEEAkAgASgCACIHQQNqIgggACkCBCILp0H/////B3FKDQAgAEEQaiEFIAtCgICAgAiDIQsDQCADQQxGDQEgA0EDbCEJQQAhAAJAA0AgAEEDRg0BIAAgB2ohBiAAIAlqIQogAEEBaiEAAn8gC1BFBEAgBSAGQQF0ai8BAAwBCyAFIAZqLQAACyAKQeDRAWosAABGDQALIANBAWohAwwBCwsgAiADrTcDACABIAg2AgBBACEECyAEC7QBAgR/AX4jAEEQayIDJAAgAyABKAIAIgQ2AgxBfyEGIAApAgQiB6dB/////wdxIARKBEAgAEEQaiEFAkACQAJ/IAdCgICAgAiDUEUEQCAFIARBAXRqLwEADAELIAQgBWotAAALIgVBK2sOAwABAAELIAMgBEEBajYCDAsgACADQQxqIAIQnQIiBiAFQS1HckUEQCACQgAgAikDAH03AwALIAEgAygCDDYCAAsgA0EQaiQAIAYL8QkDAXwLfwF+IwBB0AJrIgIkAEKAgICA4AAhEQJAIAAgASACQcABaiAEQQR2IgNBAXFBABC3AyIGQQBIDQAgA0EPcSENIAZFBEAgDUECRgRAIABB84IBQQAQUAwCCyAAQd3iABBiIREMAQsCfyACKwOAAiIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshDgJ/IAIrA/gBIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEPAn8gAisD8AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIRACfyACKwPoASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshCQJ/IAIrA+ABIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEKAn8gAisD2AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQcCfyACKwPQASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshCwJ/IAIrA8gBIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEMIARBAXEhCAJ/IAIrA8ABIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEGQQAhAwJAIAhFDQAgBEEPcSEIAkACQAJAAkAgDQ4EAAECAwQLIAIgBjYCYCACIAs2AlQgAiAGQR92QQRyNgJcIAIgDEEDbEHg0QFqNgJYIAIgD0EDbEHA0QFqNgJQIAJBkAJqQcAAQduZASACQdAAahBOIQMMAwsgAiAGNgKAASACIAs2AnggAiAGQR92QQRyNgJ8IAIgDEEDbEHg0QFqNgJ0IAIgD0EDbEHA0QFqNgJwIAJBkAJqQcAAQcX7ACACQfAAahBOIQMgCEEDRw0CIAJBkAJqIANqQSA6AAAgA0EBaiEDDAILIAIgBjYCoAEgAkGQAmoiCEHAAEGo+wBBovsAIAZBkM4ASRsgAkGgAWoQTiEDIAIgCzYClAEgAiAMQQFqNgKQASADIAhqQcAAIANrQZWBASACQZABahBOIANqIQMMAQsgAiALNgK0ASACIAxBAWo2ArABIAIgBjYCvAEgAiAGQR92QQRyNgK4ASACQZACakHAAEG2+wAgAkGwAWoQTiEDIAhBA0cNACACQZACaiADakGswAA7AAAgA0ECaiEDCwJAIARBAnFFDQACQAJAAkACQCANDgQAAQIDBAsgAiAJNgIIIAIgCjYCBCACIAc2AgAgAkGQAmogA2pBwAAgA2tB14EBIAIQTiADaiEDDAMLIAIgCTYCKCACIAo2AiQgAiAHNgIgIAJBkAJqIgcgA2pBwAAgA2tB14EBIAJBIGoQTiADaiIDIAdqQS1BKyAOQQBIGzoAACACIA4gDkEfdSIEcyAEayIEQTxuIgY2AhAgAiAGQURsIARqNgIUIAcgA0EBaiIEakE/IANrQa37ACACQRBqEE4gBGohAwwCCyACIBA2AjwgAiAJNgI4IAIgCjYCNCACIAc2AjAgAkGQAmogA2pBwAAgA2tBoIABIAJBMGoQTiADaiEDDAELIAIgCTYCSCACIAo2AkQgAkHBAEHQACAHQQxIGzYCTCACIAdBAWpBDG9BAWs2AkAgAkGQAmogA2pBwAAgA2tBmIMBIAJBQGsQTiADaiEDCyAAIAJBkAJqIAMQkwIhEQsgAkHQAmokACARCzcCAn8BfiMAQRBrIgAkACAAEKMEIAApAwAhAiAAKAIIIQEgAEEQaiQAIAFB6AdtrCACQugHfnwLlAwDC38DfgF8IwBBoAFrIgQkACAEQeAAakEAQTgQKxogBEIBNwNwIARCATcDaEKAgICA4AAhASAAIAMpAwAQKCIRQoCAgIBwg0KAgICA4ABSBEAgBEEANgIMIBGnIgUpAgQiD0KAgICACIMhEAJAAkACQAJAIA9C/////weDUA0AIAVBEGohBwJAAn8gEFAiDEUEQCAHLwEADAELIActAAALIgNBMGtBCkkNACADQStrDgMAAQABC0KAgICAwH4hASAFIARBDGogBEHgAGoQzgQNAyAPp0H/////B3EhBkEBIQkDQAJAAkACQCAJQQdGIAQoAgwiAyAGTnINACAJQQJ0Qdj/AWooAgAhAgJ/IAxFBEAgByADQQF0ai8BAAwBCyADIAdqLQAACyACRw0AIAQgA0EBaiIINgIMIAlBBkcNASAGIAhMDQdB6AchAkEAIQsgCCEDA0ACQAJAIAMgBkYEQCAGIQMMAQsCfyAMRQRAIAcgA0EBdGovAQAMAQsgAyAHai0AAAsiCkEwayINQQpJDQEgAyAIRg0KCyAEIAM2AgwgBCALrDcDkAEMBAsgAkEBRiEOIA0gAkEKbSICbCALaiAOIApBNEtxaiELIANBAWohAwwACwALIAQgBCkDaEIBfTcDaCADIAZOBEAgCUEDSyEKDAULAn8CQAJAAn8gDEUEQCAHIANBAXRqLwEADAELIAMgB2otAAALIgJBK2sOAwEJAQALIAJB2gBHDQhCACEPIANBAWoMAQsgBCADQQFqIgM2AgwgBiADayIDQQZrQX5JDQcgBSAEQQxqIARBGGoQ3wINByADQQVGBEAgBCgCDCEDAn8gDEUEQCAHIANBAXRqLwEADAELIAMgB2otAAALQTpHDQggBCADQQFqNgIMCyAFIARBDGogBEEQahDfAg0HQgAgBCkDECAEKQMYQjx+fCIPfSAPIAJBLUYbIQ8gBCgCDAshA0EAIQogAyAGRg0FDAYLIAUgBEEMaiAEQeAAaiAJQQN0ahCdAg0FCyAJQQFqIQkMAAsACyAFQRBqIQggD6dB/////wdxIQZBACECA0ACQCAGIAIiA0YEQCAGIQMMAQsgA0EBaiECAn8gEFBFBEAgCCADQQF0ai8BAAwBCyADIAhqLQAAC0EgRw0BCwsgBCADNgIMIAUgBEEMahCcAkKAgICAwH4hASAEKAIMIgIgBk4NAiAEQfAAaiEKIARB4ABqQQhyIQcCQAJ/IBBQIglFBEAgCCACQQF0ai8BAAwBCyACIAhqLQAAC0Ewa0EJTQRAIAUgBEEMaiAKEJ0CDQQgBSAEQQxqIAcQzQRFDQEMBAsgBSAEQQxqIAcQzQQNAyAFIARBDGoiAhCcAiAFIAIgChCdAg0DCyAFIARBDGoiAhCcAiAFIAIgBEHgAGoQzgQNAiAFIARBDGoQnAJBACEDA0AgA0EDRgRAIAQoAgwiAyAGIAMgBkobIQIDQEEAIQogAiADRg0DAkACQAJ/IAlFBEAgCCADQQF0ai8BAAwBCyADIAhqLQAACyILQStrDgMAAQABCyAEIANBAWo2AgwgBSAEQQxqIARBGGoQ3wINBiAFIARBDGogBEEQahDfAg0GQgAgBCkDECAEKQMYQjx+fCIBfSABIAtBLUYbIQ8MBQsgA0EBaiEDDAALAAsgA0EBa0EBTQRAIAQoAgwiAiAGTg0EAn8gCUUEQCAIIAJBAXRqLwEADAELIAIgCGotAAALQTpHDQQgBCACQQFqNgIMCyADQQN0IQIgA0EBaiEDIAUgBEEMaiACIARqQfgAahCdAkUNAAsMAgtCACEPC0EAIQMDQCADQQdGRQRAIANBA3QiAiAEQSBqaiAEQeAAaiACaikDALk5AwAgA0EBaiEDDAELCyAEQSBqIAoQ4AIgD0Lg1AN+uaEiEr0iAQJ/IBKZRAAAAAAAAOBBYwRAIBKqDAELQYCAgIB4CyIDt71RBEAgA60hAQwBC0KAgICAwH4gAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGyEBCyAAIBEQDwsgBEGgAWokACABCyIBAX9BASEBIAAQuQMEf0EBBSAAQaCiAkGgpwJBFBCsAwsLfQECfyMAQRBrIgEkACABQQo6AA8CQAJAIAAoAhAiAgR/IAIFIAAQzgMNAiAAKAIQCyAAKAIUIgJGDQAgACgCUEEKRg0AIAAgAkEBajYCFCACQQo6AAAMAQsgACABQQ9qQQEgACgCJBEBAEEBRw0AIAEtAA8aCyABQRBqJAALmwEBBH8jAEEQayIDJAAgAaciBCgCECICQTBqIQUgAiACKAIYQX9zQQJ0Qbx+cmooAgAhAgJAAkADQCACRQ0BIAJBA3QgBWpBCGsiAigCBEEwRwRAIAIoAgBB////H3EhAgwBCwsgAyACNgIMIAAgBCADQQxqIAIoAgBBGnZBPHEQkQMNAQsgBCAELQAFQf4BcToABQsgA0EQaiQAC7cFAgZ/A34jAEEwayIEJAAgACgCACEFQoCAgIAwIQtCgICAgDAhCgJAIAEEQEF/IQMgBRA+IgpCgICAgHCDQoCAgIDgAFENASAAIApBABC0ASEGIAUgChAPIAYNASAFED4iC0KAgICAcINCgICAgOAAUQ0BIAUgCkHwACALQYCAARAZQQBIDQELIABBEGohBkEAIQMCQAJAA0AgBigCAEGCf0YEQCAAKAIYIQcgBCAGKQMYNwMoIAQgBikDEDcDICAEIAYpAwg3AxggBCAGKQMANwMQIAdBAWohByAAKQMgIQkCQAJAAkAgAQRAIAlCIIinQXVPBEAgCaciCCAIKAIAQQFqNgIACyAFIAsgAyAJQYSAARCvAUEASA0CIAUgCiADAn4gAEHgAEEAIAcgBEEQaiAEQQxqEPMCRQRAIAQpAyAMAQsgBEKAgICAMDcDIEKAgICAMAtBhIABEK8BQQBIDQIgACgCKEHgAEcNASAFIAsQ1AQgBSAKENQEIAIgA0EBajYCAAwHCyAFIAkQDyAAQoCAgIAwNwMgIABB4ABBASAHIARBEGogBEEMahDzAg0BAkAgBCkDICIJpygCBEH/////B3FBASADGwRAIAAgCUEBELQBIQcgACgCACAJEA8gBw0DIANFBEAgACgCKEHgAEYNCSAAQcIAEBAgAEHcABAaCyADQQFqIQMMAQsgACgCACAJEA8LIAAoAihB4ABGDQULIAAQEg0AIAAQkQENACAGKAIAQf0ARwRAIABBrs8AQQAQFgwBCyAAIAYQ/wEgAEEANgIwIAAgACgCFDYCBCAAIAAoAjgQzwNFDQELQX8hAwwFCyADQQFqIQMMAQsLIABBgn8QLCEDDAILIABBJBAQIABBQGsoAgAgA0EBa0H//wNxEBcLIAAQEiEDCyAEQTBqJAAgAwuAAQECfyAAQSYQECAAQUBrIgIoAgBBABAXIABBARAQIAIoAgBBABA5IAAgAigCABAyIgMQHiAAQYABEBAgAigCACABQQJqQf8BcRBkIABB6gBBfxAcIQEgAEHRABAQIABBjwEQECAAQesAIAMQHBogACABEB4gAEEOEBAgAEEOEBALnQEBBX8gACgCQCIEKAKIASIDQQAgA0EAShshAwJAA0ACQCACIANGBEBBACEDIAQoAnwiAkEAIAJBAEobIQVBACECA0AgAiAFRg0EIAJBBHQhBiACQQFqIQIgBiAEKAJ0aigCACABRw0ACwwBCyACQQR0IQUgAkEBaiECIAUgBCgCgAFqKAIAIAFHDQELCyAAQc0kQQAQFkF/IQMLIAMLhgUCCH8BfiMAQUBqIgEkACAAKAI4IQJBfyEIAkAgACgCACABQShqQSAQPQ0AAkAgACgCACABQRBqQQEQPQ0AIAJBAWohA0EAIQICQANAIAMiBSAAKAI8Tw0BIAIhBkEBIQIgBUEBaiEDAkACQAJAAkACQAJAAkACQCAFLQAAIgRB2wBrDgMGAwEACyAEQS9HBEAgBEEKaw4EBwICBwILQS8hBCAGDQUDQCABIANBAWo2AgwCQCADLAAAIgJBAE4EQCACQf8BcSECDAELIANBBiABQQxqEFgiAkGAgMQATw0GCyACEMUBBEAgAUEQaiACELkBDQsgASgCDCEDDAELCyAAQYR/NgIQIAAgAUEoahA2NwMgIAFBEGoQNiEJIAAgAzYCOCAAIAk3AyhBACEIDAoLQd0AIQRBACECDAQLIATAQQBODQEgBUEGIAFBCGoQWCIEQYCAxABPDQIgBEF+cUGowABGDQQgASgCCCEDDAELIAFBKGpB3AAQOw0GIAVBAmohBwJAIAUtAAEiBARAIARBCmsOBAUBAQUBC0EAIQQgBiECIAciAyAAKAI8Tw0GDAMLIATAQQBOBEAgBiECIAchAwwDC0EHQQZBACADQQYgAUEMahBYIgRBfnFBqMAARhsgBEH//8MASyICGyIDRQRAIAcgASgCDCACGyEDDAELIANBBmsOAgMBBwsgBiECDAELIABBtPAAQQAQFgwECyABQShqIAQQuQFFDQEMAwsLIABB+MgAQQAQFgwBCyAAQZ3JAEEAEBYLIAEoAigoAhAiAEEQaiABKAIsIAAoAgQRAAAgASgCECgCECIAQRBqIAEoAhQgACgCBBEAAAsgAUFAayQAIAgLUQECf0F/IQJBASEDA0ACQCAAIAEQtgENACADRQRAIAAoAkBBfzYCmAILIAAoAhBBLEcEQEEAIQIMAQsgABASDQAgAEEOEBBBACEDDAELCyACCzMBAX8DQAJAIAFBAE4EfyABIAJHDQFBAQVBAAsPCyAAKALMASABQQN0aigCACEBDAALAAuEAwEGfyABKAI4IQMCQAJAAkAgAS0AbkEBcQRAIANFBEBB8sIAIQMgASgCQA0DC0GC7gAhAyACQTpGIAJBzQBGcg0CQQAhAiABKAKIASIDQQAgA0EAShshBANAIAIgBEYNAkHd7QAhAyABKAKAASACQQR0aigCACIGQTpGIAZBzQBGcg0DIAJBAWohAgwACwALIANFDQAgAS8BbCICQYIMRg0AIAJBCHZBA2sOBAACAgACC0EAIQQgASgCiAEiAkEAIAJBAEobIQhBACEDA0AgAyAIRg0CQQAhAgJAIAEoAoABIgUgA0EEdGooAgAiBkUNAANAAkAgAiADRgRAQQAhAiABKAJ8IgVBACAFQQBKGyEFA0AgAiAFRg0EIAYgASgCdCACQQR0aiIHKAIARgRAIAcoAgRFDQMLIAJBAWohAgwACwALIAJBBHQhByACQQFqIQIgBSAHaigCACAGRw0BCwtBmCQhAwwCCyADQQFqIQMMAAsACyAAIANBABAWQX8hBAsgBAtaAQJ/IABBQGsiAyABKAIANgIAIABBKRAQIAMgAygCACgCBCICNgIAIAAoAgAgAkKAgICAIBC+AyECIAEoAgAgAjYCCCAAQQMQECADKAIAIAIQOSAAQdAAEBALRwEBfwJ/QQAgASgCCA0AGiABKAIAIgIEfyACBUF/IAAgARDeBA0BGiABKAIACygCgAIgASgCDGpBCjoAACABQQE2AghBAAsL3AEBAn8gACgCACAAQUBrIgMoAgBBAEEAIAAoAgxBABDoAyICRQRAIAFBADYCAEF/DwsgAkEANgJwIAJBADYCYCACQoCAgIAQNwJIIAJCATcCMCACQYAMOwFsIAJCATcCWCACQgE3AlAgASACNgIAIAMgAjYCACAAQQkQECABIAEoAgAoApgCNgIMIABB6QBBfxAcIQEgAEG4ARAQIABBCBAaIAMoAgBBABAXIABBuAEQECAAQfMAEBogAygCAEEAEBcgAEEtEBAgACABEB4gAyADKAIAKAIENgIAQQAL3gQBCX8jAEEQayIGJAAgACAAKQOAARAjIABBEGohAyAAQaABaiEEIAAoAqQBIQEDQCABIARGRQRAIAEoAgQhBUEAIQIDQCACIAEoAhBORQRAIAAgASACQQN0aikDGBAjIAJBAWohAgwBCwsgAyABIAAoAgQRAAAgBSEBDAELCyAAIAQ2AqQBIAAgAEGgAWo2AqABIAAQogUgACgCVCAAQdAAakYEQEEAIQIDQAJAIAAoAkQhASACIAAoAkBODQAgASACQRhsaiIBKAIABEAgACABKAIEEOwBCyACQQFqIQIMAQsLIAMgASAAKAIEEQAAIAAoApACIgQEQEEAIQEDQEEAIQUgAUEFRkUEQANAQQAhAiAFQQJGRQRAA0AgAkEURwRAIAQgAUGgAWxqIAVB0ABsaiACQQJ0akGoDWoiBygCACIIBEAgBCgCACIJKAIAIAhBACAJKAIEEQEAGiAHQQA2AgALIAJBAWohAgwBCwsgBUEBaiEFDAELCyABQQFqIQEMAQsLIAAoAtgBIARBACAAKALcAREBABogAEEANgKQAgsgAEHgAWoQoQUgAEH4AWoQoQVBACECA0ACQCAAKAI4IQEgAiAAKAIsTg0AIAEgAkECdGooAgAiAUEBcUUEQCADIAEgACgCBBEAAAsgAkEBaiECDAELCyADIAEgACgCBBEAACADIAAoAjQgACgCBBEAACADIAAoAtQBIAAoAgQRAAAgBiADKQIINwMIIAYgAykCADcDACAGIAAgACgCBBEAACAGQRBqJAAPC0GNkQFBrvwAQb8PQaTlABAAAAtDAQJ/IAAoAogBIQJBfyEDAkADQCACQQBMDQEgACgCgAEgAkEBayICQQR0aigCACABRw0ACyACQYCAgIACciEDCyADC8YBAgR/AX4jAEEQayIDJAAgACABEC0iB0KAgICAcINCgICAgOAAUgRAAkAgACADQQxqIAcQ5QEiBkUEQAwBCwJAIAAgAhA/IgEgAygCDGpBAWoQKSIERQRAQQAhBAwBCyAEIAYgAygCDBAfIgUgAygCDGogAiABEB8aIAUgAygCDCABampBADoAACAAIAUgAygCDCABahCFAyEEIAAoAhAiAUEQaiAFIAEoAgQRAAALIAAgBhBUCyAAIAcQDwsgA0EQaiQAIAQLvwEBAX8gASADai0AAEE8RgRAIAAgBEH/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BEAgCygCJCIEIAJBA3RqIAQgAadBA3QQnAFBAAwBCyABpwshDUEAIQQgAkEAIAJBAEobIQIDQCACIARHBEAgAyAEQQN0aikDACIBQiCIp0F1TwRAIAGnIg4gDigCAEEBajYCAAsgCygCJCAEIA1qQQN0aiABNwMAIARBAWohBAwBCwsgCyAFPgIoIAsoAhQgBUL/////D4M3AwAgBUKAgICACHwhAQwBCyAAIAxBCGogBhA8DQEgDCkDCCIBIAKsIgh8IgVCgICAgICAgBBZBEAgAEHQ2gBBABAVDAILAkAgBEUgAkEATHJFBEBCACEHIAAgBiAIQgAgAUF/EPQCDQMMAQsgASEHCyACQQAgAkEAShutIQlCACEBA0AgASAJUgRAIAMgAadBA3RqKQMAIghCIIinQXVPBEAgCKciAiACKAIAQQFqNgIACyABIAd8IQogAUIBfCEBIAAgBiAKIAgQhgFBAE4NAQwDCwsgACAGQTAgBUKAgICACHwiAUL/////D1gEfiAFQv////8PgwVCgICAgMB+IAW5vSIHQoCAgIDAgYD8/wB9IAdC////////////AINCgICAgICAgPj/AFYbCxBFQQBIDQELIAAgBhAPIAVC/////w+DIAFC/////w9YDQEaQoCAgIDAfiAFub0iAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGwwBCyAAIAYQD0KAgICA4AALIQEgDEEQaiQAIAEL0gMCB38DfiMAQSBrIgQkACAEQQA2AgwgBEEANgIIAkACQCAEIAAoAhAoAnhJBEAgABDpAQwBCyAAIAEgAiABQQAQFCILQoCAgIBwg0KAgICA4ABRBEAgCyEBDAILAkACQCALQoCAgIBwVA0AIAAgCxDKASIKQQBIDQECQCAKBEAgACAEQQxqIAsQ1gFFDQEMAwsgACAEQQhqIARBDGogC6dBERCOASEJIAQoAgghBSAJQQBIDQILIAQoAgwhCANAIAcgCEYNAQJAIAoEQCAAIAcQqQUiBkUNBAwBCyAAIAUgB0EDdGooAgQQGCEGCwJ/AkAgACALIAYgAxD5BCINQoCAgIBwgyIMQoCAgIAwUgRAIAxCgICAgOAAUg0BIAAgBhATDAULIAAgCyAGQQAQ1QEMAQsgACALIAYgDUEHEBkLIQkgACAGEBMgB0EBaiEHIAlBAE4NAAsMAQsgACAFIAgQWkEAIQUgACACEFwiDEKAgICAcINCgICAgOAAUQ0AIAQgCzcDGCAEIAw3AxAgACADIAFBAiAEQRBqECEhASAAIAwQDyAAIAsQDwwCCyAAIAUgBCgCDBBaIAAgCxAPC0KAgICA4AAhAQsgBEEgaiQAIAELPwEBfyABQQAgAUEAShshAQNAAkAgASADRgRAQX8hAwwBCyAAIANBA3RqKAIEIAJGDQAgA0EBaiEDDAELCyADC/8EAgJ/BH4CQCACQv////9vWARAIAAQJAwBCwJAIAAgAkE9EHEEf0KAgICAMCEFQoCAgIAwIQZCgICAgDAhCCAAIAJBPSACQQAQFCIHQoCAgIBwg0KAgICA4ABRDQFBgQJBgAIgACAHECYbBUEACyEDIAAgAkE+EHEEQEKAgICAMCEFQoCAgIAwIQZCgICAgDAhCCAAIAJBPiACQQAQFCIHQoCAgIBwg0KAgICA4ABRDQFBggRBgAQgACAHECYbIANyIQMLIAAgAkE/EHEEQEKAgICAMCEFQoCAgIAwIQZCgICAgDAhCCAAIAJBPyACQQAQFCIHQoCAgIBwg0KAgICA4ABRDQFBhAhBgAggACAHECYbIANyIQMLQoCAgIAwIQYCQCAAIAJBwAAQcUUEQEKAgICAMCEIDAELQoCAgIAwIQUgACACQcAAIAJBABAUIghCgICAgHCDQoCAgIDgAFEEQAwCCyADQYDAAHIhAwsCQAJAIAAgAkHBABBxRQ0AQoCAgIAwIQUgA0GAEHIhAyAAIAJBwQAgAkEAEBQiBkKAgICAcIMiB0KAgICAMFENAEHDwgAhBCAHQoCAgIDgAFENASAAIAYQOEUNAQsCQCAAIAJBwgAQcUUEQEKAgICAMCEFDAELIANBgCByIQMgACACQcIAIAJBABAUIgVCgICAgHCDIgJCgICAgDBRDQBBtMIAIQQgAkKAgICA4ABRDQEgACAFEDhFDQELIANBgDBxBEBBsekAIQQgA0GAxABxDQELIAEgBTcDGCABIAY3AxAgASAINwMIIAEgAzYCAEEADwsgACAEQQAQFQsgACAIEA8gACAGEA8gACAFEA8LQX8LwgEBAn8gAigCBEUEQCACKAIYIgMgAigCHCIENgIEIAQgAzYCACACQgA3AhgCQCABKAIABEAgAhCfBQwBCyAAIAIpAyAQIwsgACACKQMoECMgAiACKAIAQQFrIgM2AgACQCADRQRAIAIoAhAiAyACKAIUIgQ2AgQgBCADNgIAIAJCADcCECAAQRBqIAIgACgCBBEAAAwBCyACQoCAgIAwNwMoIAJCgICAgDA3AyAgAkEBNgIECyABIAEoAgxBAWs2AgwLC5UBAQN+IAG9IgJC////////////AIMhAyAAvSIEQv///////////wCDQoGAgICAgID4/wBaBEAgA0KBgICAgICA+P8AVA8LAn9BfyADQoCAgICAgID4/wBWIAAgAWNyDQAaQQEgACABZA0AGkEAIABEAAAAAAAAAABiDQAaIARCAFMEQCACQj+Hp0F/cw8LIAJCP4inCwswACABQoCAgIAQhEKAgICAcINCgICAgDBRBEAgACABEDcPCyAAIAFBOEEAQQAQrQILKQEBfyACQiCIp0F1TwRAIAKnIgMgAygCAEEBajYCAAsgACABIAIQxQULUgIBfwF+QoCAgIDgACEEIAAgASACEJMBIgMEfiADKAIgIgMoAgwoAiAtAAQEQCACRQRAQgAPCyAAEGtCgICAgOAADwsgAzUCEAVCgICAgOAACws4ACAAIAEgAhCTASIARQRAQoCAgIDgAA8LIAAoAiAoAgwiACAAKAIAQQFqNgIAIACtQoCAgIBwhAtRAgF+AX8gACAAKQOQAUEDEEkiAkKAgICAcINCgICAgOAAUgRAIAFCIIinQXVPBEAgAaciAyADKAIAQQFqNgIACyAAIAJBNCABQQMQGRoLIAILlQEBA38jAEEQayIEJAAgBCACNwMIIAEoAgAiBSABKAIEIgY2AgQgBiAFNgIAIAFCADcCACAAIAAgAUEgaiADQQN0aikDAEKAgICAMEEBIARBCGoQIRAPIAAgASkDEBAPIAAgASkDGBAPIAAgASkDIBAPIAAgASkDKBAPIAAoAhAiAEEQaiABIAAoAgQRAAAgBEEQaiQAC40BAQN/IwBBEGsiBCQAIAQgATcDCCADQQF0IQZBACEDA0ACQAJAIANBAkYNACAAQcwAQQEgAyAGakEBIARBCGoQzwEiAUKAgICAcINCgICAgOAAUg0BQX8hBSADQQFHDQAgACACKQMAEA8LIARBEGokACAFDwsgAiADQQN0aiABNwMAIANBAWohAwwACwALyAYC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IARuDAILIARBACABQQJPGyADbAwBCyAAQX9zQR92IQQgAUECayEBIAQCfiACBEAgA60iBiABQQN0IgFB5KEEajUCAH5CIIggAUHgoQRqNQIAIAZ+fEIfiAwBCyABQQJ0QYCkBGo1AgAgA61+Qh2IC6dqCyIBayABIABBAEgbC0gBAn8jAEEQayICJABBfyEDAkAgACACQQxqIAEQugENACACKAIMIgNBJWtBXEsNACAAQdmJAUEAEFBBfyEDCyACQRBqJAAgAwt1AQF/AkAgAUKAgICAcINCgICAgOB+UQRADAELAkAgAUKAgICAcFQNACABpyICLwEGQSFHDQAgAikDICIBQoCAgIBwg0KAgICA4H5SDQAMAQsgAEGiLEEAEBVCgICAgOAADwsgAaciACAAKAIAQQFqNgIAIAELrgICAXwBfwJAA0ACQAJAAkACQAJAQQcgAkIgiKciBCAEQQdrQW5JG0EJag4RAgMDAwMDAwMDAAAAAAMDBAEDCyABIALENwMADAULIAJCgICAgMCBgPz/AHwiAkL///////////8Ag0KBgICAgICA+P8AWgRAIAFCADcDAAwFCyACvyIDRAAAAAAAAODDYwRAIAFCgICAgICAgICAfzcDAAwFCyADRAAAAAAAAOBDZARAIAFC////////////ADcDAAwFCyABAn4gA5lEAAAAAAAA4ENjBEAgA7AMAQtCgICAgICAgICAfws3AwAMBAsgASACp0EEakEAEIIDGiAAIAIQDwwDCyAAIAIQjQEiAkKAgICAcINCgICAgOAAUg0BCwsgAUIANwMAQX8PC0EAC7ECAQJ/IwBBIGsiBCQAAkACQAJAIAIoAgxFBEACQAJAAkACQCACKAIIQf7///8Haw4CAQACCyAAEDUMAgsgAigCBA0DCyAAIAIQRBoLQQAhAiABRQ0DIAFCABAwGgwDCyACKAIERQ0BCyAAEDVBASECIAFFDQEgAUIAEDAaDAELIAAgAiACKAIIQQFqQQJtQQEQkQYgAEEBENEBGiABIgNFBEAgACgCACEDIARCADcCGCAEQoCAgICAgICAgH83AhAgBCADNgIMIARBDGohAwsgAyAAIABB/////wNBARBDGiADIAMoAgRBAXM2AgQgAyADIAJB/////wNBARDLARpBICECIAMoAghB/////wdHBEAgAygCDEEAR0EEdCECCyABDQAgAxAbCyAEQSBqJAAgAgsMACAAIAEQiANBAEwLDQAgACABIAJBAhDjAwvRDAEIfyMAQYABayIFJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCDARAIAIoAgwNAQsgAigCCEGAgICAeEYEQCAAQgEQMBoMCwsgASgCCEH/////B0YNCSAAQgEQMBoCQCABIAAQ0wEiAyAEQYCABHFFckUEQCACKAIIQf7///8HTg0LDAELIAMNAgsgASgCBEUNCiACKAIIQf////8HRg0JDAoLIAAoAgAhByAFQgA3AjwgBUKAgICAgICAgIB/NwI0IAUgBzYCMCAFQTBqIAEQRBogAhCxAiEKIAQhCCABKAIEBEAgCkEASARAIAAQNSAFQTBqEBtBASEGDAwLIAUgBSgCNEEBczYCNCAKRSIMIARBBnFBAkZxIARzIQgLIABCARAwGiAFQTBqIAAQggINBCAFQgA3AiggBUKAgICAgICAgIB/NwIgIAUgBzYCHCAFQgA3AhQgBUKAgICAgICAgIB/NwIMIAUgBzYCCCAFQRxqIgEgBUEwaiIJQSBBAhCfBCAFQQhqIgYgCUEgQQMQnwQgASABIAJBICACKAIEQQJzEEMaIAYgBiACQSAgAigCBEEDcxBDGkEAIQYCQCAFKAIQQQBMDQAgBUIANwJkIAVCgICAgICAgICAfzcCXCAFIAc2AlggBUIANwJQIAVCgICAgICAgICAfzcCSCAFIAc2AkQgBUHEAGoiCUEgQQMQ0wIgBUIANwJ4IAVCgICAgICAgICAfzcCcCAFIAUoAlg2AmwgBUHsAGoiB0GAgICAAkEBQRwgCEEFdkE/cSIBa3QgAUE/RhsiAawQMBogBUHYAGoiCyAJIAdBIEEDEEMaIAcQGyALIAVBHGoQsgIEQCAFQdgAahAbIAVBxABqEBsgAEEAIAMgCBCrBCEGDAELIAVBxABqIgdBIEECENMCIAVB2ABqIgkgB0EBIAEgA0EBayAIQRx0QR91cWoiAWusQSBBAhDUAiAFQQhqIAkQsgIEQCAFQdgAahAbIAVBxABqEBsgCEEHcUEDRgRAIABCARAwGiAAQQMgAWs2AghBGCEGDAILIABBABCJAUEYIQYMAQsgBUHEAGoQGyAFQdgAahAbCyAFQRxqEBsgBUEIahAbIAYNBCAEQQdxIQYgCkEATg0CIAZBBkYNA0EAIQcgACgCACEJIAVBMGoQsQIhAQJAQQAgCmsiBEEgTwRAIAFFDQEMBQsgAUF/IAR0QX9zcQ0EIAEgBHUhBwsgBSgCQCAFKAI8IgsgASAFKAI4ayALQQV0ahBoQQdxQQFHDQMgBUIANwJ4IAVCgICAgICAgICAfzcCcCAFIAk2AmwgBUHsAGogBUEwahBEGiAFIAUoAnQgAWs2AnRBACEBA0AgASAERg0CIAEEQCAFQewAaiAAEEQaCyABQQFqIQEgAEEAIAVB7ABqEJEFRQ0ACwwDCyACKAIIQf7///8Haw4CBgcFCyAAIAAoAgggB2o2AgggBUEwaiAAEEQaIAUgAigCEDYCfCAFIAIoAgw2AnggBSACKAIENgJwIAUgAigCCCAKazYCdCAFQewAaiECCyAFKAI4IgEgBUEwahCxAmsiBEEBRgRAIAVBMGoiBCACIAFBAWusQSBBARDUAiAFQQRqIARBABCpASAAQgEQMBogACAFKAIEIAMgCBDMASEGDAILIANB/////wNGBEAgBUHYAGogAkEAEKkBIAIoAgQNAyAFKAJYIgFB/////wFMBEAgACAFQTBqIAFB/////wNBARCiBCEGDAMLIAVBMGoQGyAAQQBB/////wMgCBCrBCEGDAgLIAIoAghBIE4EQCAGQQZGDQEgAigCBA0BIAAgAiAEQQFrrEEgQQEQ1AIgBUEEaiAAQQAQqQEgBSgCBCADSw0BCyAAIAVBMGogAyAIQcgAIAIQngQhBgwBCyAAIAVBMGogAyAIQckAIAIQngQhBgsgBUEwahAbIAAgDDYCBAwFC0HO0ABB1PwAQaElQfEhEAAACyABKAIEIAIQsQJFcSEDIAIoAgQgASgCCEGAgICAeEZGBEAgACADEIwBQQIhBiACKAIERQ0DDAQLIAAgAxCJAQwCCyACKAIEIANBAEpGBEAgAEEAEIkBDAILIABBABCMAQwBCyAAEDULQQAhBgsgBUGAAWokACAGC1MBAn8jAEEgayIEJAAgACgCACEFIARCADcCGCAEQoCAgICAgICAgH83AhAgBCAFNgIMIARBDGoiBSAAIAEgAiADEOQDIQAgBRAbIARBIGokACAAC4gCAgJ/AX4jAEEQayIEJAACQAJAIAFCgICAgHCDQoCAgIDgflINACABpyEDAkAgAkUNACAEQQhqIANBBGpBABCCAw0AIAQpAwgiBUKBgICAgICAcFMgBUL/////////D1VyDQAgACABEA8gBUKAgICACHxC/////w9YBEAgBUL/////D4MhAQwCC0KAgICAwH4gBbm9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhshAQwBCyADKAIMQYCAgIB4Rw0AIAMoAghFDQAgAygCAEEBRw0BIANBADYCCAsgBEEQaiQAIAEPC0HjjAFBrvwAQbHgAEGSjAEQAAALQAEDf0EBIABB3qgEai0AACIBIAFBAU0bIQNBASECIAAhAQNAIAIgA0ZFBEAgAkEBaiECIAAgAWwhAQwBCwsgAQu2FQMJfwx+AnwjAEFAaiICJAAgAkEAQcAAECshBCABQQBB0AEQKyICIAA1AhA3AxggAiAANQIUNwMAIAA1AhghCyACQgI3AyAgAiALNwMIIAIgACgCQEEDdEHwAmqtNwMQIABBzABqIQEgAEHIAGohCANAIAEoAgAiBSAIRkUEQCAFKAIQIQEgAiACKQMgQgJ8NwMgIAIgAikDECAAKAJAQQN0QYgCaq18NwMQIAIgAikDwAEgBTMBCHw3A8ABIAIgAikDyAEgBTQCDHw3A8gBAkAgAUUNACABLQAQDQAgASgCGCEDIAIgAikDaEIBfDcDaCACIAIpA3AgA0ECdCABKAIcQQN0akE0aq18NwNwCyAFQeQBaiEBIAVB4AFqIQkDQCAJIAEoAgAiA0cEQCACIAIpAyAiDUIBfCIMNwMgIAIgAikDEELwAHwiCzcDECADKAIIBEAgAiANQgJ8Igw3AyAgAiALIAMoAgxBA3StfCILNwMQCwJAIAMoAhRFDQAgAiAMQgF8NwMgIAIgCyADKAIYIgZBFGytfDcDEEEAIQEDQCABIAZODQECQCADKAIUIAFBFGxqIgcoAggNACAHKAIERQ0AIAIgAikDIEIBfDcDICAHKAIEKQMYIAQQnQEgAygCGCEGCyABQQFqIQEMAAsACyADKAIgBEAgAiACKQMgQgF8NwMgIAIgAikDECADKAIkQQJ0rXw3AxALIAMoAiwEQCACIAIpAyBCAXw3AyAgAiACKQMQIAMoAjBBDGytfDcDEAsgAykDOCAEEJ0BIAMpA0AgBBCdASADQQRqIQEMAQsLIAVBBGohAQwBCwsgAEHUAGohASAAQdAAaiEIA0AgASgCACIDIAhGRQRAAkACQAJAIANBBGstAABBD3EOAgEAAgsgAygCGAR/IAMvASIgAy8BIGpBBHRBQGsFQcAACyEGIAMoAiwEQEEAIQEgAygCMCIHIQUDQCABIAVORQRAIAMoAiwgAUEDdGopAwAgBBCdASABQQFqIQEgAygCMCEFDAELCyAHQQN0IAZqIQYLIAMoAhwEQCADKAI0QQN0IAZqIQYLAkAgAy8ACSIFQYAgcQ0AIAMoAgxFDQAgBCAEKQMoIAM0AhB8NwMoCwJ/QQAgBUGACHFFDQAaAn8gAygCTEUEQCAGQRhqIQZBAAwBCyAGIAMoAkBqQRlqIQZBAQsiASADKAJEIgVFDQAaIAQgBCkDMEIBfDcDMCAEIAQpAzggBax8NwM4IAFBAWoLIQEgBCAEKQMYQgF8NwMYIAQgBCsDICAGt6A5AyAgBCAEKwMAIAG3oDkDAAwBCyADKAIIIQcgAiACKQNIQgF8NwNIAkAgAygCDEUNACACIAIpAyBCAXw3AyAgAiACKQNgIAcoAhxBA3StfDcDYCACIAIpA1ggBygCICIGrHw3A1ggB0EwaiEBQQAhBQNAIAUgBk4NAQJAIAEoAgRFDQAgASgCAEH/////A0sNACADKAIMIAVBA3RqKQMAIAQQnQEgBygCICEGCyAFQQFqIQUgAUEIaiEBDAALAAsgBy0AEEUEQCAHKAIYIQEgAiACKQNoQgF8NwNoIAIgAikDcCABQQJ0IAcoAhxBA3RqQTRqrXw3A3ALAkACQAJAAkACQAJAAkACQAJAAkAgA0ECay8BAEECaw4jAAkBAQEBAAkBCQIDBAUJBwYICAkJCQkJCQkJCQkJCQEBCQEJCyACIAIpA6gBQgF8NwOoASADQQNrLQAAQQhxRQ0JIAIgAikDsAFCAXw3A7ABIAMoAhxFDQkgAiACKQMgQgF8NwMgIAIgAikDECADKAIgQQN0rXw3AxAgAiACKQO4ASADNQIgfDcDuAFBACEBA0AgASADKAIgTw0KIAMoAhwgAUEDdGopAwAgBBCdASABQQFqIQEMAAsACyADKQMYIAQQnQEMCAsgAiACKQOgAUIBfDcDoAEMBwsgAygCHCIJRQ0GIAMoAhghByACIAIpAyBCAXw3AyAgAiACKQOAASAHKAI8IgZBAnStfDcDgAFBACEBA0AgASAGTg0HAkAgCSABQQJ0aigCACIFRQ0AIAICfkQAAAAAAADwPyAFKAIAtyIXoyACKQMguaAiGJlEAAAAAAAA4ENjBEAgGLAMAQtCgICAgICAgICAfws3AyAgAgJ+RAAAAAAAAEBAIBejIAIpA4ABuaAiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfws3A4ABIAUoAhAiCiAFQRhqRw0AIAopAwAgBBCdASAHKAI8IQYLIAFBAWohAQwACwALIAMoAhghBkEAIQEDQCABIAYoAhAiBU5FBEAgBiABQQN0aikDGCAEEJ0BIAFBAWohAQwBCwsgAiACKQMgQgF8NwMgIAIgAikDECAFQQN0QRhqrXw3AxAMBQsgAygCGCIGRQ0EQQAhAQNAIAEgBi0ABSIFT0UEQCAGIAFBA3RqKQMIIAQQnQEgAUEBaiEBDAELCyACIAIpAyBCAXw3AyAgAiACKQMQIAWtQgOGfEIIfDcDEAwECyADKAIYIAQQtwQgAygCHCAEELcEDAMLIAMoAhgiAUUNAiABKQMAIAQQnQEgAiACKQMgQgF8NwMgIAIgAikDEEIYfDcDEAwCCyADKAIYIgFFDQEgAiACKQMgIgtCAXw3AyAgAiACKQMQQhx8Igw3AxAgASgCCEUNASACIAtCAnw3AyAgAiAMIAE0AgB8NwMQDAELIAMoAhhFDQAgAiACKQMgQgF8NwMgCyADQQRqIQEMAQsLIAIgAikDUCACKQNIIg5CMH58Ig83A1AgAiACKQMQIAAoAswBIgFBAnStfCIQNwMQQQAhBSABQQAgAUEAShshAyACKQMgIQsDQCADIAVGRQRAIAAoAtQBIAVBAnRqIQEDQCABKAIAIgEEQCABKAIYIQYgAiACKQNoQgF8NwNoIAIgAikDcCAGQQJ0IAEoAhxBA3RqQTRqrXw3A3AgAUEoaiEBDAELCyAFQQFqIQUMAQsLIAIgC0IDfCIRNwMgIAIgACgCKCIGrDcDKCACIAAoAiwiAyAAKAIkakECdK0iCzcDMEEAIQEgA0EAIANBAEobIQUDQCABIAVHBEAgACgCOCABQQJ0aigCACIDQQFxRQRAIAIgCyADKAIEIgNBH3UgA0H/////B3EgA0EfdnRqQRFqrXwiCzcDMAsgAUEBaiEBDAELCyACAn4gBCsDCBCxAyIXmUQAAAAAAADgQ2MEQCAXsAwBC0KAgICAgICAgIB/CyIMNwM4IAICfiAEKwMQELEDIheZRAAAAAAAAOBDYwRAIBewDAELQoCAgICAgICAgH8LIg03A0AgAiAEKQMYIhI3A3ggAgJ+IAQrAyAQsQMiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfwsiEzcDgAEgAiAEKQMoIhQ3A4gBIAIgBCkDMCIVNwOQASACIAQpAzgiFjcDmAEgBCsDACEXIAIgAikDcCACKQNgIBYgFCAPIBB8IA18IBN8fHwgC3x8fDcDECACAn4gFxCxAyAGt6AgDLmgIA65oCACKQNouaAgErmgIBW5oCARuaAiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfws3AyAgBEFAayQAC1ABAn8DQCABLAAAIgQEQCAEIAAsAAAiA0EgaiADIANBwQBrQRpJG0cEQEEADwUgAUEBaiEBIABBAWohAAwCCwALCyACBEAgAiAANgIAC0EBC70HAgp/AX4jAEHgAGsiAyQAQoCAgIDgACENAkAgACADQQxqIAEQuwEiBkUNACAGKAIEIgwhBSAGKAIIIgRBgICAgHhGBEAgBkEANgIEQQAhBQsgBigCACEKIANCADcDUCADQgA3A0ggAyAKNgJcIANBxQA2AlgCfwJAAkAgBEH/////B0YEQCADQcgAakGBgwEQ+wIMAQsgBQRAIANByABqQS0QESAGKAIIIQQLIARB/v///wdGBEAgA0HIAGpB9RwQ+wIMAQtBACEFIANCADcCQCADQoCAgICAgICAgH83AjggAyAKNgI0IAIgAkEBayIIcUUEQEEgIAhna0EAIAJBAk8bIQULAkACQAJAAkAgBQRAIANBNGogBhBEDQEgA0E0akEAQREQzgFBIHENASADKAI8IgQgBUEBa0EAIARBAE4baiAFbSEFIARBgICAgHhGBEAgA0HIAGpBqJABEPsCDAULQQAhBCAFQQBKDQIgA0HIAGpBvZABEPsCQQAgBWshAgNAIAIgBEYNBSADQcgAakEwEBEgBEEBaiEEDAALAAsgAyAGKAIQNgIwIAMgBigCDCIFNgIsIANBADYCJCADIAQ2AiggBEEAIARBAEobIAJBARCNBUEBaiEIAkAgBQRAIAggAkEAEI0FIQVBECEEA0AgA0E0aiILIAJBACAEIAVqIglBAWoiB0HgDxD8AiALIAsgA0EgaiAHQeAPEENyIgdBIHENAyAHQRBxRQ0CIANBNGogAygCPEEBIAkQ4QMNAiAEQQJtIARqIQQMAAsACyADQTRqIANBIGoQRA0BDAMLIANBNGpBARDRAUEgcUUNAgsgA0E0ahAbDAQLIANByABqIANBNGogAiAFIAUQjAUMAQsgAygCTCEFIANByABqIANBNGogAiAIIAgQjAUgAygCTCIJIAVBAWoiAiACIAlJG0EBayEIIAMoAkghByAFIQQDQAJAIAkgBCICQQFqIgRNBEAgCCECDAELIAIgB2otAABBMEcNACAEIAdqLQAAQS5HDQELCyACIAVNDQAgBSAHaiACIAdqIAkgAmsQnAEgAyAFIAJrIAlqNgJMCyADQTRqEBsLIANByABqQQAQESADKAJUDQAgAygCSAwBC0EAIAMoAkgiAkUNABogCigCACACQQAgCigCBBEBABpBAAshBCAGIAw2AgQgACAGIANBDGoQXiAERQRAIAAQfAwBCyAAIAQQYiENIAAoAtgBIgAoAgAgBEEAIAAoAgQRAQAaCyADQeAAaiQAIA0Lw3UCEn8BfiMAQaAGayIDJAAgASgCyAEiBEEAIARBAEobIQYDQCACIAZGRQRAIAEoAswBIAJBA3RqQX82AgQgAkEBaiECDAELCyABKAI8BEAgASgCzAFBfjYCDAtBACECIAEoAnwiBkEAIAZBAEobIQYCfgJAAkADQCACIAZGBEACQEECIQJBAiAEIARBAkwbIQgDQAJAIAIgCEYEQEEAIQIDQCACIAZGDQICQCABKAJ0IAJBBHRqIgQoAghBAE4NACAEKAIEIghBAkgNACAEIAEoAswBIgQgBCAIQQN0aigCAEEDdGooAgQ2AggLIAJBAWohAgwACwALIAEoAswBIgcgAkEDdGoiBCgCBEEASARAIAQgByAEKAIAQQN0aigCBDYCBAsgAkEBaiECDAELCwJAIAEoAkRFDQACQCABKAIgDQAgAS0AbkEBcQ0AIAEgACABQdIAEE82ApABIAEoAjxFDQAgASAAIAFB0wAQTzYClAELAkAgASgCTCIIRQ0AIAEoAqgBQQBIBEAgASAAIAEQygM2AqgBCyABKAKsAUEASARAIAEgACAB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KAIAEB0gAkHAABARIAIgACAJKAIMEBgQHSACIBEQEQsgACAJKAIMEBMgBEEBaiEEDAALAAtBhSlBrvwAQYzyAUH7ORAAAAtBmoIBQa78AEHY6wFB3/QAEAAAC0GuhAFBrvwAQZvrAUHf9AAQAAALA0AgAiAOTkUEQCADQYAGaiACIA1qIgQgBC0AAEECdEGAuAFqLQAAIgQQciACIARqIQIMAQsLIAwQ9gEgDCADKQOQBjcCECAMIAMpA4gGNwIIIAwgAykDgAY3AgAMDAsgDBD2ASAMIAMpA5AGNwIQIAwgAykDiAY3AgggDCADKQOABjcCAAJAIAEoAowCDQAgASgCpAIhDSADIAEoAvACNgKYBiADIAEoAoACIgk2AtwFIAMgASgChAIiCzYC4AUgACgCECECIANCADcDiAYgA0IANwOABiADIAI2ApQGIANBOzYCkAYgASgC0AIiAgRAIAEgASgCACACQQR0EF8iAjYCzAIgAkUNDQsCQCABKALcAiICRQ0AIAEtAG5BAnENACABIAEoAgAgAkEDdBBfIgI2AtgCIAJFDQ0gAUEANgLoAiABIAEoAvACNgLkAgsgASgCtAFBAE4EQCADQYAGaiICQQwQESACQQQQESACQdkAIAEoArQBEF0LIAEoArABQQBOBEAgA0GABmoiAkEMEBEgAkECEBEgAkHZACABKAKwARBdCyABKAKsAUEATgRAIANBgAZqIgJBDBARIAJBAxARIAJB2QAgASgCrAEQXQsCQCABKAKoAUEASA0AIAEoAmAEQCADQYAGaiICQeEAEBEgAiABLwGoARAqDAELIANBgAZqIgJBCBARIAJB2QAgASgCqAEQXQsgASgCmAFBAE4EQEEAIQIgAS0AbkEBcUUEQCABKAI4QQBHIQILIANBgAZqIgRBDBARIAQgAhARIAEoApwBIgJBAE4EQCADQYAGakHaACACEF0LIANBgAZqQdkAIAEoApgBEF0LIAEoAqABQQBOBEAgA0GABmoiAkEMEBEgAkECEBEgAkHZACABKAKgARBdCyABKAKQAUEATgRAIANBgAZqIgJBDBARIAJBBRARIAJB2QAgASgCkAEQXQsgASgClAFBAE4EQCADQYAGaiICQQwQESACQQUQESACQdkAIAEoApQBEF0LQQAhAgJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAiALTgRAQQAhAiABKAKsAiIEQQAgBEEAShshBANAIAIgBEYNAiACQRRsIQYgAkEBaiECIAYgDWooAhBFDQALQdWDAUGu/ABB/foBQZQ4EAAACyACIAIgCWoiBi0AACIFQQJ0QYC4AWotAAAiB2ohBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBUHYAGsOIBASGhESGhESGhoaGhoaGhoaBAQBAwIaGgwMBQUFBQUFAAsCQCAFQQFrDhUJCgoLGg0HGggIGhoaBhoaDxoaGg4ACyAFQSJrIghBH0sNGEEBIAh0IgpBwOEBcQ0SIApBBXFFBEAgCEEfRw0ZIAYoAAFBMEcNGiABIAMoAoQGIAMoApgGEDMgA0GABmpB6QEQESAEIQIMIwsgBi8AASECIANCqICAgHA3A1AgA0HcBWogBCADQdAAahAnBEACQCADKALoBSIEQQBIBEAgAygCmAYhBAwBCyADIAQ2ApgGCyABIAMoAoQGIAQQMyADQYAGaiAFQQFqIAIQXSABIAkgCyADKALkBSADQZgGahCkAiECDCMLIAEgAygChAYgAygCmAYQMyADQYAGaiAFIAIQXSAEIQIMIgsgBigAASEFIAQhBgwWCyAGKAABIQdB7QAhBQwUCyAGKAABIQdB7AAhBQwTCyABIAYoAAEgA0GcBmpBABDHAyEHIAMoAtwFIAMoAuAFIAQgBxDGAwRAIAEgB0F/EGkaIANBgAZqQQ4QESAEIQIMHwsgA0LrgICAcDcDYCADQdwFaiAEIANB4ABqECdFDRIgAygC6AUhCCADKALcBSADKALgBSADKALkBSIGIAcQxgNFDRIgCEEATgRAIAMgCDYCmAYLIAEgB0F/EGkaIAVBA3MhBSADKAL0BSEHDBwLIAYtAAkhCCAGKAABIQcgASAGKAAFIANBnAZqQQAQxwMiAkEASA0PIAIgASgCrAJODQ8gASADKAKEBiADKAKYBhAzIAEgASgC1AIiBkEBajYC1AIgASgCzAIgBkEEdGoiBkEENgIEIAYgBTYCACADKAKEBiEKIAYgAjYCDCAGIApBBWo2AgggA0GABmoiBiAFEBEgBiAHEB0gBiANIAJBFGxqIgIoAgwgAygChAZrEB0gAigCDEF/RgRAIAAgAiADKAKEBkEEa0EEEOgCRQ0dCyADQYAGaiAIEBEgBCECDB0LIANCqYCAgHA3A3AgA0HcBWogBCADQfAAahAnRQ0TIAQhAiADKALoBSIEQQBIDRwgAyAENgKYBgwcCyADQquBgIBwNwOgASADQdwFaiAEIANBoAFqECcEQAJAIAMoAugFIgJBAEgEQCADKAKYBiECDAELIAMgAjYCmAYLIAEgAygChAYgAhAzIANBgAZqQfMBEBEMGAsgA0F/NgKYASADQqyBgICQzRo3A5ABIANB3AVqIAQgA0GQAWoQJ0UNAAJAIAMoAugFIgVBAEgEQCADKAKYBiEFDAELIAMgBTYCmAYLIAEgAygChAYgBRAzIANBgAZqQfMBEBEgAygC7AVBA3MhBQwYCyADQunUgYBwNwOAASADQdwFaiAEIANBgAFqECdFDREgBUEKRiEKDA0LAkAgBigAASIGQYCAgIB4ckGAgICAeEYNACADQoyBgIBwNwPgASADQdwFaiAEIANB4AFqECdFDQAgAygC6AUiAkEATgRAIAMgAjYCmAYLIANCjoCAgHA3A9ABIANB3AVqIAMoAuQFIANB0AFqECcEQCADKALoBSICQQBIDRcgAyACNgKYBgwXCyABIAMoAoQGIAMoApgGEDMgA0GABmpBACAGaxDFAwwWCyADQo6AgIBwNwPAASADQdwFaiAEIANBwAFqECcEQCADKALoBSICQQBIDRYgAyACNgKYBgwWCyADQunUgYBwNwOwASADQdwFaiAEIANBsAFqECcEQCAGQQBHIQoMDQsgASADKAKEBiADKAKYBhAzIANBgAZqIAYQxQMgBCECDBkLIAYoAAEiAkH/AUoNDyABIAMoAoQGIAMoApgGEDMgA0GABmoiBiAFQcMAa0H/AXEQESAGIAJB/wFxEBEgBCECDBgLIAYoAAEhAiADQo6AgIBwNwPwASADQdwFaiAEIANB8AFqECcEQCAAIAIQEyADKALoBSICQQBIDRQgAyACNgKYBgwUCyACQS9HDQ4gASADKAKEBiADKAKYBhAzIANBgAZqQcEBEBEgBCECDBcLIANCyYCAgHA3A6gCIANC2Lb5gnA3A6ACIANB3AVqIAQiAiADQaACahAnDRYgA0F/NgKYAiADQoGEkICQCTcDkAIgA0HcBWogAiADQZACahAnDRYgA0F/NgKIAiADQoaO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DQMgAyAGKAABNgKYBiAEIQIMDAsgBigAASICQQBIDQMgAiABKAKsAk4NAyANIAJBFGxqIggoAgxBf0cNBCAIIAMoAoQGNgIMIAgoAhAhBwNAIAciAgRAIAgoAgwgAigCBCIFayEGIAIoAgAhBwJAAkACQAJAIAIoAghBAWsOBAIBAwADCyADKAKABiAFaiAGNgAADAILIAZBgIACakGAgARPDQkgAygCgAYgBWogBjsAAAwBCyAGQYABakGAAk8NCSADKAKABiAFaiAGOgAACyAAKAIQIgZBEGogAiAGKAIEEQAADAELCyAIQQA2AhAgBCECDAsLIANCjoCAgHA3A6gFIANC2bj9gnA3A6AFIANB3AVqIAQgA0GgBWoQJwRAIAMoAugFIgJBAE4EQCADIAI2ApgGCyADIAMoAvAFIgY2ApQFIANBfzYCmAUgAyADKALsBSIEQQFrNgKQBSADQdwFaiADKALkBSICIANBkAVqECcEQCADKALoBSICQQBOBEAgAyACNgKYBgsgBEEBaiEEIAMoAuQFIQILIAEgAygChAYgAygCmAYQMyADQYAGaiIHIAVBAmtB/wFxEBEgByAEIAYQXQwLCyADQo6AgIBwNwOIBSADQpiAgICw6A43A4AFIANB3AVqIAQgA0GABWoQJwRAAkAgAygC6AUiAkEASARAIAMoApgGIQIMAQsgAyACNgKYBgsgASADKAKEBiACEDMgA0GABmoiAiAFQQJrQf8BcRARIAIgAy0A7AUQESACIAMoAvwFEB0MBwsgA0KOgICAcDcD+AQgA0KZgICAkAk3A/AEIANB3AVqIAQgA0HwBGoQJ0UNAQJAIAMoAugFIgJBAEgEQCADKAKYBiECDAELIAMgAjYCmAYLIAEgAygChAYgAhAzIANBgAZqIgIgBUECa0H/AXEQESACQckAEBEMBgsgA0F/NgLIBSADQoSAgICwlevUqn83A8AFIANB3AVqIAQgA0HABWoQJ0UNACADKALoBSIIQQBOBEAgAyAINgKYBgsgAygC7AUhCCADKAL8BSIFQcUARgR/QfQBBSAFQRtHDQFB9QELIQogCEF9cUGpAUYEQCABIAMoAoQGIAMoApgGEDMgA0GABmogChARIAAgAygC/AUQEwwGCyADQumAgIBwNwOwBSADQdwFaiADKALkBSADQbAFahAnRQ0AAkAgAygC6AUiBUEASARAIAMoApgGIQUMAQsgAyAFNgKYBgsgASADKAKEBiAFEDMgA0GABmogChARIAAgAygC/AUQE0HqACEFDAYLIAEgAygChAYgAygCmAYQMyADQYAGaiAGIAcQciAEIQIMCAtBhSlBrvwAQeP1AUGUOBAAAAtBvYwBQa78AEHl9QFBlDgQAAALQcXdAEGu/ABB8PUBQZQ4EAAAC0Gw3QBBrvwAQfT1AUGUOBAAAAsgAygC5AUhAgwDCyADKAL0BSEHIAMoAuQFIQYLIAEgAygChAYgAygCmAYQMyAFQesARyIKRQRAIAEgCSALIAYgA0GYBmoQpAIhBgsgB0EASA0CIAcgASgCrAJODQIgASABKALUAiIEQQFqNgLUAiABKALMAiAEQQR0aiIEQQQ2AgQgBCAFNgIAIAMoAoQGIQ4gBCAHNgIMIAQgDkEBajYCCAJAIA0gB0EUbGoiCCgCDCIHQX9GBEAgCCgCCCACQX9zaiICQf8ASiAFQekAa0ECS3JFBEAgBEEBNgIEIAQgBUGBAWoiAjYCACADQYAGaiIEIAJB/wFxEBEgBEEAEBEgBiECIAAgCCADKAKEBkEBa0EBEOgCDQQMAwsgCiACQf//AUpyDQEgBEECNgIEIARB7QE2AgAgA0GABmoiAkHtARARIAJBABAqIAYhAiAAIAggAygChAZBAmtBAhDoAg0DDAILIAcgDkF/c2oiAkGAAWpB/wFLIAVB6QBrQQJLckUEQCAEQQE2AgQgBCAFQYEBaiIENgIAIANBgAZqIgUgBEH/AXEQESAFIAJB/wFxEBEgBiECDAMLIAogAkGAgAJqQf//A0tyDQAgBEECNgIEIARB7QE2AgAgA0GABmoiBEHtARARIAQgAkH//wNxECogBiECDAILIANBgAZqIgIgBUH/AXEQESACIAgoAgwgAygChAZrEB0gBiECIAgoAgxBf0cNASAAIAggAygChAZBBGtBBBDoAg0BCwsgAygCgAYiAkUNDSADKAKUBiACQQAgAygCkAYRAQAaDA0LQYUpQa78AEHl9gFBlDgQAAALIAAQfAwLCyAJKAABIQYgASABKALcAkEBajYC3AIMBgsgA0F/NgJIIANC6dSBgOABNwNAIANB3AVqIAggA0FAaxAnRQ0FAkAgAygC9AUiB0EASA0AIAcgASgCrAJODQAgAygC6AUhBCADKALkBSEKIAMoAuwFIRAgByEFA0AgASgCgAIhESABKAKkAiESQQAhCwNAAkAgC0EURg0AIBIgBUEUbGooAgQhAgNAIAIgEWoiEy0AACIFQbYBRiAFQcIBRnIEQCACQQVqIQIMAQUgBUHrAEcNAiALQQFqIQsgEygAASEFDAMLAAsACwsgA0KOgICAcDcDOCADIBA2AjQgA0ERNgIwIANB3AVqIAIgA0EwahAnBEAgAygC9AUhBQwBCwsgA0F/NgIkIAMgEDYCICADQdwFaiACIANBIGoQJ0UNBiABIAEoAtACQQFqNgLQAiABIAdBfxBpGiABIAMoAvQFIgJBARBpGiADQYAGaiIFIBBB/wFxEBEgBSACEB0gCiEIIARBf0YgBCAGRnINCCABIAEoAtwCQQFqNgLcAiADQYAGaiICQcIBEBEgAiAEEB0gBCEGDAgLQaopQa78AEHd8gFB+zkQAAALIAEoAswBIAkvAAEiB0EDdGpBBGohAgNAIAIoAgAiAkEASA0HIAEoAnQgAkEEdGoiBCgCBCAHRw0HIAQtAAxBBHEEQCADQYAGaiIFQegAEBEgBSACQf//A3EQKgsgBEEIaiECDAALAAsgASgCzAEgD0EDdGpBBGohAgNAIAIoAgAiAkEASA0GIAEoAnQgAkEEdGoiBygCBCAPRw0GIAEoApwBIAJHBEBB4QAhBCADQYAGaiIFIAcoAgxBA3ZBD3FBAWtBAU0EfyADQYAGaiIEQQMQESAEIAcoAgxBAXRBCHUQHUHZAAVB4QALEBEgBSACQf//A3EQKgsgB0EIaiECDAALAAsCQAJAAkAgBEHpAGsOBgQEAgQBAwALIARBMUYEQCAJLwABIQIgASAJLwADIgQQ5QQgA0GABmoiBUExEBEgBSACECogBSABKALMASAEQQN0ai8BBEEBakH//wNxECoMBwsgBEEyRwRAIARBzQBHDQUgCSgAAUUNBwwFCyABIAkvAAEiAhDlBCADQYAGaiIEQTIQESAEIAEoAswBIAJBA3RqLwEEQQFqQf//A3EQKgwGCyABIAEoAtACQQFqNgLQAiAJKAABIgJBAEgNBCACIAEoAqwCTg0EIAEoAqQCIAJBFGxqIgIoAgQhBCADQu6AgIBwNwMAIANB3AVqIAQgAxAnRQ0DIAIgAigCAEEBazYCAAwFCyABIAEoAtACQQFqNgLQAgsgA0F/NgKcBiADQYAGaiAJIA8QciABIA0gDiAIIANBnAZqEKQCIgggDk4NAyADKAKcBiICQQBIIAIgBkZyDQMgASABKALcAkEBajYC3AIgA0GABmoiBEHCARARIAQgAhAdIAIhBgwDCyABIAEoAtACQQFqNgLQAgsgA0GABmogCSAPEHIMAQsLQYUpQa78AEG88QFB+zkQAAALQYOOAUGu/ABBg/4BQf3LABAAAAsgACABEP0CQoCAgIDgAAshFCADQaAGaiQAIBQLxw0BB38CQAJAAkACQAJAIAAoAhAiA0FHRwRAIABBQGsoAgAhASAAQYUBEEpFDQEgACgCOEEBEIMBQUdHDQELQX8hBiAAQQBBACAAKAIYIAAoAhQQxAFFDQEMAgsCQAJAAkACQAJAAkAgA0Ezag4DAAIBAgsgASgClAMiA0UNASAAKAIAIQFBfyEGIAAQEg0GAkACQAJAAkAgACgCECICQTlqDgQCAQEAAQsgAEEAQQEQ7QIhAAwHCyAAQYUBEEpFDQEgACgCOEEBEIMBQUdHDQELIABBAEEAIAAoAhggACgCFEEBQQAQ+AEhAAwFCyAAEBINBgJAAkAgAkGzf0YNAAJAIAJBQkcEQCACQUtGIAJBU0ZyDQIgAkEqRwRAIAJB+wBHDQQgAygCICEEA0ACQCAAKAIQIgJB/QBGDQAgAkGDf0YgAkElakFRS3JFBEAMDwtBACECIAEgACgCIBAYIQUCQAJAAkAgABASDQAgAEH5ABBKRQ0BIAAQEg0AIAAoAhAiAkGDf0YgAkElakFRS3JFBEBBACECIABB3vYAQQAQFgwBCyABIAAoAiAQGCECIAAQEkUNAgsgASAFEBMMDAsgASAFEBghAgsgACADIAUgAkEAEPcBIQcgASAFEBMgASACEBMgB0UNDSAAKAIQQSxHDQAgABASRQ0BDA0LCyAAQf0AECwNCyAAQfoAEEpFDQIgABDsAiICRQ0LIAEgAyACEOsCIQUgASACEBMgBUEASA0LA0AgBCADKAIgTg0DIAMoAhwgBEEUbGoiASAFNgIAIAFBATYCCCAEQQFqIQQMAAsACyAAQfkAEEoEQCAAEBINCyAAKAIQIgJBg39GIAJBJWpBUUtyRQRADA0LIAEgACgCIBAYIQIgABASDQggABDsAiIERQ0IIAEgAyAEEOsCIQUgASAEEBMgBUEASA0IIAAgA0H9ACACQQEQ9wEhAyABIAIQEyADRQ0LIAMgBTYCAAwCCyAAEOwCIgJFDQogASADIAIQ6wIhBCABIAIQEyAEQQBIDQogASADQShqQQQgA0EwaiADKAIsQQFqEHgNCiADIAMoAiwiAUEBajYCLCADKAIoIAFBAnRqIAQ2AgAMAQsCQAJAAkACQCAAKAIQQTlqDgQCAQEAAQsgAEEAQQIQ7QIhAAwKCyAAQYUBEEpFDQEgACgCOEEBEIMBQUdHDQELIABBAEEAIAAoAhggACgCFEECQQAQ+AEhAAwICyAAEFYNCSAAQRYQoQEgACAAQUBrIgEoAgBB/ABBARCgAUEASA0JIABBvQEQECAAQfwAEBogASgCAEEAEBcgACADQfwAQRZBABD3AUUNCQsgABC3ASEADAYLIABBASACQQEQzAMhAAwFCyAAQc0gQQAQFgwICyABKAKUAyIERQ0AIAAoAjhBABCDASIBQShGIAFBLkZyDQAgACgCACEDQX8hBiAAEBINBSAEKAI4IQUCQAJAAkACQAJAIAAoAhAiAUH/AGoOAwACAQILIAMgACkDIBAxIgJFDQkgABASRQ0DIAMgAhATDAsLIAAoAigEQCAAEOIBDAsLQRYhAiADIAAoAiAQGCEBIAAQEg0EIAAgBCABQRYQywMNBCADIAEQEyAAKAIQQSxHDQEgABASDQggACgCECEBCyABQfsARwRAIAFBKkcNASAAEBINCCAAQfkAEEpFBEAgAEH/lAFBABAWDAsLIAAQEg0IIAAoAhAiAUGDf0YgAUElakFRS3JFBEAMCgtB/QAhAiADIAAoAiAQGCEBIAAQEg0EIAAgBCABQf0AEMsDDQQgAyABEBMMAQsgABASDQcDQAJAIAAoAhAiAUH9AEYNACABQYN/RiABQSVqQVFLckUEQAwLC0EAIQEgAyAAKAIgEBghAiAAEBINBQJAIABB+QAQSgRAIAAQEg0HIAAoAhAiAUGDf0YgAUElakFRS3JFBEBBACEBIABB3vYAQQAQFgwICyADIAAoAiAQGCEBIAAQEkUNAQwHCyADIAIQGCEBCyAAIAQgASACEMsDDQUgAyABEBMgAyACEBMgACgCEEEsRw0AIAAQEkUNAQwJCwsgAEH9ABAsDQcLIAAQ7AIiAkUNBgsgAyAEIAIQ6wIhASADIAIQEyABQQBIDQUgBSAEKAI4IgMgAyAFSBshAwNAIAMgBUZFBEAgBCgCNCAFQQxsaiABNgIIIAVBAWohBQwBCwsgABC3AUUNBAwFC0F/IQYgAEEHEOEBDQQMAwsgAyABEBMgAyACEBMMBQsgASACEBMMBAsgAA0BC0EAIQYLIAYPCyAAQd72AEEAEBYLQX8LtQMBA38jAEFAaiIBJAACQCAAKAIQQYF/Rw0AIAEgACgCBDYCECABIAAoAhQ2AhQgASAAKAIYNgIcIAEgACgCMDYCGEGBfyECA0ACQCACQYF/Rw0AIAAoAjghAiABIAAoAhgiA0EBajYCBCABIAIgA2tBAms2AgAgAUEgakEUQbs8IAEQThpBfyECIAAQEg0CAkACQAJAIAAoAhAiA0GAAWoOWQEBAQEBAwMDAwMDAwMDAwMDAwMDAwEBAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgEBAQEDAQEBAQMBAQMDAQEBAwMBAwMBAQMDAQEBAQEBAQMBAQMBAQEBAQEBAAsgA0H9AEYNASADQTtHDQIgABASRQ0BDAQLIAAoAjBFDQELAkACfyABQSBqQd4vQQsQYUUEQCAAKAJAIgJBATYCQEEBDAELIAFBIGpBicoAQQoQYUUEQCAAKAJAIQJBAgwBCyAAKAIALQDoAUUNASABQSBqQbTZAEEJEGENASAAKAJAIQJBBAshAyACIAItAG4gA3I6AG4LIAAoAhAhAgwBCwsgACABQRBqEO4CIQILIAFBQGskACACCzUBAn9BASECIAAoAgAiAUHxAGtBA0kgAUEIRnIgAUHTAEZyBH9BAQUgACgCDEH4AHFBIEYLC0wBA38gACgCIEEYaiEBAkADQCABIgMoAgAiAkUNASACQQxqIQEgACACRw0ACyADIAAoAgw2AgAPC0GihAFBrvwAQaPlAkGl3gAQAAALGAEBfyABpygCICIDBEAgACADIAIRAAALCxsAIAAQGyAAQgA3AhAgAEIANwIIIABCADcCAAvEBAEIfyAAQeQAaiIHIABB4ABqIgM2AgAgACADNgJgIABB0ABqIQQgAEHUAGoiBSgCACECA0AgBCACIgFGBEACQAJAA0ACQCAEIAUoAgAiAUYEQCAHIQEDQCABKAIAIgEgA0YNAiAAIAFBCGtBwgAQ8AMgAUEEaiEBDAALAAsgAUEIayICKAIAQQBMDQIgAUEEayIFIAUtAABBD3E6AAAgACACQcMAEPADIAFBBGohBQwBCwsgAEECOgBoIABB2ABqIQIDQCADIAcoAgAiAUcEQCABQQRrLQAAQQ5xBEAgASgCACIEIAEoAgQiBTYCBCAFIAQ2AgAgAUEANgIAIAIoAgAiBCABNgIEIAEgAjYCBCABIAQ2AgAgAiABNgIADAIFIAAgAUEIaxDtBQwCCwALCyAAQQA6AGggAEEQaiEDIAAoAlwhAQNAIAEgAkcEQCABQQRrLQAAQQ5xDQMgASgCBCEHIAMgAUEIayAAKAIEEQAAIAchAQwBCwsgACACNgJcIAAgAEHYAGo2AlgPC0HFjQFBrvwAQecsQfrRABAAAAtB+YYBQa78AEGdLUHZORAAAAsgAUEEayIGLQAAQRBJBEAgASgCBCECIAAgAUEIayIIQcQAEPADIAYgBi0AAEEPcUEQcjoAACAIKAIADQEgASgCACIGIAEoAgQiCDYCBCAIIAY2AgAgAUEANgIAIAMoAgAiBiABNgIEIAEgAzYCBCABIAY2AgAgAyABNgIADAELC0GojwFBrvwAQcQsQeDdABAAAAsoAQF/IAEgASgCAEEBayICNgIAIAJFBEAgAEEQaiABIAAoAgQRAAALC/EBAgZ/AX4gAEEIECkiBEUEQEF/DwsgBEIBNwIAIAKnIQYgAkIgiKdBdUkhCANAAkACQCADQQJGDQAgACAAKQMwIANBMmoQSSIJQoCAgIBwg0KAgICA4ABSBEAgAEEQECkiBQ0CIAAgCRAPC0F/IQcgA0UNACAAIAEpAwAQDwsgACgCECAEEKMFIAcPCyAEIAQoAgBBAWo2AgAgBSAENgIIIAhFBEAgBiAGKAIAQQFqNgIACyAFIAI3AwAgCUKAgICAcFoEQCAJpyAFNgIgCyAAIAlBL0EBEJYDIAEgA0EDdGogCTcDACADQQFqIQMMAAsAC5gDAgJ+An9CgICAgDAhAgJAAkAgASkCVCIDQhiGQjiHpw0AIANCIIZCOIenBEAgA0IQhkI4h6dFDQEgASkDYCICQiCIp0F1TwRAIAKnIgEgASgCAEEBajYCAAsgACACEIoBQoCAgIDgAA8LIAEgA0L/////j2CDQoCAgIAQhDcCVANAIAEoAhQgBEoEQCABKAIQIARBA3RqKAIEIgUpAlRCGIZCOIenRQRAIAAgBRClBSICQoCAgIBwg0KAgICA4ABRDQQgACACEA8LIARBAWohBAwBCwsCQCABKAJQIgQEQEKAgICA4ABCgICAgDAgACABIAQRAwBBAEgbIQIMAQsgACABKQNIQoCAgIAwQQBBABAvIQIgAUKAgICAMDcDSAsgAkKAgICAcINCgICAgOAAUQRAIAFBAToAWSAAKAIQKQOAASIDQiCIp0F1TwRAIAOnIgAgACgCAEEBajYCAAsgASADNwNgCyABIAEpAlRC////h4Bgg0KAgIAIhDcCVAsgAg8LIAEgASkCVEL/////j2CDNwJUIAIL5gUCB38BfiMAQRBrIgUkAAJAIAEpAlQiCUIohkI4h6cNACABIAlC//+DeINCgIAEhDcCVANAAkAgASgCFCADTARAQQAhAwNAIAEoAiAgA0oEQAJAIAEoAhwiBCADQRRsaiICKAIIQQFHDQAgAigCDCIHQf0ARg0AIAAgBUEIaiAFQQxqIAEoAhAgAigCAEEDdGooAgQgBxD0AyICRQ0AIAAgAiABIAQgA0EUbGooAhAQ8wMMBAsgA0EBaiEDDAELC0EAIQIgASgCUA0DIAEoAkgoAiQhCEEAIQNBACEEA0ACQCABKAI4IARMBEADQCADIAEoAiBODQIgASgCHCADQRRsaiICKAIIRQRAIAggAigCAEECdGooAgAiBCAEKAIAQQFqNgIAIAIgBDYCBAsgA0EBaiEDDAALAAsgASgCECABKAI0IARBDGxqIgcoAghBA3RqKAIEIQICQAJAIAcoAgQiBkH9AEYEQCAAIAIQjQMiCUKAgICAcINCgICAgOAAUg0BDAYLIAAgBUEIaiAFQQxqIAIgBhD0AyIGBEAgACAGIAIgBygCBBDzAwwGCwJAIAUoAgwiBigCDEH9AEYEQCAAIAUoAggoAhAgBigCAEEDdGooAgQQjQMiCUKAgICAcINCgICAgOAAUQ0HIABBARDxAyICRQRAIAAgCRAPDAgLIAAgAkEYaiAJECAMAQsgBigCBCICRQRAIAUoAggoAkgoAiQgBigCAEECdGooAgAhAgsgAiACKAIAQQFqNgIACyAIIAcoAgBBAnRqIAI2AgAMAQsgACAIIAcoAgBBAnRqKAIAQRhqIAkQIAsgBEEBaiEEDAELC0F/IQIgACABKQNIQoGAgIAQQQBBABAhIglCgICAgHCDQoCAgIDgAFENAyAAIAkQD0EAIQIMAwsgA0EDdCEEQX8hAiADQQFqIQMgACAEIAEoAhBqKAIEEKYFQQBODQEMAgsLQX8hAgsgBUEQaiQAIAIL/gICBH8CfgJAIAEpAlRCMIZCOIenDQACQCABKAJQBEADQCACIAEoAiBODQIgASgCHCACQRRsaiIDKAIIRQRAIABBABDxAyIERQRAQX8PCyADIAQ2AgQLIAJBAWohAgwACwALIAEpA0ghB0F/IQMgACAAKQMwQQ0QSSIGQoCAgIBwg0KAgICA4ABRDQEgBqciAiAHpyIDNgIgIAMgAygCAEEBajYCACACQgA3AiQCQCADKAI8IgRFDQACQCAAIARBAnQQXyIERQ0AIAIgBDYCJEEAIQIDQCACIAMoAjxODQIgAygCJCACQQN0ai0AACIFQQFxBEAgACAFQQN2QQFxEPEDIgVFDQIgBCACQQJ0aiAFNgIACyACQQFqIQIMAAsACyAAIAYQD0F/DwsgASAGNwNIIAAgBxAPCyABQQE6AFVBACECA0AgASgCFCACTARAQQAPCyACQQN0IQRBfyEDIAJBAWohAiAAIAQgASgCEGooAgQQpwVBAE4NAAsLIAMLMQECfwJ/IAAQP0EBaiEBA0BBACABRQ0BGiAAIAFBAWsiAWoiAi0AAEEvRw0ACyACCwtwAgJ/AX4jAEEQayICJAACQCABQQBOBEAgAUGAgICAeHIhAwwBCyACIAE2AgAgAkEFaiIBQQtB3CIgAhBOGiAAIAEQYiIEQoCAgIBwg0KAgICA4ABRDQAgACgCECAEp0EBEKcCIQMLIAJBEGokACADCzIAIAAgARC8AiIBQoCAgIBwg0KAgICAwH5RBH4gAEG+1QBBABCAAkKAgICA4AAFIAELC9ADAgJ/AX4CQANAAkACQAJAAkACQAJAAkACQEEHIAJCIIinIgMgA0EHa0FuSRtBCmoOEgMEBwUHBwcHBwYAAQAABwcHAgcLIAAoAhAoAowBIgNFDQYgAy0AKEEEcUUNBgsgACgC2AEhACABQgA3AgwgAUKAgICAgICAgIB/NwIEIAEgADYCACABIALEELoCGiABDwsgACgCECgCjAEiA0UNBCADLQAoQQRxRQ0EIAJCgICAgMCBgPz/AHwiBUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0EIAAoAtgBIQAgAUIANwIMIAFCgICAgICAgICAfzcCBCABIAA2AgAgASAFv50QugUaIAEPCyACp0EEag8LIAAoAhAoAowBIgNFDQIgAy0AKEEEcUUNAiACpyIDKAIMQf3///8HSg0CIAAoAtgBIQQgAUIANwIMIAFCgICAgICAgICAfzcCBCABIAQ2AgAgASADQQRqEEQaIAFBARDRARogACACEA8gAQ8LIAAgAhCqBSICQoCAgIBwg0KAgICA4ABSDQIMAwsgACACQQEQmgEiAkKAgICAcINCgICAgOAAUg0BDAILCyAAIAIQDyAAQewrQQAQFUEADwtBAAtmAQJ/IwBBEGsiAyQAIAAgASgCJCACIAEoAiBBA2xBAXYiACAAIAJIGyIAQQN0IANBDGoQqAEiAgR/IAMoAgwhBCABIAI2AiQgASAEQQN2IABqNgIgQQAFQX8LIQEgA0EQaiQAIAELUgEEfyAAKAIgIgJBACACQQBKGyEEQQAhAgNAAkAgAiAERwR/IAAoAhwiBSACQRRsaigCECABRw0BIAUgAkEUbGoFQQALDwsgAkEBaiECDAALAAvhAwEGfyMAQRBrIgckACAFQQRqIQkCQAJAA0BBACEGIAFBADYCACACQQA2AgAgBSgCCCIIQQAgCEEAShshCgJAA0AgBiAKRg0BAkAgAyAFKAIAIAZBA3RqIgsoAgBGBEAgCygCBCAERg0BCyAGQQFqIQYMAQsLIAZBAEgNAEECIQQMAwsgACAFQQggCSAIQQFqEHgEQEF/IQQMAwsgBSAFKAIIIgZBAWo2AgggBSgCACAGQQN0aiIGIAM2AgAgBiAAIAQQGCIINgIEIAMgCBCtBSIGBEAgBigCCEUNAiAGKAIMIgRB/QBGDQIgAygCECAGKAIAQQN0aigCBCEDDAELCyAIQRZHBEBBACEGA0AgAygCLCAGSgRAAkACQCAAIAdBDGogB0EIaiADKAIQIAMoAiggBkECdGooAgBBA3RqKAIEIAggBRCuBSIEQQFqDgUGAAEBBgELIAIoAgAiBARAIAEoAgAgBygCDEYEQCAHKAIIKAIMIAQoAgxGDQILIAFBADYCACACQQA2AgBBAyEEDAYLIAEgBygCDDYCACACIAcoAgg2AgALIAZBAWohBgwBCwtBACEEIAIoAgANAgtBASEEDAELIAEgAzYCACACIAY2AgBBACEECyAHQRBqJAAgBAvCAwEJfyABKAIIIgZBACAGQQBKGyEFAkACQANAIAQgBUYNASAEQQJ0IQcgBEEBaiEEIAcgASgCAGooAgAgAkcNAAtBACEFDAELQX8hBSAAIAFBBCABQQRqIAZBAWoQeA0AIAEgASgCCCIEQQFqNgIIIAEoAgAgBEECdGogAjYCACABQRBqIQkgAUEMaiEHQQAhBQNAAkAgAigCICAFTARAQQAhBUEAIQQDQCAEIAIoAixODQQgBEECdCEDIARBAWohBCAAIAEgAigCECADIAIoAihqKAIAQQN0aigCBEEBEK8FRQ0ACwwBCwJAIANBACACKAIcIAVBFGxqIgYoAhAiCkEWRhsNAEEAIQQgASgCFCIIQQAgCEEAShshCwJAAkADQCAEIAtGDQEgCiAHKAIAIARBDGxqIgwoAgBHBEAgBEEBaiEEDAELCyAEQQBODQELIAAgB0EMIAkgCEEBahB4DQIgASABKAIUIgRBAWo2AhQgASgCDCAEQQxsaiIEIAYoAhA2AgACQCADRQRAIAYoAghFDQELIARBADYCCAwCCyAEIAY2AggMAQsgDEEANgIICyAFQQFqIQUMAQsLQX8PCyAFC2gCAn8BfiAAQRBqIQIgACkCBCIEp0H/////B3EhAwJAIARCgICAgAiDUEUEQEEAIQADQCAAIANGDQIgAiAAQQF0ai8BACABQYcCbGohASAAQQFqIQAMAAsACyACIAMgARCyBSEBCyABCxIAIAAgASACIANBgIABENABGgssAQF/A0AgASADRkUEQCAAIANqLQAAIAJBhwJsaiECIANBAWohAwwBCwsgAgvOAQIDfwF+IAEgAkEBELIFIgNB/////wNxIQUgACgCNCAAKAIkQQFrIANxQQJ0aiEDA0AgAygCACIERQRAQQAPCwJAIAAoAjggBEECdGooAgAiAykCBCIGQiCIp0H/////A3EgBUcgBkKAgICAgICAgECDQoCAgICAgICAwABSciAGp0H/////B3EgAkcgBkKAgICACINCAFJycg0AIANBEGogASACEGENACAEQd4BTgRAIAMgAygCAEEBajYCAAsgBA8LIANBDGohAwwACwALfwEEfyABLQAAQdsARgRAIAFBAWoiAxA/QQFrIQIgACgCECgCOCEEQdABIQEDQCABQd4BRwRAAkAgBCABQQJ0aigCACIFKAIEQf////8HcSACRw0AIAVBEGogAyACEGENACAAIAEQGA8LIAFBAWohAQwBCwsQAQALIAAgARCqAQusAgMCfwJ+AXwjAEEgayICJABEAAAAAAAA+H8hBiAAKAIIQf////8HRwRAIAAoAgAhAyACQgA3AhggAkKAgICAgICAgIB/NwIQIAIgAzYCDCACQQxqIAAQRBoCfiACKAIUIgBB/f///wdMBEAgAkEMakE1QcgEEM4BGiACKAIUIQALQoCAgICAgID4/wAgAEH+////B0YNABogAEGAgICAeEYEQEIADAELIAIoAhwhAwJ+IAIoAhhBAkYEQCADKQIADAELIAM1AgBCIIYLIQQgAEGCeEwEQCAEQY54IABrrYghBEIADAELIARCC4hC/////////weDIQQgAEH+B2qtQjSGCyEFIAQgBYQgAjUCEEI/hoS/IQYgAkEMahAbCyABIAY5AwAgAkEgaiQACw4AIABCgICAgPB+EIAGC+4PAwt/A34BfCMAQUBqIhAkAEHfAEGAAiAEQSBxGyEJIARBgANxIQsCQAJAAkACfwJAAkACQAJAAkACQAJAAkACQCABLQAAIgZBK2sOAwEDAAMLQQEhDiABQQFqIQEMAQsgAUEBaiEBCyAEQYAIcUUNASABLQAAIQYLIAZB/wFxQTBHDQACQAJAAkAgAS0AASIHQfgARwRAIAdB7wBGDQIgB0HYAEcNAQsgA0FvcQ0FIAFBAmohB0EQIQMMCQsgAyAHQc8AR3INAQwFCyADRQ0EDAMLAkACQCAHQeIARwRAIANFIAdBwgBGcQ0BIAMgB0Ewa0H/AXFBCUtyDQQgBEEQcQ0CDAcLIAMNBAsgBEEEcUUNBUECIQMgAUECaiEHDAcLIAFBAWohB0EBIQYDQCABIAZqIQMgBkEBaiEGIAMtAAAiCEH4AXFBMEYNAAtBCCEDQYACIQlBASEKIAhB/gFxQThGDQQMBgsgBEEBcSALQYACckGAAkdyDQAgAUEIaiEHQfUcIQYgASEIA0AgBkH9HEcEQCAILQAAIAYtAABHDQIgBkEBaiEGIAhBAWohCAwBCwsgC0GAAkYEQCAAELYFIhFCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhEQwJCyARp0EEaiAOEIwBDAgLRAAAAAAAAPD/RAAAAAAAAPB/IA4bIhS9IhECfyAUmUQAAAAAAADgQWMEQCAUqgwBC0GAgICAeAsiBre9UQRAIAatIREMCAtCgICAgMB+IBFCgICAgMCBgPz/AH0gEUL///////////8Ag0KAgICAgICA+P8AVhshEQwHCyABIgcgA0UNAxoMBQsgASEHDAQLIARBBHFFDQAgAUECaiEHQQghAwwCCyABCyEHQQohAwwBC0KAgICAwH4hESAHLQAAEJYBIANPDQELQQAhBiADQQpHIQwgByEBA0ACQCAGIAdqIg0tAAAiCMAhDyAIEJYBIANOBEAgCSAPRw0BAkAgDCAGQQFHcg0AIA1BAWstAABBMEcNAEEBIQYMAgsgDS0AARCWASADTg0BCyAHIAZBAWoiBmohAQwBCwtBACEMAkACQCAEQQFxDQACQCAIQS5HDQAgDS0AASEIIAZFBEAgCBCWASADTg0BCyANQQFqIQFCgICAgMB+IREgCSAIwEYNAgNAAkAgCEH/AXEQlgEgA0gEQCABLQABIQgMAQtBASEMIAkgCMBHDQIgAS0AASIIEJYBIANODQILIAFBAWohAQwACwALIAEgB00NAAJAIAEtAAAiBkHlAEcEQCADQQpGIAZBxQBGcQ0BIAZBIHJB8ABHIANBEEtyDQJBASADdEGEggRxDQEMAgsgA0EKRw0BC0EBIQwgAUEBaiEGAkACQAJAIAEtAAFBK2sOAwACAQILIAFBAmohBgwBCyABQQJqIQYLIAYtAABBOmtBdkkNACAGIQEDQCABIgZBAWohASAGLQABIgjAIQ0gCEE6a0F1Sw0AIAkgDUcNASAGLQACQTprQXVLDQALCyABIAdGBEBCgICAgMB+IREMAQsgECEJAkAgASAHayINQQJqIg9BwQBPBEAgACgCECIGQRBqIA8gBigCABEDACIJRQ0BC0EAIQZBACEIIA4EQCAJQS06AABBASEICyANQQAgDUEAShshDgNAIAYgDkZFBEAgBiAHai0AACINQd8ARwRAIAggCWogDToAACAIQQFqIQgLIAZBAWohBgwBCwsgCCAJakEAOgAAAn4CQAJAIARBwABxBEACQAJAAkACQCABLQAAQewAaw4DAQIAAwsgAUEBaiEBQYABIQsMBQsgAUEBaiEBQYACIQsMBAsgAUEBaiEBQYADIQsM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IAFBEGohAgJ/IAdCgICAgAiDUCIFRQRAIAIvAQAMAQsgAi0AAAsiAUEwayIDQQlLDQACfwJAIAFBMEcEQEEBIQEDQCABIARGDQICfyAFRQRAIAIgAUEBdGovAQAMAQsgASACai0AAAtBMGsiBkEJSw0EIAFBAWohASAGrSADrUIKfnwiB6chAyAHQoCAgIAQVA0ACwwDC0EAIgMgBEEBRw0BGgsgACADNgIAQQELDwtBAAupAgIDfwF+AkAgACACEDhFDQAgAqciBC8BBkEORgRAIAAgASAEKAIgKQMAENAFDwsgAUKAgICAcFQNAAJAIAAgAkE7IAJBABAUIgJC/////29YBEBBfyEDIAJCgICAgHCDQoCAgIDgAFENASAAQcYwQQAQFQwBCyABpyEEIAKnIQUCQANAAkAgBCgCECgCLCIDRQRAQQAhAyAELwEGQTBHDQQgBCAEKAIAQQFqNgIAIAStQoCAgIBwhCEBA0AgACABEIwCIgFCgICAgHCDIgZCgICAgCBRDQRBfyEDIAZCgICAgOAAUQ0FIAGnIAVGBEAgACABEA8MAwsgABB7RQ0ACyAAIAEQDwwECyADIgQgBUcNAQsLQQEhAwwBC0EAIQMLIAAgAhAPCyADC9IDAgJ+An8jAEEgayIEJAACQCABQv///////////wCDIgNCgICAgICAwIA8fSADQoCAgICAgMD/wwB9VARAIAFCBIYgAEI8iIQhAyAAQv//////////D4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD//wBUIANCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQIMAQtCgICAgICAgPj/ACECIANC////////v//DAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC////////P4NCgICAgICAwACEIgIgBUGB9wBrEGcgBCAAIAJBgfgAIAVrEI4CIAQpAwhCBIYgBCkDACIAQjyIhCECIAQpAxAgBCkDGIRCAFKtIABC//////////8Pg4QiAEKBgICAgICAgAhaBEAgAkIBfCECDAELIABCgICA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cINCgICAgJB/UXFFBEAgAEGN9wBBABAVDAELIAAgAUESEGUiAUKAgICAcINCgICAgOAAUQ0AIAGnIgQgAz4CJCAEIAI+AiAgACABQdUAQgBBAhAZGiABDwsgACADEA8gACACEA9CgICAgOAACw0AIAAgAUHOlQEQ/wMLZwEBfwJAIAFBAE4EQCAAKAIQIgIoAiwgAU0NASACKAI4IAFBAnRqKAIAIgEgASgCAEEBajYCACAAIAFBBBCABA8LQfKRAUGu/ABBzhdBmdIAEAAAC0HZ3wBBrvwAQc8XQZnSABAAAAtEAQF/IABB+AFqIQIgAEH0AWohAAN/IAAgAigCACICRgRAQQAPCyABIAJBBGsoAgBGBH8gAkEIawUgAkEEaiECDAELCwtSAgJ/AX4CQCAAKAIQKAKMASIBRQ0AIAEpAwgiA0KAgICAcFQNACADpyIBLwEGEO4BRQ0AIAEoAiAiAS0AEkEEcUUNACAAIAEoAkAQGCECCyACC6oPAgV/D34jAEHQAmsiBSQAIARC////////P4MhCyACQv///////z+DIQogAiAEhUKAgICAgICAgIB/gyENIARCMIinQf//AXEhCAJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAhB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiDEKAgICAgIDA//8AVCAMQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQ0MAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhDSADIQEMAgsgASAMQoCAgICAgMD//wCFhFAEQCADIAJCgICAgICAwP//AIWEUARAQgAhAUKAgICAgIDg//8AIQ0MAwsgDUKAgICAgIDA//8AhCENQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAQgAhAQwCCyABIAyEUARAQoCAgICAgOD//wAgDSACIAOEUBshDUIAIQEMAgsgAiADhFAEQCANQoCAgICAgMD//wCEIQ1CACEBDAILIAxC////////P1gEQCAFQcACaiABIAogASAKIApQIgYbeSAGQQZ0rXynIgZBD2sQZ0EQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGw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AgQLIBIgFHwhEgwDCyADRSEFIABBAEgNAQsgAikDcEIAUw0AIAIgAigCBEEBazYCBAsgBUUNAEGg1ARBHDYCACACEJoEQgAhE0IADAELIAEoApAGIgBFBEAgASAGt0QAAAAAAAAAAKIQqwEgASkDACETIAEpAwgMAQsgEiATUiATQglVckUEQCABQTBqIAYQeSABQSBqIAAQhgIgAUEQaiABKQMwIAEpAzggASkDICABKQMoEC4gASkDECETIAEpAxgMAQsgEkKaBFkEQEGg1ARBxAA2AgAgAUHgAGogBhB5IAFB0ABqIAEpA2AgASkDaEJ/Qv///////7///wAQLiABQUBrIAEpA1AgASkDWEJ/Qv///////7///wAQLiABKQNAIRMgASkDSAwBCyASQut1VwRAQaDUBEHEADYCACABQZABaiAGEHkgAUGAAWogASkDkAEgASkDmAFCAEKAgICAgIDAABAuIAFB8ABqIAEpA4ABIAEpA4gBQgBCgICAgICAwAAQLiABKQNwIRMgASkDeAwBCyAKBEAgCkEITARAIAFBkAZqIAdBAnRqIgAoAgAhCQNAIAlBCmwhCSAKQQFqIgpBCUcNAAsgACAJNgIACyAHQQFqIQcLAkAgCyASpyIISiALQQhKciAIQRFKcg0AIAhBCUYEQCABQcABaiAGEHkgAUGwAWogASgCkAYQhgIgAUGgAWogASkDwAEgASkDyAEgASkDsAEgASkDuAEQLiABKQOgASETIAEpA6gBDAILIAhBCEwEQCABQZACaiAGEHkgAUGAAmogASgCkAYQhgIgAUHwAWogASkDkAIgASkDmAIgASkDgAIgASkDiAIQLiABQeABakEAIAhrQQJ0QeDBBGooAgAQeSABQdABaiABKQPwASABKQP4ASABKQPgASABKQPoARDjBSABKQPQASETIAEpA9gBDAILIAhBEU5BACABKAKQBiIAIAhBfWxB0ABqdhsNACABQeACaiAGEHkgAUHQAmogABCGAiABQcACaiABKQPgAiABKQPoAiABKQPQAiABKQPYAhAuIAFBsAJqIAhBAnRBmMEEaigCABB5IAFBoAJqIAEpA8ACIAEpA8gCIAEpA7ACIAEpA7gCEC4gASkDoAIhEyABKQOoAgwBCwNAIAFBkAZqIAciAEEBayIHQQJ0aigCAEUNAAsCQCAI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AAEiAjoAASAAQQFqIQAgAUEBaiEBIAINAAsLC/UBAgF/AX4jAEHQAGsiAyQAAkACfiABQQBIBEAgAyABQf////8HcTYCACADQRBqIgFBwABB3CIgAxBOGiAAIAEQYgwBCyAAKAIQIgAoAiwgAU0NAQJAAkAgACgCOCIAIAFBAnRqKAIAIgEpAgQiBEKAgICAgICAgECDQoCAgICAgICAwABRDQAgAkUNASAEp0GAgICAeEcNACAAKAK8ASEBCyABIAEoAgBBAWo2AgAgAa1CgICAgJB/hAwBCyABIAEoAgBBAWo2AgAgAa1CgICAgIB/hAshBCADQdAAaiQAIAQPC0Hv3wBBrvwAQZgYQYfiABAAAAvrAgECfyAAIAEoAgQQEwNAIAEoAhAhAyACIAEoAhRORQRAIAAgAyACQQN0aigCABATIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQAJAIAEoAhwhAyACIAEoAiBODQAgAyACQRRsaiIDKAIIRQRAIAAoAhAgAygCBBDrAQsgACADKAIQEBMgACADKAIMEBMgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAIAAoAhAiAkEQaiABKAIoIAIoAgQRAABBACECA0AgASgCNCEDIAIgASgCOE5FBEAgACADIAJBDGxqKAIEEBMgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAIAAgASkDQBAPIAAgASkDSBAPIAAgASkDYBAPIAAgASkDaBAPIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFCADcCCCAAKAIQIgBBEGogASAAKAIEEQAACzABAX8gACgCOCABQQJ0aigCACIBIAEoAgAiAkEBazYCACACQQFMBEAgACABEKIDCwvAAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQAgAkL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFJxDQAgACAEIAWEhFAEQEEADwsgASACg0IAWQRAIAEgAlIgASACU3ENASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADCwoAIABBfHEQpAMLZQEEfwNA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sgEhAyAAIAIQDyAAIAAgA0HdwAAQsgEiAiADQQEgARAhIQQgACACEA8gACADEA8gBAsMACAAIAEpAwAQswELygYCBH8DfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABDtAUUNAAJ/IARC////////P4MhCgJ/IARCMIinQf//AXEiBkH//wFHBEBBBCAGDQEaQQJBAyADIAqEUBsMAgsgAyAKhFALCyEGIAJCMIinIghB//8BcSIHQf//AUYNACAGDQELIAVBEGogASACIAMgBBAuIAUgBSkDECICIAUpAxgiASACIAEQ4wUgBSkDCCECIAUpAwAhBAwBCyABIAJC////////////AIMiCiADIARC////////////AIMiCRDtAUEATARAIAEgCiADIAkQ7QEEQCABIQQMAgsgBUHwAGogASACQgBCABAuIAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB//8BcSEGIAcEfiABBSAFQeAAaiABIApCAEKAgICAgIDAu8AAEC4gBSkDaCIKQjCIp0H4AGshByAFKQNgCyEEIAZFBEAgBUHQAGogAyAJQgBCgICAgICAwLvAABAuIAUpA1giCUIwiKdB+ABrIQYgBSkDUCEDCyAJQv///////z+DQoCAgICAgMAAhCELIApC////////P4NCgICAgICAwACEIQogBiAHSARAA0ACfiAKIAt9IAMgBFatfSIJQgBZBEAgCSAEIAN9IgSEUARAIAVBIGogASACQgBCABAuIAUpAyghAiAFKQMgIQQMBQsgCUIBhiAEQj+IhAwBCyAKQgGGIARCP4iECyEKIARCAYYhBCAHQQFrIgcgBkoNAAsgBiEHCwJAIAogC30gAyAEVq19IglCAFMEQCAKIQkMAQsgCSAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAEC4gBSkDOCECIAUpAzAhBAwBCyAJQv///////z9YBEADQCAEQj+IIQEgB0EBayEHIARCAYYhBCABIAlCAYaEIglCgICAgICAwABUDQALCyAIQYCAAnEhBiAHQQBMBEAgBUFAayAEIAlC////////P4MgB0H4AGogBnKtQjCGhEIAQoCAgICAgMDDPxAuIAUpA0ghAiAFKQNAIQQMAQsgCUL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC4sDAgJ+A38jAEEgayICJABCgICAgOAAIQQCQCAAIAMpAwAiBRBgDQAgACABQTEQZSIBQoCAgIBwg0KAgICA4ABRDQAgAAJ+AkAgAEEgEF8iBkUNAEEAIQMgBkEANgIUIAZBADYCAANAIANBAkZFBEAgBiADQQN0aiIHIAdBBGoiCDYCCCAHIAg2AgQgA0EBaiEDDAELCyAGQoCAgIAwNwMYIAFCgICAgHBaBEAgAacgBjYCIAsgACACQRBqIAEQpAUNAAJAIAAgBUKAgICAMEECIAJBEGoQISIFQoCAgIBwg0KAgICA4ABRBEAgACgCECIDKQOAASEEIANCgICAgCA3A4ABIAIgBDcDCCAAIAIpAxhCgICAgDBBASACQQhqECEhBCAAIAIpAwgQDyAEQoCAgIBwg0KAgICA4ABRDQEgACAEEA8LIAAgBRAPIAAgAikDEBAPIAEhBCACKQMYDAILIAAgAikDEBAPIAAgAikDGBAPQoCAgIDgACEECyABCxAPCyACQSBqJAAgBAuSCwIHfgV/IwBBEGsiAiQAIARB5aYBai0AACINrSEJAkACQAJAIAMpAwAiBkL/////b1gEQEKAgICA4AAhBSAAIAJBCGogBhCmAQ0DIABCgICAgDAgAikDCCIHIAmGEPkCIgZCgICAgHCDQoCAgIDgAFENAwwBCwJAAkAgBqciDC8BBiIOQRNrQf//A3FBAU0EQCAMKAIgIQxCgICAgOAAIQUgACACIAMpAwgQpgENBSAMLQAEDQICQCACKQMAIghBfyANdEF/cyINrINQBEAgCCAMKAIAIg6sIgZYDQELIABB+C1BABBQDAYLAkAgAykDECIHQoCAgIBwg0KAgICAMFEEQCANIA5xDQEgBiAIfSAJiCEHDAMLIAAgAkEIaiAHEKYBDQYgDC0ABA0DIAw0AgAgAikDCCIHIAmGIAh8Wg0CCyAAQZLZAEEAEFAMBQsCfgJAAkAgAEKAgICAMAJ+AkACQAJ+AkACQAJAIA5BFWtB//8DcUEKTQRAIAAgASAEEGUiBUKAgICAcINCgICAgOAAUQ0PAkACQCAMKAIgIg8oAgwiAygCICINLQAERQRAIAwoAighDkKAgICAMCEBIA0tAAVFBEAgACADrUKAgICAcIRCgICAgDAQ4wEiAUKAgICAcINCgICAgOAAUQ0DCyAAIAEgDq0iCCAJhhD5AiEHIAAgARAPIAdCgICAgHCDQoCAgIDgAFENAiAMKAIgKAIMKAIgLQAERQ0BIAAgBxAPCyAAEGsMAQtBACEDAkAgB0KAgICAcFQNACAHpyIQLwEGQRNHDQAgECgCICEDCyAAIAUgB0IAIAgQ2wMNACAMLwEGIARGDQJBACEEA0AgBCAORg0RIAAgBiAEELABIgFCgICAgHCDQoCAgIDgAFENASAAIAUgBCABEKUBIQMgBEEBaiEEIANBAE4NAAsLIAAgBRAPDA4LQoCAgIDgACEFIAAgASAEEGUiCkKAgICAcINCgICAgOAAUQ0OQoCAgIAwIQUgACAGQdEBIAZBABAUIgtCgICAgHCDIgdCgICAgCBRIAdCgICAgDBRcg0BQoCAgIDgACEBIAdCgICAgOAAUQ0IQQAhAyAAED4iB0KAgICAcINCgICAgOAAUQ0FIAAgBiALEPoDIgVCgICAgHCDQoCAgIDgAFEEQEKAgICAMAwECyAAIAVB6gAgBUEAEBQiBkKAgICAcINCgICAgOAAUQ0CQQAhBANAIAAgBSAGIAJBCGoQrgEiCEKAgICAcINCgICAgOAAUQ0DIAIoAggEQCAEIQMgByEBDAYLIAAgByAErSAIQYCAARDSAUEASARAIAYhCCAFIQYgByEFDAYFIARBAWohBAwBCwALAAsgAygCCCANKAIIIA8oAhBqIAMoAgAQHxoMDQsgACACQQhqIAYQPA0GIAwgDCgCAEEBajYCACAGIQEgAikDCAwECyAGCyEIIAUhBiAHIQULIAAgCBAPIAAgBhAPIAAgBRAPCyAAIAsQDyABQoCAgIBwg0KAgICA4ABRDQEgA60LIgUgCYYQ+QIiBkKAgICAcINCgICAgOAAUQ0AIAAgCiAGQgAgBRDbAw0AQQAhBANAIAogBK0gBVkNAxogACABIAQQsAEiBkKAgICAcINCgICAgOAAUQ0BIAAgCiAEIAYQpQEhAyAEQQFqIQQgA0EATg0ACwsgASEFCyAAIAUQDyAKIQFCgICAgOAACyEFIAAgARAPDAQLIAMpAwAiBkIgiKdBdUkNASAGpyIDIAMoAgBBAWo2AgAMAQsgABBrDAILIAAgASAEEGUiAUKAgICAcINCgICAgOAAUQRAIAAgBhAPDAILIAAgASAGIAggBxDbA0UEQCABIQUMAgsgACABEA8LQoCAgIDgACEFCyACQRBqJAAgBQsPACAAIAEgAkEAQQMQlgIL9AECA34BfwJAIAMpAwAiBEKAgICAcFoEQCADKQMIIgVC/////29WDQELIAAQJEKAgICA4AAPC0KAgICA4AAhBiAAQoCAgIAgQTAQSSIBQoCAgIBwg0KAgICA4ABSBH4gAEEYECkiAkUEQCAAIAEQD0KAgICA4AAPCyAEpyIDIAMoAgBBAWo2AgAgAiAENwMAIAWnIgcgBygCAEEBajYCACACIAU3AwggACAEEDghACACQQA6ABEgAiAAOgAQIAFCgICAgHBaBEAgAaciACACNgIgIAAgAC0ABUHvAXEgAy0ABUEQcXI6AAULIAEFQoCAgIDgAAsLXgEBfwJAIAFCgICAgHBUDQAgAaciBC8BBiADRw0AIAQoAiAiBEUNACAEKQMAIgFCgICAgGBaBEAgACABpyACEQAACyAEKQMIIgFCgICAgGBUDQAgACABpyACEQAACwtKAQF/AkAgAUKAgICAcFQNACABpyIDLwEGIAJHDQAgAygCICIDRQ0AIAAgAykDABAjIAAgAykDCBAjIABBEGogAyAAKAIEEQAACws4AQF/IABBMGsiBEEKTwR/IABBwQBrIANNBEAgAEE3aw8LIAIgAEHXAGsgAEHhAGsgAU8bBSAECwtLAQF/IABBGBApIgJFBEBCgICAgOAADwsgAkEBNgIAIAAoAtgBIQAgAkIANwIQIAJCgICAgICAgICAfzcCCCACIAA2AgQgAq0gAYQLkQIAIABFBEBBAA8LAn8CQCABQf8ATQ0AAkBBiNUEKAIAKAIARQRAIAFBgH9xQYC/A0YNAgwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDAMLIAFBgEBxQYDAA0cgAUGAsANPcUUEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAMLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAMLC0Gg1ARBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAAALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC14BBH8gACgCACECA0AgAiwAACIDENECBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFQX8LIQEMAQsLIAEL3BICEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRICQAJAAkACQANAIAEhDCAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCAMIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAHIQkDQCAJLQABQSVHBEAgCSEBDAILIAdBAWohByAJLQACIQogCUECaiIBIQkgCkElRg0ACwsgByAMayIHIA5B/////wdzIhhKDQcgAARAIAAgDCAHEFsLIAcNBiAIIAE2AkwgAUEBaiEHQX8hDwJAIAEsAAEiChDRAkUNACABLQACQSRHDQAgAUEDaiEHIApBMGshD0EBIRMLIAggBzYCTEEAIQ0CQCAHLAAAIglBIGsiAUEfSwRAIAchCgwBCyAHIQpBASABdCIBQYnRBHFFDQADQCAIIAdBAWoiCjYCTCABIA1yIQ0gBywAASIJQSBrIgFBIE8NASAKIQdBASABdCIBQYnRBHENAAsLAkAgCUEqRgRAAn8CQCAKLAABIgEQ0QJFDQAgCi0AAkEkRw0AIAFBAnQgBGpBwAFrQQo2AgAgCkEDaiEJQQEhEyAKLAABQQN0IANqQYADaygCAAwBCyATDQYgCkEBaiEJIABFBEAgCCAJNgJMQQAhE0EAIRAM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IAgoAgRBAWsiBzYCBCAEIAlqQRBqIQQgBw0JIAAgACgCMEEBazYCMAwJCyAHCyEFIARBAWohBAwACwALIANBACAEQQFGGw0EQQAhCSADDQAgBEECRg0DCyAAIAU2AjAMAAsACyAJDwsgASAIQRBqIAAoAgxBA3QQHxoLIAgoAgghBSAIKAIMIQQgAiAIIAAoAgxBA3RqQRBqIAgtAAEiA0ECdBAfGiAAIAAoAjBBAWs2AjAMAAsAC4sCAQd/IAFBAnRBwP4DaigCACICIAFBAXRBkIAEai8BAGohCEEAIQECQANAIAIgCE8NASACQQFqIQYCQAJAIAItAAAiBEE/TQRAIAMgBEEDdmpBAWohAiABBEAgACADIAIQfg0DCyABQQFzIQEgBEEHcSACakEBaiEFDAELAn8gAyAEakH/AGsgBMBBAEgNABogBi0AACEFIARB3wBNBEAgAkECaiEGIAMgBEEIdGogBWpB//8AawwBCyACQQNqIQYgAi0AAiADIARBEHRqIAVBCHRqakH///8CawshBSADIQILIAEEQCAAIAIgBRB+DQELIAFBAXMhASAGIQIgBSEDDAELC0F/IQcLIAcLOABBsNQCIAEQrwQiAUEASARAQX4PCyAAIAFBHU0Ef0IBIAGthqcFIAFBAnRB2NgCaigCAAsQoQYLNQEBfyMAQRBrIgMkACADIAE2AgggAyACQQFqNgIMIAAgA0EIakECELEEIQAgA0EQaiQAIAALlwIBA38gASgCACICQf7/B08EQCAAQYY7QQAQOkF/DwsCQCACQQFNBEAgAEECQX8QuAEaDAELIAEoAgggAkECdGoiBEEEaygCACIDQX9GBEAgBEEIaygCACEDCyACQQF2IQIgA0H//wNNBEAgAEEVIAIQsgRBACECA0AgAiABKAIATg0CIAAgAkECdCIDIAEoAghqLwEAECogAEF/IAEoAgggA0EEcmooAgBBAWsiAyADQX5GG0H//wNxECogAkECaiECDAALAAsgAEEWIAIQsgRBACECA0AgAiABKAIATg0BIAAgAkECdCIDIAEoAghqKAIAEB0gACABKAIIIANBBHJqKAIAQQFrEB0gAkECaiECDAALAAtBAAsmAQF/IAAoAjgiAUEASARAIAAgACAAQTxqQQAQqwYiATYCOAsgAQvgAgEFfyMAQZABayIEJAAgAUEANgIAIAAoAiAhA0EBIQYDQCAEIAM2AowBAkACQAJAIAAoAhwiByADTQRAIAYhBQwBCwJAAkACQAJAIAMtAAAiBUHbAGsOAgECAAsgBUEoRw0FIAMtAAFBP0cNAiADLQACQTxHDQUgAy0AAyIFQSFGIAVBPUZyDQUgAUEBNgIAAkAgAkUNACAEIANBA2o2AowBIAQgBEGMAWogACgCKBC1BA0AIAQgAhDyA0UNBQsgBkEBaiEFIAZB/QFKDQMgBCgCjAEhAyAFIQYMBQsDQCAEIAMiBUEBaiIDNgKMASADIAdPDQUCQCADLQAAQdwAaw4CAAYBCyAEIAVBAmoiAzYCjAEMAAsACyAEIANBAWoiAzYCjAEMAwsgBkH9AUohByAGQQFqIgUhBiAHRQ0CC0F/IAUgAhshBgsgBEGQAWokACAGDwsgA0EBaiEDDAALAAtVAQN/IAAgAWohBCACED8hA0EBIQEDQAJAIAAgBE8EQEF/IQEMAQsgAyAAED8iBUYEQCACIAAgAxBhRQ0BCyABQQFqIQEgACAFakEBaiEADAELCyABC+QhARd/IwBB4AJrIgIkAEEMIAFrIRYgAUELaiEXIABBxABqIRIgAUETaiEYIABB3ABqIQ8gACgCBCETAkACQAJAA0AgACgCGCIDIAAoAhxPDQMgAy0AACIEQSlGIARB/ABGcg0DIAAoAgQhECACIAM2AhwCQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAIARB2wBrDgQCAQMIAAsCQAJAAkACQAJAIARBJGsOCwEJCQkECRkZCQkCAAsgBEH7AGsOAwIIBgcLIAIgA0EBaiIINgIcIABBBhARDBQLIAIgA0EBajYCHCAAKAI0IQogAUUNCCAAQRsQESAAQQRBAyAAKAIwGxARDAwLIAAoAigEQCAAQdU/QQAQOgwXCyADLQABQTprQXZJDQUgAiADQQFqNgIgIAJBIGpBARDcAhoCQCACKAIgIgMtAAAiBUEsRw0AIAIgA0EBajYCICADLQABIgVBOmtBdkkNACACQSBqQQEQ3AIaIAIoAiAtAAAhBQsgBUH/AXFB/QBHDQUMFQsCQCADLQABQT9GBEBBAyEHQQAhCkEAIQVBACEGAkACQAJAAkAgAy0AAiIEQTprDgQAAwESAgsgACADQQNqNgIYIAAoAjQhCiAAIAEQ8gINGiACIAAoAhg2AhwgECEDIAAgAkEcakEpELADRQ0SDBoLQQEhBUEEIQcgAy0AAyIEQT1GBEBBASEGDBELQQEhBiAEQSFGDRAgAiADQQNqNgIcIA8gAkEcaiAAKAIoELUEBEAgAEGc5wBBABA6DBoLIBIoAgAgACgCSCAPEKwGQQBKBEAgAEGH5wBBABA6DBoLIBIgDyAPED9BAWoQciAAQQE2AjwMAwsgBEEhRg0PCyAAQcHJAEEAEDoMFwsgAiADQQFqNgIcIBJBABARCyAAKAI0IgpB/wFOBEAgAEGqOUEAEDoMFgsgACAKQQFqNgI0IAAoAgQhAyAAIBcgChCpAiAAIAIoAhw2AhggACABEPICDRUgAiAAKAIYNgIcIAAgFiAKEKkCIAAgAkEcakEpELADRQ0NDBULAkACQAJAAkACQAJAAkAgAy0AASIEQTBrDhMDBAQEBAQEBAQECgoKCgoKCgoBAAsgBEHrAEYNASAEQeIARw0JCyAAQRFBEiAEQeIARhsQESADQQJqIQgMEgsCQCADLQACQTxHBEBB8uYAIQUgACgCKA0BIAAQtAQNAQwJCyACIANBA2o2AiAgDyACQSBqIAAoAigQtQQEQEGc5wAhBSAAKAIoDQEgABC0BA0BDAkLIBIoAgAgACgCSCAPEKwGIgRBAE4NAyAAIAJBwAJqIA8QqwYiBEEATg0DQfv5ACEFIAAoAigNACAAELQERQ0ICyAAIAVBABA6DBgLIAIgA0ECajYCHCADLQACIQYgACgCKARAQQAhBCAGQTprQXZJDQggAEHIzQBBABA6DBgLQQAhBCAGQfgBcUEwRw0HIAIgA0EDajYCHCAGQTBrIQQgAy0AAyIGQfgBcUEwRw0HIAIgA0EEajYCHCAEQQN0IAZqQTBrIQQMBwsgAiADQQFqIgU2AhwgAkEcakEAENwCIgRBAE4EQCAEIAAoAjRIDQIgABCqBiAESg0CCyAAKAIoRQRAIAIgBTYCHCAFLQAAIgRBN00EQEEAIQYgBEEzTQRAIAIgA0ECaiIFNgIcIARBMGshBiADLQACIQQLIARB+AFxQTBHBEAgBiEEDAkLIAIgBUEBajYCHCAEQf8BcSAGQQN0akEwayEEIAUtAAEiA0H4AXFBMEcNCCACIAVBAmo2AhwgBEEDdCADakEwayEEDAgLIAIgA0ECajYCHAwHCyAAQfXNAEEAEDoMFgsgAiACKAIgNgIcCyAAKAI0IQogACgCBCEDIAAgGCAEEKkCDAwLIAAoAjQhCiABBEAgAEEbEBELIAAoAkAhBCACQTQ2AtACIAIgBDYCzAIgAkEANgLIAiACQgA3AsACIAIgA0EBaiIHNgLUAiADLQABIgRB3gBHIggNBiACIANBAmoiBzYC1AJBAAwHCyAAKAIoRQ0BIABB1T9BABA6DBILIARBP0YNEAsgACACQQhqIAJBHGpBABCzBCIEQQBIDRALIAAoAjQhCiAAKAIEIQMgAQRAIABBGxARCwJAIARBgICAgAROBEAgACACQQhqEKkGIQQgAigCFCACKAIQQQAgAigCGBEBABogBEUNAQwRCyAAKAIsBEAgBCAAKAIoEN0BIQQLIARB//8DTARAIABBASAEELIEDAELIABBAiAEELgBGgsgAUUNByAAQRsQEQwHCyAAQQRBAyAAKAIwGxARDAQLIAIgA0EBaiIINgIcIABBBRARDAkLQQELIQUDQCAFRQRAIActAAAhBEEBIQUMAQsCQAJAAkACQCAEQf8BcUHdAEcEQCAAIAJBrAJqIAJB1AJqQQEQswQiA0EASA0DAkACQAJAAkAgAigC1AIiBy0AAEEtRw0AIActAAFB3QBGDQAgAiAHQQFqNgIgIANBgICAgARPBEAgACgCKEUNASACKAK4AiACKAK0AkEAIAIoArwCEQEAGgwDCyAAIAJBrAJqIAJBIGpBARCzBCIGQQBIDQcgBkGAgICABEkNASACKAK4AiACKAK0AkEAIAIoArwCEQEAGiAAKAIoDQILIANBgICAgARJDQIgAkHAAmogAigCtAIiAyACKAKsAhCxBCEGIAIoArgCIANBACACKAK8AhEBABogBkUNBwwFCyACIAIoAiAiBzYC1AIgAyAGTQ0DCyAAQabrAEEAEDoMBAsgAkHAAmogAyADEKgGRQ0EDAILIAAoAiwEQCACQTQ2AjAgAiACKALMAjYCLCACQQA2AiggAkIANwIgIAJC4YCAgLAPNwLYAkEBIQUgAkEgaiACKALIAiACKALAAiACQdgCakECQQEQ2wIhBCACKAIoIQMgBEUEQEEAIQUgAigCICIEQQAgBEEAShshBgNAIAUgBkZFBEAgAyAFQQJ0aiIJIAkoAgBBIGs2AgAgBUEBaiEFDAELCyACQcACaiADIAQQsQQhBQsgAigCLCADQQAgAigCMBEBABogBQ0CCyAIRQRAIAJBwAJqENoCDQILIAAgAkHAAmoQqQYNAiACKALMAiACKALIAkEAIAIoAtACEQEAGiACIAdBAWo2AhwgAUUNBgwFCyACQcACaiADIAYQqAZFDQILIAAQqAILIAIoAswCIAIoAsgCQQAgAigC0AIRAQAaDA0LQQAhBQwACwALIABBGxARCyAQIQMMAQsgAyAHaiEHQX8hAwJAIAUNACAAKAIoDQAgACgCNCEKIBAhAwsgAEEYQRcgBEEhRhtBABC4ASEEIAAgBzYCGCAAIAYQ8gINCCACIAAoAhg2AhwgACACQRxqQSkQsAMNCCAAQQoQESAAKAIMDQggACgCACAEaiAAKAIEIARrQQRrNgAACyACKAIcIQggA0EASA0DAkACQAJAAkACQCAILQAAIgRBKmsOAgECAAsgBEE/Rg0CIARB+wBHDQcgCC0AAUE6a0F1Sw0DIAAoAihFDQcMCAsgCEEBaiEIQQAhC0H/////ByEJDAULQQEhCyAIQQFqIQhB/////wchCQwEC0EBIQkgAiAIQQFqIgg2AhxBACELDAMLIAIgCEEBajYCHCACQRxqQQEQ3AIiCyEJAkAgAigCHCIELQAAIgVBLEcNACACIARBAWo2AhxB/////wchCSAELQABIgVBOmtBdkkNACACQRxqQQEQ3AIiCSALSA0FIAIoAhwtAAAhBQsgBUH/AXFB/QBGDQEgACgCKA0BCyACIAg2AhwMAgsgACACQRxqQf0AELADDQUgAigCHCEICwJAAn8gCC0AAEE/RgRAIAIgCEEBaiIINgIcIAAoAgQgA2shB0EAIQVBAAwBCyAAKAIMIQQCQCAJQQBKBEAgBA0DIAAoAgQgA2shByAAKAIAIhEgA2ohDUEAIQVBACEMA0AgBSAHSARAIAUgDWoiDi0AACIUQfCBAmotAAAhBEECIQYCQAJAAkACQCAUQQFrDhYCAgICAwMHBwcHBwcHBwcHAwMHBwEABwtBAyEGCyAOLwABIAZ0IARqIQQLIAxBAWohDAsgBCAFaiEFDAELCyAMQQBMDQEgAEEKEBEgACADQREQ8AENAyAAKAIAIANqQRw6AAAgACgCBCEGIAMgACgCAGoiBCAMNgANIAQgCTYACSAEIAs2AAUgBCAGIANrQRFrNgABDAQLIAQNAiAAKAIEIANrIQcgACgCACERC0EAIQQgAkEgakEAQf8BECsaIAMgEWohFEF+IQ1BACERA0AgBCAHTkUEQCAEIBRqIg4tAAAiBUHwgQJqLQAAIQZBAiEMAkACQAJAAkACQAJAAkACQCAFQQFrDhsCAgICBwcGBgYGAwMEBgcHBwcFBQEABgYHBgcGC0EDIQwLIA4vAAEgDHQgBmohBgtBASANIA1BfkYbIQ0MBAsgDi0AASACQSBqaiIFIAUtAABBAXI6AAAMAwsgDi0AASIFIA4tAAIiDCAFIAxLGyEMA0AgBSAMRg0DIAJBIGogBWoiDiAOLQAAQQFyOgAAIAVBAWohBQwACwALQQEhESAOLQABIAJBIGpqIgUgBS0AAEECcjoAAAwBCyANQQAgDUF+RxshDQsgBCAGaiEEDAELC0EAIQUCfwJAIBFFDQADQCAFQf8BRg0BIAJBIGogBWohBCAFQQFqIQUgBC0AAEEDRw0AC0F/DAELIA1BACANQX5HGwtFIQVBAQshBAJAIAtFBEAgACgCNCAKRwRAIAAgA0EDEPABDQMgACgCACADakENOgAAIAMgACgCAGogCjoAASADIAAoAgBqIAAtADRBAWs6AAIgA0EDaiEDCwJAAkACQCAJDgIAAQILIAAgAzYCBAwFCyAAIANBBRDwAQ0DIAAoAgAgA2ogBEEIcjoAACAAKAIAIANqIAc2AAEMBAsgCUH/////B0YNASAAIANBChDwAQ0CIAAoAgAgA2pBDzoAACAAKAIAIgYgA0EFaiIFaiAEQQhyOgAAIAMgBmogCTYAASADIAAoAgBqIAdBBWo2AAYgAEEOIAUQ3AEgAEEQEBEMAwsgBSALQQFHIAlB/////wdHcnJFBEAgACAEQQlzIAMQ3AEMAwsgC0EBRwRAIAAgA0EFEPABDQIgACgCACADakEPOgAAIAAoAgAgA2ogCzYAASAAQQ4gA0EFaiIDENwBIABBEBARCyAJQf////8HRgRAIAAoAgQhBiAAIARBCHIgBSAHakEFahC4ARogBQRAIABBGRARIAAgAyAHELAEIABBGiAGENwBDAQLIAAgAyAHELAEIABBByAGENwBDAMLIAkgC0wNAiAAQQ8gCSALaxC4ARogACgCBCEGIAAgBEEIciAHQQVqELgBGiAAIAMgBxCwBCAAQQ4gBhDcASAAQRAQEQwCCyAAIAMgBUEFahDwAQ0AIAAoAgAgA2ogBEEIcjoAACAAKAIAIANqIgQgBSAHakEFajYAASAFBEAgBEEZOgAFIABBGiADENwBDAILIABBByADENwBDAELIAAQqAIMBAsgACAINgIYIAFFDQEgACAAKAIEIgMgEGsiECADahDGAQ0DIAAoAgAgE2oiBCAQaiAEIAMgE2sQnAEgACgCACIEIBNqIAMgBGogEBAfGgwBCwsgAEH3KkEAEDoMAQsgAEHuMUEAEDoLQX8hFQsgAkHgAmokACAVC44CAgZ/AX4jAEEQayIDJAACQCABQv////9vWARAIAAQJEF/IQQMAQtBfyEEIAAgAhAlIglCgICAgHCDQoCAgIDgAFENAAJAIAAgA0EMaiADQQhqIAmnQRMQjgFBAEgEQEKAgICAMCECIAMoAgghBiADKAIMIQcMAQtBACEEQoCAgIAwIQIgAygCDCEHIAMoAgghBgNAIAUgBkYNASAAIAIQDyAAIAkgByAFQQN0aiIIKAIEIAlBABAUIgJCgICAgHCDQoCAgIDgAFIEQCAFQQFqIQUgACABIAgoAgQgAkGAgAEQxwRBAE4NAQsLQX8hBAsgACAHIAYQWiAAIAkQDyAAIAIQDwsgA0EQaiQAIAQL2gMCA38EfiMAQTBrIggkAAJAIAAoAhAoAnggCE0EQCADQgAgA0IAVRshDSAFQQFrIQkgBkKAgICAcIMhDiAFQQBMIQpCACEDA0AgAyANUQRAIAQhDAwDC0J/IQwgACACIAMgCEEoahCFASIFQQBIDQICQCAFRQ0AIA5CgICAgDBSBEAgCCAIKQMoNwMAIAMhCyAIIAI3AxAgCCADQoCAgIAIWgR+QoCAgIDAfiADub0iC0KAgICAwIGA/P8AfSALQv///////////wCDQoCAgICAgID4/wBWGwUgCws3AwggCCAAIAYgB0EDIAgQISILNwMoIAAgCCkDABAPIAAgCCkDCBAPIAtCgICAgHCDQoCAgIDgAFENBAsCQAJAAkAgCg0AIAAgCCkDKCILEMoBIgVBAEgNASAFRQ0AIAAgCEEgaiALEDxBAEgNASAAIAEgCyAIKQMgIAQgCUKAgICAMEKAgICAMBCvBiIEQgBTDQEgACALEA8MAwsgBEL/////////D1MNASAAQbHaAEEAEBUgCCkDKCELCyAAIAsQDwwECyAAIAEgBCAIKQMoEGpBAEgNAyAEQgF8IQQLIANCAXwhAwwACwALIAAQ6QFCfyEMCyAIQTBqJAAgDAuZAgEBfgJAAkACQCABQoCAgIBwgyIEQoCAgIAwUgRAIARCgICAgCBSDQEgAEGp1AAQYiEEDAILIABBtvkAEGIhBAwBCyAAIAEQJSIBQoCAgIBwg0KAgICA4ABRDQEgACABEMoBIgNBAEgEQCAAIAEQD0KAgICA4AAPCwJ/QZMBIAMNABpBnQEgACABEDgNABpBkgEgAacvAQYiA0ESS0EBIAN0QfiOEHFFcg0AGiAAKAIQKAJEIANBGGxqKAIECyECIAAgAUHXASABQQAQFCEEIAAgARAPIARCgICAgHCDIgFCgICAgJB/UQ0AIAFCgICAgOAAUQ0BIAAgBBAPIAAgAhAtIQQLIABBu5kBIARBnIABEL4BIQELIAEL0AICBn8BfiMAQTBrIgIkAAJAAkAgAykDACIBQv////9vWARAIAFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIADAELQoCAgIDgACELIAAgARC2AyIDQQBIDQEgA0UEQCAAQfjiAEEAEBUMAgsgACACQSxqIAJBKGogAaciBkEDEI4BDQEgAigCLCEHIAIoAighCEEAIQMCQANAIAMgCEcEQCAHIANBA3RqKAIEIQlBgIIBIQUCQCAERQ0AIAAgAkEIaiAGIAkQTCIKQQBIDQMgCkUNACACKAIIIQUgACACQQhqEEhBgIYBQYCCASAFQQJxGyEFCyAAIAEgCUKAgICAMEKAgICAMEKAgICAMCAFEG1BAEgNAiADQQFqIQMMAQsLIAAgByAIEFogBiAGKAIAQQFqNgIADAELIAAgByAIEFoMAQsgASELCyACQTBqJAAgCwsQAEGimQEgAEELEPsBQQBHC4kBAgN/AX5BlZkBIQMCQAJAIAEpAgQiBqdB/////wdxIgUgAkwNACABQRBqIQQCfyAGQoCAgIAIg1BFBEAgBCACQQF0ai8BAAwBCyACIARqLQAAC0ElRw0AQb0tIQMgAkECaiAFTg0AIAEgAkEBakECELgEIgJBAE4NAQsgACADELkEQX8hAgsgAguLAgIBfgF8IwBBEGsiAiQAQoCAgIDgACEEAkAgACABEN0CIgFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsgACACIAEQbg0AIAAgAkEMaiADKQMAELoBDQAgAisDACIFvSIBQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgAEKAgICAwH4gAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGxA3IQQMAQsgAzUCBEIghkKAgICAMFEEQCAAIAVBCkEAQQQQjwIhBAwBCyACKAIMIgNB5QBPBEAgAEGKNEEAEFAMAQsgACAFQQogA0EBakEFEI8CIQQLIAJBEGokACAEC18AIwBBEGsiAiQAAn4gAykDACIBQiCIpyIDBEBCgICAgBAgA0ELakESSQ0BGgtCgICAgOAAIAAgAkEIaiABEEINABogAisDCBC9Aq1CgICAgBCECyEBIAJBEGokACABCyYAQoCAgIDgACAAIAMpAwAQzAUiAEEAR61CgICAgBCEIABBAEgbCy8BAX4CfiADKAIEIgIEQEKAgICAECIEIAJBC2pBEkkNARoLIAAgBCADIAMQvAQLCy8BAX4CfiADKAIEIgIEQEKAgICAECIEIAJBC2pBEkkNARoLIAAgBCADIAMQvQQLCwkAIAAgARC+BAssACAAIAEQvgQiAUKAgICAcINCgICAgOAAUgR+IABBA0ECIAGnGxAtBSABCwvMAgIBfwd+IwBBIGsiBCQAIAAgBEEIakEAED0aQoCAgIDgACEIQoCAgIAwIQUCQAJAAkAgACADKQMAECUiBkKAgICAcINCgICAgOAAUQ0AIAAgACAGQfAAIAZBABAUENwFIgVCgICAgHCDQoCAgIDgAFENACAAIAQgBRA8QQBIDQBCACEBIAQpAwAiB0IAIAdCAFUbIQkgB0IBfSEHIAKsIQoDQCABIAlRDQIgACAAIAUgARBzEDciC0KAgICAcINCgICAgOAAUQ0BIARBCGogCxB/GiABIAdZIQIgAUIBfCEBIAEgClkgAnINACAEQQhqIAMgAadBA3RqKQMAEIcBRQ0ACwsgACAGEA8gACAFEA8gBCgCCCgCECIAQRBqIAQoAgwgACgCBBEAAAwBCyAAIAYQDyAAIAUQDyAEQQhqEDYhCAsgBEEgaiQAIAgLgwICA38BfCMAQSBrIgQkAAJ+AkAgACAEIAIQPQ0AIAJBACACQQBKGyEGAkADQCAFIAZHBEACQCADIAVBA3RqKQMAIgFC/////w9YBEAgAaciAkH//8MATQ0BDAQLIAAgBEEYaiABEEINBCAEKwMYIgdEAAAAAAAAAABjIAdEAAAAAP//MEFkcg0DIAcCfyAHmUQAAAAAAADgQWMEQCAHqgwBC0GAgICAeAsiArdiDQMLIAVBAWohBSAEIAIQuQFFDQEMAwsLIAQQNgwCCyAAQZUrQQAQUAsgBCgCACgCECIAQRBqIAQoAgQgACgCBBEAAEKAgICA4AALIQEgBEEgaiQAIAELnAEBAn8jAEEgayIEJAAgACAEQQhqIAIQPRogAkEAIAJBAEobIQICfgNAIAIgBUcEQAJAIAAgBEEEaiADIAVBA3RqKQMAEHdFBEAgBEEIaiAELwEEEIsBRQ0BCyAEKAIIKAIQIgBBEGogBCgCDCAAKAIEEQAAQoCAgIDgAAwDCyAFQQFqIQUMAQsLIARBCGoQNgshASAEQSBqJAAgAQubAwIDfwJ+IwBBIGsiAiQAQoCAgIDgACEIAkAgACABEFkiAUKAgICAcINCgICAgOAAUQ0AIAAgAkEIaiIFQQcQPRogBUE8EDsaIAUgBEEDdCIFQYDrAWooAgAiBhCIARpBnj0gBHZBAXFFBEAgAkEIaiIEQSAQOxogBCAFQYTrAWooAgAQiAEaIARBrpkBEIgBGiAAIAMpAwAQWSIJQoCAgIBwg0KAgICA4ABRBEAgACABEA8gAigCCCgCECIAQRBqIAIoAgwgACgCBBEAAAwCCyAJpyIHQRBqIQVBACEEA0AgBCAHKQIEIginQf////8HcU9FBEACQAJ/IAhCgICAgAiDUEUEQCAFIARBAXRqLwEADAELIAQgBWotAAALIgNBIkYEQCACQQhqQaCJARCIARoMAQsgAkEIaiADEIsBGgsgBEEBaiEEDAELCyAAIAkQDyACQQhqQSIQOxoLIAJBCGoiAEE+EDsaIAAgARB/GiAAQbqQARCIARogACAGEIgBGiACQQhqQT4QOxogABA2IQgLIAJBIGokACAIC5MEAgh/AX4jAEEwayIFJAACQCAAIAEQWSIBQoCAgIBwg0KAgICA4ABRDQAgAaciBygCBEH/////B3EiAkUNAAJAIAAgBUEUaiACED0NAEEAIQIgBUEANgIQIAdBEGohCANAAkAgBykCBCINp0H/////B3EiCSACSgRAAn8CQCAERSAHIAVBEGoQyQEiCkGjB0dyDQAgBSgCECILQQFrIQIDQAJAIAJBAEwEQEEAIQYMAQsgAkEBayEDAkAgDUKAgICACINQRQRAIAggA0EBdGovAQAiBkGA+ANxQYC4A0cgAkECSXINASAIIAJBAmsiAkEBdGovAQAiDEGA0ABqQf//A3FBgAhLDQEgBkH/B3EgDEH/B3FBCnRyQYCABGohBgwCCyADIAhqLQAAIQYLIAMhAgsgBhDABA0ACyAGEL8ERQ0AIAUgCzYCLAJAA0AgBSgCLCAJTg0BIAcgBUEsahDJASICEMAEDQALIAIQvwQNAQsgBUHCBzYCBEEBDAELIAVBBGogCiAEELIDCyEDQQAhAgNAIAIgA0YNAiACQQJ0IQYgAkEBaiECIAVBFGogBiAFQQRqaigCABC5AUUNAAsMAwsgACABEA8gBUEUahA2IQEMAwsgBSgCECECDAALAAsgACABEA8gBSgCFCgCECIAQRBqIAUoAhggACgCBBEAAEKAgICA4AAhAQsgBUEwaiQAIAELdAEBfkKAgICA4AAhBCAAIAEQWSIBQoCAgIBwg0KAgICA4ABSBH4gACADKQMAECgiBEKAgICAcINCgICAgOAAUQRAIAAgARAPQoCAgIDgAA8LIAGnIASnEIMCIQIgACABEA8gACAEEA8gAq0FQoCAgIDgAAsLCQAgACABEPYECxIAIABBsjRBABAVQoCAgIDgAAtqAAJAAkAgAUIgiKciAkF/RwRAIAJBeUcNAQwCCyABpyICLwEGQQVHDQAgAikDICIBQoCAgIBwg0KAgICAkH9SDQAMAQsgAEGi2wBBABAVQoCAgIDgAA8LIAGnIgAgACgCAEEBajYCACABC4QCAgJ/An4gACABEFkiAUKAgICAcINCgICAgOAAUQRAIAEPCyABpyIGKQIEIgenQf////8HcSECAkAgBEEBcUUNACAGQRBqIQMgB0KAgICACIMhCANAIAIgBUYEQCACIQUMAgsCfyAIUEUEQCADIAVBAXRqLwEADAELIAMgBWotAAALEIcDRQ0BIAVBAWohBQwACwALAkAgBEECcUUEQCACIQMMAQsgBkEQaiEEIAdCgICAgAiDIQcDQCACIgMgBUwNASADQQFrIQICfyAHUEUEQCAEIAJBAXRqLwEADAELIAIgBGotAAALEIcDDQALCyAAIAYgBSADEIQBIQcgACABEA8gBwvqAwIGfwN+IwBBIGsiBSQAQoCAgIDgACEMAkAgACABEFkiAUKAgICAcINCgICAgOAAUQ0AAkACQCAAIAVBBGogAykDABC6AQ0AIAUoAgQiByABpyIJKAIEQf////8HcSIITA0BQSAhCkKAgICAMCELAkAgAkECSA0AIAMpAwgiDUKAgICAcINCgICAgDBRDQAgACANECgiC0KAgICAcINCgICAgOAAUQ0BAkACQCALpyIGKQIEIg2nQf////8HcQ4CAAECCyAAIAsQDwwDCwJ/IA1CgICAgAiDUEUEQCAGLwEQDAELIAYtABALIQpBACEGCyAHQYCAgIAETgRAIABBwNoAQQAQRgwBCyAAIAVBCGogBxA9RQRAAkAgBARAIAVBCGogCUEAIAgQUQ0BCyAHIAhrIQMCQCAGBEADQCADQQBMDQIgAyADIAYoAgRB/////wdxIgIgAiADShsiAmshAyAFQQhqIAZBACACEFFFDQAMAwsACyAFQQhqIAogAxDBBA0BCyAERQRAIAVBCGogCUEAIAgQUQ0BCyAAIAsQDyAAIAEQDyAFQQhqEDYhDAwECyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAACyAAIAsQDwsgACABEA8MAQsgASEMCyAFQSBqJAAgDAuBBgIFfgV/IwBB0ABrIgIkAAJAAkACQAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZUwQQAQFQwBCyADKQMIIQkgAykDACIFQoCAgIAQhEKAgICAcINCgICAgDBRDQIgBEUNASAAIAUQxARBAE4NAQtCgICAgOAAIQYMAgsgACAFQdQBIAVBABAUIgdCgICAgHCDIgZCgICAgCBRIAZCgICAgDBRcg0AIAZCgICAgOAAUQ0BIAIgCTcDKCACIAE3AyAgACAHIAVBAiACQSBqEC8hBgwBCyAAIAJBCGpBABA9GkKAgICA4AAhBkKAgICAMCEIAkAgACABECgiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQUMAQsgACAFECgiBUKAgICAcINCgICAgOAAUQ0AIAAgCRA4Ig5FBEAgACAJECgiCEKAgICAcINCgICAgOAAUQ0BCyAHpyELIAWnIg0pAgQhAQNAAkACQCABQv////8Hg1AEQEEAIQMgDEUNASAKIAsoAgRB/////wdxTw0CIApBAWohAwwBCyALIA0gChDCBCIDQQBODQAgDA0BIAIoAggoAhAiA0EQaiACKAIMIAMoAgQRAAAgACAFEA8gACAIEA8gByEGDAQLIAIgBTcDIAJ+IA4EQCACIAc3AzAgAiADrTcDKCAAIAAgCUKAgICAMEEDIAJBIGoQIRA3DAELIAIgCDcDSCACQoCAgIAwNwNAIAJCgICAgDA3AzggAiAHNwMoIAIgA603AzAgACACQSBqEO0ECyIBQoCAgIBwg0KAgICA4ABRDQIgAkEIaiIMIAsgCiADEFEaIAwgARB/GiANKQIEIgGnQf////8HcSADaiEKQQEhDCAEDQELCyACQQhqIgMgCyAKIAsoAgRB/////wdxEFEaIAAgBRAPIAAgCBAPIAAgBxAPIAMQNiEGDAELIAIoAggoAhAiA0EQaiACKAIMIAMoAgQRAAAgACAFEA8gACAIEA8gACAHEA8LIAJB0ABqJAAgBgu4AgIDfwN+IwBBIGsiAiQAQoCAgIDgACEHAkACQAJAIAAgARBZIgFCgICAgHCDQoCAgIDgAFENACAAIAIgAykDABDiAw0AIAIpAwAiCEKAgICACFoEQCAAQeIqQQAQUAwBCyABpyIEKQIEIgmnIgZB/////wdxIgVFDQEgCKciA0EBRg0BIAlC/////weDIAh+QoCAgIAEWgRAIABBwNoAQQAQRgwBCyAAIAJBCGogAyAFbCAGQR92EIoDDQACQCAFQQFHBEADQCADQQBMDQIgAkEIaiAEQQAgBRBRGiADQQFrIQMMAAsACyACQQhqAn8gBC0AB0GAAXEEQCAELwEQDAELIAQtABALIAMQwQQaCyAAIAEQDyACQQhqEDYhBwwCCyAAIAEQDwwBCyABIQcLIAJBIGokACAHC8EBAgJ/An4jAEEQayIEJABCgICAgOAAIQYCQCAAIAEQWSIBQoCAgIBwg0KAgICA4ABRBEAgASEGDAELAkAgACAEQQxqIAMpAwAgAaciBSgCBEH/////B3EiAiACEFcNACAEIAI2AgggAykDCCIHQoCAgIBwg0KAgICAMFIEQCAAIARBCGogByACIAIQVw0BIAQoAgghAgsgACAFIAQoAgwiAyACIAMgAiADShsQhAEhBgsgACABEA8LIARBEGokACAGC8ABAgN/An4jAEEQayICJABCgICAgOAAIQcCQCAAIAEQWSIBQoCAgIBwg0KAgICA4ABRBEAgASEHDAELAkAgACACQQxqIAMpAwAgAaciBigCBEH/////B3EiBCAEEFcNACACIAQgAigCDCIFayIENgIIIAAgBiAFIAMpAwgiCEKAgICAcINCgICAgDBSBH8gACACQQhqIAggBEEAEFcNASACKAIIBSAECyAFahCEASEHCyAAIAEQDwsgAkEQaiQAIAcL0wECAn8CfiMAQRBrIgIkAEKAgICA4AAhBgJAIAAgARBZIgFCgICAgHCDQoCAgIDgAFEEQCABIQYMAQsCQCAAIAJBDGogAykDACABpyIFKAIEQf////8HcUEAEFcNACACIAUoAgRB/////wdxIgQ2AgggAykDCCIHQoCAgIBwg0KAgICAMFIEQCAAIAJBCGogByAEQQAQVw0BIAIoAgghBAsgACAFIAIoAgwiAyAEIAMgBEgbIAMgBCADIARKGxCEASEGCyAAIAEQDwsgAkEQaiQAIAYLqAUCC34CfyMAQRBrIgIkAAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZUwQQAQFUKAgICA4AAhBwwBCyADKQMIIQYCQCADKQMAIgRCgICAgHCDIglCgICAgBCEQoCAgIAwUQ0AIAAgBEHWASAEQQAQFCIFQoCAgIBwgyIHQoCAgIAgUSAHQoCAgIAwUXINACAHQoCAgIDgAFENASACIAY3AwggAiABNwMAIAAgBSAEQQIgAhAvIQcMAQtCgICAgOAAIQdCgICAgDAhCCAAAn5CgICAgDAgACABECgiCkKAgICAcINCgICAgOAAUQ0AGkKAgICA4AAgABA+IgFCgICAgHCDQoCAgIDgAFENABoCQAJAIAZCgICAgHCDQoCAgIAwUQRAIAJBfzYCAAwBCyAAIAIgBhB3QQBIDQELIAqnIgMpAgQhCyAAIAQQKCIIQoCAgIBwg0KAgICA4ABRDQACQCACKAIAIg9FDQBCACEEAkAgCUKAgICAMFEEQEIAIQUMAQsgCKciECkCBEL/////B4MhBiALQv////8HgyIFUEUEQCAFIAZ9IAZQrSIJfSEMIA+tIQ1CACEFA0ACQCAEIAl8Ig4gDFUNACADIBAgDqcQwgQiD0EASA0AIAAgAyAEpyAPEIQBIgRCgICAgHCDQoCAgIDgAFENBSAAIAEgBSAEQQAQ0gFBAEgNBSAGIA+sfCEEIAVCAXwiBSANUg0BDAQLCyAFQv////8PgyEFDAELQgAhBSAGUA0BCyAAIAMgBKcgC6dB/////wdxEIQBIgRCgICAgHCDQoCAgIDgAFENASAAIAEgBSAEQQAQ0gFBAEgNAQsgACAKEA8gACAIEA8gASEHDAILIAELEA8gACAKEA8gACAIEA8LIAJBEGokACAHC6ADAQR+IwBBMGsiAiQAIAIgATcDKAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZUwQQAQFUKAgICA4AAhBgwBCwJAIAMpAwAiBUKAgICAEIRCgICAgHCDQoCAgIAwUQ0AQoCAgIDgACEGIAAgBSAEIAVBABAUIgdCgICAgHCDIghCgICAgOAAUQ0BAkAgBEHTAUcNACAAIAUQxARBAE4NACAAIAcQDwwCCyAIQoCAgIAQhEKAgICAMFENACAAIAcgBUEBIAJBKGoQLyEGDAELIAIgACABECgiBzcDCEKAgICA4AAhBiAHQoCAgIBwg0KAgICA4ABRDQAgAiAFNwMQAkACQAJ/IARB0wFHBEBCgICAgDAhAUEBDAELIABBp90AEGIiAUKAgICAcINCgICAgOAAUQ0BIAIgATcDGEECCyEDIAAgACkDSCADIAJBEGoQpwEhBSAAIAEQDyAFQoCAgIBwg0KAgICA4ABSDQELIAAgBxAPDAELIAAgBSAEQQEgAkEIahCtAiEGIAAgAikDCBAPCyACQTBqJAAgBguYAwIFfwN+IwBBEGsiBiQAAkAgACABEFkiCkKAgICAcINCgICAgOAAUQRAIAohAQwBCwJAIAAgAykDABDQAyIFBEBCgICAgOAAIQFCgICAgDAhCyAFQQBMDQEgAEH89QBBABAVDAELQoCAgIDgACEBIAAgAykDABAoIgtCgICAgHCDQoCAgIDgAFENACALpyIHKAIEIQggBiAKpyIJKAIEQf////8HcSIFQQAgBEECRhs2AgwCQCACQQJIDQAgAykDCCIMQoCAgIBwg0KAgICAMFENACAAIAZBDGogDCAFQQAQVw0BCyAFIAhB/////wdxIgVrIQICQAJAAkACQCAEDgIAAQILIAYoAgwhAwwCCyAGKAIMIgMgAkohBEKAgICAECEBIAMhAiAERQ0BDAILIAYoAgwgBWsiAyECC0KAgICAECEBIANBAEggAiADSHINAANAIAkgByADQQAgBRCzA0UEQEKBgICAECEBDAILIAIgA0chBCADQQFqIQMgBA0ACwsgACAKEA8gACALEA8LIAZBEGokACABC7ADAwd/AXwBfiMAQRBrIgUkAAJAIAAgARBZIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgACADKQMAECgiDUKAgICAcINCgICAgOAAUQ0AIA2nIgkoAgRB/////wdxIQYgAaciCigCBEH/////B3EhBwJAIAQEQCAFIAcgBmsiCzYCDEF/IQhBACEEIAJBAkgNASAAIAUgAykDCBBCDQIgBSsDACIMvUL///////////8Ag0KAgICAgICA+P8AVg0BIAxEAAAAAAAAAABlBEAgBUEANgIMDAILIAwgC7djRQ0BIAUCfyAMmUQAAAAAAADgQWMEQCAMqgwBC0GAgICAeAs2AgwMAQsgBUEANgIMIAJBAk4EQCAAIAVBDGogAykDCCAHQQAQVw0CCyAHIAZrIQRBASEIC0F/IQIgBiAHSw0BIAQgBSgCDCIDayAIbEEASA0BA0AgCiAJIANBACAGELMDRQRAIAMhAgwDCyADIARGDQIgAyAIaiEDDAALAAsgACABEA8gACANEA9CgICAgOAAIQEMAQsgACABEA8gACANEA8gAq0hAQsgBUEQaiQAIAELkwECAX4BfyMAQRBrIgIkAEKAgICA4AAhBAJAIAAgARBZIgFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsCQCAAIAJBDGogAykDABC6AQ0AQoCAgIAwIQQgAigCDCIDQQBIDQAgAyABpyIFKAIEQf////8HcU8NACAFIAJBDGoQyQGtIQQLIAAgARAPCyACQRBqJAAgBAtpAgJ/AX4gACABEFkhAQNAIAIgBEwgAUKAgICAcINCgICAgOAAUXJFBEAgAyAEQQN0aikDACIGQiCIp0F1TwRAIAanIgUgBSgCAEEBajYCAAsgBEEBaiEEIAAgASAGEMQCIQEMAQsLIAELyAECAX4BfyMAQRBrIgIkAEKAgICA4AAhBAJAIAAgARBZIgFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsCQCAAIAJBDGogAykDABC6AQ0AAkAgAigCDCIDQQBOBEAgAyABpyIFKQIEIgSnQf////8HcUkNAQsgAEEvEC0hBAwBCyAFQRBqIQUgAAJ/IARCgICAgAiDUEUEQCAFIANBAXRqLwEADAELIAMgBWotAAALQf//A3EQnwMhBAsgACABEA8LIAJBEGokACAEC7gBAgJ+AX8jAEEQayICJABCgICAgOAAIQQCQCAAIAEQWSIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELAkAgACACQQxqIAMpAwAQugENAEKAgICAwH4hBCACKAIMIgNBAEgNACADIAGnIgYpAgQiBadB/////wdxTw0AIAZBEGohBiAFQoCAgIAIg1BFBEAgBiADQQF0ajMBACEEDAELIAMgBmoxAAAhBAsgACABEA8LIAJBEGokACAEC+MBAgF+An8jAEEQayICJAACQCAAIAFBLRBLIgNFBEAgBEEANgIAQoCAgIDgACEBDAELQoCAgIAwIQECQCADKQMAIgZCgICAgHCDQoCAgIAwUgRAIAIgAygCDCIFNgIMIAUgBqciBygCBEH/////B3FJDQEgACAGEA8gA0KAgICAMDcDAAsgBEEBNgIADAELIAcgAkEMahDJASEIIAMgAigCDDYCDCAEQQA2AgAgCEH//wNNBEAgACAIQf//A3EQnwMhAQwBCyAAIAcgBUEBdGpBEGpBAhDuAyEBCyACQRBqJAAgAQs3ACMAQRBrIgIkACAAIAJBDGogAykDABB3IQAgAigCDCEDIAJBEGokAEKAgICA4AAgA2etIAAbC04AIwBBEGsiAiQAQoCAgIDgACEBAkAgACACQQxqIAMpAwAQdw0AIAAgAkEIaiADKQMIEHcNACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLfwAgACAAKQPQASIBQgyIIAGFIgFCGYYgAYUiAUIbiCABhSIBNwPQAUKAgICAwH4gAUKdurP7lJL9oiV+QgyIQoCAgICAgID4P4S/RAAAAAAAAPC/oL0iAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGwujBAMDfAV/A34jAEEQayIIJAAgCEIANwMIAkACQCACQQBMDQBCgICAgOAAIQEgACAIQQhqIAMpAwAQQg0BQQEhCSAIKwMIIQQgAkEBRwRAA0AgAiAJRg0CIAAgCCADIAlBA3RqKQMAEEINAyAJQQFqIQkgCCsDACEFIwBBIGsiByQAIAS9Qv///////////wCDIg0gBb1C////////////AIMiDCAMIA1WGyIOvyEEAkAgDkI0iKciCkH/D0YNACANIAwgDCANVBsiDL8hBQJAIA5QDQAgDEI0iKciC0H/D0YNACALIAprQcEATgRAIAUgBKAhBAwCCwJ8IAtB/gtPBEAgBEQAAAAAAAAwFKIhBCAFRAAAAAAAADAUoiEFRAAAAAAAALBrDAELRAAAAAAAAPA/IApBvARLDQAaIAREAAAAAAAAsGuiIQQgBUQAAAAAAACwa6IhBUQAAAAAAAAwFAshBiAHQRhqIAdBEGogBRCKBiAHQQhqIAcgBBCKBiAGIAcrAwAgBysDEKAgBysDCKAgBysDGKCfoiEEDAELIAUhBAsgB0EgaiQADAALAAsgBJkhBAsgBL0iAQJ/IASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0hAQwBC0KAgICAwH4gAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGyEBCyAIQRBqJAAgAQtOACAAIABEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbIAC9Qv///////////wCDQoCAgICAgID4/wBWGyAARAAAAAAAAAAAYRsLQwACfCABvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRARAAAAAAAAPh/IACZRAAAAAAAAPA/YQ0BGgsgACABEI8DCwuDAQICfgF/IAC9IgFCNIinQf8PcSIDQf4HTQRAIAFCgICAgICAgICAf4MhAiADQf4HRyABQoCAgICAgIDwv39RckUEQCACQoCAgICAgID4P4S/DwsgAr8PCyADQbIITQR8IAFCP4cgAXxCAUGzCCADa62GIgFCAYh8QgAgAX2DvwUgAAsLggUDAnwFfwF+IwBBEGsiCSQAAn5CgICAgMD+//v/AEKAgICAwP7/eyAEGyACRQ0AGgJ8IAMpAwAiAUL/////D1gEQEEBIAIgAkEBTBshCiABpyEIQQEhBwNAIAcgCkcEQCAItyADIAdBA3RqKQMAIgFCgICAgBBaDQMaIAggAaciCyAIIAtKGyAIIAsgCCALSBsgBBshCCAHQQFqIQcMAQsLIAitDAILQoCAgIDgACAAIAlBCGogARBCDQEaQQEhByAJKwMICyEFIAcgAiACIAdIGyECA0AgAiAHRwRAQoCAgIDgACAAIAkgAyAHQQN0aikDABBCDQIaAkAgBb0iDEL///////////8Ag0KAgICAgICA+P8AVg0AIAkrAwAiBr0iAUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAFRAAAAAAAAAAAYSAGRAAAAAAAAAAAYXEhCiAEBEAgCgRAIAEgDIO/IQUMAgsgBSAFIAalIAa9Qv///////////wCDQoCAgICAgID4/wBWGyAGIAW9Qv///////////wCDQoCAgICAgID4/wBYGyEFDAELIAoEQCABIAyEvyEFDAELIAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsgBiAFvUL///////////8Ag0KAgICAgICA+P8AWBshBQsgB0EBaiEHDAELCyAFvSIBAn8gBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIgC3vVEEQCAArQwBC0KAgICAwH4gAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGwshASAJQRBqJAAgAQstAEKAgICA4AAgACADKQMAIAMpAwhBABCLAiIAQQBHrUKAgICAEIQgAEEASBsLoAEBA34gAykDACIFIQQgAkEETgRAIAMpAxghBAsgBUL/////b1gEQCAAECRCgICAgOAADwsgAykDECEBQoCAgIDgACEGAkAgACADKQMIEDEiAkUNACABQiCIp0F1TwRAIAGnIgMgAygCAEEBajYCAAsgACAFIAIgASAEQQAQhgQhAyAAIAIQEyADQQBIDQAgA0EAR61CgICAgBCEIQYLIAYLjwEAAkACQCADKQMAIgFC/////29YBEAgBARAIAAQJAwDCyABQiCIp0F1SQ0BIAGnIgAgACgCAEEBajYCACABDwsgACABELYDIgJBAEgNASAEBEAgAkEAR61CgICAgBCEDwsgAkUEQCAAQfjiAEEAEBUMAgsgAaciACAAKAIAQQFqNgIACyABDwtCgICAgOAACyoAIAMpAwAiAUL/////b1gEQCAAECRCgICAgOAADwsgACABQQNBABCqAgtPAAJAAkAgAykDACIBQv////9vWARAIARFBEBCgICAgBAPCyAAECQMAQsgACABEJkBIgBBAE4NAQtCgICAgOAADwsgAEEAR61CgICAgBCEC2MBAX4gAykDACIEQv////9vWARAIAAQJEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBAxIgJFDQAgACAEIAIQcSEDIAAgAhATIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQs2ACADKQMAIgFCIIinIgJBf0YgBEUgAkF+cUECR3FyRQRAIAAQJEKAgICA4AAPCyAAIAEQ6AELYwECfgJAAkAgAykDACIBQv////9vWARAIAAQJAwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRAxIgINAQtCgICAgOAADwsgACABIAIgBEEAEBQhASAAIAIQEyABC2YBAX4gAykDACIEQv////9vWARAIAAQJEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBAxIgJFDQAgACAEIAJBABDVASEDIAAgAhATIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuLAQECfiADKQMAIgFC/////29YBEAgABAkQoCAgIDgAA8LIAMpAxAhBkKAgICA4AAhBQJAIAAgAykDCBAxIgJFDQAgACABIAIgBiAERUEOdBDHBCEDIAAgAhATIANBAEgNACAEBEAgA0EAR61CgICAgBCEDwsgAaciACAAKAIAQQFqNgIAIAEhBQsgBQuaAQIBfwJ+IwBBEGsiBCQAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgFCgICAgHBaBEAgAactAAVBEHENAQsgAEGiPkEAEBUMAQsgACAEQQxqIAUQiQQiAg0BC0KAgICA4AAhAQwBCyAAIAYgASAEKAIMIgMgAhCQAyEBIAAgAiADEJsDCyAEQRBqJAAgAQsVACAAIAMpAwAgAyADQQhqQQIQnQMLVgIBfgF/IAAgARC0AyIBQoCAgIBwg0KAgICA4ABRBEAgAQ8LQoCAgIAwIQIgAaciAygCBEGAgICAeEcEQCAAIAAoAhAgAxDBAhAtIQILIAAgARAPIAILCQAgACABELQDC1sBAX4jAEEQayICJAAgAiAAIAEQtAMiATcDCAJAIAFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsgAEKAgICAMEEBIAJB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IQMCQAJAAkAgAkHGAGsOBgIDAQMDAgALIAJBFkcNAgtBECEDCyAAIAEgAxCQAg8LIABBtitBABAVC0KAgICA4AALlgEBAXwjAEEQayICJAACfkKAgICA4AAgACACQQhqIAEQmwINABogAisDCCIEvSIBAn8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArQwBC0KAgICAwH4gAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGwshASACQRBqJAAgAQvsAgIDfwF8IwBB0ABrIgQkACAEQRBqQQBBOBArGiAEQoCAgICAgID4PzcDIEKAgICAwH4hAQJAIAJFDQBBByACIAJBB04bIgJBACACQQBKGyECA0AgAiAFRwRAIAAgBEEIaiADIAVBA3QiBmopAwAQQgRAQoCAgIDgACEBDAMLIAQrAwgiB71CgICAgICAgPj/AINCgICAgICAgPj/AFENAiAEQRBqIAZqIAedOQMAAkAgBQ0AIAQrAxAiB0QAAAAAAAAAAGZFIAdEAAAAAAAAWUBjRXINACAEIAdEAAAAAACwnUCgOQMQCyAFQQFqIQUMAQsLIARBEGpBABDgAiIHvSIBAn8gB5lEAAAAAAAA4EFjBEAgB6oMAQtBgICAgHgLIgW3vVEEQCAFrSEBDAELQoCAgIDAfiABQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbIQELIARB0ABqJAAgAQtWABDQBCIBQoCAgIAIfEL/////D1gEQCABQv////8Pgw8LQoCAgIDAfiABub0iAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGwsIAEKAgICAMAuqHQIGfwR+IwBB0ABrIgYkAAJAAkAgAEEQaiIDQYgCIAAoAgARAwAiAUUNACABQQVqQQBBgwIQKxogAUEFOgAEIAFBATYCACAAKAJQIgQgAUEIaiIFNgIEIAEgAEHQAGo2AgwgASAENgIIIAAgBTYCUCABIAMgACgCQEEDdCAAKAIAEQMAIgQ2AiggBEUEQCADIAEgACgCBBEAAAwBCyABIAA2AhAgACgCSCIDIAFBFGoiBTYCBCABIABByABqNgIYIAEgAzYCFCAAIAU2AkggAULxgICAgDk3AtwB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aiAAIAFB1QAgAUEAEBQQowENACAAIAVB1QACfiACKQMIIgFCgICAgAh8Qv////8PWARAIAFC/////w+DDAELQoCAgIDAfiABub0iAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGwsQRUEASA0AQoCAgIDgACEIIABBLhB2IgFCgICAgHCDQoCAgIDgAFENACAAQSAQKSIDRQRAIAEhCAwBCyADIAk3AwggAyAFNwMAIAMgBKciCkHnAEEAEMcBQX9zQR92NgIQIApB9QBBABDHASEKIANBADYCGCADIApBf3NBH3Y2AhQgAUKAgICAcFoEQCABpyADNgIgCyAAIAYQDyAAIAQQDyABIQcMAQsgACAJEA8gACAGEA8gACAEEA8gACAFEA8gACAIEA8LIAJBIGokACAHC74EAgd+An8jAEEQayICJAACQCABQv////9vWARAIAAQJEKAgICA4AAhBgwBC0KAgICA4AAhBkKAgICAMCEFAkAgAAJ+AkAgACADKQMAECgiB0KAgICAcINCgICAgOAAUQ0AIAAgACABQe4AIAFBABAUECYiA0EASA0AIANFBEAgACABIAcQyAEhBgwDCyAAIAAgAUHvACABQQAQFBAmIgtBAEgNACAAIAFB1QBCABBFQQBIDQBCgICAgOAAIAAQPiIIQoCAgIBwg0KAgICA4ABRDQEaIAenIQwCQANAIAAgBRAPIAAgASAHEMgBIgVCgICAgHCDIgRCgICAgCBRDQECQCAEQoCAgIDgAFENAAJ/IAAgACAFQgAQTRA3IgRCgICAgHCDIgpCgICAgJB/UgRAQQAgCkKAgICA4ABSDQEaDAILIASnKAIEQf////8HcUULIQMgACAIIAkgBBCGAUEASA0AIAlCAXwhCSADRQ0BIAAgAkEIaiAAIAFB1QAgAUEAEBQQowFBAEgNACAAIAFB1QACfiAMIAIpAwggCxDxAiIEQoCAgIAIfEL/////D1gEQCAEQv////8PgwwBC0KAgICAwH4gBLm9IgRCgICAgMCBgPz/AH0gBEL///////////8Ag0KAgICAgICA+P8AVhsLEEVBAE4NAQsLIAgMAgsgCacEQCAIIQYMAwsgACAIEA9CgICAgCAhBgwCC0KAgICAMAsQDwsgACAFEA8gACAHEA8LIAJBEGokACAG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/////w+DEGpBAEgNDSADRQRAIAkgCSgCAEEBajYCAAsgACABIAZBAWqtIBQQakEASA0NIA5CgICAgDBSBEAgEUIgiKdBdU8EQCARpyICIAIoAgBBAWo2AgALIAAgASAGQQJqrSAREGpBAEgNDgsgBCABNwNYIARCgICAgDA3A1AgACATEA8gACAAIBkgBCAEQdAAakEAEJ0DEDchEwwBC0KAgICAMCEVIA5CgICAgDBSBEAgACARECUiFUKAgICAcINCgICAgOAAUQ0NCyAEIBc3A3ggBCAVNwNwIAQgATcDaCAEIBQ3A1ggBCAPNwNQIAQgEkL/////D4M3A2AgACATEA8gACAEQdAAahDtBCETIAAgFRAPCyATQoCAgIBwg0KAgICA4ABRDQsgB6wgElcEQCAEQThqIgIgCSAHIBKnEFEaIAIgExCHARogD6cpAgRC/////weDIBJ8pyEHCyAFQQFqIQUMAQsLIARBOGoiAiAJIAcgCSgCBEH/////B3EQURogAhA2IRAMCgsgACAPEA9CgICAgDAhEwJAAn8CQCAAIAAgEkIAEE0QNyIPQoCAgIBwgyIOQoCAgICQf1IEQCAOQoCAgIDgAFINASAOIRAMAwsgD6coAgRB/////wdxDQAgACAEQdAAaiAAIAFB1QAgAUEAEBQQowFBAEgNAiAAIAFB1QACfiAJIAQpA1AgDRDxAiIOQoCAgIAIfEL/////D1gEQCAOQv////8PgwwBC0KAgICAwH4gDrm9Ig5CgICAgMCBgPz/AH0gDkL///////////8Ag0KAgICAgICA+P8AVhsLEEUiAkEATg0AIAJBHnZBAnEMAQtBAAtFDQELCwwCCwwGC0KAgICAMCETC0KAgICAMCEBDAQLIARB0ABqIAsgCCALKAIEQf////8HcRBRDQAgACASEA8gACgCECICQRBqIAMgAigCBBEAACAEQdAAahA2IRAMAQsgACASEA8gACgCECICQRBqIAMgAigCBBEAACAEKAJQKAIQIgJBEGogBCgCVCACKAIEEQAAC0KAgICAMCERC0KAgICAMCETQoCAgIAwIQFCgICAgDAhDwsgBCgCOCgCECICQRBqIAQoAjwgAigCBBEAAAsgBBDuBCAAIBcQDyAAIA8QDyAAIAEQDyAAIBMQDyAAIBEQDyAAIBQQDwsgBEGQAWokACAQC6IBACMAQSBrIgIkAAJ+AkAgAUL/////b1gEQCAAECQMAQsgACACQQhqIgNBABA9GiADQS8QOxoCQCADIAAgAUHsACABQQAQFBB/DQAgAkEIaiIDQS8QOxogAyAAIAFB7QAgAUEAEBQQfw0AIAJBCGoQNgwCCyACKAIIKAIQIgBBEGogAigCDCAAKAIEEQAAC0KAgICA4AALIQEgAkEgaiQAIAELTgECfkKAgICA4AAhBCAAIAEgAykDABDIASIBQoCAgIBwgyIFQoCAgIDgAFIEfiAAIAEQDyAFQoCAgIAgUq1CgICAgBCEBUKAgICA4AALC/gCAgN+AX8CQAJAIAAgARDwAiICRQ0AIAMpAwghBgJAAkACQCADKQMAIgRCgICAgHBUDQAgBKciAy8BBkESRw0AIAZCgICAgHCDQoCAgIAwUgRAIABBnvkAQQAQFUKAgICA4AAPCyADKAIgIgcgBygCAEEBajYCACADKAIkIgMgAygCAEEBajYCACAHrUKAgICAkH+EIQQgA61CgICAgJB/hCEFDAELQoCAgIAwIQUCfiAEQoCAgIBwg0KAgICAMFEEQCAAQS8QLQwBCyAAIAQQKAsiBEKAgICAcINCgICAgOAAUQ0BIAAgBCAGEJgEIgVCgICAgHCDQoCAgIDgAFENAQsgACACNQIAQoCAgICQf4QQDyAAIAI1AgRCgICAgJB/hBAPIAIgBT4CBCACIAQ+AgAgACABQdUAQgAQRUEASA0BIAFCIIinQXVJDQIgAaciACAAKAIAQQFqNgIADAILIAAgBBAPIAAgBRAPC0KAgICA4AAPCyABC2oBAX8gAUL/////b1gEQCAAECRCgICAgOAADwsCfiABpyIDLwEGQRJHBEBCgICAgDAgACABIAAoAigpA5ABEFINARogAEESEIYDQoCAgIDgAA8LIAMoAiQtABAgAnFBAEetQoCAgIAQhAsLvQQBCX8jAEEgayIHJAACQAJAAkACQAJAIAFC/////29YBEAgABAkDAELIAAgASAAKAIoKQOQARBSDQIgACABEPACIgINAQtCgICAgOAAIQEMAwsgAigCACIIKAIEIgJB/////wdxIgMNAQsgAEH+kwEQYiEBDAELIAAgB0EIaiADIAJBH3YQigMaIAhBEGohBiAIKAIEQf////8HcSEJQQAhAANAAkACQCAAIAlIBEAgAEEBaiECQX8hBQJAAn8CQAJAAkACQAJAAkACQAJ/IAgpAgRCgICAgAiDIgFQIgpFBEAgBiAAQQF0ai8BAAwBCyAAIAZqLQAACyIDQdsAaw4DAwECAAsgAiEAAkAgA0EKaw4EBAsLBQALIANBL0cNByAERQ0FQQEhBEEvIQMMBwtB3AAhAyACIAlODQYgAEECaiEAIApFBEAgBiACQQF0ai8BACEFDAoLIAIgBmotAAAhBQwJC0EAIQRB3QAhAwwFC0HbACEDIAQgAiAJTnINBiAAQQJqIQAgAVAEQEHdAEF/IAIgBmotAABB3QBGIgQbIQUgACACIAQbIQBBASEEDAgLQQEhBEHdAEF/IAYgAkEBdGovAQBB3QBGIgobIQUgACACIAobIQAMBwtB7gAMAgtB8gAMAQtBACEEQS8LIQVB3AAhAwsgAiEADAILIAdBCGoQNiEBDAMLIAIhAEEBIQQLIAdBCGogAxCLARogBUEASA0AIAdBCGogBRCLARoMAAsACyAHQSBqJAAgAQvWAgIDfwF+IwBBEGsiBCQAAkAgAUL/////b1gEQCAAECRCgICAgOAAIQUMAQtCgICAgOAAIQUgACAAIAFB7gAgAUEAEBQQJiICQQBIDQAgAgR/IARB5wA6AAggBEEJagUgBEEIagshAiAAIAAgAUHr4wAQsgEQJiIDQQBIDQAgAwRAIAJB6QA6AAAgAkEBaiECCyAAIAAgAUGL5QAQsgEQJiIDQQBIDQAgAwRAIAJB7QA6AAAgAkEBaiECCyAAIAAgAUH01AAQsgEQJiIDQQBIDQAgAwRAIAJB8wA6AAAgAkEBaiECCyAAIAAgAUHvACABQQAQFBAmIgNBAEgNACADBEAgAkH1ADoAACACQQFqIQILIAAgACABQfsdELIBECYiA0EASA0AIAAgBEEIaiIAIAMEfyACQfkAOgAAIAJBAWoFIAILIABrEJMCIQULIARBEGokACAFC6UDAQR+IwBBEGsiAyQAIAQCfwJAAkACQAJAIAAgAUEuEEsiAkUEQEKAgICAMCEBDAELIAIoAhgEQEKAgICAMCEBQQEMBQsgACACKQMAIgggAikDCCIGEMgBIgFCgICAgHCDIgdCgICAgOAAUg0BC0KAgICAMCEHDAELIAdCgICAgCBRBEAgAkEBNgIYQoCAgIAwIQFBAQwDCyACKAIQBEAgACAAIAFCABBNEDciB0KAgICAcIMiCUKAgICA4ABRDQECQCAJQoCAgICQf1INACAHpygCBEH/////B3ENACAAIANBCGogACAIQdUAIAhBABAUEKMBQQBIDQIgACAIQdUAAn4gBqcgAykDCCACKAIUEPECIgZCgICAgAh8Qv////8PWARAIAZC/////w+DDAELQoCAgIDAfiAGub0iBkKAgICAwIGA/P8AfSAGQv///////////wCDQoCAgICAgID4/wBWGwsQRUEASA0CCyAAIAcQDwwCCyACQQE2AhgMAQsgACABEA8gACAHEA9CgICAgOAAIQELQQALNgIAIANBEGokACABCw4AIAAQtQJCgICAgOAACwkAQoCAgIDAfgsWACAAIAMpAwAgAykDCCADKQMQEJQEC9EBAgN+An8jAEEQayIHJAACQCAAIAdBDGogAykDABDlASIIRQRAQoCAgIDgACEEDAELIAAgCCAHKAIMQdKIARD1BSEBIAAgCBBUAkAgAkECSCABQoCAgIBwg0KAgICA4ABRcg0AIAAgAykDCCIGEDhFDQBCgICAgOAAIQQCQCAAEDQiBUKAgICAcINCgICAgOAAUQRAIAEhBQwBCyAAIAVBLyABQQcQGUEASA0AIAAgBUEvIAYQ+QQhBAsgACAFEA8MAQsgASEECyAHQRBqJAAgBAsNACAAIAEgAkEwEP0FCwsAIAAgAUEwEP4FC7QDAgN/An4jAEHQAGsiBiQAQX8hBwJAIAAgBkHIAGogAUHCABCBASIIRQ0AIAYpA0giAUKAgICAcINCgICAgDBRBEAgCCkDACEBIANCIIinQXVPBEAgA6ciByAHKAIAQQFqNgIACyAAIAEgAiADIAQgBRCGBCEHDAELIAAgAhBcIglCgICAgHCDQoCAgIDgAFEEQCAAIAEQDwwBCyAIKQMAIQogBiAENwM4IAYgAzcDMCAGIAk3AyggBiAKNwMgIAAgASAIKQMIQQQgBkEgahAvIQEgACAJEA8gAUKAgICAcINCgICAgOAAUQ0AAkACQCAAIAEQJiIHBEAgACAGIAgoAgAgAhBMIgJBAEgNASACRQ0DAkAgBigCACICQRNxRQRAIAAgBikDCCADEFJFDQEMBAsgAkERcUEQRw0DIAY1AhxCIIZCgICAgDBSDQMLIAAgBhBIIABByy5BABAVDAELIAVBgIABcUUEQEEAIQcgBUGAgAJxRQ0DIAAoAhAoAowBIgJFDQMgAi0AKEEBcUUNAwsgAEHkGkEAEBULQX8hBwwBCyAAIAYQSAsgBkHQAGokACAHC9QCAgJ/An4jAEFAaiIEJAACQAJAIAAgBEE4aiABQcEAEIEBIgVFDQAgBCkDOCIBQoCAgIBwg0KAgICAMFEEQCAAIAUpAwAgAiADQQAQFCEBDAILIAAgAhBcIgZCgICAgHCDQoCAgIDgAFEEQCAAIAEQDwwBCyAFKQMAIQcgBCADNwMwIAQgBjcDKCAEIAc3AyAgACABIAUpAwhBAyAEQSBqEC8hASAAIAYQDyABQoCAgIBwgyIDQoCAgIDgAFENACAAIAQgBSgCACACEEwiAkEASA0AIAJFDQECQAJAIAQoAgAiAkETcUUEQCAAIAQpAwggARBSRQ0BDAILIAJBEXFBEEcNASADQoCAgIAwUSAENQIUQiCGQoCAgIAwUnINAQsgACAEEEggACABEA8gAEGiL0EAEBUMAQsgACAEEEgMAQtCgICAgOAAIQELIARBQGskACABC5kCAgN/An4jAEFAaiIDJABBfyEEAkAgACADQThqIAFB4wAQgQEiBUUNACADKQM4IgFCgICAgHCDQoCAgIAwUQRAIAAgBSkDACACEHEhBAwBCyAAIAIQXCIGQoCAgIBwg0KAgICA4ABRBEAgACABEA8MAQsgBSkDACEHIAMgBjcDKCADIAc3AyAgACABIAUpAwhBAiADQSBqEC8hASAAIAYQDyABQoCAgIBwg0KAgICA4ABRDQAgACABECYiBA0AAkAgACADIAUoAgAiBCACEEwiAkEATgRAIAJFDQEgAygCACECIAAgAxBIIAJBAXEEQCAELQAFQQFxDQILIABBozxBABAVC0F/IQQMAQtBACEECyADQUBrJAAgBAueBgIHfwN+IwBBQGoiByQAQX8hCAJAIAAgB0E4aiABQeUAEIEBIglFDQAgBykDOCIOQoCAgIBwg0KAgICAMFEEQCAAIAkpAwAgAiADIAQgBSAGEG0hCAwBCyAAIAIQXCIPQoCAgIBwg0KAgICA4ABSBEAgABA0IgFCgICAgHCDQoCAgIDgAFIEQCAGQYAQcSINBEAgBEIgiKdBdU8EQCAEpyIKIAooAgBBAWo2AgALIAAgAUHBACAEQQcQGRoLIAZBgCBxIgoEQCAFQiCIp0F1TwRAIAWnIgsgCygCAEEBajYCAAsgACABQcIAIAVBBxAZGgsgBkGAwABxIgsEQCADQiCIp0F1TwRAIAOnIgwgDCgCAEEBajYCAAsgACABQcAAIANBBxAZGgsgBkGABHEiDARAIAAgAUE+IAZBAXZBAXGtQoCAgIAQhEEHEBkaCyAGQYAIcQRAIAAgAUE/IAZBAnZBAXGtQoCAgIAQhEEHEBkaCyAGQYACcQRAIAAgAUE9IAZBAXGtQoCAgIAQhEEHEBkaCyAJKQMAIRAgByABNwMwIAcgDzcDKCAHIBA3AyAgACAOIAkpAwhBAyAHQSBqEC8hDiAAIA8QDyAAIAEQDyAOQoCAgIBwg0KAgICA4ABRDQIgACAOECZFBEBBACEIIAZBgIABcUUNAyAAQbnLAEEAEBVBfyEIDAMLIAAgByAJKAIAIgkgAhBMIgJBAEgNAiAGQYECcSEIAkACQCACRQRAIAhBgAJGDQFBASEIIAktAAVBAXFFDQEMBQsCQCAHKAIAIgIgBhCTA0UgAkEBcSAIQYACRnFyDQACQCAGQYAwcQRAIAJBEXFBEEcNASANBEAgACAEIAcpAxAQUkUNAwsgCkUNASAAIAUgBykDGBBSDQEMAgsgC0UNACAGQQJxRSACQQNxIgJBAkZxDQEgAg0AIAAgAyAHKQMIEFJFDQELIAxFDQIgBygCAEETcUECRw0CCyAAIAcQSAsgAEGsHEEAEBVBfyEIDAMLIAAgBxBIQQEhCAwCCyAAIA8QDwsgACAOEA8LIAdBQGskACAIC64CAgN/An4jAEFAaiIDJABBfyEEAkAgACADQThqIAFB5AAQgQEiBUUNACADKQM4IgFCgICAgHCDQoCAgIAwUQRAIAAgBSkDACACQQAQ1QEhBAwBCyAAIAIQXCIGQoCAgIBwg0KAgICA4ABRBEAgACABEA8MAQsgBSkDACEHIAMgBjcDKCADIAc3AyAgACABIAUpAwhBAiADQSBqEC8hASAAIAYQDyABQoCAgIBwg0KAgICA4ABRDQAgACABECYiBEUEQEEAIQQMAQsCQCAAIAMgBSgCACACEEwiAkEATgRAIAJFDQICQCADLQAAQQFxBEAgACAFKQMAEJkBIgJBAEgNASACDQMLIABBiRxBABAVCyAAIAMQSAtBfyEEDAELIAAgAxBICyADQUBrJAAgBAsPACAAIAMQDyAAELUCQX8LlAYCC38CfiMAQUBqIgUkAEF/IQsCQCAAIAVBOGogA0HnABCBASIGRQ0AIAUpAzgiA0KAgICAcINCgICAgDBRBEAgACABIAIgBigCAEEDEI4BIQsMAQsgACADIAYpAwhBASAGEC8iA0KAgICAcINCgICAgOAAUQ0AIAVBADYCLCAFQQA2AjQgBUEANgIwIAAgBUE0aiADENYBIQcgBSgCNCEKAkAgBw0AAkAgCkUNACAAIApBA3QQXyIJDQBBACEJDAELAn8CQANAAkAgBCAKRgRAQQEgCiAKQQFNGyEIQQEhBANAIAQgCEYNAiAJIAQgCSAEQQN0aigCBBD6BCEHIARBAWohBCAHQQBIDQALIABBxhtBABAVQQAMBAsgACADIAQQsAEiD0KAgICAcIMiEEKAgICAgH9RIBBCgICAgJB/UXJFBEBBACAQQoCAgIDgAFENBBogACAPEA8gAEHRN0EAEBVBAAwECyAAIA8QMSEIIAAgDxAPIAhFDQIgCSAEQQN0aiIHQQA2AgAgByAINgIEIARBAWohBAwBCwtBACAAIAYpAwAQmQEiDEEASA0BGiAGLQARBEAgABC2AgwBCyAAIAVBLGogBUEwaiAGKAIAQQMQjgEEQCAFKAIwIQQgBSgCLCEIDAMLIAUoAiwhCCAFKAIwIQRBACEHA0AgBCAHRwRAIAYtABEEQCAAELYCDAULIAAgBUEIaiAGKAIAIAggB0EDdGoiDSgCBBBMIg5BAEgNBAJAIA5FDQAgACAFQQhqEEggBS0ACEEBcUEAIAwbDQAgCSAKIA0oAgQQ+gQiDUEASARAIABBqjJBABAVDAYLIAwNACAJIA1BA3RqQQE2AgALIAdBAWohBwwBCwsCQCAMDQBBACEGA0AgBiAKRg0BIAZBA3QhByAGQQFqIQYgByAJaigCAA0ACyAAQfcZQQAQFQwDCyAAIAggBBBaIAAgAxAPIAEgCTYCACACIAo2AgBBACELDAMLQQALIQRBACEICyAAIAggBBBaIAAgCSAKEFogACADEA8LIAVBQGskACALC68EAgR/An4jAEHgAGsiBCQAQX8hBQJAIAAgBEHYAGogAkHmABCBASIGRQ0AIAYoAgAhByAEKQNYIgJCgICAgHCDQoCAgIAwUQRAIAAgASAHIAMQTCEFDAELIAAgAxBcIghCgICAgHCDQoCAgIDgAFEEQCAAIAIQDwwBCyAGKQMAIQkgBCAINwNIIAQgCTcDQCAAIAIgBikDCEECIARBQGsQLyECIAAgCBAPIAJCgICAgHCDIghCgICAgOAAUQ0AAkACQAJAIAhCgICAgDBRIAJC/////29WckUEQCAAIAIQDwwBCyAAIAQgByADEEwiA0EASA0CAkAgA0UEQEEAIQUgCEKAgICAMFENBQwBCyAAIAQQSCAIQoCAgIAwUg0AIAQtAABBAXFFDQFBACEFIActAAVBAXFFDQEMBAtBfyEFIAAgBikDABCZASIGQQBIDQIgACAEQSBqIAIQ+wQhByAAIAIQDyAHQQBIDQMCQCADBEAgBCgCACIFQYA6QYDOACAEKAIgIgNBEHEbIANyEJMDRQ0BIANBAXENAyAFQQFxDQEgA0EScQ0DIAVBAnENAQwDCyAGRQ0AIAQtACBBAXENAgsgACAEQSBqEEgLIABBnz1BABAVQX8hBQwCCwJAIAEEQCABIAQpAyA3AwAgASAEKQM4NwMYIAEgBCkDMDcDECABIAQpAyg3AwgMAQsgACAEQSBqEEgLQQEhBQwBCyAAIAIQDwsgBEHgAGokACAFC0oAAkAgBSkDACIBQoCAgIBwVA0AIAGnIgIvAQZBMEcNACACKAIgIgJFDQAgAkEBOgARIAAgARAPIAVCgICAgCA3AwALQoCAgIAwC88BAQN+IwBBEGsiAiQAQoCAgIDgACEFAkACQAJ+QoCAgIAwIABCgICAgDAgACADEPwFIgRCgICAgHCDQoCAgIDgAFENABogAiAENwMIQoCAgIDgACAAQdQAQQBBAEEBIAJBCGoQzwEiBkKAgICAcINCgICAgOAAUQ0AGiAAEDQiAUKAgICAcINCgICAgOAAUg0BIAYLIQEgACAEEA8gACABEA8MAQsgACABQYMBIARBBxAZGiAAIAFBhAEgBkEHEBkaIAEhBQsgAkEQaiQAIAULsgEBAn4gACABIARBA3EiAkEmahBLRQRAQoCAgIDgAA8LQoCAgIDgACEGIAAgAkEqahB2IgVCgICAgHCDQoCAgIDgAFIEfiAAQRAQKSICRQRAIAAgBRAPQoCAgIDgAA8LIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyACQQA2AgwgAiAEQQJ1NgIIIAIgATcDACAFQoCAgIBwWgRAIAWnIAI2AiALIAUFQoCAgIDgAAsL0gICA34DfyMAQSBrIggkAEKAgICA4AAhBQJAIAAgASAEQSZqEEsiCUUNACADKQMAIQdCgICAgDAhBiACQQJOBEAgAykDCCEGCyAAIAcQYA0AIAlBBGohCiAJKAIIIQMDQCADIApGBEBCgICAgDAhBQwCCyADQQxrKAIABEAgAygCBCEDBSADQRBrIgIgAigCAEEBajYCACADKQMQIgVCIIinQXVPBEAgBaciCSAJKAIAQQFqNgIACyAIIAU3AwgCQCAEDQAgAykDGCIFQiCIp0F1SQ0AIAWnIgkgCSgCAEEBajYCAAsgCCABNwMQIAggBTcDACAAIAcgBkEDIAgQISEFIAAgCCkDABAPIARFBEAgACAIKQMIEA8LIAMoAgQhAyAAKAIQIAIQ6gMgBUKAgICAcINCgICAgOAAUQ0CIAAgBRAPCwwACwALIAhBIGokACAFC2AAIAAgASACQSZqEEsiAEUEQEKAgICA4AAPCyAAKAIMIgBBAE4EQCAArQ8LQoCAgIDAfiAAuL0iAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGwtZAQF/IAAgASAEQSZqEEsiAkUEQEKAgICA4AAPCyACQQRqIQMgAigCCCEEA34gAyAERgR+QoCAgIAwBSAEQRBrIQUgBCgCBCEEIAAoAhAgAiAFEPwEDAELCwsVACAAIAMQDyAAIAQQDyAAELUCQX8LhgEAIAAgASAEQSZqEEsiAkUEQEKAgICA4AAPCyAAIAIgAykDACIBQgAgAUIgiKdBB2tBbk8bIAEgAUKAgICAwIGA/P8AfEL///////////8Ag1AbEPUCIgBFBEBCgICAgDAPCyAAKQMoIgFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABC3UAIAAgASAEQSZqEEsiAkUEQEKAgICA4AAPCyAAIAIgAykDACIBQgAgAUIgiKdBB2tBbk8bIAEgAUKAgICAwIGA/P8AfEL///////////8Ag1AbEPUCIgNFBEBCgICAgBAPCyAAKAIQIAIgAxD8BEKBgICAEAthACAAIAEgBEEmahBLIgJFBEBCgICAgOAADwsgACACIAMpAwAiAUIAIAFCIIinQQdrQW5PGyABIAFCgICAgMCBgPz/AHxC////////////AINQGxD1AkEAR61CgICAgBCEC7sFAgN+B38jAEEQayILJABCgICAgOAAIQcCQCAAIAEgBEEmahBLIgJFDQAgAigCAEUgAykDACIFQgAgBUIgiKdBB2tBbk8bIAUgBUKAgICAwIGA/P8AfEL///////////8Ag1AbIgVC/////29WckUEQCAAECQMAQtCgICAgDAhBiAEQQFxRQRAIAMpAwghBgsCQCAAIAIgBRD1AiIDBEAgACADKQMoEA8MAQsgAEEwECkiA0UNASADIAI2AgggA0IBNwMAAkAgAigCAARAIAMgBaciBCgCGDYCDCAEIAM2AhgMAQsgBUIgiKdBdUkNACAFpyIEIAQoAgBBAWo2AgALIAMgBTcDICACKAIQIgkgAigCFCIEQQFrIAUQ1wNxQQN0aiIIKAIAIgogA0EYaiIMNgIEIAMgCDYCHCADIAo2AhggCCAMNgIAIAIoAgQiCCADQRBqIgo2AgQgAyACQQRqIgw2AhQgAyAINgIQIAIgCjYCBCACIAIoAgxBAWoiCDYCDCAIIAIoAhhJDQAgACAJQQQgBEEBdCAEQQFGGyIAQQN0IAtBDGoQqAEiCEUNACALKAIMQQN2IABqIQRBACEAA0AgACAERkUEQCAIIABBA3RqIgkgCTYCBCAJIAk2AgAgAEEBaiEADAELCyAEQQFrIQogAkEIaiEAA0AgDCAAKAIAIgBHBEAgAEEMaygCAEUEQCAIIAApAxAQ1wMgCnFBA3RqIgkoAgAiDSAAQQhqIg42AgQgACAJNgIMIAAgDTYCCCAJIA42AgALIABBBGohAAwBCwsgAiAENgIUIAIgCDYCECACIARBAXQ2AhgLIAZCIIinQXVPBEAgBqciACAAKAIAQQFqNgIACyADIAY3AyggAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAEhBwsgC0EQaiQAIAcLqwMCA38BfiMAQRBrIgckAAJAIAAgASAFQSpqEEsiA0UEQCAEQQA2AgBCgICAgOAAIQEMAQtCgICAgDAhAQJAIAMpAwAiCUKAgICAcINCgICAgDBRDQACQCAJQoCAgIBwVA0AIAmnIgIvAQYgBUEmakcNACACKAIgIgZFDQACQCADKAIMIghFBEAgBigCCCECDAELIAgoAhQhAiAAKAIQIAgQ6gMLIAZBBGohBgNAIAIgBkYEQCADQQA2AgwgACADKQMAEA8gA0KAgICAMDcDAAwDCyACQQxrKAIABEAgAigCBCECDAELCyACQRBrIgYgBigCAEEBajYCACADIAY2AgwgBEEANgIAIAMoAggiA0UEQCACKQMQIgFCIIinQXVJDQMgAaciACAAKAIAQQFqNgIADAMLIAcgAikDECIBNwMAIAVFBEAgAikDGCEBCyAHIAE3AwggA0EBRgRAIAFCIIinQXVJDQMgAaciACAAKAIAQQFqNgIADAMLIABBAiAHEIkDIQEMAgtB+oMBQa78AEH95wJBxiUQAAALIARBATYCAAsgB0EQaiQAIAELPQEBfkKAgICAECEBIAMpAwAiBEKAgICAcFoEfiAEpy8BBkEVa0H//wNxQQxJrUKAgICAEIQFQoCAgIAQCwvqAwIEfgF/IwBBIGsiAiQAQoCAgIDgACEFAkAgACABIAQQSyIJRQ0AIAktAAQEQCAAEGsMAQsgACACQRhqIAMpAwBCACAJNAIAIgYgBhB0DQAgAiAGNwMQIAMpAwgiB0KAgICAcINCgICAgDBSBEAgACACQRBqIAdCACAGIAYQdA0BIAIpAxAhBgsgAikDGCEIIAAgAUKAgICAMBDjASIHQoCAgIBwgyIFQoCAgIDgAFEEQCAHIQUMAQsgBiAIfSIGQgAgBkIAVRshBgJAIAVCgICAgDBRBEAgAEKAgICAMCAGIAQQ3AMhBQwBCyACIAYiBUKAgICACFoEfkKAgICAwH4gBrm9IgVCgICAgMCBgPz/AH0gBUL///////////8Ag0KAgICAgICA+P8AVhsFIAULNwMIIAAgB0EBIAJBCGoQpwEhBSAAIAcQDyAAIAIpAwgQDwsgBUKAgICAcINCgICAgOAAUQ0AAkAgACAFIAQQSyIDRQ0AIAAgBSABEFIEQCAAQc/GAEEAEBUMAQsCQCADLQAEDQAgAzQCACAGUwRAIABBs9QAQQAQFQwCCyAJLQAEDQAgAygCCCAJKAIIIAinaiAGpxAfGgwCCyAAEGsLIAAgBRAPQoCAgIDgACEFCyACQSBqJAAgBQsOACAAELUCQoCAgIDgAAtdACAAIAEgAhBLIgBFBEBCgICAgOAADwsgACgCACIAQQBOBEAgAK0PC0KAgICAwH4gALi9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhsLOQEBfkKAgICAwH4gASkDACICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCzsBAX5CgICAgMB+IAEqAgC7vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCwwAIAAgASkDABD7AwsMACAAIAEpAwAQhwILSQEBfiABKAIAIgBBAE4EQCAArQ8LQoCAgIDAfiAAuL0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsHACABNQIACwcAIAEzAQALDgAgATIBAEL/////D4MLCQAgABC1AkF/Cw4AIAEwAABC/////w+DCwcAIAExAAALDwAgACsDACABKwMAEP0ECxEAIAAqAgC7IAEqAgC7EP0ECxkBAn4gASkDACIDIAApAwAiBFQgAyAEVmsLGQECfiABKQMAIgMgACkDACIEUyADIARVawsXACABKAIAIgEgACgCACIASSAAIAFJawsXACABKAIAIgEgACgCACIASCAAIAFIawsNACAALwEAIAEvAQBrCw0AIAAuAQAgAS4BAGsLDQAgACwAACABLAAAawsNACAALQAAIAEtAABrC8wNBAd/AXwBfgF9IwBBIGsiBiQAQoCAgIDgACENAkAgACABEJIBIgpBAEgNAEF/IQUCQAJAAkAgCkUNAEEBIQgCQAJAIARBAUYEQEF/IQggBiAKQQFrIgU2AhwgAkECSA0BIAAgBkEIaiADKQMIEEINBiAGKwMIIgy9Qv///////////wCDQoGAgICAgID4/wBaBEAgBkEANgIcDAILIAxEAAAAAAAAAABmBEAgDCAFt2NFDQIgBgJ/IAyZRAAAAAAAAOBBYwRAIAyqDAELQYCAgIB4CzYCHAwCC0F/IQUgDCAKt6AiDEQAAAAAAAAAAGMNBCAGAn8gDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLNgIcDAELIAZBADYCHCACQQJIBEAgCiECDAILIAAgBkEcaiADKQMIIAoiAiACEFcNBQwBC0F/IQILIAGnIgkoAiAoAgwoAiAtAAQEQEF/IQUgBEF/Rw0CQX9BACADNQIEQiCGQoCA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IA1CgICAgDBBBCAFQRBqECEhCiAAIAsQDyAAIA8QDyAFQoCAgIAwNwM4IApCgICAgHCDQoCAgIDgAFENASAAIAkQDyAKIQkLIAhCAXwhCAwBCwsgBSAJNwMwIAUpAzghCwsgACAFKQMwEA8gACALEA9CgICAgOAAIQkLIAAgARAPIAVBQGskACAJC6wIAgN/CX4jAEEwayIFJABCgICAgDAhCSAFQoCAgIAwNwMoAkACQAJAAkAgBEEIcSIHBEAgAUIgiKdBdU8EQCABpyIGIAYoAgBBAWo2AgALIAUgACABEJIBIgasNwMIIAZBAE4NAQwCCyAAIAVBCGogACABECUiARA8DQELIAMpAwAhD0KAgICAMCEOIAJBAk4EQCADKQMIIQ4LIAAgDxBgDQACQAJAAkACQAJAAkACQCAEDg0FAAYBAgYGBgUABgMEBgtCgICAgBAhCQwFCyAAIAECfiAFKQMIIghCgICAgAh8Qv////8PWARAIAhC/////w+DDAELQoCAgIDAfiAIub0iCEKAgICAwIGA/P8AfSAIQv///////////wCDQoCAgICAgID4/wBWGwsQqwIiCUKAgICAcINCgICAgOAAUg0EDAULIAAgAUIAEKsCIglCgICAgHCDQoCAgIDgAFINAwwECyAFIAE3AxAgBSAFNQIINwMYIABBAiAFQRBqEPYCIglCgICAgHCDQoCAgIDgAFINAgwDCyAAED4iCUKAgICAcINCgICAgOAAUg0BQoCAgIDgACEJDAILQoGAgIAQIQkLQgAhCCAFKQMIIgpCACAKQgBVGyEQA0AgCCAQUgRAAkACQCAHBEAgBSAAIAEgCBBzIgo3AyggCkKAgICAcINCgICAgOAAUg0BDAULIAAgASAIIAVBKGoQhQEiAkEASA0EIAJFDQELIAghCiAIQoCAgIAIWgRAQoCAgIDAfiAIub0iCkKAgICAwIGA/P8AfSAKQv///////////wCDQoCAgICAgID4/wBWGyEKCyAKQoCAgIBwg0KAgICA4ABRDQMgBSABNwMgIAUgCjcDGCAFIAUpAygiDTcDECAAIA8gDkEDIAVBEGoQISELIAAgChAPIAtCgICAgHCDQoCAgIDgAFENAwJAAkACQAJAAkACQAJAIAQODQABBQIEBQUFAAEFAwQFCyAAIAsQJg0FQoCAgIAQIQgM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AUL///////////8Ag0KAgICAgICA+P8AVhshBQwCCxABAAsgAjAAAEL/////D4MhBQsgB0EQaiQAIAULUgIBfwF+QoCAgIDgACEEIAAgASACEJMBIgMEfiADKAIgIgMoAgwoAiAtAAQEQCACRQRAQgAPCyAAEGtCgICAgOAADwsgAzUCFAVCgICAgOAACwvXAQEDfwJAIAFCgICAgHBUDQAgAaciAy8BBkE5Rw0AIAMoAiAiBEUNACAEQcwAaiEDIARByABqIQUDQCAFIAMoAgAiA0cEQCADKQMQIgFCgICAgGBaBEAgACABpyACEQAACyADKQMYIgFCgICAgGBaBEAgACABpyACEQAACyADKQMgIgFCgICAgGBaBEAgACABpyACEQAACyADKQMoIgFCgICAgGBaBEAgACABpyACEQAACyADQQRqIQMMAQsLIAQoAgRBfnFBBEYNACAAIARBCGogAhDvAwsLBgBB4MYECzABAX8CQCABQoCAgIBwVA0AIAGnIgIvAQZBOUcNACACKAIgIgJFDQAgACACEIcFCwsNACAAIAEgAkE3EP0FCwsAIAAgAUE3EP4FCxYBAX8gAacoAiAiAgRAIAAgAhCIBQsLMQEBfyABpygCICICBEAgACACKAIIEKMFIAAgAikDABAjIABBEGogAiAAKAIEEQAACwvcAQEEfwJAIAFCgICAgHBUDQAgAaciBC8BBkExRw0AIAQoAiAiBkUNAEEAIQQDQCAEQQJGRQRAIAYgBEEDdGoiBUEIaiEDIAVBBGohBQNAIAUgAygCACIDRwRAIAMpAwgiAUKAgICAYFoEQCAAIAGnIAIRAAALIAMpAxAiAUKAgICAYFoEQCAAIAGnIAIRAAALIAMpAxgiAUKAgICAYFoEQCAAIAGnIAIRAAALIANBBGohAwwBCwsgBEEBaiEEDAELCyAGKQMYIgFCgICAgGBUDQAgACABpyACEQAACwuMAQEFfwJAIAFCgICAgHBUDQAgAaciAi8BBkExRw0AIAIoAiAiBEUNAANAIANBAkZFBEAgBCADQQN0aiICQQRqIQUgAigCCCECA0AgAiAFRkUEQCACKAIEIQYgACACEK4CIAYhAgwBCwsgA0EBaiEDDAELCyAAIAQpAxgQIyAAQRBqIAQgACgCBBEAAAsLJQAgBSkDACIBQiCIp0F1TwRAIAGn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IAMpAwAQpgENACAAEJcBIgVCgICAgHCDQoCAgIDgAFENACAAIAJBFGogAykDCBC7ASIGRQRAIAAgBRAPDAELIAAoAtgBIQMgAkIANwIMIAJCgICAgICAgICAfzcCBCACIAM2AgAgAkIBEDAaIAIgAikDKCIBpyIHQf////8DQQEQzAEaIAIgAkJ/Qf////8DQQEQdRogBadBBGoiAyAGIAIQkwUaAkAgBEUgAVByDQAgAkIBEDAaIAIgB0EBa0H/////A0EBEMwBGiADIAIQ0wFBAEgNACACQgEQMBogAiAHQf////8DQQEQzAEaIAMgAyACQf////8DQQEQ5AEaCyACEBsgACAGIAJBFGoQXiAAIAUQzQEhAQsgAkEwaiQAIAEL6hMCAn4BfyMAQdABayIEJAAgACAEEJgFIAEgARA0IgNBqi0CfiAEKQMIIgJCgICAgAh8Qv////8PWARAIAJC/////w+DDAELQoCAgIDAfiACub0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsQQCABIANB3+AAAn4gBCkDECICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQboqAn4gBCkDGCICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQagqAn4gBCkDICICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQfooAn4gBCkDKCICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQfrfAAJ+IAQpAzAiAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAEgA0HYKAJ+IAQpAzgiAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAEgA0G23wACfiAEKQNAIgJCgICAgAh8Qv////8PWARAIAJC/////w+DDAELQoCAgIDAfiACub0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsQQCABIANBzSkCfiAEKQNIIgJCgICAgAh8Qv////8PWARAIAJC/////w+DDAELQoCAgIDAfiACub0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsQQCABIANBl+AAAn4gBCkDUCICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQeIoAn4gBCkDWCICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQc/fAAJ+IAQpA2AiAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAEgA0GGKgJ+IAQpA2giAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAEgA0Gt4AACfiAEKQNwIgJCgICAgAh8Qv////8PWARAIAJC/////w+DDAELQoCAgIDAfiACub0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsQQCABIANBxyoCfiAEKQN4IgJCgICAgAh8Qv////8PWARAIAJC/////w+DDAELQoCAgIDAfiACub0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsQQCABIANB8OAAAn4gBCkDgAEiAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAEgA0HN4AACfiAEKQOIASICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQZIqAn4gBCkDkAEiAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAEgA0G44AACfiAEKQOYASICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQdUqAn4gBCkDoAEiAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAEgA0HvJwJ+IAQpA6gBIgJCgICAgAh8Qv////8PWARAIAJC/////w+DDAELQoCAgIDAfiACub0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsQQCABIANB6icCfiAEKQOwASICQoCAgIAIfEL/////D1gEQCACQv////8PgwwBC0KAgICAwH4gArm9IgJCgICAgMCBgPz/AH0gAkL///////////8Ag0KAgICAgICA+P8AVhsLEEAgASADQeszAn4gBCkDuAEiAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAEgA0H7JwJ+IAQpA8ABIgJCgICAgAh8Qv////8PWARAIAJC/////w+DDAELQoCAgIDAfiACub0iAkKAgICAwIGA/P8AfSACQv///////////wCDQoCAgICAgID4/wBWGwsQQCABIANBo98AAn4gBCkDyAEiAkKAgICACHxC/////w9YBEAgAkL/////D4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8/wB9IAJC////////////AINCgICAgICAgPj/AFYbCxBAIAMQUyEAIARB0AFqJAAgAAufAgEDfiABQv////9vWARAIAAQJEKAgICA4AAPC0KAgICA4AAhBQJ+IAAgAUE2IAFBABAUIgRCgICAgHCDQoCAgIAwUQRAIABBlAEQLQwBCyAAIAQQNwsiBEKAgICAcIMiBkKAgICA4ABSBH4CfiAAIAFBMyABQQAQFCIBQoCAgIBwg0KAgICAMFEEQCAAQS8QLQwBCyAAIAEQNwsiAUKAgICAcIMiBUKAgICA4ABRBEAgACAEEA9CgICAgOAADwsCQCAGQoCAgICQf1EEQCAEpygCBEH/////B3FFDQELIAVCgICAgJB/UQRAIAGnKAIEQf////8HcUUNAQsgAEHMngEgBEH4mQEQvgEhBAsgACAEIAEQxAIFQoCAgIDgAAsLXwEBfwJAIAFFBEAgAkUNASAAIAIQ2QMPCyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARCbAQwBCyAAKAIIIAAoAgQgAmpPBH8gASACEPMFBUEACw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARCbAQsLCQAgACABNgIYCygBAX8CQCABpygCICIDRQ0AIAMoAgBBBEYNACAAIANBCGogAhDvAwsLPwEBfwJAIAFCgICAgHBUDQAgAaciAi8BBkEvRw0AIAIoAiAiAkUNACAAIAIQ7AMgAEEQaiACIAAoAgQRAAALC0cBAX8CQCABpygCICIDRQ0AIAMpAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIAMpAwgiAUKAgICAYFQNACAAIAGnIAIRAAALCzABAX8gAacoAiAiAgRAIAAgAikDABAjIAAgAikDCBAjIABBEGogAiAAKAIEEQAACwsnAQF/IAGnKAIgIgIEQCAAIAIpAwAQIyAAQRBqIAIgACgCBBEAAAsLWgECfyABpygCICICBEACQCACKQMAIgFCgICAgHBUDQAgAactAAVBAnENACACKAIMIgNFDQAgACADEOoDIAIpAwAhAQsg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ACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAAALIANBAWohAwwACwALIAAgBCACEQAACwt8AQN/IAGnIgIoAigiAwRAIAAgA61CgICAgHCEECMLIAIoAiAiAwRAIAIoAiQiBARAQQAhAgNAIAIgAygCPE5FBEAgACAEIAJBAnRqKAIAEOsBIAJBAWohAgwBCwsgAEEQaiAEIAAoAgQRAAALIAAgA61CgICAgGCEECMLCxIAIAGnKAIgIgAEQCAAEKQDCwseACABpykDICIBQoCAgIBgWgRAIAAgAacgAhEAAAsLGQAgACABpyIAKQMgECMgAEKAgICAMDcDIAtEAQJ/IAGnIQQDQCAEKAIoIANLBEAgBCgCJCADQQN0aikDACIBQoCAgIBgWgRAIAAgAacgAhEAAAsgA0EBaiEDDAELCwtGAQN/IAGnIQMDQCADKAIkIQQgAiADKAIoT0UEQCAAIAQgAkEDdGopAwAQIyACQQFqIQIMAQsLIABBEGogBCAAKAIEEQAAC2kBAn8jAEEQayIHJAACfwJAIAGnIggtAAVBCHFFDQAgACAHQQxqIAIQrAFFDQAgBygCDCAIKAIoTw0AQX8gACAIEJIDDQEaCyAAIAEgAiADIAQgBSAGQYCACHIQbQshACAHQRBqJAAgAAuBAgIDfwF+AkACQCACQQBODQAgAacpAyAiCkKAgICAcINCgICAgJB/Ug0AIAJB/////wdxIgggCqciBykCBCIKp0H/////B3FPDQACQEEEIAYQkwNFDQBBASECIAZBgMAAcUUNAiADQoCAgIBwg0KAgICAkH9SDQAgA6ciCSkCBCIBQv////8Hg0IBUg0AIAdBEGohBwJ/IApCgICAgAiDUEUEQCAHIAhBAXRqLwEADAELIAcgCGotAAALAn8gAUKAgICACINQRQRAIAkvARAMAQsgCS0AEAtGDQILIAAgBkHh6QAQbw8LIAAgASACIAMgBCAFIAZBgIAIchBtIQILIAILRgACfwJAIAJBAE4NACABpykDICIBQoCAgIBwg0KAgICAkH9SDQBBACACQf////8HcSABpygCBEH/////B3FJDQEaC0EBCwuzAQECfwJAIANBAE4NACACpykDICICQoCAgIBwg0KAgICAkH9SDQAgA0H/////B3EiAyACpyIEKQIEIgKnQf////8HcU8NAEEBIQUgAUUNACAEQRBqIQQCfyACQoCAgIAIg1BFBEAgBCADQQF0ai8BAAwBCyADIARqLQAACyEDIAFBBDYCACAAIANB//8DcRCfAyECIAFCgICAgDA3AxggAUKAgICAMDcDECABIAI3AwgLIAULWwECfyABpygCECIAQTBqIQMgACAAKAIYIAJxQX9zQQJ0aigCACEAA0ACQCAARQ0AIAMgAEEBa0EDdGoiBCgCBCACRg0AIAQoAgBB////H3EhAAwBCwsgAEEARws1AQF+IAEpAwAiAkIgiKdBdU8EQCACpyIBIAEoAgBBAWo2AgALIAAgAhCKAUKAgICA4AAQUwuOAQECfyABKAIAIgJBAEoEQCABIAJBAWsiAjYCAAJAIAINACABLQAEQfABcUEQRw0AIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFBADYCCCAAKAJgIgIgAUEIaiIDNgIEIAEgAEHgAGo2AgwgASACNgIIIAAgAzYCYAsPC0HFjQFBrvwAQbAsQc/0ABAAAAtvAQJ/IAEgASgCACICQQFqNgIAIAJFBEAgASgCCCICIAEoAgwiAzYCBCADIAI2AgAgAUEANgIIIAAoAlAiAiABQQhqIgM2AgQgASAAQdAAajYCDCABIAI2AgggACADNgJQIAEgAS0ABEEPcToABAsLDwAgASABKAIAQQFqNgIAC4gBAgF+AX9BACECQoCAgIAwIQEDQAJAIAJBAkcEfiAFIAJBA3QiBGoiBzUCBEIghkKAgICAMFENASAAQawuQQAQFUKAgICA4AAFQoCAgIAwCw8LIAMgBGopAwAiBkIgiKdBdU8EQCAGpyIEIAQoAgBBAWo2AgALIAcgBjcDACACQQFqIQIMAAsAC1wBAn4gAiAAKAIAEC0hA0EAIQAgA0KAgICAcINCgICAgOAAUSACIAEoAgAQLSIEQoCAgIBwg0KAgICA4ABRckUEQCADpyAEpxCDAiEACyACIAMQDyACIAQQDyAAC2sBAX4CQAJAAkACQAJAIAMtAAUiAQ4EAwICAAELIAAgAygCCBDKBA8LIAFBCEYNAgsQAQALIAAgAygCDCADKAIAIAMtAAggAy0ACSADLgEGEIIBDwsgACAAEDQiBCADKAIIIAMoAgwQIiAECwkAIAAgAxCNAwtTAQF+IAAQNCIEQoCAgIBwg0KAgICA4ABSBEAgASABKAIAQQFqNgIAIAAgBEE8IAGtQoCAgIBwhEEDEBlBAE4EQCAEDwsgACAEEA8LQoCAgIDgAAsDAAELagEBfyMAQRBrIgMkACABKAIEIQEgAiADQQxqIAAoAgQQrAFBACACIANBCGogARCsARtFBEBB0MUAQa78AEGDOkH8yQAQAAALIAMoAgghACADKAIMIQEgA0EQaiQAQX8gACABRyAAIAFLGwvaAwICfgF/IwBBIGsiBSQAAkACQCAAIAFBLBBLIgJFDQBCgICAgDAhAQJAIAIpAwAiBkKAgICAcINCgICAgDBSBEACfwJAIAanIgMvAQZBFWtB//8DcUEKTQRAIAMoAiAoAgwoAiAtAARFDQEgABBrDAULIAAgBUEcaiAGENYBDQQgBUEcagwBCyADQShqCyEIIAIoAgwiAyAIKAIASQ0BIAAgAikDABAPIAJCgICAgDA3AwALIARBATYCAAwCCyACIANBAWo2AgwgBEEANgIAIAIoAghFBEAgA0EATgRAIAOtIQEMAwtCgICAgMB+IAO4vSIBQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbIQEMAgtCgICAgOAAIQEgACACKQMAIAMQsAEiBkKAgICAcINCgICAgOAAUQ0BIAIoAghBAUYEQCAGIQEMAgsgBSAGNwMIIAUgA0EATgR+IAOtBUKAgICAwH4gA7i9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhsLIgc3AwAgAEECIAUQiQMhASAAIAYQDyAAIAcQDwwBCyAEQQA2AgBCgICAgOAAIQELIAVBIGokACABCxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwAL7gICBH8CfiMAQRBrIgMkAAJAAkAgAikDECIHQoCAgIBwg0KAgICAkH9SBEAgAEGDlAFBABAVDAELIAIpAxghCCAAIAcQswEiBEUEQEEAIQQMAQsgACAIELMBIgZFDQACQCAAIAQgBhDJBSIBRQ0AIAAgARD+A0EASARAIABBARCPBAwBCyABIAEoAgBBAWo2AgAgACABrUKAgICAUIQgACkDwAFBAEEAEMgFIgdCgICAgHCDQoCAgIDgAFENACAAIAcQDyABIQULIAAgBhBUIAVFDQAgAyAAIAUQjQMiBzcD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ACEEIANCADcCaCADQoCAgICAgICAgH83AmAgAyAENgJcIANB3ABqIgUgARBEGiADQgA3AlQgA0KAgICAgICAgIB/NwJMIAMgBDYCSCADKAJkIQYgA0EANgJkIANByABqIgFCqtWq1QoQMBogA0EANgJQIAUgARCyAgRAIAMgAygCZEEBajYCZCAGQQFrIQYLIANByABqEBsgAkEBakEBdhCVBiEFIANCADcCVCADQoCAgICAgICAgH83AkwgAyAENgJIIANCADcCQCADQoCAgICAgICAgH83AjggAyAENgI0IANB3ABqIgEgAUJ/Qf////8DQQAQdRogBUEAIAVBAEobIQkgAiAFaiACIAVBAXRuQQFqIgpBAXRqQSBqIQJBACEBA0AgASAJRkUEQCADQcgAaiIHIANB3ABqIghCASACQQAQdRogA0E0aiILIAcgAkEGEJEGIAcgC0IBIAJBABB1GiAIIAggByACQQAQlQEaIAFBAWohAQwBCwsgA0IANwIsIANCgICAgICAgICAfzcCJCADIAQ2AiAgA0IANwIYIANCgICAgICAgICAfzcCECADIAQ2AgwgA0EgaiIBIANB3ABqIgRCAiACQQAQdRogASAEIAEgAkEAEJUBGiADQQxqIAEgASACQQAQQxogAEIAEDAaIAqsIQwDQCAMQgBXRQRAIANByABqIgFCARAwGiADQTRqIgQgDKdBAXRBAXKsEDAaIAEgASAEIAJBABCVARogACAAIAEgAkEAEMsBGiAAIAAgA0EMaiACQQAQQxogDEIBfSEMDAELCyAAIABCASACQQAQdRogACAAIANBIGoiASACQQAQQxogARAbIANBDGoQGyADQTRqEBsgA0HIAGoQGyAAIAVBAWpB/////wNBARDMARogA0HcAGoiASACQQYQ0wIgASABIAasIAJBABDUAiAAIAAgASACQQAQywEaIAEQGyADQfAAaiQAQRAPC0HY/QBB1PwAQdciQajWABAAAAsRACAAIAEgAiADIARBABCWBgsRACAAIAEgAiADIARBARCWBgvYAwEHfyACKAIEIAEoAgRzIQcCQAJAAkACQAJAAkACQCABKAIIIgZB/f///wdMBEAgAigCCCIFQf3///8HSg0BIAZBgICAgHhHDQYgBUGAgICAeEYNBAwHCyAGQf////8HRg0BIAIoAggh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gICAMEEBENQFDQIgACABEA8LIAJBAWohAgwACwALIAAgBBAPIAAgARAPQoCAgIDgAAsYACAAIAMpAwAgAykDCBBSrUKAgICAEIQL4gICA34DfyMAQSBrIgIkAEKAgICA4AAhBCAAIAMpAwAQJSIFQoCAgIBwg0KAgICA4ABSBEBCgICAgDAhAQJAAkAgACACQRxqIAJBGGogBadBAxCOAQ0AQoCAgIDgACEBIAAQNCIEQoCAgIBwg0KAgICA4ABRDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEACQAJAIAAgByADQQN0aiIJKAIEEFwiAUKAgICAcINCgICAgOAAUQ0AIAIgATcDCCACIAU3AwAgACAEIAAgAkEAEMYEIQYgACABEA8gBkKAgICAcIMiAUKAgICAMFENASABQoCAgIDgAFENACAAIAQgCSgCBCAGQYeAARAZQQBODQELIAQhAQwDCyADQQFqIQMMAQsLIAAgByAIEFogBSEBDAELIAAgAigCHCACKAIYEFogACAFEA9CgICAgOAAIQQLIAAgARAPCyACQSBqJAAgBAsQACAAIAMpAwBBESAEEKoCCxAAIAAgAykDAEECQQAQqgILEAAgACADKQMAQQFBABCqAgtHAQF+QoCAgIDgACEEIAAgAykDACIBIAMpAwgQrgYEfkKAgICA4AAFIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABCwtBACAAIAMpAwAiASADKQMIQQEQiwJBAEgEQEKAgICA4AAPCyABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQuJAQEBfiADKQMAIgFC/////29WIAFCgICAgHCDQoCAgIAgUXJFBEAgAEG35ABBABAVQoCAgIDgAA8LAkAgACABEEciAUKAgICAcINCgICAgOAAUgRAIAMpAwgiBEKAgICAcINCgICAgDBRDQEgACABIAQQrgZFDQEgACABEA8LQoCAgIDgAA8LIAELpQQCBX8CfiMAQSBrIgUkACAAIAVBCGoiBkEAED0aIAZBKBA7GiAEQX5xQQJGBEAgBUEIakHxmQEQiAEaCyAFQQhqQbrMABCIARogBEF9cUEBRgRAIAVBCGpBKhA7GgsgBUEIakGvlAEQiAEaQQAhBiACQQFrIgdBACAHQQBKGyEIAkACQAJAA0AgBiAIRwRAIAYEQCAFQQhqQSwQOxoLIAZBA3QhCSAGQQFqIQYgBUEIaiADIAlqKQMAEIcBRQ0BDAILCyAFQQhqQYaaARCIARogAkEASgRAIAVBCGogAyAHQQN0aikDABCHAQ0BCyAFQQhqIgJBiZEBEIgBGkKAgICAMCELIAIQNiIKQoCAgIBwg0KAgICA4ABRDQEgACAAKQPAASAKQQNBfxCcAyELIAAgChAPIAtCgICAgHCDQoCAgIDgAFENASABQoCAgIBwg0KAgICAMFENAiAAIAFBOyABQQAQFCIKQoCAgIBwg0KAgICA4ABRDQECQCAKQv////9vVg0AIAAgChAPIAAgARCAAyICRQ0CIAIoAiggBEEBdEGuwAFqLwEAQQN0aikDACIKQiCIp0F1SQ0AIAqnIgIgAigCAEEBajYCAAsgACALIApBARCLAiECIAAgChAPIAJBAE4NAgwBCyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAAQoCAgIAwIQsLIAAgCxAPQoCAgIDgACELCyAFQSBqJAAgCwuAAgICfgF/IwBBIGsiByQAQoCAgIDgACEFAkACQCAAIAEQJSIBQoCAgIBwg0KAgICA4ABRDQAgACADKQMAEDEiA0UNAANAIAAgByABpyADEEwiAkEASA0CIAIEQEKAgICAMCEFAkAgBy0AAEEQcUUNACAHQRhBECAEG2opAwAiBUIgiKdBdUkNACAFpyICIAIoAgBBAWo2AgALIAAgBxBIDAMLIAAgARCMAiIBQoCAgIBwgyIGQoCAgIAgUgRAIAZCgICAgOAAUQRAIAYhBQwECyAAEHtFDQEMAwsLQoCAgIAwIQUMAQtBACEDCyAAIAMQEyAAIAEQDyAHQSBqJAAgBQuxAQEDfiADKQMIIQUgAykDACEGQoCAgIDgACEHAkAgACABECUiAUKAgICAcINCgICAgOAAUgR+IAAgBRBgDQEgACAGEDEiAkUNASAAIAEgAkKAgICAMEKAgICAMCAFIAQbIAVCgICAgDAgBBtBhaoBQYWaASAEGxBtIQMgACABEA8gACACEBNCgICAgOAAQoCAgIAwIANBAEgbBUKAgICA4AALDwsgACABEA9CgICAgOAAC3IBAX5CgICAgDAhAyABQoCAgIAQhEKAgICAcINCgICAgDBRBEAgABAkQoCAgIDgAA8LIAJCgICAgHCDQoCAgIAgUiACQv////9vWHEEfkKAgICAMAVCgICAgOAAQoCAgIAwIAAgASACQQEQiwJBAEgbCwsyAQF+IAAgARAlIgFCgICAgHCDQoCAgIDgAFEEQCABDwsgACABEOgBIQIgACABEA8gAgugAQIBfgF/IwBBIGsiAiQAQoCAgIDgACEEAkACQCAAIAEQJSIBQoCAgIBwg0KAgICA4ABRDQAgACADKQMAEDEiA0UNACAAIAIgAacgAxBMIgVBAEgNASAFRQRAQoCAgIAQIQQMAgsgAjUCACEEIAAgAhBIIARCAohCAYNCgICAgBCEIQQMAQtBACEDCyAAIAMQEyAAIAEQDyACQSBqJAAgBAvBAQECfgJAAn5CgICAgBAgAykDACIEQoCAgIBwVA0AGkKAgICA4AAgACABECUiAUKAgICAcINCgICAgOAAUQ0AGiAEpyICIAIoAgBBAWo2AgAgAachAgNAIAAgBBCMAiIEQoCAgIBwgyIFQoCAgIDgAFIEQCACIASnRiAFQoCAgIAgUXINAyAAEHtFDQELCyAAIAQQDyAAIAEQD0KAgICA4AALDwsgACAEEA8gACABEA8gBUKAgICAIFKtQoCAgIAQhAt6AQF+IAAgAykDABAxIgJFBEBCgICAgOAADwtCgICAgOAAIQQgACABECUiAUKAgICAcINCgICAgOAAUQRAIAAgAhATIAEPCyAAQQAgAacgAhBMIQMgACACEBMgACABEA9CgICAgOAAIANBAEetQoCAgIAQhCADQQBIGwsIACAAIAEQJQsPACAAIAFBN0EAQQAQrAILLQEBfkKAgICAMCECAkAgARCjAyIARQ0AIAAtABJBBHFFDQAgADUCRCECCyACCzMCAX4Bf0KAgICAMCECAkAgARCjAyIDRQ0AIAMtABJBBHFFDQAgACADKAJAEC0hAgsgAgsoAEKAgICA4AAgACADKQMAIAEQvgUiAEEAR61CgICAgBCEIABBAEgbC7cBAgF+An9CgICAgOAAIQQgACABEGAEfkKAgICA4AAFQcqZASECAkAgAaciAy8BBhDuAUUNAAJAIAMoAiAiAy8AESIFQYAIcUUNACADKAJUIgZFDQAgACAGIAMoAkgQkwIPCyAFQQR2QQNxQQFrIgNBAksNACADQQJ0QfT/AWooAgAhAgsgACACIAAgAUE2IAFBABAUIgFCgICAgHCDQoCAgIAwUQR+IABBLxAtBSABC0G+GRC+AQsL6QUDA34GfwN8AkACfkKAgICA4AAgACABEGANABpCgICAgOAAIAAgACkDMEEOEEkiBUKAgICAcINCgICAgOAAUQ0AGiAFpyIKIAFCgICAgHBaBH8gAactAAVBEHEFQQALIAotAAVB7wFxcjoABSAAQQEgAiACQQFMGyILQQFrIghBA3RBGGoQKSIHRQ0BIAFCIIinQXVPBEAgAaciAiACKAIAQQFqNgIACyAHIAE3AwAgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgByAINgIQIAcgBDcDCEEAIQIDQCACIAhHBEAgAyACQQFqIglBA3RqKQMAIgRCIIinQXVPBEAgBKciDCAMKAIAQQFqNgIACyAHIAJBA3RqIAQ3AxggCSECDAELCyAKIAc2AiAgAUL/////b1gEQCAAECQMAgsgAEEAIAGnQTAQTCICQQBIDQFCACEEAkAgAkUNACAAIAFBMCABQQAQFCIGQoCAgIBwg0KAgICA4ABRDQIgBkL/////D1gEQCAGpyICIAhrQQAgAiALThutIQQMAQsgBkIgiKdBB2tBbU0EQAJAIAZCgICAgMCBgPz/AHwiBEL///////////8Ag0KAgICAgICA+P8AVg0AIAS/nSIOIAi3Ig9lDQAgDiAPoSENCyANvSIEAn8gDZlEAAAAAAAA4EFjBEAgDaoMAQtBgICAgHgLIgK3vVEEQCACrSEEDAILQoCAgIDAfiAEQoCAgIDAgYD8/wB9IARC////////////AINCgICAgICAgPj/AFYbIQQMAQsgACAGEA8LIAAgBUEwIARBARAZGiAAQdSZASAAIAFBNiABQQAQFCIEQoCAgIBwgyIBQoCAgICQf1IEfiABQoCAgIDgAFENAiAAIAQQDyAAQS8QLQUgBAtBzJ4BEL4BIgFCgICAgHCDQoCAgIDgAFENASAAIAVBNiABQQEQGRogBQsPCyAAIAUQD0KAgICA4AALMAAgAkEATARAIAAgAUKAgICAMEEAQQAQIQ8LIAAgASADKQMAIAJBAWsgA0EIahAhC6MCAgF/BH4jAEEQayIFJABCgICAgDAhBgJAAkAgACAFQQhqIAAgARAlIgkQPA0AIAVBATYCBAJAIAQEQCAD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gDBSBEAgB0KAgICA4ABRDQcgACABECYMAQsgACAFEMoBCyICQQBIDQUgAkUNACAAIAkgBRA8DQUgCSkDACIHIAR8Qv////////8PVQ0EQgAhASAHQgAgB0IAVRshBwNAIAEgB1ENAiAAIAUgASAJQQhqEIUBIgJBAEgNBiACBEAgACAGIAQgCSkDCBBqQQBIDQcLIARCAXwhBCABQgF8IQEMAAsACyAEQv7///////8PVQ0DIAVCIIinQXVPBEAgBaciAiACKAIAQQFqNgIACyAAIAYgBCAFEGpBAEgNBCAEQgF8IQQLIApBAWohCgwBCwsgACAGQTAgBEKAgICACHxC/////w9YBH4gBEL/////D4MFQoCAgIDAfiAEub0iAUKAgICAwIGA/P8AfSABQv///////////wCDQoCAgICAgID4/wBWGwsQRUEASA0BDAILIABB0NoAQQAQFQsgACAGEA9CgICAgOAAIQYLIAAgCBAPIAlBEGokACAGC7ECAgR+An8jAEEQayIIJABCgICAgOAAIQUCQAJ+AkAgAUKAgICAcFQNACABpy0ABUEQcUUNACAIIAKtNwMIIAAgAUEBIAhBCGoQpwEMAQsgABA+CyIEQoCAgIBwg0KAgICA4ABRDQAgAkEAIAJBAEobrSEHQgAhAQJAA0AgASAHUgRAIAMgAadBA3RqKQMAIgZCIIinQXVPBEAgBqciCSAJKAIAQQFqNgIACyAAIAQgASAGQYCAARDSASEJIAFCAXwhASAJQQBODQEMAgsLIAAgBEEwIAJBAE4EfiACrQVCgICAgMB+IAK4vSIBQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbCxBFQQBIDQAgBCEFDAELIAAgBBAPCyAIQRBqJAAgBQu6CQICfwh+IwBBMGsiBCQAIAMpAwAhBiAEQoCAgIAwNwMYQQEhBQJAAkACfiACQQJIBEBCgICAgDAhDEKAgICAMAwBC0KAgICAMCADKQMIIgxCgICAgHCDQoCAgIAwUQ0AGkKAgICAMCEKQoCAgIAwIQlCgICAgDAhCEKAgICAMCELIAAgDBBgDQFBACEFQoCAgIAwIAJBA0kNABogAykDEAshDQJAAkACQAJAIAAgBkHRASAGQQAQFCIHQoCAgIBwgyIIQoCAgIAwUgRAAkACQCAIQoCAgIDgAFEEQEKAgICAMCEKQoCAgIAwIQlCgICAgDAhCAwBCyAAIAcQDwJ+AkAgAUKAgICAcFQNACABpy0ABUEQcUUNACAAIAFBAEEAEKcBDAELIAAQPgsiCEKAgICAcINCgICAgOAAUQRAQoCAgIAwIQpCgICAgDAhCQwBCyAGQiCIp0F1TwRAIAanIgIgAigCAEEBajYCAAsgBCAGNwMQIAAgBEEQakEIckEAEJkDIQIgBCkDGCEKIAQpAxAhCSACRQ0BC0KAgICAMCELDAYLQgAhBwNAIAAgCSAKIARBCGoQrgEiBkKAgICAcINCgICAgOAAUQ0CIAQoAggEQEKAgICAMCELDAYLAkAgBQRAIAYhAQwBCyAEIAY3AyAgBCAHQv////8PgzcDKCAAIAwgDUECIARBIGoQISEBIAAgBhAPIAFCgICAgHCDQoCAgIDgAFENAwsgACAIIAcgARBqQQBIDQIgB0IBfCEHDAALAAsgACAGECUiC0KAgICAcINCgICAgOAAUQ0CIAAgBEEIaiALEDxBAEgNAiAEAn4gBCkDCCIGQoCAgIAIfEL/////D1gEQCAGQv////8PgwwBC0KAgICAwH4gBrm9IgdCgICAgMCBgPz/AH0gB0L///////////8Ag0KAgICAgICA+P8AVhsLIgc3AyACfgJAIAFCgICAgHBUDQAgAactAAVBEHFFDQAgACABQQEgBEEgahCnAQwBCyAAQoCAgIAwQQEgBEEgahCuAwshCCAAIAcQDyAIQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhCgwCC0IAIQcgBkIAIAZCAFUbIQkDQCAHIAlRBEBCgICAgDAhCkKAgICAMCEJDAULQoCAgIAwIQogACALIAcQcyIGQoCAgIBwg0KAgICA4ABRDQICQCAFBEAgBiEBDAELIAQgBjcDICAEIAdC/////w+DNwMoIAAgDCANQQIgBEEgahAhIQEgACAGEA8gAUKAgICAcINCgICAgOAAUQ0DCyAAIAggByABEGpBAEgNAiAHQgF8IQcMAAsAC0KAgICAMCELIAlCgICAgHCDQoCAgIAwUQ0DIAAgCUEBEK0BGgwDC0KAgICAMCEJDAILQoCAgIAwIQpCgICAgDAhCUKAgICAMCEIDAELIAAgCEEwIAenIgJBAE4EfiAHQv////8PgwVCgICAgMB+IAK4vSIBQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbCxBFQQBODQELIAAgCBAPQoCAgIDgACEICyAAIAsQDyAAIAkQDyAAIAoQDyAEQTBqJAAgCAsmAEKAgICA4AAgACADKQMAEMoBIgBBAEetQoCAgIAQhCAAQQBIGwuAAQAjAEEQayIAJAAgABCjBAJ+IAA0AgggACkDAELAhD1+fCIBQoCAgIAIfEL/////D1gEQCABQv////8PgwwBC0KAgICAwH4gAbm9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhsLIQEgAEEQaiQAIAELxwIBBX8jAEEgayIEJAAgACADKQMAECgiAUKAgICAcINCgICAgOAAUgRAIAAgBEEIakEAED0aIAGnIgVBEGohBiAFKAIEQf////8HcSEHQQAhAwNAIAMgB05FBEACQAJ/IAUpAgRCgICAgAiDUCIIRQRAIAYgA0EBdGovAQAMAQsgAyAGai0AAAsiAkElRw0AAkAgA0EGaiAHSg0AIANBAWohAgJ/IAhFBEAgBiACQQF0ai8BAAwBCyACIAZqLQAAC0H1AEcNACAFIANBAmpBBBC4BCICQQBIDQAgA0EFaiEDDAELQSUhAiADQQNqIAdKDQAgBSADQQFqQQIQuAQiAkElIAJBAE4iCBshAiADQQJqIAMgCBshAwsgBEEIaiACEIsBGiADQQFqIQMMAQsLIAAgARAPIARBCGoQNiEBCyAEQSBqJAAgAQvkAQEEfyMAQSBrIgIkACAAIAMpAwAQKCIBQoCAgIBwg0KAgICA4ABSBEAgACACQQhqIAGnIgUoAgRB/////wdxED0aIAVBEGohBiAFKAIEQf////8HcSEHQQAhAwNAIAMgB0ZFBEACQAJAAkAgBS0AB0GAAXFFBEAgAyAGai0AACEEDAELIAYgA0EBdGovAQAiBEH/AUsNAQtBkOEBIARBxQAQ+wFFDQAgAkEIaiAEEIsBGgwBCyACQQhqIAQQmgILIANBAWohAwwBCwsgACABEA8gAkEIahA2IQELIAJBIGokACABC84EAgZ/AX4jAEEgayIGJAACQCAAIAMpAwAQKCIBQoCAgIBwg0KAgICA4ABRDQAgACAGQQhqIAGnIgkoAgRB/////wdxED0aIAlBEGohCEEAIQICQANAIAkpAgQiC6dB/////wdxIgogAkoEQCACQQFqIQUCQAJAIAtCgICAgAiDIgtQBEAgAiAIai0AACEDDAELIAggAkEBdGovAQAiA0H/AUsNAQsCQCADQTBrQQpJIANB3/8DcUHBAGtBGklyDQBBpZQBIANBCRD7AQ0AIAQNASADELIGRQ0BCyAGQQhqIAMQiwEaIAUhAgwCCwJ/An8CQCADQYD4A3EiB0GAsANHBEAgB0GAuANHDQFBv8MAIQcMBgtB5MAAIQcgBSAKTg0FAn8gC1BFBEAgCCAFQQF0ai8BAAwBCyAFIAhqLQAACyIFQYDAA2tBgHhJDQUgBkEIaiAFQf8HcSADQQp0QYD4P3FyQYCABGoiA0ESdkHwAXIQmgIgA0EMdkE/cUGAAXIhByACQQJqDAELIANB/wBNBEAgBkEIaiADEJoCIAUhAgwECyADQf8PTQRAIAUhAiADQQZ2QcABcgwCCyADQQx2QeABciEHIAULIQIgBkEIaiAHEJoCIANBBnZBP3FBgAFyCyEHIAZBCGoiBSAHEJoCIAUgA0E/cUGAAXIQmgIMAQsLIAAgARAPIAZBCGoQNiEBDAELIAAgBxC5BCAAIAEQDyAGKAIIKAIQIgBBEGogBigCDCAAKAIEEQAAQoCAgIDgACEBCyAGQSBqJAAgAQuVBAIGfwF+IwBBIGsiBSQAAkAgACADKQMAECgiAUKAgICAcINCgICAgOAAUQ0AIAAgBUEIakEAED0aIAGnIghBEGohCUEAIQIDQAJAAkACQCAIKQIEIgunQf////8HcSACSgRAAn8gC0KAgICACINQRQRAIAkgAkEBdGovAQAMAQsgAiAJai0AAAsiA0ElRgRAIAAgCCACELMGIgNBAEgNAyACQQNqIQYgA0H/AE0EQCAEBEAgBiECDAYLQSUgAyADELIGIgcbIQMgAkEBaiAGIAcbIQIMBQsCfyADQWBxQcABRgRAIANBH3EhA0GAASEHQQEMAQsgA0FwcUHgAUYEQCADQQ9xIQNBgBAhB0ECDAELIANBeHFB8AFHBEBBASEHQQAhA0EADAELIANBB3EhA0GAgAQhB0EDCyECA0AgAkEATA0DIAAgCCAGELMGIgpBAEgNBCAGQQNqIQYgCkHAAXFBgAFHBEBBACEDDAQFIAJBAWshAiAKQT9xIANBBnRyIQMMAQsACwALIAJBAWohAgwDCyAAIAEQDyAFQQhqEDYhAQwECyAGIQIgAyAHSCADQf//wwBKckUgA0GAcHFBgLADR3ENASAAQcmJARC5BAsgACABEA8gBSgCCCgCECIAQRBqIAUoAgwgACgCBBEAAEKAgICA4AAhAQwCCyAFQQhqIAMQuQEaDAALAAsgBUEgaiQAIAELNwAgACADKQMAELMBIgJFBEBCgICAgOAADwsgACACEIECIAJqQQBBCkEAELgCIQEgACACEFQgAQuHAQEBfyMAQRBrIgIkAAJAIAAgAykDABCzASIERQRAQoCAgIDgACEBDAELAn5CgICAgOAAIAAgAkEMaiADKQMIEHcNABogAigCDCIDBEBCgICAgMB+IANBJWtBXUkNARoLIAAgBBCBAiAEakEAIANBgQgQuAILIQEgACAEEFQLIAJBEGokACABCwkAIAAgARDdAgujAQIBfgF/IwBBEGsiAiQAAn4gACABEN0CIgVCgICAgHCDQoCAgIDgAFEEQCAFDAELQQohBgJAAkAgBA0AIAMpAwAiAUKAgICAcINCgICAgDBRDQAgACABEI4FIgZBAEgNAQtCgICAgOAAIAAgAkEIaiAFEG4NARogACACKwMIIAZBAEEAEI8CDAELIAAgBRAPQoCAgIDgAAshASACQRBqJAAgAQuMAgIBfgF8IwBBEGsiAiQAQoCAgIDgACEEAkAgACABEN0CIgFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsgACACIAEQbg0AAkACQCADKQMAIgFCgICAgHCDQoCAgIAwUQRAIAIpAwAhAQwBCyAAIAJBDGogARC6AQ0CIAIrAwAiBb0iAUKAgICAgICA+P8Ag0KAgICAgICA+P8AUg0BCyAAQoCAgIDAfiABQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbEDchBAwBCyACKAIMIgNB5QBrQZt/TQRAIABBijRBABBQDAELIAAgBUEKIANBARCPAiEECyACQRBqJAAgBAvYAQIBfgF8IwBBEGsiAiQAQoCAgIDgACEEAkAgACABEN0CIgFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsgACACIAEQbg0AIAAgAkEMaiADKQMAELoBDQAgAigCDCIDQeUATwRAIABBijRB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LUiv7z8IIKpBvMOOPCdaYe4buu8/Muupw5QrhDyXums3K8XvP+6F0TGpZIo8QEVuW3bQ7z/t4zvkujeOvBS+nK392+8/nc2RTTuJdzzYkJ6BwefvP4nMYEHBBVM88XGPK8Lz7z8AAAAAAADwPwAAAAAAAPg/AAAAAAAAAAAG0M9D6/1MPgBBmxkL54UBQAO44j8oKXt9ACgpe3N1cGVyKC4uLmFyZ3VtZW50cyk7fQAoKSB7CiAgICBbbmF0aXZlIGNvZGVdCn0AY2Fubm90IG1peCA/PyB3aXRoICYmIG9yIHx8AGN0egBwcm94eTogcHJvcGVydHkgbm90IHByZXNlbnQgaW4gdGFyZ2V0IHdlcmUgcmV0dXJuZWQgYnkgbm9uIGV4dGVuc2libGUgcHJveHkAcmV2b2tlZCBwcm94eQBQcm94eQBhZGRfcHJvcGVydHkAcHJveHk6IGNhbm5vdCBzZXQgcHJvcGVydHkAbm8gc2V0dGVyIGZvciBwcm9wZXJ0eQB2YWx1ZSBoYXMgbm8gcHJvcGVydHkAY291bGQgbm90IGRlbGV0ZSBwcm9wZXJ0eQBwcm94eTogZHVwbGljYXRlIHByb3BlcnR5AEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAaGFzT3duUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWxldGVQcm9wZXJ0eQBwcm94eTogaW5jb25zaXN0ZW50IGRlZmluZVByb3BlcnR5AEpTX0RlZmluZVByb3BlcnR5ACFtci0+ZW1wdHkAaW5maW5pdHkASW5maW5pdHkAb3V0IG9mIG1lbW9yeQB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQBHZW5lcmFsX0NhdGVnb3J5AGV2ZXJ5AGFueQBhcHBseQAnJXMnIGlzIHJlYWQtb25seQBleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBzdGlja3kAYmlnaW50IGFyZSBmb3JiaWRkZW4gaW4gSlNPTi5zdHJpbmdpZnkAc3ViYXJyYXkAZW1wdHkgYXJyYXkAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGNhbm5vdCBjcmVhdGUgbnVtZXJpYyBpbmRleCBpbiB0eXBlZCBhcnJheQBpc0FycmF5AFR5cGVkQXJyYXkAZ2V0RGF5AGdldFVUQ0RheQBqc19nZXRfYXRvbV9pbmRleABpbnZhbGlkIGFycmF5IGluZGV4AG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AEpTX0F0b21Jc0FycmF5SW5kZXgAZmluZEluZGV4AGludmFsaWQgZXhwb3J0IHN5bnRheABpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AG1heABcdSUwNHgAaW52YWxpZCBvcGNvZGU6IHBjPSV1IG9wY29kZT0weCUwMngALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABsaW5lIHRlcm1pbmF0b3Igbm90IGFsbG93ZWQgYWZ0ZXIgdGhyb3cAYmZfcG93AG5vdwBpbnRlZ2VyIG92ZXJmbG93AHN0YWNrIG92ZXJmbG93AG11c3QgYmUgY2FsbGVkIHdpdGggbmV3AGlzVmlldwBEYXRhVmlldwByYXcAdGRpdgBmZGl2AGVkaXYAY2RpdgAldQBjbGFzcyBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmdW5jdGlvbiBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABsZXhpY2FsIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGR1cGxpY2F0ZSBhcmd1bWVudCBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAaW1wb3J0Lm1ldGEgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvbnRleHQASlNfRnJlZUNvbnRleHQASlNDb250ZXh0AGpzX21hcF9pdGVyYXRvcl9uZXh0AGpzX2FzeW5jX2dlbmVyYXRvcl9yZXN1bWVfbmV4dAB1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dAB0dABleHBvcnRlZCB2YXJpYWJsZSAnJXMnIGRvZXMgbm90IGV4aXN0AHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdAB0ZXN0AGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAYmZfc3FydABzb3J0AGNicnQAdHJpbVN0YXJ0AHBhZFN0YXJ0AHVua25vd24gdW5pY29kZSBzY3JpcHQAU2NyaXB0AGh5cG90AGZyZWVfemVyb19yZWZjb3VudABmYXN0X2FycmF5X2NvdW50AGJpbmFyeV9vYmplY3RfY291bnQAc3RyX2luZGV4ID09IG51bV9rZXlzX2NvdW50ICsgc3RyX2tleXNfY291bnQAbnVtX2luZGV4ID09IG51bV9rZXlzX2NvdW50AHN0cl9jb3VudABwcm9wX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudABsYWIxID49IDAgJiYgbGFiMSA8IHMtPmxhYmVsX2NvdW50AG9ial9jb3VudAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AHZhbDIgPCBzLT5jYXB0dXJlX2NvdW50AHNoYXBlX2NvdW50AGpzX2Z1bmNfcGMybGluZV9jb3VudABtZW1vcnlfdXNlZF9jb3VudABtYWxsb2NfY291bnQAanNfZnVuY19jb3VudABjX2Z1bmNfY291bnQAaW52YWxpZCByZXBlYXQgY291bnQAaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGZvbnQAaW52YWxpZCBjb2RlIHBvaW50AGZyb21Db2RlUG9pbnQAaW52YWxpZCBoaW50AGNhbm5vdCBjb252ZXJ0IE5hTiBvciBJbmZpbml0eSB0byBiaWdpbnQAY2Fubm90IGNvbnZlcnQgdG8gYmlnaW50AGJvdGggb3BlcmFuZHMgbXVzdCBiZSBiaWdpbnQAbm90IGEgYmlnaW50AGVuY29kZVVSSUNvbXBvbmVudABkZWNvZGVVUklDb21wb25lbnQAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAQmlnSW50AHBhcnNlSW50AGR1cGxpY2F0ZSBkZWZhdWx0AG1hbGxvY19saW1pdABzcGxpdABleHBlY3RpbmcgaGV4IGRpZ2l0AHRyaW1SaWdodAByZWR1Y2VSaWdodAB1bnNoaWZ0AHRyaW1MZWZ0AGludmFsaWQgb2Zmc2V0AGludmFsaWQgYnl0ZU9mZnNldABnZXRUaW1lem9uZU9mZnNldAByZXNvbHZpbmcgZnVuY3Rpb24gYWxyZWFkeSBzZXQAcHJveHk6IGluY29uc2lzdGVudCBzZXQAZmluZF9qdW1wX3RhcmdldABleHBlY3RpbmcgdGFyZ2V0AGludmFsaWQgZGVzdHJ1Y3R1cmluZyB0YXJnZXQAcHJveHk6IGluY29uc2lzdGVudCBnZXQAV2Vha1NldABjb25zdHJ1Y3QASlNfRnJlZUF0b21TdHJ1Y3QAdXNlIHN0cmljdABSZWZsZWN0AHJlamVjdABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AGNhbm5vdCBjb252ZXJ0IHRvIG9iamVjdABpbnZhbGlkIGJyYW5kIG9uIG9iamVjdABvcGVyYW5kICdwcm90b3R5cGUnIHByb3BlcnR5IGlzIG5vdCBhbiBvYmplY3QAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAbm90IGEgRGF0ZSBvYmplY3QAbm90IGEgb2JqZWN0AEpTT2JqZWN0AGJpZ2Zsb2F0AHBhcnNlRmxvYXQAZmxhdABub3RoaW5nIHRvIHJlcGVhdABjb25jYXQAY29kZVBvaW50QXQAY2hhckF0AGNoYXJDb2RlQXQAa2V5cwBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzACAgZmFzdCBhcnJheXMAZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycgaXMgYW1iaWd1b3VzAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBhcmd1bWVudHMAVG9vIG1hbnkgY2FsbCBhcmd1bWVudHMAZmFzdF9hcnJheV9lbGVtZW50cwAgIGVsZW1lbnRzAGludmFsaWQgbnVtYmVyIG9mIGRpZ2l0cwBiaW5hcnkgb2JqZWN0cwBpbnZhbGlkIHByb3BlcnR5IGFjY2VzcwBqc19vcF9kZWZpbmVfY2xhc3MAZmQtPmJ5dGVfY29kZS5idWZbZGVmaW5lX2NsYXNzX3Bvc10gPT0gT1BfZGVmaW5lX2NsYXNzAF9fZ2V0Q2xhc3MAc2V0SG91cnMAZ2V0SG91cnMAc2V0VVRDSG91cnMAZ2V0VVRDSG91cnMAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycwB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHVuaWNvZGVfcHJvcF9vcHMAYWNvcwBmb3IgYXdhaXQgaXMgb25seSB2YWxpZCBpbiBhc3luY2hyb25vdXMgZnVuY3Rpb25zAG5ldy50YXJnZXQgb25seSBhbGxvd2VkIHdpdGhpbiBmdW5jdGlvbnMAYnl0ZWNvZGUgZnVuY3Rpb25zAEMgZnVuY3Rpb25zAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAU2NyaXB0X0V4dGVuc2lvbnMAYXRvbXMAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAHJlc29sdmVfbGFiZWxzAEpTX0V2YWxUaGlzAHN0cmluZ3MAaW52YWxpZCBkZXNjcmlwdG9yIGZsYWdzAGludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdzAHZhbHVlcwBzZXRNaW51dGVzAGdldE1pbnV0ZXMAc2V0VVRDTWludXRlcwBnZXRVVENNaW51dGVzAHRvbyBtYW55IGNhcHR1cmVzACAgc2hhcGVzAGdldE93blByb3BlcnR5TmFtZXMAZ2NfZnJlZV9jeWNsZXMAYWRkX2V2YWxfdmFyaWFibGVzAHJlc29sdmVfdmFyaWFibGVzAHRvbyBtYW55IGxvY2FsIHZhcmlhYmxlcwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBjb21wYWN0X3Byb3BlcnRpZXMAICBwcm9wZXJ0aWVzAGRlZmluZVByb3BlcnRpZXMAZW50cmllcwBmcm9tRW50cmllcwB0b28gbWFueSByYW5nZXMAaW5jbHVkZXMAc2V0TWlsbGlzZWNvbmRzAGdldE1pbGxpc2Vjb25kcwBzZXRVVENNaWxsaXNlY29uZHMAZ2V0VVRDTWlsbGlzZWNvbmRzAHNldFNlY29uZHMAZ2V0U2Vjb25kcwBzZXRVVENTZWNvbmRzAGdldFVUQ1NlY29uZHMAaXRhbGljcwBhYnMAcHJveHk6IGluY29uc2lzdGVudCBoYXMAJS4qcwAgKCVzAHNldCAlcwBnZXQgJXMAICAgIGF0ICVzAG5vIG92ZXJsb2FkZWQgb3BlcmF0b3IgJXMAbm90IGEgJXMAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAc3Vic3RyAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAbm90IGEgY29uc3RydWN0b3IAQXJyYXkgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAE1hcCBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAY2Fubm90IGludm9rZSBhIHJ1bm5pbmcgZ2VuZXJhdG9yAG5vdCBhIGdlbmVyYXRvcgBBc3luY0dlbmVyYXRvcgBzeW50YXggZXJyb3IAU3ludGF4RXJyb3IARXZhbEVycm9yAEludGVybmFsRXJyb3IAQWdncmVnYXRlRXJyb3IAVHlwZUVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAVVJJRXJyb3IAZmxvb3IAZm9udGNvbG9yAGFuY2hvcgBmb3IAa2V5Rm9yAGV4cGVjdGluZyBzdXJyb2dhdGUgcGFpcgBhIGRlY2xhcmF0aW9uIGluIHRoZSBoZWFkIG9mIGEgZm9yLSVzIGxvb3AgY2FuJ3QgaGF2ZSBhbiBpbml0aWFsaXplcgAnYXJndW1lbnRzJyBpZGVudGlmaWVyIGlzIG5vdCBhbGxvd2VkIGluIGNsYXNzIGZpZWxkIGluaXRpYWxpemVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgBpbnZhbGlkIHNldHRlcgBpbnZhbGlkIGdldHRlcgBmaWx0ZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBjaGFyYWN0ZXIAdW5leHBlY3RlZCBjaGFyYWN0ZXIAcHJpdmF0ZSBjbGFzcyBmaWVsZCBmb3JiaWRkZW4gYWZ0ZXIgc3VwZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllcgB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAb3RoZXIAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAGNhbm5vdCBjb252ZXJ0IHRvIGJpZ2ludDogbm90IGFuIGludGVnZXIAaXNJbnRlZ2VyAGlzU2FmZUludGVnZXIAYnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAGNhbm5vdCB1c2UgaWRlbnRpY2FsIEFycmF5QnVmZmVyAGNhbm5vdCBjb252ZXJ0IGJpZ2ludCB0byBudW1iZXIAY2Fubm90IGNvbnZlcnQgYmlnZmxvYXQgdG8gbnVtYmVyAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBudW1iZXIAY2Fubm90IGNvbnZlcnQgYmlnZGVjaW1hbCB0byBudW1iZXIAbm90IGEgbnVtYmVyAGxpbmVOdW1iZXIAbWFsZm9ybWVkIHVuaWNvZGUgY2hhcgBjbGVhcgBzZXRZZWFyAGdldFllYXIAc2V0RnVsbFllYXIAZ2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAcSAhPSByAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVuZCBvZiByZWdleHAAUmVnRXhwAHN1cABpbnZhbGlkIGdyb3VwAHBvcABjb250aW51ZSBtdXN0IGJlIGluc2lkZSBsb29wAGJmX2xvZ2ljX29wAG51bV9rZXlzX2NtcAB1c2Ugc3RyaXAAbWFwAGZsYXRNYXAAV2Vha01hcABleHBlY3RpbmcgJ3snIGFmdGVyIFxwAGxvZzFwAGRpdmlzaW9uIGJ5IHplcm8AdW5rbm93bgBpdGVyYXRvcl9jbG9zZV9yZXR1cm4AcHJvbWlzZSBzZWxmIHJlc29sdXRpb24Ab3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGRlc2NyaXB0aW9uAHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24AanNfY3JlYXRlX2Z1bmN0aW9uAHNldC9hZGQgaXMgbm90IGEgZnVuY3Rpb24AcmV0dXJuIG5vdCBpbiBhIGZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBpbnZhbGlkIG9wZXJhdGlvbgB1bnN1cHBvcnRlZCBvcGVyYXRpb24AYXdhaXQgaW4gZGVmYXVsdCBleHByZXNzaW9uAHlpZWxkIGluIGRlZmF1bHQgZXhwcmVzc2lvbgBpbnZhbGlkIGRlY2ltYWwgZXNjYXBlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgBiYWNrIHJlZmVyZW5jZSBvdXQgb2YgcmFuZ2UgaW4gcmVndWxhciBleHByZXNzaW9uAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgBleHBlY3RlZCAnb2YnIG9yICdpbicgaW4gZm9yIGNvbnRyb2wgZXhwcmVzc2lvbgB0b28gY29tcGxpY2F0ZWQgZGVzdHJ1Y3R1cmluZyBleHByZXNzaW9uAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAHRvUHJlY2lzaW9uAGFzaW4Aam9pbgBtaW4AY29weVdpdGhpbgB0ZW1wbGF0ZSBsaXRlcmFsIGNhbm5vdCBhcHBlYXIgaW4gYW4gb3B0aW9uYWwgY2hhaW4AY2lyY3VsYXIgcHJvdG90eXBlIGNoYWluAGFzc2lnbgAheS0+c2lnbgBpc0Zyb3plbgBtYXJrX2NoaWxkcmVuAChwb3MgKyBsZW4pIDw9IGJjX2J1Zl9sZW4AdW5leHBlY3RlZCBlbGxpcHNpcyB0b2tlbgB0aGVuAHNldHRlciBpcyBmb3JiaWRkZW4AbnVsbCBvciB1bmRlZmluZWQgYXJlIGZvcmJpZGRlbgBhdGFuAG5hbgBub3QgYSBib29sZWFuAEJvb2xlYW4AZ2Nfc2NhbgBiYWQgbm9ybWFsaXphdGlvbiBmb3JtAEpTX05ld1N5bWJvbEZyb21BdG9tAGZyb20AcmFuZG9tAHRyaW0AdGRpdnJlbQBmZGl2cmVtAGVkaXZyZW0AY2RpdnJlbQBiZl9kaXZyZW0Ac3FydHJlbQBpbXVsAG5vdCBhIHN5bWJvbABTeW1ib2wAUmVnRXhwIGV4ZWMgbWV0aG9kIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsAHBhcmVudCBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3Qgb3IgbnVsbABjYW5ub3Qgc2V0IHByb3BlcnR5ICclcycgb2YgbnVsbABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwATnVsbABmaWxsAG5ldyBBcnJheUJ1ZmZlciBpcyB0b28gc21hbGwAVHlwZWRBcnJheSBsZW5ndGggaXMgdG9vIHNtYWxsAGNhbGwAZG90QWxsAG1hdGNoQWxsAHJlcGxhY2VBbGwAY2VpbAB1cGRhdGVfbGFiZWwAYmNfYnVmW3Bvc10gPT0gT1BfbGFiZWwAZXZhbABpbnZhbGlkIGJpZ2ludCBsaXRlcmFsAGludmFsaWQgbnVtYmVyIGxpdGVyYWwAbWFsZm9ybWVkIGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmcgbGl0ZXJhbABiZl9leHBfaW50ZXJuYWwAYmZfbG9nX2ludGVybmFsAEpTX1NldFByb3BlcnR5SW50ZXJuYWwASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAF9fSlNfRXZhbEludGVybmFsAGJpZ2RlY2ltYWwAbnR0X2ZmdF9wYXJ0aWFsAHRvRXhwb25lbnRpYWwAc2VhbABnbG9iYWwAYmxpbmsAX19kYXRlX2Nsb2NrAHN0YWNrAGxyZV9leGVjX2JhY2t0cmFjawBzLT5pc193ZWFrAGJmX3Bvd191aQBzZXRNb250aABnZXRNb250aABzZXRVVENNb250aABnZXRVVENNb250aABpbnZhbGlkIGtleXdvcmQ6IHdpdGgAc3RhcnRzV2l0aABlbmRzV2l0aABwcm9wID09IEpTX0FUT01fbGVuZ3RoAGludmFsaWQgYXJyYXkgbGVuZ3RoAGludmFsaWQgYXJyYXkgYnVmZmVyIGxlbmd0aABpbnZhbGlkIGxlbmd0aABpbnZhbGlkIGJ5dGVMZW5ndGgAdXNlIG1hdGgATWF0aABwdXNoAGFjb3NoAEpTX1Jlc2l6ZUF0b21IYXNoAGFzaW5oAGF0YW5oAGJyZWFrIG11c3QgYmUgaW5zaWRlIGxvb3Agb3Igc3dpdGNoAG1hdGNoAGNhdGNoAHNlYXJjaABmb3JFYWNoAGJmX2xvZwBBcnJheSB0b28gbG9uZwBzdHJpbmcgdG9vIGxvbmcAQXJyYXkgbG9vIGxvbmcAc3Vic3RyaW5nAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBzdHJpbmcAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAG5vdCBhIHN0cmluZwBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAHRvU3RyaW5nAHRvRGF0ZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9UaW1lU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwB0b0xvY2FsZVN0cmluZwB0b0dNVFN0cmluZwBKU1N0cmluZwB0b0lTT1N0cmluZwB0b1VUQ1N0cmluZwBkdXBsaWNhdGUgaW1wb3J0IGJpbmRpbmcAaW52YWxpZCBpbXBvcnQgYmluZGluZwBiaWcAcmVnZXhwIG11c3QgaGF2ZSB0aGUgJ2cnIGZsYWcAb2YAaW5mAGRpZmYgPT0gKGludDhfdClkaWZmAGRpZmYgPT0gKGludDE2X3QpZGlmZgBocmVmAGdjX2RlY3JlZgBmcmVlX3Zhcl9yZWYAb3B0aW1pemVfc2NvcGVfbWFrZV9nbG9iYWxfcmVmAHJlc2V0X3dlYWtfcmVmAGRlbGV0ZV93ZWFrX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBpbmRleE9mAGxhc3RJbmRleE9mAHZhbHVlT2YAc2V0UHJvdG90eXBlT2YAZ2V0UHJvdG90eXBlT2YAaXNQcm90b3R5cGVPZgAlLipmAGZvbnRzaXplAGJpbmFyeV9vYmplY3Rfc2l6ZQBzdHJfc2l6ZQBuZXdfc2l6ZSA8PSBzaC0+cHJvcF9zaXplAGRlc2NyIDwgcnQtPmF0b21fc2l6ZQBhdG9tIDwgcnQtPmF0b21fc2l6ZQBjb21wdXRlX3N0YWNrX3NpemUAb2JqX3NpemUAbiA8IGJ1Zl9zaXplAHNoYXBlX3NpemUAanNfZnVuY19wYzJsaW5lX3NpemUAanNfZnVuY19jb2RlX3NpemUAbWVtb3J5X3VzZWRfc2l6ZQBqc19mdW5jX3NpemUAbm9ybWFsaXplAGZyZWV6ZQByZXNvbHZlAHRvUHJpbWl0aXZlAHB1dF9sdmFsdWUAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAHJlc3QgZWxlbWVudCBjYW5ub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAaW52YWxpZCByZXQgdmFsdWUAX19KU19BdG9tVG9WYWx1ZQBfX3F1b3RlAGlzRmluaXRlAGRlbGV0ZQBjcmVhdGUAc2V0RGF0ZQBnZXREYXRlAHNldFVUQ0RhdGUAZ2V0VVRDRGF0ZQBJbnZhbGlkIERhdGUAcmV2ZXJzZQBwYXJzZQBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAFByb21pc2UAdG9Mb3dlckNhc2UAdG9Mb2NhbGVMb3dlckNhc2UAdG9VcHBlckNhc2UAdG9Mb2NhbGVVcHBlckNhc2UAaWdub3JlQ2FzZQBsb2NhbGVDb21wYXJlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJvdG90eXBlAHByb3h5OiBiYWQgcHJvdG90eXBlAG5vdCBhIHByb3RvdHlwZQBpbnZhbGlkIG9iamVjdCB0eXBlAHVuZXNjYXBlAG5vbmUAcmVzdCBlbGVtZW50IG11c3QgYmUgdGhlIGxhc3Qgb25lAG11bHRpbGluZQAgIHBjMmxpbmUAc29tZQBKU19GcmVlUnVudGltZQBKU1J1bnRpbWUAc2V0VGltZQBnZXRUaW1lAHNldF9vYmplY3RfbmFtZQBleHBlY3RpbmcgcHJvcGVydHkgbmFtZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQBpbnZhbGlkIHByb3BlcnR5IG5hbWUAZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGV4cGVjdGluZyBncm91cCBuYW1lAGR1cGxpY2F0ZSBncm91cCBuYW1lAGludmFsaWQgZ3JvdXAgbmFtZQBkdXBsaWNhdGUgbGFiZWwgbmFtZQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBleHBlY3RpbmcgZmllbGQgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAY2xhc3Mgc3RhdGVtZW50IHJlcXVpcmVzIGEgbmFtZQBmaWxlTmFtZQBjb21waWxlAG9iamVjdCBpcyBub3QgZXh0ZW5zaWJsZQBwcm94eTogaW5jb25zaXN0ZW50IGlzRXh0ZW5zaWJsZQBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlAHZhbHVlIGlzIG5vdCBpdGVyYWJsZQBwcm9wZXJ0eUlzRW51bWVyYWJsZQBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQBsZXhpY2FsIHZhcmlhYmxlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAcmV2b2NhYmxlAHN0cmlrZQBtcF9kaXZub3JtX2xhcmdlAGludmFsaWQgY2xhc3MgcmFuZ2UAbWVzc2FnZQBhc3luY19mdW5jX2ZyZWUAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGNhbm5vdCBkZWxldGUgYSBkaXJlY3QgcmVmZXJlbmNlIGluIHN0cmljdCBtb2RlAG9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlAG9jdGFsIGxpdGVyYWxzIGFyZSBkZXByZWNhdGVkIGluIHN0cmljdCBtb2RlAHVuaWNvZGUAICBieXRlY29kZQBKU0Z1bmN0aW9uQnl0ZWNvZGUAc2tpcF9kZWFkX2NvZGUAaW52YWxpZCBhcmd1bWVudCBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllciBpbiBtb2R1bGUgY29kZQBpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGZyb21DaGFyQ29kZQBpbnZhbGlkIGZvciBpbi9vZiBsZWZ0IGhhbmQtc2lkZQBpbnZhbGlkIGFzc2lnbm1lbnQgbGVmdC1oYW5kIHNpZGUAcmVkdWNlAHNvdXJjZQAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBwcm9wZXJ0eSBjb25zdHJ1Y3RvciBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlAGludmFsaWQgVVRGLTggc2VxdWVuY2UAY2lyY3VsYXIgcmVmZXJlbmNlAHNsaWNlAHNwbGljZQByYWNlAHJlcGxhY2UAJSsuKmUAdW5leHBlY3RlZCAnYXdhaXQnIGtleXdvcmQAdW5leHBlY3RlZCAneWllbGQnIGtleXdvcmQAbWFwX2RlY3JlZl9yZWNvcmQAaXRlcmF0b3IgZG9lcyBub3QgaGF2ZSBhIHRocm93IG1ldGhvZABvYmplY3QgbmVlZHMgdG9JU09TdHJpbmcgbWV0aG9kACdzdXBlcicgaXMgb25seSB2YWxpZCBpbiBhIG1ldGhvZABmcm91bmQAX19iZl9yb3VuZABicmVhay9jb250aW51ZSBsYWJlbCBub3QgZm91bmQAb3V0IG9mIGJvdW5kAGZpbmQAYmluZABpbnZhbGlkIGluZGV4IGZvciBhcHBlbmQAZXh0cmFuZW91cyBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAdW5leHBlY3RlZCBlbmQAaW52YWxpZCBpbmNyZW1lbnQvZGVjcmVtZW50IG9wZXJhbmQAaW52YWxpZCAnaW5zdGFuY2VvZicgcmlnaHQgb3BlcmFuZABpbnZhbGlkICdpbicgb3BlcmFuZAB0cmltRW5kAHBhZEVuZABib2xkACVsbGQAZ2NfZGVjcmVmX2NoaWxkAHJlc29sdmVfc2NvcGVfcHJpdmF0ZV9maWVsZABjYW5ub3QgZGVsZXRlIGEgcHJpdmF0ZSBjbGFzcyBmaWVsZABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkACVzIGlzIG5vdCBpbml0aWFsaXplZABmaXhlZAB0b0ZpeGVkAHNldF9vYmplY3RfbmFtZV9jb21wdXRlZAByZWdleCBub3Qgc3VwcG9ydGVkAGV2YWwgaXMgbm90IHN1cHBvcnRlZABSZWdFeHAgYXJlIG5vdCBzdXBwb3J0ZWQAaW50ZXJydXB0ZWQAJXMgb2JqZWN0IGV4cGVjdGVkAGlkZW50aWZpZXIgZXhwZWN0ZWQAYnl0ZWNvZGUgZnVuY3Rpb24gZXhwZWN0ZWQAc3RyaW5nIGV4cGVjdGVkAGZyb20gY2xhdXNlIGV4cGVjdGVkAGZ1bmN0aW9uIG5hbWUgZXhwZWN0ZWQAdmFyaWFibGUgbmFtZSBleHBlY3RlZABtZXRhIGV4cGVjdGVkAHJlamVjdGVkAG1lbW9yeSBhbGxvY2F0ZWQAbWVtb3J5IHVzZWQAZGVyaXZlZCBjbGFzcyBjb25zdHJ1Y3RvciBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAY2Fubm90IHJlYWQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAZmxhZ3MgbXVzdCBiZSB1bmRlZmluZWQAVW5kZWZpbmVkAHByaXZhdGUgY2xhc3MgZmllbGQgaXMgYWxyZWFkeSBkZWZpbmVkACclcycgaXMgbm90IGRlZmluZWQAZ3JvdXAgbmFtZSBub3QgZGVmaW5lZABvcGVyYXRvciAlczogbm8gZnVuY3Rpb24gZGVmaW5lZABhbGxTZXR0bGVkAGZ1bGZpbGxlZABjYW5ub3QgYmUgY2FsbGVkAGlzU2VhbGVkACFzaC0+aXNfaGFzaGVkAHZhcl9yZWYtPmlzX2RldGFjaGVkAEFycmF5QnVmZmVyIGlzIGRldGFjaGVkAGFkZAAlKzA3ZAAlMDRkACUwMmQlMDJkACUwMmQvJTAyZC8lMCpkACUuM3MgJS4zcyAlMDJkICUwKmQAOiVkAGludmFsaWQgdGhyb3cgdmFyIHR5cGUgJWQAc2MAanNfZGVmX21hbGxvYwB0cnVuYwBnYwBleGVjAGJmX2ludGVnZXJfdG9fcmFkaXhfcmVjAHF1aWNranMvcXVpY2tqcy5jAHF1aWNranMvbGlicmVnZXhwLmMAcXVpY2tqcy9saWJiZi5jAHF1aWNranMvbGlidW5pY29kZS5jAHN1YgBwcm9taXNlX3JlYWN0aW9uX2pvYgBqc19wcm9taXNlX3Jlc29sdmVfdGhlbmFibGVfam9iAHIgIT0gYSAmJiByICE9IGIAcSAhPSBhICYmIHEgIT0gYgByd2EAciAhPSBhAF9fbG9va3VwU2V0dGVyX18AX19kZWZpbmVTZXR0ZXJfXwBfX2xvb2t1cEdldHRlcl9fAF9fZGVmaW5lR2V0dGVyX18AX19wcm90b19fAFtTeW1ib2wuc3BsaXRdAFtTeW1ib2wuc3BlY2llc10AW1N5bWJvbC5pdGVyYXRvcl0AW1N5bWJvbC5hc3luY0l0ZXJhdG9yXQBbU3ltYm9sLm1hdGNoQWxsXQBbU3ltYm9sLm1hdGNoXQBbU3ltYm9sLnNlYXJjaF0AW1N5bWJvbC50b1N0cmluZ1RhZ10AW1N5bWJvbC50b1ByaW1pdGl2ZV0AW3Vuc3VwcG9ydGVkIHR5cGVdAFtmdW5jdGlvbiBieXRlY29kZV0AW1N5bWJvbC5oYXNJbnN0YW5jZV0AW1N5bWJvbC5yZXBsYWNlXQBbACUwMmQ6JTAyZDolMDJkLiUwM2RaAFBPU0lUSVZFX0lORklOSVRZAE5FR0FUSVZFX0lORklOSVRZAHAtPmNsYXNzX2lkID09IEpTX0NMQVNTX0FSUkFZAHN0YWNrX2xlbiA8IFBPUF9TVEFDS19MRU5fTUFYAC0lMDJkLSUwMmRUAEpTX0F0b21HZXRTdHJSVABvcGNvZGUgPCBSRU9QX0NPVU5UAEJZVEVTX1BFUl9FTEVNRU5UACUwMmQ6JTAyZDolMDJkIEdNVABKU19WQUxVRV9HRVRfVEFHKHNmLT5jdXJfZnVuYykgPT0gSlNfVEFHX09CSkVDVAB2YXJfa2luZCA9PSBKU19WQVJfUFJJVkFURV9TRVRURVIATUFYX1NBRkVfSU5URUdFUgBNSU5fU0FGRV9JTlRFR0VSAGFzVWludE4AYXNJbnROAGlzTmFOAERhdGUgdmFsdWUgaXMgTmFOAHRvSlNPTgBFUFNJTE9OAE5BTgAlMDJkOiUwMmQ6JTAyZCAlY00Acy0+bGFiZWxfc2xvdHNbbGFiZWxdLmZpcnN0X3JlbG9jID09IE5VTEwAbGFiZWxfc2xvdHNbaV0uZmlyc3RfcmVsb2MgPT0gTlVMTABwcnMgIT0gTlVMTABzZi0+Y3VyX3NwICE9IE5VTEwAc2YgIT0gTlVMTABtcjEgIT0gTlVMTAB2YXJfa2luZCAhPSBKU19WQVJfTk9STUFMAGItPmZ1bmNfa2luZCA9PSBKU19GVU5DX05PUk1BTABlbmNvZGVVUkkAZGVjb2RlVVJJAFBJAHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVAgfHwgc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUF9ERVBUSABzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfRVhFQ1VUSU5HAHByZWMxICE9IEJGX1BSRUNfSU5GADAxMjM0NTY3ODlBQkNERUYAU0laRQBNQVhfVkFMVUUATUlOX1ZBTFVFAE5BTUUAZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9HTE9CQUwgfHwgZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9NT0RVTEUAcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfSlNfT0JKRUNUIHx8IHAtPmdjX29ial90eXBlID09IEpTX0dDX09CSl9UWVBFX0ZVTkNUSU9OX0JZVEVDT0RFAExPRzJFAExPRzEwRQBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAVVRDADxpbnB1dD4APHNldD4APGFub255bW91cz4APGR1bXA+ADxudWxsPgBiaWdpbnQgb3BlcmFuZHMgYXJlIGZvcmJpZGRlbiBmb3IgPj4+ACZxdW90OwBzZXRVaW50OABnZXRVaW50OABzZXRJbnQ4AGdldEludDgAbWFsZm9ybWVkIFVURi04AHJhZGl4IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNgBzZXRVaW50MTYAZ2V0VWludDE2AHNldEludDE2AGdldEludDE2AGFyZ2MgPT0gNQBzZXRCaWdVaW50NjQAZ2V0QmlnVWludDY0AHNldEJpZ0ludDY0AGdldEJpZ0ludDY0AHNldEZsb2F0NjQAZ2V0RmxvYXQ2NABhcmdjID09IDMAYXRhbjIAbG9nMgBmbG9vckxvZzIAU1FSVDFfMgBTUVJUMgBMTjIAY2x6MzIAc2V0VWludDMyAGdldFVpbnQzMgBzZXRJbnQzMgBnZXRJbnQzMgBzZXRGbG9hdDMyAGdldEZsb2F0MzIAc3RhY2tfbGVuID49IDIASlNfQXRvbUlzTnVtZXJpY0luZGV4MQBqc19mY3Z0MQBKU19Db21wYWN0QmlnSW50MQBleHBtMQByICE9IGExICYmIHIgIT0gYjEAbHMtPmFkZHIgPT0gLTEAbnEgPj0gMQBzdGFja19sZW4gPj0gMQBwLT5oZWFkZXIucmVmX2NvdW50ID09IDEAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBzdGFja19sZW4gPT0gMQBqc19mcmVlX3NoYXBlMABsb2cxMABMTjEwAHAtPnJlZl9jb3VudCA+IDAAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAc3RhY2tfc2l6ZSA+IDAAY3Bvb2xfaWR4ID49IDAAcnQtPmF0b21fY291bnQgPj0gMABscy0+cmVmX2NvdW50ID49IDAAcy0+aXNfZXZhbCB8fCBzLT5jbG9zdXJlX3Zhcl9jb3VudCA9PSAwAHAtPnJlZl9jb3VudCA9PSAwAGN0eC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHNoLT5oZWFkZXIucmVmX2NvdW50ID09IDAAcC0+bWFyayA9PSAwAChuMiAlIHN0cmlwX2xlbikgPT0gMAAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAChuZXdfaGFzaF9zaXplICYgKG5ld19oYXNoX3NpemUgLSAxKSkgPT0gMABpICE9IDAAc2l6ZSAhPSAwAF4kXC4qKz8oKVtde318LwA8LwAwLgBtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgBiaWdpbnQgYXJndW1lbnQgd2l0aCB1bmFyeSArAGFzeW5jIGZ1bmN0aW9uICoACn0pAGxpc3RfZW1wdHkoJnJ0LT5nY19vYmpfbGlzdCkAaiA9PSAoc2gtPnByb3BfY291bnQgLSBzaC0+ZGVsZXRlZF9wcm9wX2NvdW50KQBKU19Jc1VuZGVmaW5lZChmdW5jX3JldCkAIV9fSlNfQXRvbUlzVGFnZ2VkSW50KGRlc2NyKQAhYXRvbV9pc19mcmVlKHApAChudWxsKQAgKG5hdGl2ZSkAanNfY2xhc3NfaGFzX2J5dGVjb2RlKHAtPmNsYXNzX2lkKQB1bmNvbnNpc3RlbnQgc3RhY2sgc2l6ZTogJWQgJWQgKHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpACg/OikAbm8gZnVuY3Rpb24gZmlsZW5hbWUgZm9yIGltcG9ydCgpAC1fLiF+KicoKQAgYW5vbnltb3VzKABTeW1ib2woAGV4cGVjdGluZyAnfScAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAGV4cGVjdGluZyAnYXMnAHVuZXhwZWN0ZWQgdG9rZW4gaW4gZXhwcmVzc2lvbjogJyUuKnMnAHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwByZWRlY2xhcmF0aW9uIG9mICclcycAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjaXJjdWxhciByZWZlcmVuY2Ugd2hlbiBsb29raW5nIGZvciBleHBvcnQgJyVzJyBpbiBtb2R1bGUgJyVzJwBDb3VsZCBub3QgZmluZCBleHBvcnQg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AJYAAADBAAAAlwAAAJgAAADCAAAAlwAAAJgAAADDAAAAawAAAGwAAADEAAAAmQAAAJoAAADFAAAAmQAAAJoAAAAvAAAAmwAAAJwAAADGAAAAawAAAGwAAADHAAAAnQAAAJ4AAAAAAAAA7h8AAB8gAAAqIAAA4h8AABUgAAA5IAAA+B8AAAYgAABjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAAAAAAEBAgIDAwIDAEGQpwEL3xBudWxsAGZhbHNlAHRydWUAaWYAZWxzZQByZXR1cm4AdmFyAHRoaXMAZGVsZXRlAHZvaWQAdHlwZW9mAG5ldwBpbgBpbnN0YW5jZW9mAGRvAHdoaWxlAGZvcgBicmVhawBjb250aW51ZQBzd2l0Y2gAY2FzZQBkZWZhdWx0AHRocm93AHRyeQBjYXRjaABmaW5hbGx5AGZ1bmN0aW9uAGRlYnVnZ2VyAHdpdGgAY2xhc3MAY29uc3QAZW51bQBleHBvcnQAZXh0ZW5kcwBpbXBvcnQAc3VwZXIAaW1wbGVtZW50cwBpbnRlcmZhY2UAbGV0AHBhY2thZ2UAcHJpdmF0ZQBwcm90ZWN0ZWQAcHVibGljAHN0YXRpYwB5aWVsZABhd2FpdAAAbGVuZ3RoAGZpbGVOYW1lAGxpbmVOdW1iZXIAbWVzc2FnZQBlcnJvcnMAc3RhY2sAbmFtZQB0b1N0cmluZwB0b0xvY2FsZVN0cmluZwB2YWx1ZU9mAGV2YWwAcHJvdG90eXBlAGNvbnN0cnVjdG9yAGNvbmZpZ3VyYWJsZQB3cml0YWJsZQBlbnVtZXJhYmxlAHZhbHVlAGdldABzZXQAb2YAX19wcm90b19fAHVuZGVmaW5lZABudW1iZXIAYm9vbGVhbgBzdHJpbmcAb2JqZWN0AHN5bWJvbABpbnRlZ2VyAHVua25vd24AYXJndW1lbnRzAGNhbGxlZQBjYWxsZXIAPGV2YWw+ADxyZXQ+ADx2YXI+ADxhcmdfdmFyPgA8d2l0aD4AbGFzdEluZGV4AHRhcmdldABpbmRleABpbnB1dABkZWZpbmVQcm9wZXJ0aWVzAGFwcGx5AGpvaW4AY29uY2F0AHNwbGl0AGNvbnN0cnVjdABnZXRQcm90b3R5cGVPZgBzZXRQcm90b3R5cGVPZgBpc0V4dGVuc2libGUAcHJldmVudEV4dGVuc2lvbnMAaGFzAGRlbGV0ZVByb3BlcnR5AGRlZmluZVByb3BlcnR5AGdldE93blByb3BlcnR5RGVzY3JpcHRvcgBvd25LZXlzAGFkZABkb25lAG5leHQAdmFsdWVzAHNvdXJjZQBmbGFncwBnbG9iYWwAdW5pY29kZQByYXcAbmV3LnRhcmdldAB0aGlzLmFjdGl2ZV9mdW5jADxob21lX29iamVjdD4APGNvbXB1dGVkX2ZpZWxkPgA8c3RhdGljX2NvbXB1dGVkX2ZpZWxkPgA8Y2xhc3NfZmllbGRzX2luaXQ+ADxicmFuZD4AI2NvbnN0cnVjdG9yAGFzAGZyb20AbWV0YQAqZGVmYXVsdCoAKgBNb2R1bGUAdGhlbgByZXNvbHZlAHJlamVjdABwcm9taXNlAHByb3h5AHJldm9rZQBhc3luYwBleGVjAGdyb3VwcwBzdGF0dXMAcmVhc29uAGdsb2JhbFRoaXMAYmlnaW50AGJpZ2Zsb2F0AGJpZ2RlY2ltYWwAcm91bmRpbmdNb2RlAG1heGltdW1TaWduaWZpY2FudERpZ2l0cwBtYXhpbXVtRnJhY3Rpb25EaWdpdHMAdG9KU09OAE9iamVjdABBcnJheQBFcnJvcgBOdW1iZXIAU3RyaW5nAEJvb2xlYW4AU3ltYm9sAEFyZ3VtZW50cwBNYXRoAEpTT04ARGF0ZQBGdW5jdGlvbgBHZW5lcmF0b3JGdW5jdGlvbgBGb3JJbkl0ZXJhdG9yAFJlZ0V4cABBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBVaW50OENsYW1wZWRBcnJheQBJbnQ4QXJyYXkAVWludDhBcnJheQBJbnQxNkFycmF5AFVpbnQxNkFycmF5AEludDMyQXJyYXkAVWludDMyQXJyYXkAQmlnSW50NjRBcnJheQBCaWdVaW50NjRBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AEJpZ0ludABCaWdGbG9hdABCaWdGbG9hdEVudgBCaWdEZWNpbWFsAE9wZXJhdG9yU2V0AE9wZXJhdG9ycwBNYXAAU2V0AFdlYWtNYXAAV2Vha1NldABNYXAgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAEFycmF5IEl0ZXJhdG9yAFN0cmluZyBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEdlbmVyYXRvcgBQcm94eQBQcm9taXNlAFByb21pc2VSZXNvbHZlRnVuY3Rpb24AUHJvbWlzZVJlamVjdEZ1bmN0aW9uAEFzeW5jRnVuY3Rpb24AQXN5bmNGdW5jdGlvblJlc29sdmUAQXN5bmNGdW5jdGlvblJlamVjdABBc3luY0dlbmVyYXRvckZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yAEV2YWxFcnJvcgBSYW5nZUVycm9yAFJlZmVyZW5jZUVycm9yAFN5bnRheEVycm9yAFR5cGVFcnJvcgBVUklFcnJvcgBJbnRlcm5hbEVycm9yADxicmFuZD4AU3ltYm9sLnRvUHJpbWl0aXZlAFN5bWJvbC5pdGVyYXRvcgBTeW1ib2wubWF0Y2gAU3ltYm9sLm1hdGNoQWxsAFN5bWJvbC5yZXBsYWNlAFN5bWJvbC5zZWFyY2gAU3ltYm9sLnNwbGl0AFN5bWJvbC50b1N0cmluZ1RhZwBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlAFN5bWJvbC5oYXNJbnN0YW5jZQBTeW1ib2wuc3BlY2llcwBTeW1ib2wudW5zY29wYWJsZXMAU3ltYm9sLmFzeW5jSXRlcmF0b3IAU3ltYm9sLm9wZXJhdG9yU2V0AEGAuAELtQgBAAAABQABFAUAARUFAAEVBQABFwUAARcBAAEAAQABAAEAAQABAAEAAQABAAEAAQACAAEFAwABCgEBAAABAgEAAQMCAAEBAgABAgMAAQIEAAEDBgABAgMAAQMEAAEEBQABAwMAAQQEAAEFBQABAgIAAQQEAAEDAwABAwMAAQQEAAEFBQADAgENAwEBDQMBAA0DAgENAwIADQMAAQ0DAwEKAQEAAAEAAAABAQIAAQAAAAECAgABAgAAAQEAAAEBAAAGAAAYBQEBDwMCAQoBAgEAAQEBAAEBAQAFAAEXBQABFwUAARcFAQAXBQEAFwUCABcBAgMAAQMAAAYAABgGAAAYBgEAGAUBARcFAQIXBQIAFwECAQABAwAAAQMBAAECAQABAgIAAQMAAAEDAQABBAAABQIBFwUBARcBAgIAAQIB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AAABADAAOgBB0IECCxEEADAAOgBBAFsAXwBgAGEAewBB8IECC8QLAQMFAQEBAQUFBQECAgMFBQEBAQICAwMFBQEFAREAAAAwmiAAAJowAHOBWgAwF2AAMAdsALOBbwAAF3AAAAd8AACBfwBAMIAAwwGYAJCBmABABpkAQJCcALSBpABALqUAMAG8AECGvABwgb8AAAHAADCBwABABMEAMAHDAECCwwAwgsQAQILFADABxwAwgccAMAHIAECCyAAwgckAMAHKAACBygAwAcsAMIHLAEACzAAAAc0AMAHOADCBzgAAAc8AMIHPAEAG0AAwAdMAQILTADCB1ABAAtYAMAHXAECC1wAwgtgAQITZADCB2wBAAtwAQALeAACB3wBQA+IAUIPjAFAD5QBAkOYAAIHuAEAS7wC0AfgAUIP4AEAC+gAwAfsAMIH7AEAo/AAwARABQBIRATEBHQFAgh0BMIEeATEBHwEBgh8BQIIgATCBIQEwASIBMIEiAUAKIwEBASgBAYEoAQEBKQEAgSkBAAEqAQACKwEAgSwBAIEtAQEBLgEAATABAYEwAQCBMQEBgTIBAQEzAQABNAEAgTQBAQE1AQGBNQEBATYBAIE3AQGBOAEAATkBAIE6AQGBPgEAAUABAQFBAQCBQQEBgUMBAAFEAQCBRAEAAkUBAAFGAQABSQEBgU4BAQFPAXOBogFABLgBQAK7AQCDvQEwgb8BMAHDATADxAEwAcYBMALHAdAByAEwkcgBMInRAQAB1gEAg9YB0wHYAQCR2AFzAeEBAInhAQAB5gEAguYBMIHnAXMB6AFzgegBc4HqAXMB6wEAgesBQBjsAXMB+AFzgfgBAAH5AQCB+QGgAfoBc4H6AUCC+wEwgfwBQAL9ATCD/gEwEAACMCAIAgAgGAIAECgCQCIwAkA2RQIwAWACQI5gAgCBZwJAYGgCMKaYAgCmsAK1gcMCMSZQCDGBYwgxgWYIACtoCACDfggRUNAJEAb4CSAG/Al0AUAOdIFADnQBQQ50gUEOdAFCDnSBQg50AUMOgIFDDoABRA4wK0gOMINeDgGBvA4Bgb4OAQHHDkB+AA9AGD8PtQFLD7aBSw+2AUwPtoFMD7cBTQ+AgU0PMAFPD0BgUA8ACIAPMAiEDwAGiA8wBowPAAiQDzAIlA8ACJgPMAicDwAGoA8wBqQPsAGoDwCBqA/T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iaCCsQARDAiAqCSBQOs4CYlgTyOAQuCPj48Rl4JAv4mkgEK8gEDhgECUhEEkiUVWEAyDpxOAQKSBQjwfiUFwgUCYikCugrSOnomOg6yKtIkqo42AiSGrgIuCr407gIvRiyhAn4uEiSu2CDEJgoiAiQkyhEC/kYiJGNCTi4lA1DGImoHRkI6J0IyHidKOg4lA8Y5ApInFKAkYAIGLifYxMoCbiacwH4CIiq2PQZQ4h4+Jt5WAjfkqAAgwB4mvIAgniUFIg2BLaIlAhYS6hpiJQ/QAtjPQgIqBYEyqgVTFIi85hp2DQJOCRYixQf+2g7E4jYCVII5FTzCQDgEEQQSGiIlBoY1F1YbsNIlSlYlsBQVA7wBBoKcCC6MS+gYAhAkA8AoAcAwA9A0AShAgGhggdBsg3SAADKgAWqogGv8ArQ4BOBIhwRUh5Rkhqh0hjNFBSuEh8AEOAAAAAEFkbGFtLEFkbG0AQWhvbSxBaG9tAEFuYXRvbGlhbl9IaWVyb2dseXBocyxIbHV3AEFyYWJpYyxBcmFiAEFybWVuaWFuLEFybW4AQXZlc3RhbixBdnN0AEJhbGluZXNlLEJhbGkAQmFtdW0sQmFtdQBCYXNzYV9WYWgsQmFzcwBCYXRhayxCYXRrAEJlbmdhbGksQmVuZwBCaGFpa3N1a2ksQmhrcwBCb3BvbW9mbyxCb3BvAEJyYWhtaSxCcmFoAEJyYWlsbGUsQnJhaQBCdWdpbmVzZSxCdWdpAEJ1aGlkLEJ1aGQAQ2FuYWRpYW5fQWJvcmlnaW5hbCxDYW5zAENhcmlhbixDYXJpAENhdWNhc2lhbl9BbGJhbmlhbixBZ2hiAENoYWttYSxDYWttAENoYW0sQ2hhbQBDaGVyb2tlZSxDaGVyAENob3Jhc21pYW4sQ2hycwBDb21tb24sWnl5eQBDb3B0aWMsQ29wdCxRYWFjAEN1bmVpZm9ybSxYc3V4AEN5cHJpb3QsQ3BydABDeXJpbGxpYyxDeXJsAERlc2VyZXQsRHNydABEZXZhbmFnYXJpLERldmEARGl2ZXNfQWt1cnUsRGlhawBEb2dyYSxEb2dyAER1cGxveWFuLER1cGwARWd5cHRpYW5fSGllcm9nbHlwaHMsRWd5cABFbGJhc2FuLEVsYmEARWx5bWFpYyxFbHltAEV0aGlvcGljLEV0aGkAR2VvcmdpYW4sR2VvcgBHbGFnb2xpdGljLEdsYWcAR290aGljLEdvdGgAR3JhbnRoYSxHcmFuAEdyZWVrLEdyZWsAR3VqYXJhdGksR3VqcgBHdW5qYWxhX0dvbmRpLEdvbmcAR3VybXVraGksR3VydQBIYW4sSGFuaQBIYW5ndWwsSGFuZwBIYW5pZmlfUm9oaW5neWEsUm9oZwBIYW51bm9vLEhhbm8ASGF0cmFuLEhhdHIASGVicmV3LEhlYnIASGlyYWdhbmEsSGlyYQBJbXBlcmlhbF9BcmFtYWljLEFybWkASW5oZXJpdGVkLFppbmgsUWFhaQBJbnNjcmlwdGlvbmFsX1BhaGxhdmksUGhsaQBJbnNjcmlwdGlvbmFsX1BhcnRoaWFuLFBydGkASmF2YW5lc2UsSmF2YQBLYWl0aGksS3RoaQBLYW5uYWRhLEtuZGEAS2F0YWthbmEsS2FuYQBLYXlhaF9MaSxLYWxpAEtoYXJvc2h0aGksS2hhcgBLaG1lcixLaG1yAEtob2praSxLaG9qAEtoaXRhbl9TbWFsbF9TY3JpcHQsS2l0cwBLaHVkYXdhZGksU2luZABMYW8sTGFvbwBMYXRpbixMYXRuAExlcGNoYSxMZXBjAExpbWJ1LExpbWIATGluZWFyX0EsTGluYQBMaW5lYXJfQixMaW5iAExpc3UsTGlzdQBMeWNpYW4sTHljaQBMeWRpYW4sTHlkaQBNYWthc2FyLE1ha2EATWFoYWphbmksTWFoagBNYWxheWFsYW0sTWx5bQBNYW5kYWljLE1hbmQATWFuaWNoYWVhbixNYW5pAE1hcmNoZW4sTWFyYwBNYXNhcmFtX0dvbmRpLEdvbm0ATWVkZWZhaWRyaW4sTWVkZgBNZWV0ZWlfTWF5ZWssTXRlaQBNZW5kZV9LaWtha3VpLE1lbmQATWVyb2l0aWNfQ3Vyc2l2ZSxNZXJjAE1lcm9pdGljX0hpZXJvZ2x5cGhzLE1lcm8ATWlhbyxQbHJkAE1vZGksTW9kaQBNb25nb2xpYW4sTW9uZwBNcm8sTXJvbwBNdWx0YW5pLE11bHQATXlhbm1hcixNeW1yAE5hYmF0YWVhbixOYmF0AE5hbmRpbmFnYXJpLE5hbmQATmV3X1RhaV9MdWUsVGFsdQBOZXdhLE5ld2EATmtvLE5rb28ATnVzaHUsTnNodQBOeWlha2VuZ19QdWFjaHVlX0htb25nLEhtbnAAT2doYW0sT2dhbQBPbF9DaGlraSxPbGNrAE9sZF9IdW5nYXJpYW4sSHVuZwBPbGRfSXRhbGljLEl0YWwAT2xkX05vcnRoX0FyYWJpYW4sTmFyYgBPbGRfUGVybWljLFBlcm0AT2xkX1BlcnNpYW4sWHBlbwBPbGRfU29nZGlhbixTb2dvAE9sZF9Tb3V0aF9BcmFiaWFuLFNhcmIAT2xkX1R1cmtpYyxPcmtoAE9yaXlhLE9yeWEAT3NhZ2UsT3NnZQBPc21hbnlhLE9zbWEAUGFoYXdoX0htb25nLEhtbmcAUGFsbXlyZW5lLFBhbG0AUGF1X0Npbl9IYXUsUGF1YwBQaGFnc19QYSxQaGFnAFBob2VuaWNpYW4sUGhueABQc2FsdGVyX1BhaGxhdmksUGhscABSZWphbmcsUmpuZwBSdW5pYyxSdW5yAFNhbWFyaXRhbixTYW1yAFNhdXJhc2h0cmEsU2F1cgBTaGFyYWRhLFNocmQAU2hhdmlhbixTaGF3AFNpZGRoYW0sU2lkZABTaWduV3JpdGluZyxTZ253AFNpbmhhbGEsU2luaABTb2dkaWFuLFNvZ2QAU29yYV9Tb21wZW5nLFNvcmEAU295b21ibyxTb3lvAFN1bmRhbmVzZSxTdW5kAFN5bG90aV9OYWdyaSxTeWxvAFN5cmlhYyxTeXJjAFRhZ2Fsb2csVGdsZwBUYWdiYW53YSxUYWdiAFRhaV9MZSxUYWxlAFRhaV9UaGFtLExhbmEAVGFpX1ZpZXQsVGF2dABUYWtyaSxUYWtyAFRhbWlsLFRhbWwAVGFuZ3V0LFRhbmcAVGVsdWd1LFRlbHUAVGhhYW5hLFRoYWEAVGhhaSxUaGFpAFRpYmV0YW4sVGlidABUaWZpbmFnaCxUZm5nAFRpcmh1dGEsVGlyaABVZ2FyaXRpYyxVZ2FyAFZhaSxWYWlpAFdhbmNobyxXY2hvAFdhcmFuZ19DaXRpLFdhcmEAWWV6aWRpLFllemkAWWksWWlpaQBaYW5hYmF6YXJfU3F1YXJlLFphbmIAQdC5AguxFMAZmUWFGZlFrhmARY4ZgEWEGZZFgBmeRYAZ4WBFphmERYQZgQ2TGeAPN4MrgBmCKwGDK4AZgCsDgCuAGYArgBmCKwCAKwCT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ayxNb2RpZmllcl9TeW1ib2wAU28sT3RoZXJfU3ltYm9sAFBjLENvbm5lY3Rvcl9QdW5jdHVhdGlvbgBQZCxEYXNoX1B1bmN0dWF0aW9uAFBzLE9wZW5fUHVuY3R1YXRpb24AUGUsQ2xvc2VfUHVuY3R1YXRpb24AUGksSW5pdGlhbF9QdW5jdHVhdGlvbgBQZixGaW5hbF9QdW5jdHVhdGlvbgBQbyxPdGhlcl9QdW5jdHVhdGlvbgBacyxTcGFjZV9TZXBhcmF0b3IAWmwsTGluZV9TZXBhcmF0b3IAWnAsUGFyYWdyYXBoX1NlcGFyYXRvcgBDYyxDb250cm9sLGNudHJsAENmLEZvcm1hdABDcyxTdXJyb2dhdGUAQ28sUHJpdmF0ZV9Vc2UATEMsQ2FzZWRfTGV0dGVyAEwsTGV0dGVyAE0sTWFyayxDb21iaW5pbmdfTWFyawBOLE51bWJlcgBTLFN5bWJvbABQLFB1bmN0dWF0aW9uLHB1bmN0AFosU2VwYXJhdG9yAEMsT3RoZXIAQdDZAguwCA4AAAA+AAAAwAEAAAAOAAAA8AAAAAB/AAAAgAMBAAA8QVNDSUlfSGV4X0RpZ2l0LEFIZXgAQmlkaV9Db250cm9sLEJpZGlfQwBEYXNoAERlcHJlY2F0ZWQsRGVwAERpYWNyaXRpYyxEaWEARXh0ZW5kZXIsRXh0AEhleF9EaWdpdCxIZXgASURTX0JpbmFyeV9PcGVyYXRvcixJRFNCAElEU19UcmluYXJ5X09wZXJhdG9yLElEU1QASWRlb2dyYXBoaWMsSWRlbwBKb2luX0NvbnRyb2wsSm9pbl9DAExvZ2ljYWxfT3JkZXJfRXhjZXB0aW9uLExPRQBOb25jaGFyYWN0ZXJfQ29kZV9Qb2ludCxOQ2hhcgBQYXR0ZXJuX1N5bnRheCxQYXRfU3luAFBhdHRlcm5fV2hpdGVfU3BhY2UsUGF0X1dTAFF1b3RhdGlvbl9NYXJrLFFNYXJrAFJhZGljYWwAUmVnaW9uYWxfSW5kaWNhdG9yLFJJAFNlbnRlbmNlX1Rlcm1pbmFsLFNUZXJtAFNvZnRfRG90dGVkLFNEAFRlcm1pbmFsX1B1bmN0dWF0aW9uLFRlcm0AVW5pZmllZF9JZGVvZ3JhcGgsVUlkZW8AVmFyaWF0aW9uX1NlbGVjdG9yLFZTAFdoaXRlX1NwYWNlLHNwYWNlAEJpZGlfTWlycm9yZWQsQmlkaV9NAEVtb2ppAEVtb2ppX0NvbXBvbmVudCxFQ29tcABFbW9qaV9Nb2RpZmllcixFTW9kAEVtb2ppX01vZGlmaWVyX0Jhc2UsRUJhc2UARW1vamlfUHJlc2VudGF0aW9uLEVQcmVzAEV4dGVuZGVkX1BpY3RvZ3JhcGhpYyxFeHRQaWN0AERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnQsREkASURfU3RhcnQsSURTAENhc2VfSWdub3JhYmxlLENJAEFTQ0lJAEFscGhhYmV0aWMsQWxwaGEAQW55AEFzc2lnbmVkAENhc2VkAENoYW5nZXNfV2hlbl9DYXNlZm9sZGVkLENXQ0YAQ2hhbmdlc19XaGVuX0Nhc2VtYXBwZWQsQ1dDTQBDaGFuZ2VzX1doZW5fTG93ZXJjYXNlZCxDV0wAQ2hhbmdlc19XaGVuX05GS0NfQ2FzZWZvbGRlZCxDV0tDRgBDaGFuZ2VzX1doZW5fVGl0bGVjYXNlZCxDV1QAQ2hhbmdlc19XaGVuX1VwcGVyY2FzZWQsQ1dVAEdyYXBoZW1lX0Jhc2UsR3JfQmFzZQBHcmFwaGVtZV9FeHRlbmQsR3JfRXh0AElEX0NvbnRpbnVlLElEQwBMb3dlcmNhc2UsTG93ZXIATWF0aABVcHBlcmNhc2UsVXBwZXIAWElEX0NvbnRpbnVlLFhJREMAWElEX1N0YXJ0LFhJRFMAQZDiAgu0IIEAKACXACoAgYAqAJfAKwAVgSwAlwAtAIFALQCXAC4AFUEuAJkBLwAWIDAAQghAAEKKRABCBEoAlgBMABeBTABCAk0AQkNOAC/BTwBCw1AAv0BSAEIDUwBCCVUAQghaAJYAXgBCQ14AgcBfAEIBaABCwWsAhQFxABfDcQBESHMARIN3AEKDeQC+AnsAl0F8AEIBfQBEBH4AQg6AAEKBhwBEh4kAgwSsABcDtgCDArgAFALQAJYA0QCAAN0Al4DeAICA3wCXAOEAPkHhAIDA4QC+BOIAroPqAK6C8gCtAfQALsH0AANB9QADA/wAgUD+AD4CAAG+wAEBvgEDAb5ABgG+QA4BPgIUAb7AFQG+ARcBRIEdAURBMAFEAjQBRIE1AUSDNgFEgzgBRIY6AUQBPgGFwGEB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SHpUSHq8AxMhbQATIWQAEyFrABMhZgBtbgBtvANtbQBtYwBtawBtYwAKCk8ACk9tALIAYwAICk8KClAAClBtALMAawBtALMAbQAVInMAbQAVInMAsgBQYWtQYU1QYUdQYXJhZHJhZNFzcgBhAGQAFSJzALIAcABzbgBzvANzbQBzcABWbgBWvANWbQBWawBWTQBWcABXbgBXvANXbQBXawBXTQBXawCpA00AqQNhLm0uQnFjY2NkQ9FrZ0NvLmRCR3loYUhQaW5LS0tNa3RsbWxubG9nbHhtYm1pbG1vbFBIcC5tLlBQTVBSc3JTdldiVtFtQdFtMQDlZTEAMADlZTIAMADlZTMAMADlZWdhbEoETAQmAVMBJ6c3q2sCUqtIjPRmyo7IjNFuMk7lU5yfnJ9RWdGRh1VIWfZhaXaFfz+Guof4iI+QAmobbdlw3nM9hGqR8ZmCTnVTBGsbci2GHp5QXetvzYVkicli2IEfiMpeF2dqbfxyzpCGT7dR3lLEZNNqEHLndgGABoZchu+NMpdvm/qdjHh/eaB9yYMEk3+e1orfWARfYHx+gGJyynjCjPeW2FhiXBNq2m0Pby99N35LltJSi4DcUcxRHHq+ffGDdZaAi89iAmr+ijlO51sSYIdzcHUXU/t4v0+pXw1OzGx4ZSJ9w1NeWAF3SYSqirprsI+IbP5i5YKgY2V1rk5pUclRgWjnfG+C0orPkfVSQlRzWexexWX+byp5rZVqmpeezp6bUsZmd2tij3RekGEAYppkI29JcYl0ynn0fW+AJo/uhCOQSpMXUqNSvVTIcMKIqorJXvVfe2Ouaz58dXPkTvlW51u6XRxgsnNpdJp/RoA0kvaWSJcYmItPrnm0kbiW4WCGTtpQ7ls/XJllAmrOcUJ2/IR8kI2fiGYulolSe2fzZ0FtnG4JdFl1a3gQfV6YbVEuYniWK1AZXeptKo+LX0RhF2iHc4aWKVIPVGVcE2ZOZ6ho5WwGdOJ1eX/PiOGIzJHilj9Tum4dVNBxmHT6haOWV5yfnpdny23ogct6IHuSfMBymXBYi8BONoM6UgdSpl7TYtZ8hVsebbRmO49MiE2Wi4nTXkBRwFUAAAAAWlgAAHRmAAAAAN5RKnPKdjx5XnlleY95Vpe+fL1/AAAShgAA+IoAAAAAOJD9kO+Y/JgombSd3pC3lq5P51BNUclS5FJRU51VBlZoVkBYqFhkXG5clGBoYY5h8mFPZeJlkWaFaHdtGm4ib25xK3IidJF4PnlJeUh5UHlWeV15jXmOeUB6gXrAe/R9CX5BfnJ/BYDtgXmCeYJXhBCJlokBizmL04wIjbaPOJDjlv+XO5h1YO5CGIICJk61UWhRgE9FUYBRx1L6Up1VVVWZVeJVWlizWERZVFliWihb0l7ZXmlfrV/YYE5hCGGOYWBh8mE0YsRjHGRSZFZldGYXZxtnVmd5a7prQW3bbstuIm8ecG5xp3c1cq9yKnNxdAZ1O3Uddh92ynbbdvR2SndAd8x4sXrAe3t8W330fT5/BYBSg++DeYdBiYaJlom/iviKy4oBi/6K7Yo5i4qLCI04j3KQmZF2knyW45ZWl9uX/5cLmDuYEpucn0ooRCjVM507GEA5QElS0FzTfkOfjp8qoAJmZmZpZmxmZmlmZmx/AXRzAHRlBQ8RDwAPBhkRDwjZBbQFAAAAAPIFtwXQBRIAAwQLDA0YGukFwQXpBcIFSfvBBUn7wgXQBbcF0AW4BdAFvAXYBbwF3gW8BeAFvAXjBbwFuQUtAy4DLwMwAzEDHAAYBiIGKwbQBdwFcQYAAAoKCgoNDQ0NDw8PDwkJCQkODg4OCAgICDMzMzM1NTU1ExMTExISEhIVFRUVFhYWFhwcGxsdHRcXJycgIDg4ODg+Pj4+QkJCQkBAQEBJSUpKSkpPT1BQUFBNTU1NYWFiYkkGZGRkZH5+fX1/fy6Cgnx8gICHh4eHAAAmBgABAAEArwCvACIAIgChAKEAoACgAKIAogCqAKoAqgAjACMAI8wGAAAAACYGAAYABwAfACMAJAIGAgcCCAIfAiMCJAQGBAcECAQfBCMEJAUGBR8FIwUkBgcGHwcGBx8IBggHCB8NBg0HDQgNHw8HDx8QBhAHEAgQHxEHER8SHxMGEx8UBhQfGwYbBxsIGx8bIxskHAccHxwjHCQdAR0GHQcdCB0eHR8dIx0kHgYeBx4IHh8eIx4kHwYfBx8IHx8fIx8kIAYgByAIIB8gIyAkIQYhHyEjISQkBiQHJAgkHyQjJCQKSgtKI0ogAEwGUQZRBv8AHyYGAAsADAAfACAAIwAkAgsCDAIfAiACIwIkBAsEDAQfJgYEIAQjBCQFCwUMBR8FIAUjBSQbIxskHCMcJB0BHR4dHx0jHSQeHx4jHiQfAR8fIAsgDCAfICAgIyAkI0okCyQMJB8kICQjJCQABgAHAAgAHwAhAgYCBwIIAh8CIQQGBAcECAQfBCEFHwYHBh8HBgcfCAYIHw0GDQcNCA0fDwcPCA8fEAYQBxAIEB8RBxIfEwYTHxQGFB8bBhsHGwgbHxwHHB8dBh0HHQgdHh0fHgYeBx4IHh8eIR8GHwcfCB8fIAYgByAIIB8gISEGIR8hSiQGJAckCCQfJCEAHwAhAh8CIQQfBCEFHwUhDR8NIQ4fDiEdHh0fHh8gHyAhJB8kIUAGTgZRBicGECIQIxIiEiMTIhMjDCIMIw0iDSMGIgYjBSIFIwciByMOIg4jDyIPIw0FDQYNBw0eDQoMCg4KDwoQIhAjEiISIxMiEyMMIgwjDSINIwYiBiMFIgUjByIHIw4iDiMPIg8jDQUNBg0HDR4NCgwKDgoPCg0FDQYNBw0eDCANIBAeDAUMBgwHDQUNBg0HEB4RHgAkACQqBgACGwADAgADAgADGwAEGwAbAgAbAwAbBAIbAwIbAwMbIAMbHwkDAgkCAwkCHwkbAwkbAwkbAgkbGwkbGwsDAwsDAwsbGwoDGwoDGwoCIAobBAobBAobGwobGwwDHwwEGwwEGw0bAw0bAw0bGw0bIA8CGw8bGw8bGw8bHxAbGxAbIBAbHxcEGxcEGxgbAxgbGxoDGxoDIBoDHxoCAhoCAhoEGxoEGxobAxobAxsDAhsDGxsDIBsCAxsCGxsEAhsEGygGHQQGHx0EHx0dHgUdHgUhHgQdHgQdHgQhHh0iHh0hIh0dIh0dAAYiAgQiAgQhAgYiAgYhAh0iAh0hBB0iBAUhBB0hCwYhDQUiDAUiDgUiHAQiHB0iIgUiIgQiIh0iHR0iGh0iHgUiGh0FHAUdER0iGx0iHgQFHQYiHAQdGx0dHAQdHgQFBAUiBQQiHQQiGR0iAAUiGx0dEQQdDR0dCwYiHgQiNQYAD50ND50nBgAdHSAAHAEKHgYeCA4dEh4KDCEdEh0jICEMHR41BgAPFCcGDh0i/wAdHSD/Eh0jIP8hDB0eJwYFHf8FHQAdICcGCqUAHSwAATACMDoAOwAhAD8AFjAXMCYgEyASAQBfXygpe30IMAwNCAkCAwABBAUGB1sAXQA+ID4gPiA+IF8AXwBfACwAATAuAAAAOwA6AD8AIQAUICgAKQB7AH0AFDAVMCMmKistPD49AFwkJUBABv8LAAv/DCAATQZABv8OAA7/DwAP/xAAEP8RABH/EgASIQYAAQECAgMDBAQFBQUFBgYHBwcHCAgJCQkJCgoKCgsLCwsMDAwMDQ0NDQ4ODw8QEBEREhISEhMTExMUFBQUFRUVFRYWFhYXFxcXGBgYGBkZGRkgICAgISEhISIiIiIjIyMjJCQkJCUlJSUmJiYmJycoKCkpKSkiBiIAIgAiASIBIgMiAyIFIgUhAIUpATABCwwA+vGgoqSmqOLk5sL7oaOlp6mqrK6wsrS2uLq8vsDDxcfJysvMzc7R1Nfa3d7f4OHj5efo6err7O7ymJkxMU8xVTFbMWExogCjAKwArwCmAKUAqSAAAAIlkCGRIZIhkyGgJcslmRC6EAAAAACbELoQBQWlELoQBTERJxEyEScRVUcTPhNHE1cTVbkUuhS5FLAUAAAAALkUvRRVULgVrxW5Fa8VVTUZMBkFV9Fl0VjRZdFf0W7RX9Fv0V/RcNFf0XHRX9Fy0VVVVQW50WXRutFl0bvRbtG80W7Ru9Fv0bzRb9FVVVVBAGEAQQBhAGkAQQBhAEEAQ0QAAEcAAEpLAABOT1BRAFNUVVZXWFlaYWJjZABmaABwAEEAYQBBQgBERUZHSgBTAGEAQUIAREVGRwBJSktMTQBPUwBhAEEAYQBBAGEAQQBhAEEAYQBBAGEAQQBhADEBNwKRA6MDsQPRAyQAHwQgBZEDowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAWRA6MDsQPRAyQAHwQgBZEDowOxA9EDJAAfBCAFCwwwADAAMAAwADAAJwYAAQUIKgYeCAMNIBkaGxwJDxcLGAcKAAEEBgwOEESQd0UoBiwGAABHBjMGFxAREhMABg4CDzQGKgYrBi4GAAA2BgAAOgYtBgAASgYAAEQGAABGBjMGOQYAADUGQgYAADQGAAAAAC4GAAA2BgAAOgYAALoGAABvBgAAKAYsBgAARwYAAAAALQY3BkoGQwYAAEUGRgYzBjkGQQY1BkIGAAA0BioGKwYuBgAANgY4BjoGbgYAAKEGJwYAAQUIICELBhAjKgYaGxwJDxcLGAcKAAEEBgwOECgGLAYvBgAASAYyBi0GNwZKBioGGhscCQ8XCxgHCgABBAYMDhAwLjAALAAoAEEAKQAUMFMAFTBDUkNEV1pBAEhWTVZTRFNTUFBWV0NNQ01ETVJESkswMABoaEtiV1vMU8cwjE4aWeOJKVmkTiBmIXGZZU1SjF+NUbBlHVJCfR91qYzwWDlUFG+VYlVjAE4JTkqQ5l0tTvNTB2NwjVNigXl6eghUgG4JZwhnM3VyUrZVTZEUMBUwLGcJToxOiVu5cFNi13bdUldll1/vUzAAOE4FAAkiAWBPrk+7TwJQelCZUOdQz1CeNDoGTVFUUWRRd1EcBbk0Z1GNUUsFl1GkUcxOrFG1Ud+R9VEDUt80O1JGUnJSd1IVNQIAIICAAAgAAMdSAAIdMz4/UIKKk6y2uLi4LApwcMpT31NjC+tT8VMGVJ5UOFRIVGhUolT2VBBVU1VjVYRVhFWZVatVs1XCVRZXBlYXV1FWdFYHUu5Yzlf0Vw1Yi1cyWDFYrFjkFPJY91gGWRpZIlliWagW6hbsWRtaJ1rYWWZa7jb8NghbPls+W8gZw1vYW+db81sYG/9bBlxTXyJcgTdgXG5cwFyNXOQdQ13mHW5da118XeFd4l0vOP1dKF49XmleYjiDIXw4sF6zXrZeyl6So/5eMSMxIwGCIl8iX8c4uDLaYWJfa1/jOJpfzV/XX/lfgWA6ORw5lGDUJsdgAgIAAAAAAAAACAAKAAACCACACAAACIAogAIAAAJIYQAEBgQyRmpcZ5aqrsjTXWIAVHfzDCs9Y/xiaGODY+Rj8SsiZMVjqWMuOmlkfmSdZHdkbDpPZWxlCjDjZfhmSWYZO5FmCDvkOpJRlVEAZ5xmrYDZQxdnG2chZ15nU2fDM0k7+meFZ1JohWhtNI5oH2gUaZ07QmmjaeppqGqjNttqGDwha6c4VGtOPHJrn2u6a7trjToLHfo6Tmy8PL9szWxnbBZtPm13bUFtaW14bYVtHj00bS9ubm4zPctux27RPvltbm9eP44/xm85cB5wG3CWPUpwfXB3cK1wJQVFcWNCnHGrQyhyNXJQcghGgHKVcjVHAiAAACAAAAAACIAAAAICgIoAACAACAoAgIiAIBRIenOLc6w+pXO4Prg+R3RcdHF0hXTKdBs/JHU2TD51kkxwdZ8hEHahT7hPRFD8PwhA9HbzUPJQGVEzUR53H3cfd0p3OUCLd0ZAlkAdVE54jHjMeONAJlZWeZpWxVaPeet5L0FAekp6T3p8Wadap1ruegJCq1vGe8l7J0KAXNJ8oELofON8AH2GX2N9AUPHfQJ+RX40QyhiR2JZQ9lien8+Y5V/+n8FgNpkI2VggKhlcIBfM9VDsoADgQtEPoG1WqdntWeTM5wzAYIEgp6Pa0SRgouCnYKzUrGCs4K9guaCPGvlgh2DY4OtgyODvYPng1eEU4PKg8yD3IM2bGttAgAAICIqoAoAIIAoAKggIAACgCICiggAqgAAAAIAACjVbCtF8YTzhBaFynNkhSxvXUVhRbFv0nBrRVCGXIZnhmmGqYaIhg6H4oZ5hyiHa4eGh9dF4YcBiPlFYIhjiGd214jeiDVG+oi7NK54Znm+RsdGoIrtioqLVYyofKuMwYwbjXeNL38ECMuNvI3wjd4I1I44j9KF7YWUkPGQEZEuhxuROJLXktiSfJL5kxWU+ouLlZVJt5V3jeZJw5ayXSOXRZEakm5KdkrglwqUskqWlAuYC5gpmLaV4pgzSymZp5nCmf6ZzkswmxKbQJz9nM5M7Uxnnc6g+EwFoQ6ikaK7nlZN+Z7+ngWfD58WnzufAKYCiKAAAAAAgAAoAAiggKCAAICAAAqIgACAACAqAIAARCAVIgBBsMoDC1FNAwCXBSDGBQDnBgBFBwDiCABTCQDNCyA4DgBzDyBdEyBgGiCqGwD0HAD+HSB/LSDwpgCyqgD+AQGrDgFzESFwEwG4FgGaGgGfvAEi4AFL6QEAQZDLAwvTBrLP1ADoA9wA6ADYBNwBygPcAcoK3AQBA9zHAPDAAtzCAdyAwgPcwADoAdzAQekA6kHpAOoA6cyw4sSw2ADcwwDcwgDeANzFBdzBANzBAN4A5MBJCkMTgAAXgEEYgMAA3IAAErAXx0Ier0cbwQHcxADcwQDcjwAjsDTGgcMA3MCBwYAA3MEA3KIAJJ3AANzBANzBAtzAAdzAANzCANzAANzAANzAANzBsG/GANzAiADcl8OAyIDCgMSqAtywRgDczYAA3MEA3MEA3MIC3EIbwgDcwQHcxLALAAePAAmCwADcwbA2AAePAAmvwLAMAAePAAmwPQAHjwAJsD0AB48ACbBOAAmwTgAJhgBUAFuwNAAHjwAJsDwBCY8ACbBLAAmwPAFnAAmMA2uwOwF2AAmMA3qwGwHcmgDcgADcgADYsAZBgYAAhIQDgoEAgoDBAAmAwbANANywPwAHgAEJsCEA3LKewrODAAmeAAmwbAAJicCwmgDksF4A3sAA3LCqwADcsBYACZPHgQDcr8QF3MEA3IAB3LBCAAeOAAmlwADcxrAFAQmwCQAHigEJsBIAB7BnwkEABNzBA9zAQQAFAYMA3IXAgsGwlcEA3MYA3MEA6gDWANwAyuQA6AHkANyAwADpANzAANyyn8EBAcMCAcGDwIIBAcAA3MABAQPcwLgDzcKwXAAJsC/fsfkA2gDkAOgA3gHgsDgBCLhto8CDyZ/BsB/BsOMACaQACbBmAAma0bAIAtykAAmwLgAHiwAJsL7AgMEA3IHBhMGAwLADAAmwxQAJuEb/ABqy0MYG3MGznADcsLEA3LBkxLZhANyAwKfAAAEA3IMACbB0wADcsgzDsVLBsGgB3MIA3MAD3LDEAAmwBwAJsAgACQAHsBTCrwEJsA0AB7AbAAmIAAewOQAJAAewgQAHAAmwHwEHjwAJl8aCxLCcAAmCAAeWwLAyAAkAB7DKAAkAB7BNAAmwRQAJAAewQgAJsNwACQAHsNEBCYMAB7BrAAmwIgAJkQAJsCAACbF0AAmw0QAHgAEJsCAACbhFJwQBsArGtIgBBrhEewABuAyVAdgCAYIA4gTYhwfcgcQB3J3DsGPCuAWKxoDQgcaAwYDEsNTGsYTDta8G3LA8xQAHAEHw0QML4g4BSsBJAkqAAoECggKDAsACwgIACoQCQiSFAsAHgAmCCUAkgCLEAoIihCKGIsYCyALKAswChwKKIs4CjCKQIpIijiKIAokCigKCJAADAgMEA4sCgCQIA4QJhglYJAIKBgOYIpoiniIACQoDoCIMAw4DQAgQAxIDoiKmIsAJpCKoIqoijAKNAo4CQANCA0QDgAOPAo4kwgeICYoJkCRGA6wiAASwIkIIsiICBLQiQAREBLYiQgTCIsAixCLGIsgiQAnABJECyiLEBMwiwgTQIs4ikgKTApQClQJABUIFCAqWApQkRAXEB4wJjgnABpIkRAgIIwojgAUMI4QFkAmSCQ4jggUSI4YFiAUUI4wFFiOYCYoFHiOQBSAjmgmOBSQjIiOZApoCmwLABcIFxAWcAqwkxgXIBcYHlAmWCQAHqiQmI8oFKiMoI0AjQiNEI0YjzAVKI0gjTCNOI1AjuCSdAs4FviQMClIjAAa8JLokQAZUI0IGRAZWI1gjoAKhAqICowLBAsMCAQqkAkMkpQLBB4EJgwlBJIEixQKDIoUihyLHAskCywLNAqcCiyLPAo0ikSKTIo8iqAKpAqoCgyQBAwMDBQOrAoEkCQOFCYcJWSQDCgcDmSKbIp8iAQkLA6EiDQMPA0EIEQMTA6MipyLBCaUiqSKrIoAjrAKtAq4CQQNDA0UDrwKPJMMHiQmLCZEkRwOtIgEEhAixIkMIsyIDBLUiQQRFBLciQwTDIsEixSLHIskiQQnBBLECyyLFBM0iwwTRIs8isgKzArQCtQJBBUMFCQq2ApUkRQXFB40JjwnBBpMkRQgJIwsjgQUNI4UFkQmTCQ8jgwUTI4cFiQUVI40FFyOZCYsFHyOBI5EFISObCY8FJSMjI7kCugK7AsEFwwXFBbwCrSTHBckFxweVCZcJAQerJCcjywUrIykjQSNDI0UjRyPNBUsjSSOCI00jTyNRI7kkvQLPBb8kDQpTI78CvSSDI7skQQZVI0MGRQZXI1kjATGADAAuRiREJEokSCQACEIJRAkECIgihiSEJIokiCSuIpgkliScJJokACMGCgIjBApGCc4HygfIB8wHRyRFJEskSSQBCEMJRQkFCIkihySFJIskiSSvIpkklySdJJskASMHCgMjBQpHCc8HywfJB80HUCROJFQkUiRRJE8kVSRTJJQiliKVIpciBCMGIwUjByMYIxkjGiMbIywjLSMuIy8jACSiJKAkpiSkJKgkoyShJKckpSSpJLAkriS0JLIktiSxJK8ktSSzJLckggiACIEIAggDCJwinSIKCgsKgwhAC4osgQyJLIgsQCVBJQAtBy4ADUAmQSaALgENyCbJJgAvhC8CDYMvgi9ADdgm2SaGMQQNQCdBJwAxhjAGDYUwhDBBDUAoADIHDU8oUCiAMoQsAy5XKEINgSyALMAkwSSGLIMswChDDcAlwSVAKUQNwCbBJgUuAi7AKUUNBS8EL4AN0CbRJoAvQCqCDeAm4SaAMIEwwCqDDQQwAzCBDcAnwSeCMEArhA1HKEgohDGBMQYvCA2BLwUwRg2DMIIxAA4BDkAPgBGCEQMPAA/AEQEPQBECEgQSgQ9AEsAPQhKAD0QShBKCD4YSiBKKEsASghKBEYMRQxBAEMERQRBBEQMSBRLBEEESABBDEsAQRRKFEsIQhxKJEosSwRKDEoAQABEBEQASARKAEoESQBNBE0MTQhNEE8ITABTAE0AUgBTAFEAVQRVAFwAXQRfAFwAYAhgBGEAYgBgAGcAYwRgBGUAZQhlBGYAZwBnCGcEZgBzAHMAdgB8AIAIgBCAGIAggQCCAIIIgwCDBIAAhuCK5IhAjESMcIx0jTCRWJE0kVySMJI0kniSfJAAlAiUEJcArASUDJQUlwSvCK8MrxCvFK8YrxyuAJYIlhCXIK4ElgyWFJckryivLK8wrzSvOK88rACYCJgEmAyaAJoImgSaDJsImxCbGJgAswybFJscmASwCLAMsBCwFLAYsByzKJswmziYILMsmzSbPJgksCiwLLAwsDSwOLA8s0ibUJtYm0ybVJtcm2ibcJt4m2ybdJt8mACcCJwEnAyeAJ4IngSeDJwAoAigEKAEoAygFKEIoRChGKEkoSyhNKEAsSihMKE4oQSxCLEMsRCxFLEYsRyxRKFMoVShILFIoVChWKEksSixLLEwsTSxOLE8sgiwBLoAxhywBLwIvAy8GLoUxADABMAIwQEZBRoBGwEbCRsFGAEdAR4BHwEfCRwBJQEmASYJJAErCSQNKBEpASkFKgEqBSsBKwUrAS8FLAEsBS0BLQUvCS8NLgEuBS4JLg0sATAFMAkwDTABWQFRCVERURlRIVEpUTFROVFBUUlRUVFZUgFSCVIRUwFTBVABVAVVAVUFVgFWBVcBVwVWAVsBYAFcCVwRXBlcIVwpXDFcOVxBXElcUVxZXQFdCV0RXgFeBV8BXwVcAWAFYQFhBWIBYgVgAWQFZAlkDWUBZgI6CjsCOAI8Bj0CPQY+Bj4CPg4/Aj8GPAJAAQeDgAwumH/oYF1YNVhITFgwWETbpAjZMNuESEhYTDhAO4hISDBMM+hkXFm0PFg4PBRQMGw8ODwwrDgI2DgsFFUsW4Q8MweIQDOIA/zAC/wgC/ye/IiECX18hImECIQJBQiECIQKffwJfXyECXz8CBT8iZQEDAgEDAgEDAv8IAv8KAgEDAl8hAv8yoiECISJfQQL/AOI8BeIT5Apu5ATuBoTOBA4E7gnmaH8EDj8gBEIWAWAuARZBAAEAIQLhCQDhAeIbPwJBQv8QYj8MXz8C4SviKP8aD4Yo/y//BgL/WADhHiAEtuIhFhEgLw0A5iURBhYmFiYWBuAA5RNgZTbgA7tMNg02L+YDFhsANuUYBOUC5g3pAnYlBuVbFgXGGw+mJCYPZiXpAkUvBfYGABsFBuUW5hMg5VHmAwXgBukC5RnmASQPVgQgBi3lDmYE5gEERgSGIPYHAOURRiAWAOUD4C3lDQDlCuAD5gcb5hgH5S4GBwYFR+YAZwYnBcblAiY26QIWBOUHBicA5QAgJSDlDgDFAAVAZSAGBUdmICcgJwYF4AAHYCUARSYg6QIlLasPDQUWBiAmBwClYCUg5Q4AxQAlACUAJSAGAEcmYCYgRkAGwGUABcDpAiZFBhbgAiYHAOUBAEUA5Q4AxQAlAIUgBgVHhgAmBwAnBiAF4AclJiDpAhYNwAWmAAYnAOUAICUg5Q4AxQAlAIUgBgUHBgdmICcgJwbAJgdgJQBFJiDpAg8Fq+ACBgUApUBFAGVAJQAFACVAJUBFQOUEYCcGJ0BHAEcGIAWgB+AG6QJLrw0PgAZHBuUAAEUA5Q8A5QhABUZnAEYAZsAmAEWAJSYg6QLAFssPBQYnFuUAAEUA5Q8A5QIAhSAGBQcGhwAGJwAnJsAnwAUAJSYg6QIAJeAFJiflAQBFAOUhJgVHZgBHAEcGBQ9gRQfLRSYg6QLrAQ+lAAYnAOUKQOUQAOUBAAUgxUAGYEdGAAYA5wCg6QIgJxbgBOUoBiXGYA2lBOYAFukCNuAdJQAFAIUA5RAABQDlAgYl5gEFIIUABACmIOkCIGXgGAVP9gcPFk8mr+kC6wIPBg8GDwYSExITJ+UAAOUcYOYGB4YWJoXmAwDmHADvAAavAC+WbzbgHeUjJ2YHpgcmJyYF6QK2pScmZUYFRyXHRWblBQYnJqcGBQfpAkcGL+EeAAGAASDiIxYEQuWAwQBlIMUABQBlIOUhAGUg5RkAZSDFAAUAZSDlBwDlMQBlIOU7IEb2AesMQOUI7wKg4U4goiAR5YHkDxblCRflEhITQOVDVkrlAMDlBQBlRuAD5QpGNuAB5Qom4ATlBQBFACbgBOUsJgfG5wAGJ+YDVgRWDQUGIOkCoOsCoLYRdkYbAOkCoOUbBOUtwIUm5RoGBYDlPuAC5RcARmcmR2AnBqdGYA9ANukC5RYgheAD5SRg5RKg6QILQO8a5Q8mJwYgNuUtBwYHxgAGBwYn5gCn5gIgBukCoOkCoNYEtiDmBggm4DdmB+UnBgeGBwaHBifFYOkC1u8C5gHvAUAmB+UWB2YnJgdGJekC5SQGByZHBgdGJ+AAduUc5wDmACcmQJbpAkBF6QLlFqQ24gHA4SMgQfYA4ABGFuYFB8ZlBqUGJQcmBYDiJOQ34gUE4hrkHeYyAIb/gA7iAP9a4gDhAKIgoSDiAOEA4gDhAKIgoSDiAAABAAEAAQA/wuEA4gYg4gDjAOIA4wDiAOMAggAiYQMOAk5CACJhA05iICJhAE7iAIFOIEIAImEDLgD3A5uxNhQVEjQVEhT2ABgZmxf2ARQVdjBWDBIT9gMMFhD2AhebAPsCCwQgq0wSEwTrAkwSEwDkBUDtGOAI5gVoBkjmBOAHLwFvAS8CQSJBAg8BLwyBrwEPAQ8BD2EPAmECZQIvIiGMP0IPDC8CD+sI6hs/agsvYIyPLG8MLwwvDM8M7xcsLwwPDO8X7ICE7wASExIT7wwszxIT70kM7xbsEe8grO894BHvA+AN6zTvRusO74AvDO8BDO8u7ADvZwzvgHASExITEhMSExITEhMSE+sW7ySMEhPsFxITEhMSExITEhPsCO+AeOx7EhMSExITEhMSExITEhMSExITEhMSE+w3EhMSE+wYEhPsgHrvKOwNL6zvHyDvGADvYeEnAOInAF8hIt9BAj8CP4IkQQL/WgKvf0Y/gHYLNuIeAAKAAiDlMMAEFuAGBuUP4AHFAMUAxQDFAMUAxQDFAMUA5hg2FBUUFVYUFRYUFfYBETYRFhQVNhQVEhMSExITEhOWBPYCMXYRFhL2BS8W4CXvEgDvUeAE74BO4BLvBGAXVg8EBQoSExITEhMSExITLxITEhMSExITERIzD+oBZicRhC9KBAUWLwDlTiAmLiQFEeVSFkQFgOUjAOVWAC9r7wLlGO8c4ATlCO8XAOsC7xbrAA/rB+8Y6wLvH+sH74C45Zk47zjlwBF1QOUNBOWD70DvL+AB5SCkNuWAhARW5QjpAiXgDP8mBQZIFuYCFgT/FCQm5T7qAia24ADuD+QBLv8GIv82BOIAn/8CBC5/BX8i/w1hAoEC/wIgX0ECP+AiPwUkAsUGRQZlBuUPJyYHbwZAqy8ND6DlLHbgACflKucIJuAANukCoOYKpVYFFiUG6QLlFOYANuUP5gMn4AMW5RVARgflJwYnZicmR/YFAATpAmA2hQYE5QHpAoUA5SGmJyYnJuABRQblAAYHIOkCIHblCASlTwUHBgflKgYFRiUmhSYFBgXgECUENuUDByYnNgUkBwbgAqUgpSCl4AHFAMUA4iMOZOIBBC5g4kjlGycGJwYnFgcGIOkCoOWrHOAE5Q9g5Slg/Id4/Zh45YDmIOVi4B7C4ASCgAUG5QIM5QUAhQAFACUAJQDlZO4I4AnlgOMTEuAI5Tgg5S7gIOUEDQ8g5gjWEhMWoOYIFjEwEhMSExITEhMSExITEhMSEzYSE3ZQVgB2ERITEhMSE1YMEUwAFg02YIUA5X8gGwBWDVYSExYMFhE26QI2TDbhEhIWEw4QDuISEgwTDBITFhITNuUCBOUlJOUXQKUgpSClIEVALQwODy0AD2wv4AJbLyDlBADlEgDlCwAlAOUHIOUG4Brlc4BWYOslQO8B6i1r7wkrTwDvBUAP4CfvJQbgeuUVQOUp4AcG6xNg5Rhr4AHlDArlAAqA5R6GgOUWABblHGDlABaK4CLhIOIg5UYg6QKg4Rxg4hxg5SDgAOUs4AMW4IAI5YCv4AHlDuAC5QDggBClIAUA5SQAJUAFIOUPABbrAOUPL8vlF+AA6wHgKOULACWAi+UOq0AW5RKAFuA45TBgKyXrCCDrJgVGACaAZmUARQDlFSBGYAbrAcD2AcDlFSsW5RVL4BjlAA/lFCZgi9bgAeUuQNblDiDrAOULgOsA5QrAduAEy+BI5UHgL+Er4AXiK8Cr5Rxm4ADpAuCAnusXAOUiACYRICXgRuUV6wIF4ADlDuYDa5bgTuUNy+AM5Q/gAQcGB+Ut5gfWYOsM6QLgB0YH5SVHZicmNht24AMbIOURwOkCoEblHIYH5gAA6QJ2BScF4ADlGwY2BeABJgflKEfmASdldmYWBwbpAgUWBVYA6wzgA+UKAOURR0YnBgcmtgbgOcUABQBlAOUHAOUCFqDlJwZH5gCA6QKgJicA5QAgJSDlDgDFACUAhQAmBScGZyAnIEcgBaAHgIUnIMZAhuCAA+UtR+YAJ0YHBmWW6QI2ABYGReAW5ShHpgcGZyYHJiUWBeAA6QLggB7lJ0dmIGcmByb2D2Um4BrlKEfmACcGByZWBeAD6QKg9gXgC+UjBgcGJ6YHBgXA6QLgLuUTIEYnZgeGYOkCK1YP4IA45SRH5gEHJhbgXOEY4hjpAusB4ATlACAFIOUAACUA5RCnACcgJgcGBQcFBwZW4AHpAuA+5QAg5R9HZiAmZwYFFgUH4BMF5gLlIKYHBWb2AAbgAAWmJ0blJuYFByZWBZbgFeUx4IB/5QEA5R0HxgCmBwYFluAC6QLrC0A25RYg5g4AB8YHJgcm4EHFACUA5R6mQAYAJgDGBQbgAOkCoKUAJQDlGIcAJgAnBgcGBcDpAuCAruULJic24IAvBeAH6w3vAG3vCeAFFuWDEuBe6mcAluAD5YA84Io05YOnAPsB4I8/5YG/4KEx5YGxwOUXAOkCYDbgWOUWIIYW4ALlKMaWb2QWD+AC6QIAywDlDYDlC+CCKOEY4hjrD3bgXeVDYAYF5y/AZuQF4DgkFgQG4AMn4Abll3DgAOWETuAi5QHgom/lgJfgKUXgCWXgAOWBBOCIfOVjgOUFQOUBwOUCIA8mFnvgktTvgG7gAu8fIO80J0ZPp/sA5gAvxu8WZu8z4A/vOkYP4IAS6wzgBO9P4AHrEeB/4RLiEuESwgDiCuES4hIBACEgASAhIGEA4QBiAAIAwgDiA+ES4hIhAGEg4QAAwQDiEiEAYQCBAAFAwQDiEuES4hLhEuIS4RLiEuES4hLhEuIS4RLiFCDhEQziEQyi4REM4hEMouERDOIRDKLhEQziEQyi4REM4hEMoj8g6SrvgXjmL2/mKu8ABu8GBi+W4AeGAOYH4ITIxgDmCSDGACYAhuCATeUlQMbEIOkCYAUP4IDo5SRm6QKADeCEeOWAPSDrAcbgIeEa4hrGBGDpAmA24IKJ6zMPSw1r4ETrJQ/rB+CAOmUA5RMAJQAFIAUA5QIAZQAFAAWgBWAFAAUABQBFACUABSAFAAUABQAFAAUAJQAFIGUAxQBlAGUABQDlAgDlCYBFAIUA5QngLCzggIbvJGDvXOAE7wcg7wcA7wcA7x3gAusF74AZ4DDvFeAF7yRg7wHAL+AGr+CAEu+Ac47vglDgAO8FQO8FQO9s4ATvUcDvBOAM7wRg7zDgAO8CoO8g4ADvFiAv4EbvcQDvSgDvf+AE7wYgj0BPgM/gAe8RwM/gAU/gBc/gIe+ACwDvL+Ad6QLgg37lwGZW4Brlj63gA+WAViDllfrgBuWcqeCLl+WBluCFWuWSw+DKrC4b4Bb7WOB45oBo4MC9iP3Av3Yg/cC/diAAAPUrAAB6FAAA/AUAAAAAAACAAAEAoAABAHABAQAQAwEAQwMBAGADAQCwAwEA0AMBANsDAQDwAwEAIJEAABAEAQAwBAEAUAQBAHAEAQCgBAEAWQYBAF4GAQBwBgEAsAYBANAGAQBACAEAmQgBAKUIAQCqCAEAsAgBAPIIAQD2CAEAEAkBAGAJAQCaCQEAsAkBAM8JAQDYCQEA4AkBAKAKAQDwCgEA8AsBABoMAQAwDAEAUAwBAAANAQDwDQEADA4BABAOAQBgDgEA8A4BAJAPAQCQjAAAgIkAQZCABAtkHADIAJsBMwAPAEEAIAALAAwAEQByAh8AFwAWACEAuQEFAAoANQAXAGYBWQAMAAUABABCAAQADwBHADoACwAfAAkABAC8AEcA8QAqAAwAFgCrAO4AHAAEAEIAkACcADMAFQS0AgBBgIEEC9IFrID+gETbgFJ6gEgIgU4EgELigGDNZoBAqIDWgAAAAADdgENwEYCZCYFcH4CagoqAn4OXgY2BwIwYERyRAwGJABQoEQkCBRMkyiEYCAgAIQsLkQkABgApQSGDQKcIgJeAkIBBvIGLiCQhCRSNAAGFl4G4AICcg4iBQVWBnolBkpW+g5+BYNRiAAOAQNIAgGDUwNSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAeBsVX/GJoBAAiAiQMAACgYAAACAQAIAAAAAAEACwYDAwCAiYCQIgSAkAAAAAAAAAAAQ0SAQmmNAAEBAMeKr4wGj4DkMxkLgKKAnY/liuQKiAIDQKaLFoWTtQmOASKJgZyCuTEJgYmAiYGcgrkjCQuAnQqAioK5OBCBlIGVE4K5MQmBiIGJgZ2AuiIQgomAp4O5MBAXgYqBnIK5MBAXgYqBm4O5MBCCiYCJgZyCyigAh5GBvAGGkYDiASiBj4BAopCKioCj7YsAC5YbEBEyg4yLAImDRnOBnYGdgZ2BwZJAu4GhgPWLg4hA3YS4iYGTyYG+hK+Ou4KdiAm4irGSQa+NRsCzSPWfYHhzh6GBQWEHgJaE14GxjwC4gKWEm4usg6+LpIDCjYsHgayCsQARDICrJIBA7IdgTzKASFaERoUQDINDE4NBgoFBUoK0jbuArIjGgqOLkYG4gq+MjYHbiAgoQJ+JloO5MQmBiYCJgUDQjALpkUDsMYacgdGOAOmK5o1BAIxA9igJCgCAQI0xK4Cbiakgg5GKrY1BljiG0pWAjfkqAAgQAoDBIAiDQVuDYFBXALYz3IFgTKuAYCNgMJAOAQRJG4BH55mFmYWZAAAAAABAqYCOgEH0iDGdhN+As4BZsL6MgKGkQrCAjICPjEDSj0NPmUeRgWB6HYFA0YBAhoFDYYNgIV+PQ0WZYcxfmYWZhZkAQeCGBAtBSb2Al4BBZYCXgOWAl4BA6YCRgeaAl4D2gI6ATVSARNWAUCCBYM9tgVOdgJeAQVeAi4BA8IBDf4BguDMHhGwurN8AQbCHBAs3Q06ATg6BRlKBSK6AUP2AYM46gM6IbQAGAJ3f/0DvTg9YhIFIkICUgE9rgUC2gELOgE/giEZngABB8IcECxFF/4VA1oCwgEHRgGEH2YCOgABBkIgECzdDeYBKt4D+gGAh5oFgy8CFQZWB8wAAAAAAAACAQR6BAEN5gGAtH4Fgy8CFQZWB8wAAAAAAAACAAEHQiAQLFkHDCAiBpIFO3KoKToc/P4eLgI6AroAAQfCIBAshQN6Az4CXgEQ8gFkRgEDkPz+HiREFAhGAqRGAYNsHhouEAEGgiQQLhQRAnwYAAQABEhCCn4DPAYCLB4D7AQGApYBAu4ieKYTaCIGJgKMEAgQIgMmCnIBBk4BAk4DXg0Leh/sIgNIBgKERgED8gULUgP6Ap4GtgLWAiAMDA4CLgIgAJoCQgIgDAwOAi4BBQYDhgUZSgdSDRRwQioCRgJuMgKGkQNmAQNUAAAAAAAABPz+HiREEACkEEoCIEoCIEREECI8AIIsSKggLAAeCjAaSgZqAjIqA1hgQigEMCgAQEQIGBRyFj4+PiIBAoQiBQPeBQTTVmZpFIIDmguSAQZ6BQPCAQS6A0oCLQNWpgLQAgt8JgN6AsN2Cjd+egKeHroBBf2Bym4FA0YBAhoFDYYOIgGBNlUENCACBiQAACYLDgemlhoskAJcEAAEBgOugQWqRv4G1p4yCmZWUgYuAkgMaAIBAhgiAn5lAgxUNDQoWBoCIYLymg1S5ho2Hv4VCPtSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBQSOBsVX/GJoBAAiAiQMAACgYAAACAQAIAAAAAAEACwYDAwCAiYCQIgSAkEJDioSegJ+ZgqKA7oKMq4OIMUmdiWD8BUIdawXhT/+viTWZhUYbgFnwgZmEtoMAAAAAAAAAAKyARVuAsoBOQIBEBIBICIW8gKaAjoBBhYBMAwGAnguAQdqAkoDugGDNj4GkgImAQKiAT56AAEGwjQQLF0FIgEUogEkCAIBIKIFIxIVCuIFt3NWAAEHQjQQL5gLdAIDGBQMBgUH2QJ4HJZALgIiBQPyEQNCAtpCAmgABAECFO4FAhQsKgsKa2oq5iqGBQMibvICPAoObgMmAj4DtgI+A7YCPgK6Cu4CPBoD2gP6A7YCPgOyBj4D7gPsogOqAjITKgZoAAAOBwRCBvYDvAIGnC4SYMICJgULAgkRoioiAQVqCQTg5gK+N9YCOgKWItYFAiYG/hdGYGCgKsb7Yi6QigkG8AIKKgoyCjIKMgUzvgkE8gEH5heiD3oBgdXGAiwiAm4HRgY2h5YLsgUDJgJqRuIOjgN6Ai4CjgECUgsCDsoDjhIiC/4FgTy+AQwCPQQ0AgK6ArIHCgEL7gEgDgUI6hUIdikFngfeBvYDLgIiC54FAsYHQgI+AlzKEQMwCgPqBQPqB/YD1gfKAQQyBQQELgECbgNKAkYDQgEGkgEEBAIHQgGBNV4S6hkRXkM+BYGF0Ei85hp2DT4GGQbSDRd+G7BCCAEHAkAQLxQFAtoBCF4FDbYBBuIBDWYBC74D+gElCgLeAQmKAQY2Aw4BTiICqhOaB3IJgbxWARfWAQ8GAlYBAiIDrgJSBYFR6gFPrgEJngkTOgGBQqIFEmwiAYHFXgUgFgq+JNZmFYP6oiTWZhWAv7wmHYC/xgQAAYDAFgZiIjYJDxFm/v2BR/GBZAkFtgelgdQmAmlf3h0TVqYhgJGZBi2BNA2Cm3aFQNIpA3YFWgY1dMEweQh1F4VNKYCALgU4/hPqESu8RgGCQ+QkAgQBBkJIEC0dg/c+fQg2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gQBB4JIEC0WgjomGmRiAmYOhMAAIAAsDAoCWgJ6AXxeXh46BkoCJQTBCz0CfQnWdRGtB//9BgBOYjoBgzQyBQQSBiISRgOOAX4eBl4EAQbCTBAu3AqEDgECCgI6AX1uHmIFOBoBByIOMgmDOIINAvAOA2YFgLn+ZgNiLQNVh8eWZAAAAAKCAi4CPgEVIgECTgUCzgKqCQPWAvAACgUEkgUbjgUMVA4FDBIBAxYFAywSAQTmBQWGDQK0JgUDagcCBQ7uBiIJN44CMgEHEgGB0+4BBDYFA4gKAQX2B1YHegECXgUCSgkCPgUD4gGBSZQKBQKiAi4CPgMCASvOBRPyEQOyB9IP+gkCADYCPgdcIgeuAQaCBQXQMjuiBQPiCQgQAgED6gdaBQaOBQrOBYEt0gUCEgMCBioBDUoBgTgWAXeeAAAAAAOiBQMOAQRiAnYCzgJOAQT+A4QCAWQiAsoCMAoBAg4BAnIBBpIBA1YFLMYBhp6SBsYGxgbGBsYGxgbGBsYGxgbGBsYGxgbGBAEHwlQQL8QGggIkAgIoKgEM9B4BCAIC4gMeAjQGBQLOAqooAQOqBtY6egEEEgUTzgUCrA4VBNoFDFIdDBID7gsaBQJwSgKYZgUE5gUFhg0CtCIJA2oS9gUO7gYiCTeOAjAOAiQCBQbCBYHT6gUEMgkDihEF9gdWB3oBAloJAkoL+gI+BQPiAYFJjEINAqICJAICKCoDAAYBEOYCvgESFgEDGgEE1gUCXhcOF2INDt4RA7Ibvg/6CQIANgI+B14TrgEGggouBQWUajuiBQPiCQgQAgED6gdYLgUGdgqyAQoSBRXaEYEX4gUCEgMCCiYBDUYFgTgWAXeaDAEHwlwQLNmAz/1m/v2BR/GBaEAgAgYkAAAmCYQXVYKbdoVA0ikDdgVaBjV0wVB5TSlgKgmDl8Y9tAu9A7wBBsJgECxaIhJGA44CZgFXegEl+ipwMgK6AT5+AAEHQmAQLggSngZEAgJsAgJwAgKyAjoBOfYNHXIFJm4GJgbWBjYFAsIBAvxoqAgoYGAADiCCAkSOICAA5ngsgiAmSIYghC5eBjzuTDoFEPI3JARgIFBwSjUGSlQ2AjTg1EBwBDBgCCYkpgYuSAwgACAMhKpeBigsYCQuqD4CnIAAUIhgUAED/gEICGgiBjQmJQd2JD2DOPCyBQKGBkQCAmwCAnAAACIFg13aAuIC4gLiAuIAAAAAAAKIFBInuA4BfjICLgEDXgJWA2YWOgUFugYuAQKWAmIoaQMaAQOaBiYCIgLkYhIgBAQkDAQAJAgIPFAAEi4oJAAiAkQGBkSgACgwBC4GKDAkECACBkwwoGQMBASgBAAAFAgWAiYGOAQMAAxCAioGvgoiAjYCNgEFzgUHOgpKBsgOARNmAi4BCWACAYb1pgEDJgECfgYuBjQGJypkBloCTAYiUgUCtoYHvCQKB0gqAQQaAvooolzEPiwEZA4GMCQeBiASCixcRAAMFAgXVr8UnCj0QARCBiUDii0EfroCJgLGA0YCy7yIUhoiYNoiCjIYAAKIFBIlf0oBA1IBg3SqAYPPVmUH6hEWvg2wGa99h8/qEYCYcgEDagI+DYcx2gLsRAYL0CYqUkhAaAjAAl4BAyAuAlAOBQK0ShNKAj4KIgIqAQj4BBz2AiIkKt4C8CAiAkBCMAEHgnAQL+QRgIxmBQMwaAYBCCIGUgbGLqoCSgIwHgZAMDwSAlAYIAwEGA4GbgKIAAxCAvIKXgI2AQ1qBsgOAYcStgEDJgEC9AYnKmQCXgJMBIIKUgUCtoIuIgMWAlYuqHIuQEILGAIBAuoG+jBiXkYCZgYyA1dSvxSgSCpIOiEDii0EfroCJgLGA0YCy7yIUhoiYNoiCjIZAqAOAX4yAi4BA14CVgNmFjoFBboGLgN6AxYCYihpAxoBA5oGJgIiAuRgoi4DxifWBigAAKBAoiYGOAQMAAxCAioSsgoiAjYCNgEFzgUHOgpKBsgOARNmAi4BCWACAYb1lQP+Mgp6Au4WLgY0BiZG4mo6JgJMBiAOIQbGEQT2HQQmv//OL1KqLg7eHiYWnh53Ri66AiYBBuED/Q/0AAAAAQKyAQqCAQsuAS0GBRlKB1INH+4SZhLCPUPOAYMyaj0DugECfgM6IYLymg1TOh2wuhE//Hw8HAwEAAAAAAAAAAIAAAAAACAAAAAABAAAAIAAAAAAEAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAQeOhBAuVAoAAAAAAYE7CUKf01NQAAABAAAAAANJoIDfK5R4KjWSEMXo+Fbh1MpgtxGlTnaqqqiqrqqqqMCdhKFR6amqhJogm5v3zPoMTACVEp8i6Bme0IwnHwILxKZci7T3Isv1/niErV62liDvDIKspfNoAAAAgAAAAAH61UB+zhFisxiyyHm/ipooY4SEesqpdDCHNnR3kNJhDeEwkHWUNejaJBbQcDD4XrFvZSxwNK9eoaNfqG0zO+JhpNJAb5XIPBT9DOxsVb7AudW/rGjj8RpzrOKAaF/07DmIwWRpWjI2zw/QVGuailSvcMNYZ+d59zJmZmRmamZmZgOxfGTGUYIp77igZ+SJPC89q9BgY4waMRjLCGD2fCtwAQYOkBAvOASBHA7gyAAAAQCY8TUpHA7hS/dnVWQAAAGCOBnBlJjxNavCps25HA7hyjgBqdv3Z1XltPwV9AAAAgN9+zIKOBnCFrgXvhyY8TYpF3Y2M8KmzjgEFwZBHA7iSTHialI4AapbWCSiY/dnVmY+UdJttPwWds8aIngAAAKA3rWuh337MoiMWI6SOBnClAAAAAAEAAAAKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BQDKmjsAAAAAAAAAAJQAAAB3AAAAWQAAADsAAAAdAEHgpQQLowOAAIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACQAJEAkgCTAJQAlQCWAJYAlwCYAJkAmgCbAJsAnACdAJ4AnwCgAKAAoQCiAKMAowCkAKUApgCnAKcAqACpAKoAqgCrAKwArQCtAK4ArwCwALAAsQCyALIAswC0ALUAtQC2ALcAtwC4ALkAuQC6ALsAuwC8AL0AvQC+AL8AwADAAMEAwQDCAMMAwwDEAMUAxQDGAMcAxwDIAMkAyQDKAMsAywDMAMwAzQDOAM4AzwDQANAA0QDRANIA0wDTANQA1ADVANYA1gDXANcA2ADZANkA2gDaANsA2wDcAN0A3QDeAN4A3wDgAOAA4QDhAOIA4gDjAOMA5ADlAOUA5gDmAOcA5wDoAOgA6QDqAOoA6wDrAOwA7ADtAO0A7gDuAO8A8ADwAPEA8QDyAPIA8wDzAPQA9AD1APUA9gD2APcA9wD4APgA+QD5APoA+gD7APsA/AD8AP0A/QD+AP4A/wAgFBANDAsKCgkJCAgICAgHBwcHBwcHBgYGBgYGBgYGBgYGBgBBkKkECxQBALAyAQBwMwEA0DYBADA3AQBQPgBBsKkEC8ABMV9SMjc76wWf2m4kAVnyNWhXLwIauh4FDuF7EOB01RzmBjgFmL/WLAAAAAAAAAAAmlVJBKlsuh5GjsEuCxZgCAcTMg0gEfULOClmDz6rMgn47kAvBQl2LgAAAAAAAAAAT7thBWes3T8YLURU+yHpP5v2gdILc+8/GC1EVPsh+T/iZS8ifyt6PAdcFDMmpoE8vcvweogHcDwHXBQzJqaRPBgtRFT7Iek/GC1EVPsh6b/SITN/fNkCQNIhM3982QLAAEH/qgQL6BWAGC1EVPshCUAYLURU+yEJwAMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAZxEcAzWfDAAno3ABZgyoAi3bEAKYclgBEr90AGVfRAKU+BQAFB/8AM34/AMIy6ACYT94Au30yACY9wwAea+8An/heADUfOgB/8soA8YcdAHyQIQBqJHwA1W76ADAtdwAVO0MAtRTGAMMZnQCtxMIALE1BAAwAXQCGfUYA43EtAJvGmgAzYgAAtNJ8ALSnlwA3VdUA1z72AKMQGABNdvwAZJ0qAHDXqwBjfPgAerBXABcV5wDASVYAO9bZAKeEOAAkI8sA1op3AFpUIwAAH7kA8QobABnO3wCfMf8AZh5qAJlXYQCs+0cAfn/YACJltwAy6IkA5r9gAO/EzQBsNgkAXT/UABbe1wBYO94A3puSANIiKAAohugA4lhNAMbKMgAI4xYA4H3LABfAUADzHacAGOBbAC4TNACDEmIAg0gBAPWOWwCtsH8AHunyAEhKQwAQZ9MAqt3YAK5fQgBqYc4ACiikANOZtAAGpvIAXHd/AKPCgwBhPIgAinN4AK+MWgBv170ALaZjAPS/ywCNge8AJsFnAFXKRQDK2TYAKKjSAMJhjQASyXcABCYUABJGmwDEWcQAyMVEAE2ykQAAF/MA1EOtAClJ5QD91RAAAL78AB6UzABwzu4AEz71AOzxgACz58MAx/goAJMFlADBcT4ALgmzAAtF8wCIEpwAqyB7AC61nwBHksIAezIvAAxVbQByp5AAa+cfADHLlgB5FkoAQXniAPTfiQDolJcA4uaEAJkxlwCI7WsAX182ALv9DgBImrQAZ6RsAHFyQgCNXTIAnxW4ALzlCQCNMSUA93Q5ADAFHAANDAEASwhoACzuWABHqpAAdOcCAL3WJAD3faYAbkhyAJ8W7wCOlKYAtJH2ANFTUQDPCvIAIJgzAPVLfgCyY2gA3T5fAEBdAwCFiX8AVVIpADdkwABt2BAAMkgyAFtMdQBOcdQARVRuAAsJwQAq9WkAFGbVACcHnQBdBFAAtDvbAOp2xQCH+RcASWt9AB0nugCWaSkAxsysAK0UVACQ4moAiNmJACxyUAAEpL4AdweUAPMwcAAA/CcA6nGoAGbCSQBk4D0Al92DAKM/lwBDlP0ADYaMADFB3gCSOZ0A3XCMABe35wAI3zsAFTcrAFyAoABagJMAEBGSAA/o2ABsgK8A2/9LADiQDwBZGHYAYqUVAGHLuwDHibkAEEC9ANLyBABJdScA67b2ANsiuwAKFKoAiSYvAGSDdgAJOzMADpQaAFE6qgAdo8IAr+2uAFwmEgBtwk0ALXqcAMBWlwADP4MACfD2ACtAjABtMZkAObQHAAwgFQDYw1sA9ZLEAMatSwBOyqUApzfNAOapNgCrkpQA3UJoABlj3gB2jO8AaItSAPzbNwCuoasA3xUxAACuoQAM+9oAZE1mAO0FtwApZTAAV1a/AEf/OgBq+bkAdb7zACiT3wCrgDAAZoz2AATLFQD6IgYA2eQdAD2zpABXG48ANs0JAE5C6QATvqQAMyO1APCqGgBPZagA0sGlAAs/DwBbeM0AI/l2AHuLBACJF3IAxqZTAG9u4gDv6wAAm0pYAMTatwCqZroAds/PANECHQCx8S0AjJnBAMOtdwCGSNoA912gAMaA9ACs8C8A3eyaAD9cvADQ3m0AkMcfACrbtgCjJToAAK+aAK1TkwC2VwQAKS20AEuAfgDaB6cAdqoOAHtZoQAWEioA3LctAPrl/QCJ2/4Aib79AOR2bAAGqfwAPoBwAIVuFQD9h/8AKD4HAGFnMwAqGIYATb3qALPnrwCPbW4AlWc5ADG/WwCE10gAMN8WAMctQwAlYTUAyXDOADDLuAC/bP0ApACiAAVs5ABa3aAAIW9HAGIS0gC5XIQAcGFJAGtW4ACZUgEAUFU3AB7VtwAz8cQAE25fAF0w5ACFLqkAHbLDAKEyNgAIt6QA6rHUABb3IQCPaeQAJ/93AAwDgACNQC0AT82gACClmQCzotMAL10KALT5QgAR2ssAfb7QAJvbwQCrF70AyqKBAAhqXAAuVRcAJwBVAH8U8ADhB4YAFAtkAJZBjQCHvt4A2v0qAGsltgB7iTQABfP+ALm/ngBoak8ASiqoAE/EWgAt+LwA11qYAPTHlQANTY0AIDqmAKRXXwAUP7EAgDiVAMwgAQBx3YYAyd62AL9g9QBNZREAAQdrAIywrACywNAAUVVIAB77DgCVcsMAowY7AMBANQAG3HsA4EXMAE4p+gDWysgA6PNBAHxk3gCbZNgA2b4xAKSXwwB3WNQAaePFAPDaEwC6OjwARhhGAFV1XwDSvfUAbpLGAKwuXQAORO0AHD5CAGHEhwAp/ekA59bzACJ8ygBvkTUACODFAP/XjQBuauIAsP3GAJMIwQB8XXQAa62yAM1unQA+cnsAxhFqAPfPqQApc98Atcm6ALcAUQDisg0AdLokAOV9YAB02IoADRUsAIEYDAB+ZpQAASkWAJ96dgD9/b4AVkXvANl+NgDs2RMAi7q5AMSX/AAxqCcA8W7DAJTFNgDYqFYAtKi1AM/MDgASiS0Ab1c0ACxWiQCZzuMA1iC5AGteqgA+KpwAEV/MAP0LSgDh9PsAjjttAOKGLADp1IQA/LSpAO/u0QAuNckALzlhADghRAAb2cgAgfwKAPtKagAvHNgAU7SEAE6ZjABUIswAKlXcAMDG1gALGZYAGnC4AGmVZAAmWmAAP1LuAH8RDwD0tREA/Mv1ADS8LQA0vO4A6F3MAN1eYABnjpsAkjPvAMkXuABhWJsA4Ve8AFGDxgDYPhAA3XFIAC0c3QCvGKEAISxGAFnz1wDZepgAnlTAAE+G+gBWBvwA5XmuAIkiNgA4rSIAZ5PcAFXoqgCCJjgAyuebAFENpACZM7EAqdcOAGkFSABlsvAAf4inAIhMlwD50TYAIZKzAHuCSgCYzyEAQJ/cANxHVQDhdDoAZ+tCAP6d3wBe1F8Ae2ekALqsegBV9qIAK4gjAEG6VQBZbggAISqGADlHgwCJ4+YA5Z7UAEn7QAD/VukAHA/KAMVZigCU+isA08HFAA/FzwDbWq4AR8WGAIVDYgAhhjsALHmUABBhhwAqTHsAgCwaAEO/EgCIJpAAeDyJAKjE5ADl23sAxDrCACb06gD3Z4oADZK/AGWjKwA9k7EAvXwLAKRR3AAn3WMAaeHdAJqUGQCoKZUAaM4oAAnttABEnyAATpjKAHCCYwB+fCMAD7kyAKf1jgAUVucAIfEIALWdKgBvfk0ApRlRALX5qwCC39YAlt1hABY2AgDEOp8Ag6KhAHLtbQA5jXoAgripAGsyXABGJ1sAADTtANIAdwD89FUAAVlNAOBxgABB88AEC64BQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNdF0ngBXnb0qgHBSD///PicKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BRkACgAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQARChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEGxwgQLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBB68IECwEMAEH3wgQLFRMAAAAAEwAAAAAJDAAAAAAADAAADABBpcMECwEQAEGxwwQLFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABB38MECwESAEHrwwQLHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBosQECw4aAAAAGhoaAAAAAAAACQBB08QECwEUAEHfxAQLFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBjcUECwEWAEGZxQQLJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBB5MUECwE6AEGMxgQLCP//////////AEHQxgQLAxAvUQBB3MYECx0DAAAAAAAAAAIAAAAAAAAAAQAAAAEAAAABAAAABQBBhMcECwKWAQBBnMcECwuXAQAAmAEAAOwqAQBBtMcECwECAEHExwQLCP//////////AEGIyAQLCXgjAQAAAAAABQBBnMgECwKZAQBBtMgECw6XAQAAmgEAAPgqAQAABABBzMgECwEBAEHcyAQLBf////8KAEGgyQQLAxAkAQ=="; if (!R.startsWith(Q)) { var fa = R; R = a.locateFile ? a.locateFile(fa, x) : x + fa; } function ha(b) { try { if (b == R && E) return new Uint8Array(E); var c = C(b); if (c) return c; if (A) return A(b); throw "both async and sync fetching of the wasm failed"; } catch (d) { F(d); } } function ia(b) { if (!E && (u || v)) { if ("function" == typeof fetch && !b.startsWith("file://")) return fetch(b, { credentials: "same-origin" }).then(function(c) { if (!c.ok) throw "failed to load wasm binary file at '" + b + "'"; return c.arrayBuffer(); }).catch(function() { return ha(b); }); if (z) return new Promise(function(c, d) { z(b, function(e2) { c(new Uint8Array(e2)); }, d); }); } return Promise.resolve().then(function() { return ha(b); }); } function ja(b, c, d) { return ia(b).then(function(e2) { return WebAssembly.instantiate(e2, c); }).then(function(e2) { return e2; }).then(d, function(e2) { D("failed to asynchronously prepare wasm: " + e2); F(e2); }); } function ka(b, c) { var d = R; return E || "function" != typeof WebAssembly.instantiateStreaming || d.startsWith(Q) || d.startsWith("file://") || w || "function" != typeof fetch ? ja(d, b, c) : fetch(d, { credentials: "same-origin" }).then(function(e2) { return WebAssembly.instantiateStreaming(e2, b).then(c, function(f) { D("wasm streaming compile failed: " + f); D("falling back to ArrayBuffer instantiation"); return ja(d, b, c); }); }); } function S(b) { for (; 0 < b.length; ) b.shift()(a); } var la = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; function na(b, c, d) { var e2 = c + d; for (d = c; b[d] && !(d >= e2); ) ++d; if (16 < d - c && b.buffer && la) return la.decode(b.subarray(c, d)); for (e2 = ""; c < d; ) { var f = b[c++]; if (f & 128) { var g = b[c++] & 63; if (192 == (f & 224)) e2 += String.fromCharCode((f & 31) << 6 | g); else { var h = b[c++] & 63; f = 224 == (f & 240) ? (f & 15) << 12 | g << 6 | h : (f & 7) << 18 | g << 12 | h << 6 | b[c++] & 63; 65536 > f ? e2 += String.fromCharCode(f) : (f -= 65536, e2 += String.fromCharCode(55296 | f >> 10, 56320 | f & 1023)); } } else e2 += String.fromCharCode(f); } return e2; } function T(b, c) { return b ? na(J, b, c) : ""; } var oa = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], pa = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; function U(b) { for (var c = 0, d = 0; d < b.length; ++d) { var e2 = b.charCodeAt(d); 127 >= e2 ? c++ : 2047 >= e2 ? c += 2 : 55296 <= e2 && 57343 >= e2 ? (c += 4, ++d) : c += 3; } return c; } function V(b, c, d) { var e2 = J; if (!(0 < d)) return 0; var f = c; d = c + d - 1; for (var g = 0; g < b.length; ++g) { var h = b.charCodeAt(g); if (55296 <= h && 57343 >= h) { var k = b.charCodeAt(++g); h = 65536 + ((h & 1023) << 10) | k & 1023; } if (127 >= h) { if (c >= d) break; e2[c++] = h; } else { if (2047 >= h) { if (c + 1 >= d) break; e2[c++] = 192 | h >> 6; } else { if (65535 >= h) { if (c + 2 >= d) break; e2[c++] = 224 | h >> 12; } else { if (c + 3 >= d) break; e2[c++] = 240 | h >> 18; e2[c++] = 128 | h >> 12 & 63; } e2[c++] = 128 | h >> 6 & 63; } e2[c++] = 128 | h & 63; } } e2[c] = 0; return c - f; } function qa(b) { var c = U(b) + 1, d = ra(c); d && V(b, d, c); return d; } var W = {}; function sa() { if (!X) { var b = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: ("object" == typeof navigator && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", _: t || "./this.program" }, c; for (c in W) void 0 === W[c] ? delete b[c] : b[c] = W[c]; var d = []; for (c in b) d.push(c + "=" + b[c]); X = d; } return X; } var X, ta = [null, [], []]; function ua(b, c, d, e2) { var f = { string: (l) => { var q = 0; if (null !== l && void 0 !== l && 0 !== l) { q = U(l) + 1; var ma = Y(q); V(l, ma, q); q = ma; } return q; }, array: (l) => { var q = Y(l.length); I.set(l, q); return q; } }; b = a["_" + b]; var g = [], h = 0; if (e2) for (var k = 0; k < e2.length; k++) { var r = f[d[k]]; r ? (0 === h && (h = va()), g[k] = r(e2[k])) : g[k] = e2[k]; } d = b.apply(null, g); return d = function(l) { 0 !== h && wa(h); return "string" === c ? T(l) : "boolean" === c ? !!l : l; }(d); } var xa = "function" == typeof atob ? atob : function(b) { var c = "", d = 0; b = b.replace(/[^A-Za-z0-9\+\/=]/g, ""); do { var e2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(d++)); var f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(d++)); var g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(d++)); var h = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(d++)); e2 = e2 << 2 | f >> 4; f = (f & 15) << 4 | g >> 2; var k = (g & 3) << 6 | h; c += String.fromCharCode(e2); 64 !== g && (c += String.fromCharCode(f)); 64 !== h && (c += String.fromCharCode(k)); } while (d < b.length); return c; }; function C(b) { if (b.startsWith(Q)) { b = b.slice(Q.length); if ("boolean" == typeof w && w) { var c = Buffer.from(b, "base64"); c = new Uint8Array(c.buffer, c.byteOffset, c.byteLength); } else try { var d = xa(b), e2 = new Uint8Array(d.length); for (b = 0; b < d.length; ++b) e2[b] = d.charCodeAt(b); c = e2; } catch (f) { throw Error("Converting base64 string to bytes failed."); } return c; } } var ya = { a: function(b, c, d, e2) { F("Assertion failed: " + T(b) + ", at: " + [c ? T(c) : "unknown filename", d, e2 ? T(e2) : "unknown function"]); }, l: function(b, c) { b = new Date(1e3 * (L[b >> 2] + 4294967296 * K[b + 4 >> 2])); K[c >> 2] = b.getSeconds(); K[c + 4 >> 2] = b.getMinutes(); K[c + 8 >> 2] = b.getHours(); K[c + 12 >> 2] = b.getDate(); K[c + 16 >> 2] = b.getMonth(); K[c + 20 >> 2] = b.getFullYear() - 1900; K[c + 24 >> 2] = b.getDay(); var d = b.getFullYear(); K[c + 28 >> 2] = (0 !== d % 4 || 0 === d % 100 && 0 !== d % 400 ? pa : oa)[b.getMonth()] + b.getDate() - 1 | 0; K[c + 36 >> 2] = -(60 * b.getTimezoneOffset()); d = new Date(b.getFullYear(), 6, 1).getTimezoneOffset(); var e2 = new Date(b.getFullYear(), 0, 1).getTimezoneOffset(); K[c + 32 >> 2] = (d != e2 && b.getTimezoneOffset() == Math.min(e2, d)) | 0; }, k: function(b, c, d) { function e2(r) { return (r = r.toTimeString().match(/\(([A-Za-z ]+)\)$/)) ? r[1] : "GMT"; } var f = (/* @__PURE__ */ new Date()).getFullYear(), g = new Date(f, 0, 1), h = new Date(f, 6, 1); f = g.getTimezoneOffset(); var k = h.getTimezoneOffset(); L[b >> 2] = 60 * Math.max(f, k); K[c >> 2] = Number(f != k); b = e2(g); c = e2(h); b = qa(b); c = qa(c); k < f ? (L[d >> 2] = b, L[d + 4 >> 2] = c) : (L[d >> 2] = c, L[d + 4 >> 2] = b); }, b: function() { F(""); }, m: function() { return Date.now(); }, j: function(b) { var c = J.length; b >>>= 0; if (2147483648 < b) return false; for (var d = 1; 4 >= d; d *= 2) { var e2 = c * (1 + 0.2 / d); e2 = Math.min(e2, b + 100663296); var f = Math, g = f.min; e2 = Math.max(b, e2); e2 += (65536 - e2 % 65536) % 65536; a: { var h = G.buffer; try { G.grow(g.call(f, 2147483648, e2) - h.byteLength + 65535 >>> 16); M(); var k = 1; break a; } catch (r) { } k = void 0; } if (k) return true; } return false; }, e: function(b, c) { var d = 0; sa().forEach(function(e2, f) { var g = c + d; f = L[b + 4 * f >> 2] = g; for (g = 0; g < e2.length; ++g) I[f++ >> 0] = e2.charCodeAt(g); I[f >> 0] = 0; d += e2.length + 1; }); return 0; }, f: function(b, c) { var d = sa(); L[b >> 2] = d.length; var e2 = 0; d.forEach(function(f) { e2 += f.length + 1; }); L[c >> 2] = e2; return 0; }, d: function() { return 52; }, i: function() { return 70; }, c: function(b, c, d, e2) { for (var f = 0, g = 0; g < d; g++) { var h = L[c >> 2], k = L[c + 4 >> 2]; c += 8; for (var r = 0; r < k; r++) { var l = J[h + r], q = ta[b]; 0 === l || 10 === l ? ((1 === b ? aa : D)(na(q, 0)), q.length = 0) : q.push(l); } f += k; } L[e2 >> 2] = f; return 0; }, o: function(b, c, d, e2, f) { return a.callbacks.callFunction(void 0, b, c, d, e2, f); }, n: function(b) { return a.callbacks.shouldInterrupt(void 0, b); }, h: function(b, c, d) { d = T(d); return a.callbacks.loadModuleSource(void 0, b, c, d); }, g: function(b, c, d, e2) { d = T(d); e2 = T(e2); return a.callbacks.normalizeModule(void 0, b, c, d, e2); } }; (function() { function b(d) { d = d.exports; a.asm = d; G = a.asm.p; M(); ca.unshift(a.asm.q); N--; a.monitorRunDependencies && a.monitorRunDependencies(N); if (0 == N && (null !== O && (clearInterval(O), O = null), P)) { var e2 = P; P = null; e2(); } return d; } var c = { a: ya }; N++; a.monitorRunDependencies && a.monitorRunDependencies(N); if (a.instantiateWasm) try { return a.instantiateWasm(c, b); } catch (d) { D("Module.instantiateWasm callback failed with error: " + d), n(d); } ka(c, function(d) { b(d.instance); }).catch(n); return {}; })(); var ra = a._malloc = function() { return (ra = a._malloc = a.asm.r).apply(null, arguments); }; a._QTS_Throw = function() { return (a._QTS_Throw = a.asm.s).apply(null, arguments); }; a._QTS_NewError = function() { return (a._QTS_NewError = a.asm.t).apply(null, arguments); }; a._QTS_RuntimeSetMemoryLimit = function() { return (a._QTS_RuntimeSetMemoryLimit = a.asm.u).apply(null, arguments); }; a._QTS_RuntimeComputeMemoryUsage = function() { return (a._QTS_RuntimeComputeMemoryUsage = a.asm.v).apply(null, arguments); }; a._QTS_RuntimeDumpMemoryUsage = function() { return (a._QTS_RuntimeDumpMemoryUsage = a.asm.w).apply(null, arguments); }; a._QTS_RecoverableLeakCheck = function() { return (a._QTS_RecoverableLeakCheck = a.asm.x).apply(null, arguments); }; a._QTS_BuildIsSanitizeLeak = function() { return (a._QTS_BuildIsSanitizeLeak = a.asm.y).apply(null, arguments); }; a._QTS_RuntimeSetMaxStackSize = function() { return (a._QTS_RuntimeSetMaxStackSize = a.asm.z).apply(null, arguments); }; a._QTS_GetUndefined = function() { return (a._QTS_GetUndefined = a.asm.A).apply(null, arguments); }; a._QTS_GetNull = function() { return (a._QTS_GetNull = a.asm.B).apply(null, arguments); }; a._QTS_GetFalse = function() { return (a._QTS_GetFalse = a.asm.C).apply(null, arguments); }; a._QTS_GetTrue = function() { return (a._QTS_GetTrue = a.asm.D).apply(null, arguments); }; a._QTS_NewRuntime = function() { return (a._QTS_NewRuntime = a.asm.E).apply(null, arguments); }; a._QTS_FreeRuntime = function() { return (a._QTS_FreeRuntime = a.asm.F).apply(null, arguments); }; a._QTS_NewContext = function() { return (a._QTS_NewContext = a.asm.G).apply(null, arguments); }; a._QTS_FreeContext = function() { return (a._QTS_FreeContext = a.asm.H).apply(null, arguments); }; a._QTS_FreeValuePointer = function() { return (a._QTS_FreeValuePointer = a.asm.I).apply(null, arguments); }; a._free = function() { return (a._free = a.asm.J).apply(null, arguments); }; a._QTS_FreeValuePointerRuntime = function() { return (a._QTS_FreeValuePointerRuntime = a.asm.K).apply(null, arguments); }; a._QTS_FreeVoidPointer = function() { return (a._QTS_FreeVoidPointer = a.asm.L).apply(null, arguments); }; a._QTS_FreeCString = function() { return (a._QTS_FreeCString = a.asm.M).apply(null, arguments); }; a._QTS_DupValuePointer = function() { return (a._QTS_DupValuePointer = a.asm.N).apply(null, arguments); }; a._QTS_NewObject = function() { return (a._QTS_NewObject = a.asm.O).apply(null, arguments); }; a._QTS_NewObjectProto = function() { return (a._QTS_NewObjectProto = a.asm.P).apply(null, arguments); }; a._QTS_NewArray = function() { return (a._QTS_NewArray = a.asm.Q).apply(null, arguments); }; a._QTS_NewFloat64 = function() { return (a._QTS_NewFloat64 = a.asm.R).apply(null, arguments); }; a._QTS_GetFloat64 = function() { return (a._QTS_GetFloat64 = a.asm.S).apply(null, arguments); }; a._QTS_NewString = function() { return (a._QTS_NewString = a.asm.T).apply(null, arguments); }; a._QTS_GetString = function() { return (a._QTS_GetString = a.asm.U).apply(null, arguments); }; a._QTS_NewSymbol = function() { return (a._QTS_NewSymbol = a.asm.V).apply(null, arguments); }; a._QTS_GetSymbolDescriptionOrKey = function() { return (a._QTS_GetSymbolDescriptionOrKey = a.asm.W).apply(null, arguments); }; a._QTS_IsGlobalSymbol = function() { return (a._QTS_IsGlobalSymbol = a.asm.X).apply(null, arguments); }; a._QTS_IsJobPending = function() { return (a._QTS_IsJobPending = a.asm.Y).apply(null, arguments); }; a._QTS_ExecutePendingJob = function() { return (a._QTS_ExecutePendingJob = a.asm.Z).apply(null, arguments); }; a._QTS_GetProp = function() { return (a._QTS_GetProp = a.asm._).apply(null, arguments); }; a._QTS_SetProp = function() { return (a._QTS_SetProp = a.asm.$).apply(null, arguments); }; a._QTS_DefineProp = function() { return (a._QTS_DefineProp = a.asm.aa).apply(null, arguments); }; a._QTS_Call = function() { return (a._QTS_Call = a.asm.ba).apply(null, arguments); }; a._QTS_ResolveException = function() { return (a._QTS_ResolveException = a.asm.ca).apply(null, arguments); }; a._QTS_Dump = function() { return (a._QTS_Dump = a.asm.da).apply(null, arguments); }; a._QTS_Eval = function() { return (a._QTS_Eval = a.asm.ea).apply(null, arguments); }; a._QTS_Typeof = function() { return (a._QTS_Typeof = a.asm.fa).apply(null, arguments); }; a._QTS_GetGlobalObject = function() { return (a._QTS_GetGlobalObject = a.asm.ga).apply(null, arguments); }; a._QTS_NewPromiseCapability = function() { return (a._QTS_NewPromiseCapability = a.asm.ha).apply(null, arguments); }; a._QTS_TestStringArg = function() { return (a._QTS_TestStringArg = a.asm.ia).apply(null, arguments); }; a._QTS_BuildIsDebug = function() { return (a._QTS_BuildIsDebug = a.asm.ja).apply(null, arguments); }; a._QTS_BuildIsAsyncify = function() { return (a._QTS_BuildIsAsyncify = a.asm.ka).apply(null, arguments); }; a._QTS_NewFunction = function() { return (a._QTS_NewFunction = a.asm.la).apply(null, arguments); }; a._QTS_ArgvGetJSValueConstPointer = function() { return (a._QTS_ArgvGetJSValueConstPointer = a.asm.ma).apply(null, arguments); }; a._QTS_RuntimeEnableInterruptHandler = function() { return (a._QTS_RuntimeEnableInterruptHandler = a.asm.na).apply(null, arguments); }; a._QTS_RuntimeDisableInterruptHandler = function() { return (a._QTS_RuntimeDisableInterruptHandler = a.asm.oa).apply(null, arguments); }; a._QTS_RuntimeEnableModuleLoader = function() { return (a._QTS_RuntimeEnableModuleLoader = a.asm.pa).apply(null, arguments); }; a._QTS_RuntimeDisableModuleLoader = function() { return (a._QTS_RuntimeDisableModuleLoader = a.asm.qa).apply(null, arguments); }; function va() { return (va = a.asm.sa).apply(null, arguments); } function wa() { return (wa = a.asm.ta).apply(null, arguments); } function Y() { return (Y = a.asm.ua).apply(null, arguments); } a.___start_em_js = 74916; a.___stop_em_js = 75818; a.cwrap = function(b, c, d, e2) { var f = !d || d.every((g) => "number" === g || "boolean" === g); return "string" !== c && f && !e2 ? a["_" + b] : function() { return ua(b, c, d, arguments); }; }; a.UTF8ToString = T; a.stringToUTF8 = function(b, c, d) { return V(b, c, d); }; a.lengthBytesUTF8 = U; var Z; P = function za() { Z || Aa(); Z || (P = za); }; function Aa() { function b() { if (!Z && (Z = true, a.calledRun = true, !H)) { S(ca); m(a); if (a.onRuntimeInitialized) a.onRuntimeInitialized(); if (a.postRun) for ("function" == typeof a.postRun && (a.postRun = [a.postRun]); a.postRun.length; ) { var c = a.postRun.shift(); da.unshift(c); } S(da); } } if (!(0 < N)) { if (a.preRun) for ("function" == typeof a.preRun && (a.preRun = [a.preRun]); a.preRun.length; ) ea(); S(ba); 0 < N || (a.setStatus ? (a.setStatus("Running..."), setTimeout(function() { setTimeout(function() { a.setStatus(""); }, 1); b(); }, 1)) : b()); } } if (a.preInit) for ("function" == typeof a.preInit && (a.preInit = [a.preInit]); 0 < a.preInit.length; ) a.preInit.pop()(); Aa(); return QuickJSRaw2.ready; }; })(); if (typeof exports2 === "object" && typeof module2 === "object") module2.exports = QuickJSRaw; else if (typeof define === "function" && define["amd"]) define([], function() { return QuickJSRaw; }); else if (typeof exports2 === "object") exports2["QuickJSRaw"] = QuickJSRaw; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/variants.js var require_variants = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/variants.js"(exports2) { "use strict"; 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.RELEASE_ASYNC = exports2.DEBUG_ASYNC = exports2.RELEASE_SYNC = exports2.DEBUG_SYNC = exports2.memoizePromiseFactory = exports2.newQuickJSAsyncWASMModule = exports2.newQuickJSWASMModule = void 0; var esmHelpers_1 = require_esmHelpers(); async function newQuickJSWASMModule(variant = exports2.RELEASE_SYNC) { const [wasmModuleLoader, QuickJSFFI, { QuickJSWASMModule }] = await Promise.all([ variant.importModuleLoader(), variant.importFFI(), Promise.resolve().then(() => __importStar2(require_module2())).then(esmHelpers_1.unwrapTypescript) ]); const wasmModule = await wasmModuleLoader(); wasmModule.type = "sync"; const ffi = new QuickJSFFI(wasmModule); return new QuickJSWASMModule(wasmModule, ffi); } exports2.newQuickJSWASMModule = newQuickJSWASMModule; async function newQuickJSAsyncWASMModule(variant = exports2.RELEASE_ASYNC) { const [wasmModuleLoader, QuickJSAsyncFFI, { QuickJSAsyncWASMModule }] = await Promise.all([ variant.importModuleLoader(), variant.importFFI(), Promise.resolve().then(() => __importStar2(require_module_asyncify())).then(esmHelpers_1.unwrapTypescript) ]); const wasmModule = await wasmModuleLoader(); wasmModule.type = "async"; const ffi = new QuickJSAsyncFFI(wasmModule); return new QuickJSAsyncWASMModule(wasmModule, ffi); } exports2.newQuickJSAsyncWASMModule = newQuickJSAsyncWASMModule; function memoizePromiseFactory(fn2) { let promise; return () => { return promise ?? (promise = fn2()); }; } exports2.memoizePromiseFactory = memoizePromiseFactory; exports2.DEBUG_SYNC = { type: "sync", async importFFI() { throw new Error("not implemented"); }, async importModuleLoader() { throw new Error("not implemented"); } }; exports2.RELEASE_SYNC = { type: "sync", async importFFI() { const mod = await Promise.resolve().then(() => __importStar2(require_ffi_WASM_RELEASE_SYNC())); return (0, esmHelpers_1.unwrapTypescript)(mod).QuickJSFFI; }, async importModuleLoader() { const mod = await Promise.resolve().then(() => __importStar2(require_emscripten_module_WASM_RELEASE_SYNC())); return (0, esmHelpers_1.unwrapJavascript)(mod); } }; exports2.DEBUG_ASYNC = { type: "async", async importFFI() { throw new Error("not implemented"); }, async importModuleLoader() { throw new Error("not implemented"); } }; exports2.RELEASE_ASYNC = { type: "async", async importFFI() { throw new Error("not implemented"); }, async importModuleLoader() { throw new Error("not implemented"); } }; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.js var require_vm_interface = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.isFail = exports2.isSuccess = void 0; function isSuccess(successOrFail) { return "error" in successOrFail === false; } exports2.isSuccess = isSuccess; function isFail(successOrFail) { return "error" in successOrFail === true; } exports2.isFail = isFail; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.js var require_module_test = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.TestQuickJSWASMModule = void 0; var errors_1 = require_errors3(); var lifetime_1 = require_lifetime(); var TestQuickJSWASMModule = class { constructor(parent) { this.parent = parent; this.contexts = /* @__PURE__ */ new Set(); this.runtimes = /* @__PURE__ */ new Set(); } newRuntime(options) { const runtime = this.parent.newRuntime({ ...options, ownedLifetimes: [ new lifetime_1.Lifetime(void 0, void 0, () => this.runtimes.delete(runtime)), ...options?.ownedLifetimes ?? [] ] }); this.runtimes.add(runtime); return runtime; } newContext(options) { const context = this.parent.newContext({ ...options, ownedLifetimes: [ new lifetime_1.Lifetime(void 0, void 0, () => this.contexts.delete(context)), ...options?.ownedLifetimes ?? [] ] }); this.contexts.add(context); return context; } evalCode(code2, options) { return this.parent.evalCode(code2, options); } disposeAll() { const allDisposables = [...this.contexts, ...this.runtimes]; this.runtimes.clear(); this.contexts.clear(); allDisposables.forEach((d) => { if (d.alive) { d.dispose(); } }); } assertNoMemoryAllocated() { const leaksDetected = this.getFFI().QTS_RecoverableLeakCheck(); if (leaksDetected) { throw new errors_1.QuickJSMemoryLeakDetected("Leak sanitizer detected un-freed memory"); } if (this.contexts.size > 0) { throw new errors_1.QuickJSMemoryLeakDetected(`${this.contexts.size} contexts leaked`); } if (this.runtimes.size > 0) { throw new errors_1.QuickJSMemoryLeakDetected(`${this.runtimes.size} runtimes leaked`); } } /** @private */ getFFI() { return this.parent.getFFI(); } }; exports2.TestQuickJSWASMModule = TestQuickJSWASMModule; } }); // ../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/index.js var require_dist14 = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/index.js"(exports2) { "use strict"; 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 __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 __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.shouldInterruptAfterDeadline = exports2.newAsyncContext = exports2.newAsyncRuntime = exports2.getQuickJSSync = exports2.getQuickJS = exports2.errors = exports2.RELEASE_SYNC = exports2.RELEASE_ASYNC = exports2.DEBUG_SYNC = exports2.DEBUG_ASYNC = exports2.newQuickJSAsyncWASMModule = exports2.newQuickJSWASMModule = void 0; var variants_1 = require_variants(); Object.defineProperty(exports2, "newQuickJSWASMModule", { enumerable: true, get: function() { return variants_1.newQuickJSWASMModule; } }); Object.defineProperty(exports2, "newQuickJSAsyncWASMModule", { enumerable: true, get: function() { return variants_1.newQuickJSAsyncWASMModule; } }); Object.defineProperty(exports2, "DEBUG_ASYNC", { enumerable: true, get: function() { return variants_1.DEBUG_ASYNC; } }); Object.defineProperty(exports2, "DEBUG_SYNC", { enumerable: true, get: function() { return variants_1.DEBUG_SYNC; } }); Object.defineProperty(exports2, "RELEASE_ASYNC", { enumerable: true, get: function() { return variants_1.RELEASE_ASYNC; } }); Object.defineProperty(exports2, "RELEASE_SYNC", { enumerable: true, get: function() { return variants_1.RELEASE_SYNC; } }); __exportStar2(require_vm_interface(), exports2); __exportStar2(require_lifetime(), exports2); exports2.errors = __importStar2(require_errors3()); __exportStar2(require_deferred_promise(), exports2); __exportStar2(require_module_test(), exports2); var singleton = void 0; var singletonPromise = void 0; async function getQuickJS() { singletonPromise ?? (singletonPromise = (0, variants_1.newQuickJSWASMModule)().then((instance) => { singleton = instance; return instance; })); return await singletonPromise; } exports2.getQuickJS = getQuickJS; function getQuickJSSync() { if (!singleton) { throw new Error("QuickJS not initialized. Await getQuickJS() at least once."); } return singleton; } exports2.getQuickJSSync = getQuickJSSync; async function newAsyncRuntime(options) { const module3 = await (0, variants_1.newQuickJSAsyncWASMModule)(); return module3.newRuntime(options); } exports2.newAsyncRuntime = newAsyncRuntime; async function newAsyncContext(options) { const module3 = await (0, variants_1.newQuickJSAsyncWASMModule)(); return module3.newContext(options); } exports2.newAsyncContext = newAsyncContext; function shouldInterruptAfterDeadline(deadline) { const deadlineAsNumber = typeof deadline === "number" ? deadline : deadline.getTime(); return function() { return Date.now() > deadlineAsNumber; }; } exports2.shouldInterruptAfterDeadline = shouldInterruptAfterDeadline; } }); // ../../node_modules/.pnpm/smart-buffer@4.2.0/node_modules/smart-buffer/build/utils.js var require_utils17 = __commonJS2({ "../../node_modules/.pnpm/smart-buffer@4.2.0/node_modules/smart-buffer/build/utils.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var buffer_1 = __require("buffer"); var ERRORS = { 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 = ERRORS; function checkEncoding(encoding) { if (!buffer_1.Buffer.isEncoding(encoding)) { throw new Error(ERRORS.INVALID_ENCODING); } } exports2.checkEncoding = checkEncoding; function isFiniteInteger(value) { return typeof value === "number" && isFinite(value) && isInteger2(value); } exports2.isFiniteInteger = isFiniteInteger; function checkOffsetOrLengthValue(value, offset) { if (typeof value === "number") { if (!isFiniteInteger(value) || value < 0) { throw new Error(offset ? ERRORS.INVALID_OFFSET : ERRORS.INVALID_LENGTH); } } else { throw new Error(offset ? ERRORS.INVALID_OFFSET_NON_NUMBER : ERRORS.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(ERRORS.INVALID_TARGET_OFFSET); } } exports2.checkTargetOffset = checkTargetOffset; function isInteger2(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/.pnpm/smart-buffer@4.2.0/node_modules/smart-buffer/build/smartbuffer.js var require_smartbuffer = __commonJS2({ "../../node_modules/.pnpm/smart-buffer@4.2.0/node_modules/smart-buffer/build/smartbuffer.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); var utils_1 = require_utils17(); 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/.pnpm/socks@2.8.4/node_modules/socks/build/common/constants.js var require_constants6 = __commonJS2({ "../../node_modules/.pnpm/socks@2.8.4/node_modules/socks/build/common/constants.js"(exports2) { "use strict"; 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 ERRORS = { 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 = ERRORS; 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/.pnpm/socks@2.8.4/node_modules/socks/build/common/util.js var require_util8 = __commonJS2({ "../../node_modules/.pnpm/socks@2.8.4/node_modules/socks/build/common/util.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.shuffleArray = exports2.SocksClientError = void 0; var SocksClientError = class extends Error { constructor(message2, options) { super(message2); 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]]; } } exports2.shuffleArray = shuffleArray; } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/common.js var require_common11 = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/common.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.isCorrect = exports2.isInSubnet = void 0; function isInSubnet(address) { if (this.subnetMask < address.subnetMask) { return false; } if (this.mask(address.subnetMask) === address.mask()) { return true; } return false; } exports2.isInSubnet = isInSubnet; function isCorrect(defaultBits) { return function() { if (this.addressMinusSuffix !== this.correctForm()) { return false; } if (this.subnetMask === defaultBits && !this.parsedSubnet) { return true; } return this.parsedSubnet === String(this.subnetMask); }; } exports2.isCorrect = isCorrect; } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/v4/constants.js var require_constants7 = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/v4/constants.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); 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]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g; exports2.RE_SUBNET_STRING = /\/\d{1,2}$/; } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/address-error.js var require_address_error = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/address-error.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.AddressError = void 0; var AddressError = class extends Error { constructor(message2, parseMessage) { super(message2); this.name = "AddressError"; if (parseMessage !== null) { this.parseMessage = parseMessage; } } }; exports2.AddressError = AddressError; } }); // ../../node_modules/.pnpm/jsbn@1.1.0/node_modules/jsbn/index.js var require_jsbn = __commonJS2({ "../../node_modules/.pnpm/jsbn@1.1.0/node_modules/jsbn/index.js"(exports2, module2) { (function() { var dbits; var canary = 244837814094590; var j_lm = (canary & 16777215) == 15715070; function BigInteger(a, b, c) { if (a != null) if ("number" == typeof a) this.fromNumber(a, b, c); else if (b == null && "string" != typeof a) this.fromString(a, 256); else this.fromString(a, b); } function nbi() { return new BigInteger(null); } function am1(i, x, w, j, c, n) { while (--n >= 0) { var v = x * this[i++] + w[j] + c; c = Math.floor(v / 67108864); w[j++] = v & 67108863; } return c; } function am2(i, x, w, j, c, n) { var xl = x & 32767, xh = x >> 15; while (--n >= 0) { var l = this[i] & 32767; var h = this[i++] >> 15; var m = xh * l + h * xl; l = xl * l + ((m & 32767) << 15) + w[j] + (c & 1073741823); c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30); w[j++] = l & 1073741823; } return c; } function am3(i, x, w, j, c, n) { var xl = x & 16383, xh = x >> 14; while (--n >= 0) { var l = this[i] & 16383; var h = this[i++] >> 14; var m = xh * l + h * xl; l = xl * l + ((m & 16383) << 14) + w[j] + c; c = (l >> 28) + (m >> 14) + xh * h; w[j++] = l & 268435455; } return c; } var inBrowser = typeof navigator !== "undefined"; if (inBrowser && j_lm && navigator.appName == "Microsoft Internet Explorer") { BigInteger.prototype.am = am2; dbits = 30; } else if (inBrowser && j_lm && navigator.appName != "Netscape") { BigInteger.prototype.am = am1; dbits = 26; } else { BigInteger.prototype.am = am3; dbits = 28; } BigInteger.prototype.DB = dbits; BigInteger.prototype.DM = (1 << dbits) - 1; BigInteger.prototype.DV = 1 << dbits; var BI_FP = 52; BigInteger.prototype.FV = Math.pow(2, BI_FP); BigInteger.prototype.F1 = BI_FP - dbits; BigInteger.prototype.F2 = 2 * dbits - BI_FP; var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"; var BI_RC = new Array(); var rr, vv; rr = "0".charCodeAt(0); for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv; rr = "a".charCodeAt(0); for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv; rr = "A".charCodeAt(0); for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv; function int2char(n) { return BI_RM.charAt(n); } function intAt(s, i) { var c = BI_RC[s.charCodeAt(i)]; return c == null ? -1 : c; } function bnpCopyTo(r) { for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]; r.t = this.t; r.s = this.s; } function bnpFromInt(x) { this.t = 1; this.s = x < 0 ? -1 : 0; if (x > 0) this[0] = x; else if (x < -1) this[0] = x + this.DV; else this.t = 0; } function nbv(i) { var r = nbi(); r.fromInt(i); return r; } function bnpFromString(s, b) { var k; if (b == 16) k = 4; else if (b == 8) k = 3; else if (b == 256) k = 8; else if (b == 2) k = 1; else if (b == 32) k = 5; else if (b == 4) k = 2; else { this.fromRadix(s, b); return; } this.t = 0; this.s = 0; var i = s.length, mi = false, sh = 0; while (--i >= 0) { var x = k == 8 ? s[i] & 255 : intAt(s, i); if (x < 0) { if (s.charAt(i) == "-") mi = true; continue; } mi = false; if (sh == 0) this[this.t++] = x; else if (sh + k > this.DB) { this[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh; this[this.t++] = x >> this.DB - sh; } else this[this.t - 1] |= x << sh; sh += k; if (sh >= this.DB) sh -= this.DB; } if (k == 8 && (s[0] & 128) != 0) { this.s = -1; if (sh > 0) this[this.t - 1] |= (1 << this.DB - sh) - 1 << sh; } this.clamp(); if (mi) BigInteger.ZERO.subTo(this, this); } function bnpClamp() { var c = this.s & this.DM; while (this.t > 0 && this[this.t - 1] == c) --this.t; } function bnToString(b) { if (this.s < 0) return "-" + this.negate().toString(b); var k; if (b == 16) k = 4; else if (b == 8) k = 3; else if (b == 2) k = 1; else if (b == 32) k = 5; else if (b == 4) k = 2; else return this.toRadix(b); var km = (1 << k) - 1, d, m = false, r = "", i = this.t; var p = this.DB - i * this.DB % k; if (i-- > 0) { if (p < this.DB && (d = this[i] >> p) > 0) { m = true; r = int2char(d); } while (i >= 0) { if (p < k) { d = (this[i] & (1 << p) - 1) << k - p; d |= this[--i] >> (p += this.DB - k); } else { d = this[i] >> (p -= k) & km; if (p <= 0) { p += this.DB; --i; } } if (d > 0) m = true; if (m) r += int2char(d); } } return m ? r : "0"; } function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this, r); return r; } function bnAbs() { return this.s < 0 ? this.negate() : this; } function bnCompareTo(a) { var r = this.s - a.s; if (r != 0) return r; var i = this.t; r = i - a.t; if (r != 0) return this.s < 0 ? -r : r; while (--i >= 0) if ((r = this[i] - a[i]) != 0) return r; return 0; } function nbits(x) { var r = 1, t2; if ((t2 = x >>> 16) != 0) { x = t2; r += 16; } if ((t2 = x >> 8) != 0) { x = t2; r += 8; } if ((t2 = x >> 4) != 0) { x = t2; r += 4; } if ((t2 = x >> 2) != 0) { x = t2; r += 2; } if ((t2 = x >> 1) != 0) { x = t2; r += 1; } return r; } function bnBitLength() { if (this.t <= 0) return 0; return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM); } function bnpDLShiftTo(n, r) { var i; for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]; for (i = n - 1; i >= 0; --i) r[i] = 0; r.t = this.t + n; r.s = this.s; } function bnpDRShiftTo(n, r) { for (var i = n; i < this.t; ++i) r[i - n] = this[i]; r.t = Math.max(this.t - n, 0); r.s = this.s; } function bnpLShiftTo(n, r) { var bs = n % this.DB; var cbs = this.DB - bs; var bm = (1 << cbs) - 1; var ds = Math.floor(n / this.DB), c = this.s << bs & this.DM, i; for (i = this.t - 1; i >= 0; --i) { r[i + ds + 1] = this[i] >> cbs | c; c = (this[i] & bm) << bs; } for (i = ds - 1; i >= 0; --i) r[i] = 0; r[ds] = c; r.t = this.t + ds + 1; r.s = this.s; r.clamp(); } function bnpRShiftTo(n, r) { r.s = this.s; var ds = Math.floor(n / this.DB); if (ds >= this.t) { r.t = 0; return; } var bs = n % this.DB; var cbs = this.DB - bs; var bm = (1 << bs) - 1; r[0] = this[ds] >> bs; for (var i = ds + 1; i < this.t; ++i) { r[i - ds - 1] |= (this[i] & bm) << cbs; r[i - ds] = this[i] >> bs; } if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs; r.t = this.t - ds; r.clamp(); } function bnpSubTo(a, r) { var i = 0, c = 0, m = Math.min(a.t, this.t); while (i < m) { c += this[i] - a[i]; r[i++] = c & this.DM; c >>= this.DB; } if (a.t < this.t) { c -= a.s; while (i < this.t) { c += this[i]; r[i++] = c & this.DM; c >>= this.DB; } c += this.s; } else { c += this.s; while (i < a.t) { c -= a[i]; r[i++] = c & this.DM; c >>= this.DB; } c -= a.s; } r.s = c < 0 ? -1 : 0; if (c < -1) r[i++] = this.DV + c; else if (c > 0) r[i++] = c; r.t = i; r.clamp(); } function bnpMultiplyTo(a, r) { var x = this.abs(), y = a.abs(); var i = x.t; r.t = i + y.t; while (--i >= 0) r[i] = 0; for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t); r.s = 0; r.clamp(); if (this.s != a.s) BigInteger.ZERO.subTo(r, r); } function bnpSquareTo(r) { var x = this.abs(); var i = r.t = 2 * x.t; while (--i >= 0) r[i] = 0; for (i = 0; i < x.t - 1; ++i) { var c = x.am(i, x[i], r, 2 * i, 0, 1); if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) { r[i + x.t] -= x.DV; r[i + x.t + 1] = 1; } } if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1); r.s = 0; r.clamp(); } function bnpDivRemTo(m, q, r) { var pm = m.abs(); if (pm.t <= 0) return; var pt = this.abs(); if (pt.t < pm.t) { if (q != null) q.fromInt(0); if (r != null) this.copyTo(r); return; } if (r == null) r = nbi(); var y = nbi(), ts = this.s, ms34 = m.s; var nsh = this.DB - nbits(pm[pm.t - 1]); if (nsh > 0) { pm.lShiftTo(nsh, y); pt.lShiftTo(nsh, r); } else { pm.copyTo(y); pt.copyTo(r); } var ys = y.t; var y0 = y[ys - 1]; if (y0 == 0) return; var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0); var d1 = this.FV / yt, d2 = (1 << this.F1) / yt, e2 = 1 << this.F2; var i = r.t, j = i - ys, t2 = q == null ? nbi() : q; y.dlShiftTo(j, t2); if (r.compareTo(t2) >= 0) { r[r.t++] = 1; r.subTo(t2, r); } BigInteger.ONE.dlShiftTo(ys, t2); t2.subTo(y, y); while (y.t < ys) y[y.t++] = 0; while (--j >= 0) { var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e2) * d2); if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { y.dlShiftTo(j, t2); r.subTo(t2, r); while (r[i] < --qd) r.subTo(t2, r); } } if (q != null) { r.drShiftTo(ys, q); if (ts != ms34) BigInteger.ZERO.subTo(q, q); } r.t = ys; r.clamp(); if (nsh > 0) r.rShiftTo(nsh, r); if (ts < 0) BigInteger.ZERO.subTo(r, r); } function bnMod(a) { var r = nbi(); this.abs().divRemTo(a, null, r); if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r); return r; } function Classic(m) { this.m = m; } function cConvert(x) { if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); else return x; } function cRevert(x) { return x; } function cReduce(x) { x.divRemTo(this.m, null, x); } function cMulTo(x, y, r) { x.multiplyTo(y, r); this.reduce(r); } function cSqrTo(x, r) { x.squareTo(r); this.reduce(r); } Classic.prototype.convert = cConvert; Classic.prototype.revert = cRevert; Classic.prototype.reduce = cReduce; Classic.prototype.mulTo = cMulTo; Classic.prototype.sqrTo = cSqrTo; function bnpInvDigit() { if (this.t < 1) return 0; var x = this[0]; if ((x & 1) == 0) return 0; var y = x & 3; y = y * (2 - (x & 15) * y) & 15; y = y * (2 - (x & 255) * y) & 255; y = y * (2 - ((x & 65535) * y & 65535)) & 65535; y = y * (2 - x * y % this.DV) % this.DV; return y > 0 ? this.DV - y : -y; } function Montgomery(m) { this.m = m; this.mp = m.invDigit(); this.mpl = this.mp & 32767; this.mph = this.mp >> 15; this.um = (1 << m.DB - 15) - 1; this.mt2 = 2 * m.t; } function montConvert(x) { var r = nbi(); x.abs().dlShiftTo(this.m.t, r); r.divRemTo(this.m, null, r); if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r); return r; } function montRevert(x) { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } function montReduce(x) { while (x.t <= this.mt2) x[x.t++] = 0; for (var i = 0; i < this.m.t; ++i) { var j = x[i] & 32767; var u0 = j * this.mpl + ((j * this.mph + (x[i] >> 15) * this.mpl & this.um) << 15) & x.DM; j = i + this.m.t; x[j] += this.m.am(0, u0, x, i, 0, this.m.t); while (x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } } x.clamp(); x.drShiftTo(this.m.t, x); if (x.compareTo(this.m) >= 0) x.subTo(this.m, x); } function montSqrTo(x, r) { x.squareTo(r); this.reduce(r); } function montMulTo(x, y, r) { x.multiplyTo(y, r); this.reduce(r); } Montgomery.prototype.convert = montConvert; Montgomery.prototype.revert = montRevert; Montgomery.prototype.reduce = montReduce; Montgomery.prototype.mulTo = montMulTo; Montgomery.prototype.sqrTo = montSqrTo; function bnpIsEven() { return (this.t > 0 ? this[0] & 1 : this.s) == 0; } function bnpExp(e2, z2) { if (e2 > 4294967295 || e2 < 1) return BigInteger.ONE; var r = nbi(), r2 = nbi(), g = z2.convert(this), i = nbits(e2) - 1; g.copyTo(r); while (--i >= 0) { z2.sqrTo(r, r2); if ((e2 & 1 << i) > 0) z2.mulTo(r2, g, r); else { var t2 = r; r = r2; r2 = t2; } } return z2.revert(r); } function bnModPowInt(e2, m) { var z2; if (e2 < 256 || m.isEven()) z2 = new Classic(m); else z2 = new Montgomery(m); return this.exp(e2, z2); } BigInteger.prototype.copyTo = bnpCopyTo; BigInteger.prototype.fromInt = bnpFromInt; BigInteger.prototype.fromString = bnpFromString; BigInteger.prototype.clamp = bnpClamp; BigInteger.prototype.dlShiftTo = bnpDLShiftTo; BigInteger.prototype.drShiftTo = bnpDRShiftTo; BigInteger.prototype.lShiftTo = bnpLShiftTo; BigInteger.prototype.rShiftTo = bnpRShiftTo; BigInteger.prototype.subTo = bnpSubTo; BigInteger.prototype.multiplyTo = bnpMultiplyTo; BigInteger.prototype.squareTo = bnpSquareTo; BigInteger.prototype.divRemTo = bnpDivRemTo; BigInteger.prototype.invDigit = bnpInvDigit; BigInteger.prototype.isEven = bnpIsEven; BigInteger.prototype.exp = bnpExp; BigInteger.prototype.toString = bnToString; BigInteger.prototype.negate = bnNegate; BigInteger.prototype.abs = bnAbs; BigInteger.prototype.compareTo = bnCompareTo; BigInteger.prototype.bitLength = bnBitLength; BigInteger.prototype.mod = bnMod; BigInteger.prototype.modPowInt = bnModPowInt; BigInteger.ZERO = nbv(0); BigInteger.ONE = nbv(1); function bnClone() { var r = nbi(); this.copyTo(r); return r; } function bnIntValue() { if (this.s < 0) { if (this.t == 1) return this[0] - this.DV; else if (this.t == 0) return -1; } else if (this.t == 1) return this[0]; else if (this.t == 0) return 0; return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0]; } function bnByteValue() { return this.t == 0 ? this.s : this[0] << 24 >> 24; } function bnShortValue() { return this.t == 0 ? this.s : this[0] << 16 >> 16; } function bnpChunkSize(r) { return Math.floor(Math.LN2 * this.DB / Math.log(r)); } function bnSigNum() { if (this.s < 0) return -1; else if (this.t <= 0 || this.t == 1 && this[0] <= 0) return 0; else return 1; } function bnpToRadix(b) { if (b == null) b = 10; if (this.signum() == 0 || b < 2 || b > 36) return "0"; var cs = this.chunkSize(b); var a = Math.pow(b, cs); var d = nbv(a), y = nbi(), z2 = nbi(), r = ""; this.divRemTo(d, y, z2); while (y.signum() > 0) { r = (a + z2.intValue()).toString(b).substr(1) + r; y.divRemTo(d, y, z2); } return z2.intValue().toString(b) + r; } function bnpFromRadix(s, b) { this.fromInt(0); if (b == null) b = 10; var cs = this.chunkSize(b); var d = Math.pow(b, cs), mi = false, j = 0, w = 0; for (var i = 0; i < s.length; ++i) { var x = intAt(s, i); if (x < 0) { if (s.charAt(i) == "-" && this.signum() == 0) mi = true; continue; } w = b * w + x; if (++j >= cs) { this.dMultiply(d); this.dAddOffset(w, 0); j = 0; w = 0; } } if (j > 0) { this.dMultiply(Math.pow(b, j)); this.dAddOffset(w, 0); } if (mi) BigInteger.ZERO.subTo(this, this); } function bnpFromNumber(a, b, c) { if ("number" == typeof b) { if (a < 2) this.fromInt(1); else { this.fromNumber(a, c); if (!this.testBit(a - 1)) this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this); if (this.isEven()) this.dAddOffset(1, 0); while (!this.isProbablePrime(b)) { this.dAddOffset(2, 0); if (this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a - 1), this); } } } else { var x = new Array(), t2 = a & 7; x.length = (a >> 3) + 1; b.nextBytes(x); if (t2 > 0) x[0] &= (1 << t2) - 1; else x[0] = 0; this.fromString(x, 256); } } function bnToByteArray() { var i = this.t, r = new Array(); r[0] = this.s; var p = this.DB - i * this.DB % 8, d, k = 0; if (i-- > 0) { if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) r[k++] = d | this.s << this.DB - p; while (i >= 0) { if (p < 8) { d = (this[i] & (1 << p) - 1) << 8 - p; d |= this[--i] >> (p += this.DB - 8); } else { d = this[i] >> (p -= 8) & 255; if (p <= 0) { p += this.DB; --i; } } if ((d & 128) != 0) d |= -256; if (k == 0 && (this.s & 128) != (d & 128)) ++k; if (k > 0 || d != this.s) r[k++] = d; } } return r; } function bnEquals(a) { return this.compareTo(a) == 0; } function bnMin(a) { return this.compareTo(a) < 0 ? this : a; } function bnMax(a) { return this.compareTo(a) > 0 ? this : a; } function bnpBitwiseTo(a, op, r) { var i, f, m = Math.min(a.t, this.t); for (i = 0; i < m; ++i) r[i] = op(this[i], a[i]); if (a.t < this.t) { f = a.s & this.DM; for (i = m; i < this.t; ++i) r[i] = op(this[i], f); r.t = this.t; } else { f = this.s & this.DM; for (i = m; i < a.t; ++i) r[i] = op(f, a[i]); r.t = a.t; } r.s = op(this.s, a.s); r.clamp(); } function op_and(x, y) { return x & y; } function bnAnd(a) { var r = nbi(); this.bitwiseTo(a, op_and, r); return r; } function op_or(x, y) { return x | y; } function bnOr(a) { var r = nbi(); this.bitwiseTo(a, op_or, r); return r; } function op_xor(x, y) { return x ^ y; } function bnXor(a) { var r = nbi(); this.bitwiseTo(a, op_xor, r); return r; } function op_andnot(x, y) { return x & ~y; } function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a, op_andnot, r); return r; } function bnNot() { var r = nbi(); for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]; r.t = this.t; r.s = ~this.s; return r; } function bnShiftLeft(n) { var r = nbi(); if (n < 0) this.rShiftTo(-n, r); else this.lShiftTo(n, r); return r; } function bnShiftRight(n) { var r = nbi(); if (n < 0) this.lShiftTo(-n, r); else this.rShiftTo(n, r); return r; } function lbit(x) { if (x == 0) return -1; var r = 0; if ((x & 65535) == 0) { x >>= 16; r += 16; } if ((x & 255) == 0) { x >>= 8; r += 8; } if ((x & 15) == 0) { x >>= 4; r += 4; } if ((x & 3) == 0) { x >>= 2; r += 2; } if ((x & 1) == 0) ++r; return r; } function bnGetLowestSetBit() { for (var i = 0; i < this.t; ++i) if (this[i] != 0) return i * this.DB + lbit(this[i]); if (this.s < 0) return this.t * this.DB; return -1; } function cbit(x) { var r = 0; while (x != 0) { x &= x - 1; ++r; } return r; } function bnBitCount() { var r = 0, x = this.s & this.DM; for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x); return r; } function bnTestBit(n) { var j = Math.floor(n / this.DB); if (j >= this.t) return this.s != 0; return (this[j] & 1 << n % this.DB) != 0; } function bnpChangeBit(n, op) { var r = BigInteger.ONE.shiftLeft(n); this.bitwiseTo(r, op, r); return r; } function bnSetBit(n) { return this.changeBit(n, op_or); } function bnClearBit(n) { return this.changeBit(n, op_andnot); } function bnFlipBit(n) { return this.changeBit(n, op_xor); } function bnpAddTo(a, r) { var i = 0, c = 0, m = Math.min(a.t, this.t); while (i < m) { c += this[i] + a[i]; r[i++] = c & this.DM; c >>= this.DB; } if (a.t < this.t) { c += a.s; while (i < this.t) { c += this[i]; r[i++] = c & this.DM; c >>= this.DB; } c += this.s; } else { c += this.s; while (i < a.t) { c += a[i]; r[i++] = c & this.DM; c >>= this.DB; } c += a.s; } r.s = c < 0 ? -1 : 0; if (c > 0) r[i++] = c; else if (c < -1) r[i++] = this.DV + c; r.t = i; r.clamp(); } function bnAdd(a) { var r = nbi(); this.addTo(a, r); return r; } function bnSubtract(a) { var r = nbi(); this.subTo(a, r); return r; } function bnMultiply(a) { var r = nbi(); this.multiplyTo(a, r); return r; } function bnSquare() { var r = nbi(); this.squareTo(r); return r; } function bnDivide(a) { var r = nbi(); this.divRemTo(a, r, null); return r; } function bnRemainder(a) { var r = nbi(); this.divRemTo(a, null, r); return r; } function bnDivideAndRemainder(a) { var q = nbi(), r = nbi(); this.divRemTo(a, q, r); return new Array(q, r); } function bnpDMultiply(n) { this[this.t] = this.am(0, n - 1, this, 0, 0, this.t); ++this.t; this.clamp(); } function bnpDAddOffset(n, w) { if (n == 0) return; while (this.t <= w) this[this.t++] = 0; this[w] += n; while (this[w] >= this.DV) { this[w] -= this.DV; if (++w >= this.t) this[this.t++] = 0; ++this[w]; } } function NullExp() { } function nNop(x) { return x; } function nMulTo(x, y, r) { x.multiplyTo(y, r); } function nSqrTo(x, r) { x.squareTo(r); } NullExp.prototype.convert = nNop; NullExp.prototype.revert = nNop; NullExp.prototype.mulTo = nMulTo; NullExp.prototype.sqrTo = nSqrTo; function bnPow(e2) { return this.exp(e2, new NullExp()); } function bnpMultiplyLowerTo(a, n, r) { var i = Math.min(this.t + a.t, n); r.s = 0; r.t = i; while (i > 0) r[--i] = 0; var j; for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t); for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i); r.clamp(); } function bnpMultiplyUpperTo(a, n, r) { --n; var i = r.t = this.t + a.t - n; r.s = 0; while (--i >= 0) r[i] = 0; for (i = Math.max(n - this.t, 0); i < a.t; ++i) r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n); r.clamp(); r.drShiftTo(1, r); } function Barrett(m) { this.r2 = nbi(); this.q3 = nbi(); BigInteger.ONE.dlShiftTo(2 * m.t, this.r2); this.mu = this.r2.divide(m); this.m = m; } function barrettConvert(x) { if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m); else if (x.compareTo(this.m) < 0) return x; else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } } function barrettRevert(x) { return x; } function barrettReduce(x) { x.drShiftTo(this.m.t - 1, this.r2); if (x.t > this.m.t + 1) { x.t = this.m.t + 1; x.clamp(); } this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3); this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); while (x.compareTo(this.r2) < 0) x.dAddOffset(1, this.m.t + 1); x.subTo(this.r2, x); while (x.compareTo(this.m) >= 0) x.subTo(this.m, x); } function barrettSqrTo(x, r) { x.squareTo(r); this.reduce(r); } function barrettMulTo(x, y, r) { x.multiplyTo(y, r); this.reduce(r); } Barrett.prototype.convert = barrettConvert; Barrett.prototype.revert = barrettRevert; Barrett.prototype.reduce = barrettReduce; Barrett.prototype.mulTo = barrettMulTo; Barrett.prototype.sqrTo = barrettSqrTo; function bnModPow(e2, m) { var i = e2.bitLength(), k, r = nbv(1), z2; if (i <= 0) return r; else if (i < 18) k = 1; else if (i < 48) k = 3; else if (i < 144) k = 4; else if (i < 768) k = 5; else k = 6; if (i < 8) z2 = new Classic(m); else if (m.isEven()) z2 = new Barrett(m); else z2 = new Montgomery(m); var g = new Array(), n = 3, k1 = k - 1, km = (1 << k) - 1; g[1] = z2.convert(this); if (k > 1) { var g2 = nbi(); z2.sqrTo(g[1], g2); while (n <= km) { g[n] = nbi(); z2.mulTo(g2, g[n - 2], g[n]); n += 2; } } var j = e2.t - 1, w, is1 = true, r2 = nbi(), t2; i = nbits(e2[j]) - 1; while (j >= 0) { if (i >= k1) w = e2[j] >> i - k1 & km; else { w = (e2[j] & (1 << i + 1) - 1) << k1 - i; if (j > 0) w |= e2[j - 1] >> this.DB + i - k1; } n = k; while ((w & 1) == 0) { w >>= 1; --n; } if ((i -= n) < 0) { i += this.DB; --j; } if (is1) { g[w].copyTo(r); is1 = false; } else { while (n > 1) { z2.sqrTo(r, r2); z2.sqrTo(r2, r); n -= 2; } if (n > 0) z2.sqrTo(r, r2); else { t2 = r; r = r2; r2 = t2; } z2.mulTo(r2, g[w], r); } while (j >= 0 && (e2[j] & 1 << i) == 0) { z2.sqrTo(r, r2); t2 = r; r = r2; r2 = t2; if (--i < 0) { i = this.DB - 1; --j; } } } return z2.revert(r); } function bnGCD(a) { var x = this.s < 0 ? this.negate() : this.clone(); var y = a.s < 0 ? a.negate() : a.clone(); if (x.compareTo(y) < 0) { var t2 = x; x = y; y = t2; } var i = x.getLowestSetBit(), g = y.getLowestSetBit(); if (g < 0) return x; if (i < g) g = i; if (g > 0) { x.rShiftTo(g, x); y.rShiftTo(g, y); } while (x.signum() > 0) { if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x); if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y); if (x.compareTo(y) >= 0) { x.subTo(y, x); x.rShiftTo(1, x); } else { y.subTo(x, y); y.rShiftTo(1, y); } } if (g > 0) y.lShiftTo(g, y); return y; } function bnpModInt(n) { if (n <= 0) return 0; var d = this.DV % n, r = this.s < 0 ? n - 1 : 0; if (this.t > 0) if (d == 0) r = this[0] % n; else for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n; return r; } function bnModInverse(m) { var ac = m.isEven(); if (this.isEven() && ac || m.signum() == 0) return BigInteger.ZERO; var u = m.clone(), v = this.clone(); var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); while (u.signum() != 0) { while (u.isEven()) { u.rShiftTo(1, u); if (ac) { if (!a.isEven() || !b.isEven()) { a.addTo(this, a); b.subTo(m, b); } a.rShiftTo(1, a); } else if (!b.isEven()) b.subTo(m, b); b.rShiftTo(1, b); } while (v.isEven()) { v.rShiftTo(1, v); if (ac) { if (!c.isEven() || !d.isEven()) { c.addTo(this, c); d.subTo(m, d); } c.rShiftTo(1, c); } else if (!d.isEven()) d.subTo(m, d); d.rShiftTo(1, d); } if (u.compareTo(v) >= 0) { u.subTo(v, u); if (ac) a.subTo(c, a); b.subTo(d, b); } else { v.subTo(u, v); if (ac) c.subTo(a, c); d.subTo(b, d); } } if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; if (d.compareTo(m) >= 0) return d.subtract(m); if (d.signum() < 0) d.addTo(m, d); else return d; if (d.signum() < 0) return d.add(m); else return d; } var lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997]; var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]; function bnIsProbablePrime(t2) { var i, x = this.abs(); if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) { for (i = 0; i < lowprimes.length; ++i) if (x[0] == lowprimes[i]) return true; return false; } if (x.isEven()) return false; i = 1; while (i < lowprimes.length) { var m = lowprimes[i], j = i + 1; while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]; m = x.modInt(m); while (i < j) if (m % lowprimes[i++] == 0) return false; } return x.millerRabin(t2); } function bnpMillerRabin(t2) { var n1 = this.subtract(BigInteger.ONE); var k = n1.getLowestSetBit(); if (k <= 0) return false; var r = n1.shiftRight(k); t2 = t2 + 1 >> 1; if (t2 > lowprimes.length) t2 = lowprimes.length; var a = nbi(); for (var i = 0; i < t2; ++i) { a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]); var y = a.modPow(r, this); if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { var j = 1; while (j++ < k && y.compareTo(n1) != 0) { y = y.modPowInt(2, this); if (y.compareTo(BigInteger.ONE) == 0) return false; } if (y.compareTo(n1) != 0) return false; } } return true; } BigInteger.prototype.chunkSize = bnpChunkSize; BigInteger.prototype.toRadix = bnpToRadix; BigInteger.prototype.fromRadix = bnpFromRadix; BigInteger.prototype.fromNumber = bnpFromNumber; BigInteger.prototype.bitwiseTo = bnpBitwiseTo; BigInteger.prototype.changeBit = bnpChangeBit; BigInteger.prototype.addTo = bnpAddTo; BigInteger.prototype.dMultiply = bnpDMultiply; BigInteger.prototype.dAddOffset = bnpDAddOffset; BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; BigInteger.prototype.modInt = bnpModInt; BigInteger.prototype.millerRabin = bnpMillerRabin; BigInteger.prototype.clone = bnClone; BigInteger.prototype.intValue = bnIntValue; BigInteger.prototype.byteValue = bnByteValue; BigInteger.prototype.shortValue = bnShortValue; BigInteger.prototype.signum = bnSigNum; BigInteger.prototype.toByteArray = bnToByteArray; BigInteger.prototype.equals = bnEquals; BigInteger.prototype.min = bnMin; BigInteger.prototype.max = bnMax; BigInteger.prototype.and = bnAnd; BigInteger.prototype.or = bnOr; BigInteger.prototype.xor = bnXor; BigInteger.prototype.andNot = bnAndNot; BigInteger.prototype.not = bnNot; BigInteger.prototype.shiftLeft = bnShiftLeft; BigInteger.prototype.shiftRight = bnShiftRight; BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; BigInteger.prototype.bitCount = bnBitCount; BigInteger.prototype.testBit = bnTestBit; BigInteger.prototype.setBit = bnSetBit; BigInteger.prototype.clearBit = bnClearBit; BigInteger.prototype.flipBit = bnFlipBit; BigInteger.prototype.add = bnAdd; BigInteger.prototype.subtract = bnSubtract; BigInteger.prototype.multiply = bnMultiply; BigInteger.prototype.divide = bnDivide; BigInteger.prototype.remainder = bnRemainder; BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; BigInteger.prototype.modPow = bnModPow; BigInteger.prototype.modInverse = bnModInverse; BigInteger.prototype.pow = bnPow; BigInteger.prototype.gcd = bnGCD; BigInteger.prototype.isProbablePrime = bnIsProbablePrime; BigInteger.prototype.square = bnSquare; BigInteger.prototype.Barrett = Barrett; var rng_state; var rng_pool; var rng_pptr; function rng_seed_int(x) { rng_pool[rng_pptr++] ^= x & 255; rng_pool[rng_pptr++] ^= x >> 8 & 255; rng_pool[rng_pptr++] ^= x >> 16 & 255; rng_pool[rng_pptr++] ^= x >> 24 & 255; if (rng_pptr >= rng_psize) rng_pptr -= rng_psize; } function rng_seed_time() { rng_seed_int((/* @__PURE__ */ new Date()).getTime()); } if (rng_pool == null) { rng_pool = new Array(); rng_pptr = 0; var t; if (typeof window !== "undefined" && window.crypto) { if (window.crypto.getRandomValues) { var ua = new Uint8Array(32); window.crypto.getRandomValues(ua); for (t = 0; t < 32; ++t) rng_pool[rng_pptr++] = ua[t]; } else if (navigator.appName == "Netscape" && navigator.appVersion < "5") { var z = window.crypto.random(32); for (t = 0; t < z.length; ++t) rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; } } while (rng_pptr < rng_psize) { t = Math.floor(65536 * Math.random()); rng_pool[rng_pptr++] = t >>> 8; rng_pool[rng_pptr++] = t & 255; } rng_pptr = 0; rng_seed_time(); } function rng_get_byte() { if (rng_state == null) { rng_seed_time(); rng_state = prng_newstate(); rng_state.init(rng_pool); for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) rng_pool[rng_pptr] = 0; rng_pptr = 0; } return rng_state.next(); } function rng_get_bytes(ba) { var i; for (i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); } function SecureRandom() { } SecureRandom.prototype.nextBytes = rng_get_bytes; function Arcfour() { this.i = 0; this.j = 0; this.S = new Array(); } function ARC4init(key) { var i, j, t2; for (i = 0; i < 256; ++i) this.S[i] = i; j = 0; for (i = 0; i < 256; ++i) { j = j + this.S[i] + key[i % key.length] & 255; t2 = this.S[i]; this.S[i] = this.S[j]; this.S[j] = t2; } this.i = 0; this.j = 0; } function ARC4next() { var t2; this.i = this.i + 1 & 255; this.j = this.j + this.S[this.i] & 255; t2 = this.S[this.i]; this.S[this.i] = this.S[this.j]; this.S[this.j] = t2; return this.S[t2 + this.S[this.i] & 255]; } Arcfour.prototype.init = ARC4init; Arcfour.prototype.next = ARC4next; function prng_newstate() { return new Arcfour(); } var rng_psize = 256; if (typeof exports2 !== "undefined") { exports2 = module2.exports = { default: BigInteger, BigInteger, SecureRandom }; } else { this.jsbn = { BigInteger, SecureRandom }; } }).call(exports2); } }); // ../../node_modules/.pnpm/sprintf-js@1.1.3/node_modules/sprintf-js/src/sprintf.js var require_sprintf = __commonJS2({ "../../node_modules/.pnpm/sprintf-js@1.1.3/node_modules/sprintf-js/src/sprintf.js"(exports2) { !function() { "use strict"; var re = { not_string: /[^s]/, not_bool: /[^t]/, not_type: /[^T]/, not_primitive: /[^v]/, number: /[diefg]/, numeric_arg: /[bcdiefguxX]/, json: /[j]/, not_json: /[^j]/, text: /^[^\x25]+/, modulo: /^\x25{2}/, placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/, key: /^([a-z_][a-z_\d]*)/i, key_access: /^\.([a-z_][a-z_\d]*)/i, index_access: /^\[(\d+)\]/, sign: /^[+-]/ }; function sprintf(key) { return sprintf_format(sprintf_parse(key), arguments); } function vsprintf(fmt, argv) { return sprintf.apply(null, [fmt].concat(argv || [])); } function sprintf_format(parse_tree, argv) { var cursor = 1, tree_length = parse_tree.length, arg2, output2 = "", i, k, ph, pad, pad_character, pad_length, is_positive, sign; for (i = 0; i < tree_length; i++) { if (typeof parse_tree[i] === "string") { output2 += parse_tree[i]; } else if (typeof parse_tree[i] === "object") { ph = parse_tree[i]; if (ph.keys) { arg2 = argv[cursor]; for (k = 0; k < ph.keys.length; k++) { if (arg2 == void 0) { throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k - 1])); } arg2 = arg2[ph.keys[k]]; } } else if (ph.param_no) { arg2 = argv[ph.param_no]; } else { arg2 = argv[cursor++]; } if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg2 instanceof Function) { arg2 = arg2(); } if (re.numeric_arg.test(ph.type) && (typeof arg2 !== "number" && isNaN(arg2))) { throw new TypeError(sprintf("[sprintf] expecting number but found %T", arg2)); } if (re.number.test(ph.type)) { is_positive = arg2 >= 0; } switch (ph.type) { case "b": arg2 = parseInt(arg2, 10).toString(2); break; case "c": arg2 = String.fromCharCode(parseInt(arg2, 10)); break; case "d": case "i": arg2 = parseInt(arg2, 10); break; case "j": arg2 = JSON.stringify(arg2, null, ph.width ? parseInt(ph.width) : 0); break; case "e": arg2 = ph.precision ? parseFloat(arg2).toExponential(ph.precision) : parseFloat(arg2).toExponential(); break; case "f": arg2 = ph.precision ? parseFloat(arg2).toFixed(ph.precision) : parseFloat(arg2); break; case "g": arg2 = ph.precision ? String(Number(arg2.toPrecision(ph.precision))) : parseFloat(arg2); break; case "o": arg2 = (parseInt(arg2, 10) >>> 0).toString(8); break; case "s": arg2 = String(arg2); arg2 = ph.precision ? arg2.substring(0, ph.precision) : arg2; break; case "t": arg2 = String(!!arg2); arg2 = ph.precision ? arg2.substring(0, ph.precision) : arg2; break; case "T": arg2 = Object.prototype.toString.call(arg2).slice(8, -1).toLowerCase(); arg2 = ph.precision ? arg2.substring(0, ph.precision) : arg2; break; case "u": arg2 = parseInt(arg2, 10) >>> 0; break; case "v": arg2 = arg2.valueOf(); arg2 = ph.precision ? arg2.substring(0, ph.precision) : arg2; break; case "x": arg2 = (parseInt(arg2, 10) >>> 0).toString(16); break; case "X": arg2 = (parseInt(arg2, 10) >>> 0).toString(16).toUpperCase(); break; } if (re.json.test(ph.type)) { output2 += arg2; } else { if (re.number.test(ph.type) && (!is_positive || ph.sign)) { sign = is_positive ? "+" : "-"; arg2 = arg2.toString().replace(re.sign, ""); } else { sign = ""; } pad_character = ph.pad_char ? ph.pad_char === "0" ? "0" : ph.pad_char.charAt(1) : " "; pad_length = ph.width - (sign + arg2).length; pad = ph.width ? pad_length > 0 ? pad_character.repeat(pad_length) : "" : ""; output2 += ph.align ? sign + arg2 + pad : pad_character === "0" ? sign + pad + arg2 : pad + sign + arg2; } } } return output2; } var sprintf_cache = /* @__PURE__ */ Object.create(null); function sprintf_parse(fmt) { if (sprintf_cache[fmt]) { return sprintf_cache[fmt]; } var _fmt = fmt, match, parse_tree = [], arg_names = 0; while (_fmt) { if ((match = re.text.exec(_fmt)) !== null) { parse_tree.push(match[0]); } else if ((match = re.modulo.exec(_fmt)) !== null) { parse_tree.push("%"); } else if ((match = re.placeholder.exec(_fmt)) !== null) { if (match[2]) { arg_names |= 1; var field_list = [], replacement_field = match[2], field_match = []; if ((field_match = re.key.exec(replacement_field)) !== null) { field_list.push(field_match[1]); while ((replacement_field = replacement_field.substring(field_match[0].length)) !== "") { if ((field_match = re.key_access.exec(replacement_field)) !== null) { field_list.push(field_match[1]); } else if ((field_match = re.index_access.exec(replacement_field)) !== null) { field_list.push(field_match[1]); } else { throw new SyntaxError("[sprintf] failed to parse named argument key"); } } } else { throw new SyntaxError("[sprintf] failed to parse named argument key"); } match[2] = field_list; } else { arg_names |= 2; } if (arg_names === 3) { throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported"); } parse_tree.push( { placeholder: match[0], param_no: match[1], keys: match[2], sign: match[3], pad_char: match[4], align: match[5], width: match[6], precision: match[7], type: match[8] } ); } else { throw new SyntaxError("[sprintf] unexpected placeholder"); } _fmt = _fmt.substring(match[0].length); } return sprintf_cache[fmt] = parse_tree; } if (typeof exports2 !== "undefined") { exports2["sprintf"] = sprintf; exports2["vsprintf"] = vsprintf; } if (typeof window !== "undefined") { window["sprintf"] = sprintf; window["vsprintf"] = vsprintf; if (typeof define === "function" && define["amd"]) { define(function() { return { "sprintf": sprintf, "vsprintf": vsprintf }; }); } } }(); } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/ipv4.js var require_ipv4 = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/ipv4.js"(exports2) { "use strict"; 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 common2 = __importStar2(require_common11()); var constants2 = __importStar2(require_constants7()); var address_error_1 = require_address_error(); var jsbn_1 = require_jsbn(); var sprintf_js_1 = require_sprintf(); var Address4 = class _Address4 { constructor(address) { this.groups = constants2.GROUPS; this.parsedAddress = []; this.parsedSubnet = ""; this.subnet = "/32"; this.subnetMask = 32; this.v4 = true; this.isCorrect = common2.isCorrect(constants2.BITS); this.isInSubnet = common2.isInSubnet; this.address = address; const subnet = constants2.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 > constants2.BITS) { throw new address_error_1.AddressError("Invalid subnet mask."); } address = address.replace(constants2.RE_SUBNET_STRING, ""); } this.addressMinusSuffix = address; this.parsedAddress = this.parse(address); } static isValid(address) { try { new _Address4(address); return true; } catch (e2) { return false; } } /* * Parses a v4 address */ parse(address) { const groups = address.split("."); if (!address.match(constants2.RE_ADDRESS)) { throw new address_error_1.AddressError("Invalid IPv4 address."); } return groups; } /** * Returns the correct form of an address * @memberof Address4 * @instance * @returns {String} */ correctForm() { return this.parsedAddress.map((part) => parseInt(part, 10)).join("."); } /** * Converts a hex string to an IPv4 address object * @memberof Address4 * @static * @param {string} hex - a hex string to convert * @returns {Address4} */ static fromHex(hex) { const padded = hex.replace(/:/g, "").padStart(8, "0"); const groups = []; let i; for (i = 0; i < 8; i += 2) { const h = padded.slice(i, i + 2); groups.push(parseInt(h, 16)); } return new _Address4(groups.join(".")); } /** * Converts an integer into a IPv4 address object * @memberof Address4 * @static * @param {integer} integer - a number to convert * @returns {Address4} */ static fromInteger(integer) { return _Address4.fromHex(integer.toString(16)); } /** * Return an address from in-addr.arpa form * @memberof Address4 * @static * @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 leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, ""); const address = leader.split(".").reverse().join("."); return new _Address4(address); } /** * Converts an IPv4 address object to a hex string * @memberof Address4 * @instance * @returns {String} */ toHex() { return this.parsedAddress.map((part) => (0, sprintf_js_1.sprintf)("%02x", parseInt(part, 10))).join(":"); } /** * Converts an IPv4 address object to an array of bytes * @memberof Address4 * @instance * @returns {Array} */ toArray() { return this.parsedAddress.map((part) => parseInt(part, 10)); } /** * Converts an IPv4 address object to an IPv6 address group * @memberof Address4 * @instance * @returns {String} */ toGroup6() { const output2 = []; let i; for (i = 0; i < constants2.GROUPS; i += 2) { const hex = (0, sprintf_js_1.sprintf)("%02x%02x", parseInt(this.parsedAddress[i], 10), parseInt(this.parsedAddress[i + 1], 10)); output2.push((0, sprintf_js_1.sprintf)("%x", parseInt(hex, 16))); } return output2.join(":"); } /** * Returns the address as a BigInteger * @memberof Address4 * @instance * @returns {BigInteger} */ bigInteger() { return new jsbn_1.BigInteger(this.parsedAddress.map((n) => (0, sprintf_js_1.sprintf)("%02x", parseInt(n, 10))).join(""), 16); } /** * Helper function getting start address. * @memberof Address4 * @instance * @returns {BigInteger} */ _startAddress() { return new jsbn_1.BigInteger(this.mask() + "0".repeat(constants2.BITS - this.subnetMask), 2); } /** * The first address in the range given by this address' subnet. * Often referred to as the Network Address. * @memberof Address4 * @instance * @returns {Address4} */ startAddress() { return _Address4.fromBigInteger(this._startAddress()); } /** * The first host address in the range given by this address's subnet ie * the first address after the Network Address * @memberof Address4 * @instance * @returns {Address4} */ startAddressExclusive() { const adjust = new jsbn_1.BigInteger("1"); return _Address4.fromBigInteger(this._startAddress().add(adjust)); } /** * Helper function getting end address. * @memberof Address4 * @instance * @returns {BigInteger} */ _endAddress() { return new jsbn_1.BigInteger(this.mask() + "1".repeat(constants2.BITS - this.subnetMask), 2); } /** * The last address in the range given by this address' subnet * Often referred to as the Broadcast * @memberof Address4 * @instance * @returns {Address4} */ endAddress() { return _Address4.fromBigInteger(this._endAddress()); } /** * The last host address in the range given by this address's subnet ie * the last address prior to the Broadcast Address * @memberof Address4 * @instance * @returns {Address4} */ endAddressExclusive() { const adjust = new jsbn_1.BigInteger("1"); return _Address4.fromBigInteger(this._endAddress().subtract(adjust)); } /** * Converts a BigInteger to a v4 address object * @memberof Address4 * @static * @param {BigInteger} bigInteger - a BigInteger to convert * @returns {Address4} */ static fromBigInteger(bigInteger) { return _Address4.fromInteger(parseInt(bigInteger.toString(), 10)); } /** * Returns the first n bits of the address, defaulting to the * subnet mask * @memberof Address4 * @instance * @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 * @memberof Address4 * @instance * @returns {string} */ getBitsBase2(start, end) { return this.binaryZeroPad().slice(start, end); } /** * Return the reversed ip6.arpa form of the address * @memberof Address4 * @param {Object} options * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix * @instance * @returns {String} */ reverseForm(options) { if (!options) { options = {}; } const reversed = this.correctForm().split(".").reverse().join("."); if (options.omitSuffix) { return reversed; } return (0, sprintf_js_1.sprintf)("%s.in-addr.arpa.", reversed); } /** * Returns true if the given address is a multicast address * @memberof Address4 * @instance * @returns {boolean} */ isMulticast() { return this.isInSubnet(new _Address4("224.0.0.0/4")); } /** * Returns a zero-padded base-2 string representation of the address * @memberof Address4 * @instance * @returns {string} */ binaryZeroPad() { return this.bigInteger().toString(2).padStart(constants2.BITS, "0"); } /** * Groups an IPv4 address for inclusion at the end of an IPv6 address * @returns {String} */ groupForV6() { const segments = this.parsedAddress; return this.address.replace(constants2.RE_ADDRESS, (0, sprintf_js_1.sprintf)('%s.%s', segments.slice(0, 2).join("."), segments.slice(2, 4).join("."))); } }; exports2.Address4 = Address4; } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/v6/constants.js var require_constants8 = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/v6/constants.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); 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", "ff00::/8": "Multicast", "fe80::/10": "Link-local unicast" }; 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 = new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/); exports2.RE_URL_WITH_PORT = new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/); } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/v6/helpers.js var require_helpers2 = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/v6/helpers.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.simpleGroup = exports2.spanLeadingZeroes = exports2.spanAll = exports2.spanAllZeroes = void 0; var sprintf_js_1 = require_sprintf(); function spanAllZeroes(s) { return s.replace(/(0+)/g, '$1'); } exports2.spanAllZeroes = spanAllZeroes; function spanAll(s, offset = 0) { const letters = s.split(""); return letters.map( (n, i) => (0, sprintf_js_1.sprintf)('%s', n, i + offset, spanAllZeroes(n)) // XXX Use #base-2 .value-0 instead? ).join(""); } exports2.spanAll = spanAll; function spanLeadingZeroesSimple(group) { return group.replace(/^(0+)/, '$1'); } function spanLeadingZeroes(address) { const groups = address.split(":"); return groups.map((g) => spanLeadingZeroesSimple(g)).join(":"); } exports2.spanLeadingZeroes = spanLeadingZeroes; function simpleGroup(addressString, offset = 0) { const groups = addressString.split(":"); return groups.map((g, i) => { if (/group-v4/.test(g)) { return g; } return (0, sprintf_js_1.sprintf)('%s', i + offset, spanLeadingZeroesSimple(g)); }); } exports2.simpleGroup = simpleGroup; } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/v6/regular-expressions.js var require_regular_expressions = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/v6/regular-expressions.js"(exports2) { "use strict"; 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.possibleElisions = exports2.simpleRegularExpression = exports2.ADDRESS_BOUNDARY = exports2.padGroup = exports2.groupPossibilities = void 0; var v6 = __importStar2(require_constants8()); var sprintf_js_1 = require_sprintf(); function groupPossibilities(possibilities) { return (0, sprintf_js_1.sprintf)("(%s)", possibilities.join("|")); } exports2.groupPossibilities = groupPossibilities; function padGroup(group) { if (group.length < 4) { return (0, sprintf_js_1.sprintf)("0{0,%d}%s", 4 - group.length, group); } return group; } exports2.padGroup = padGroup; 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); } exports2.simpleRegularExpression = simpleRegularExpression; 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((0, sprintf_js_1.sprintf)("%s(:0{1,4}){1,%d}", left, elidedGroups - 1)); possibilities.push((0, sprintf_js_1.sprintf)("(0{1,4}:){1,%d}%s", elidedGroups - 1, right)); possibilities.push((0, sprintf_js_1.sprintf)("(0{1,4}:){%d}0{1,4}", elidedGroups - 1)); for (let groups = 1; groups < elidedGroups - 1; groups++) { for (let position = 1; position < elidedGroups - groups; position++) { possibilities.push((0, sprintf_js_1.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}", position, elidedGroups - position - groups - 1)); } } return groupPossibilities(possibilities); } exports2.possibleElisions = possibleElisions; } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/ipv6.js var require_ipv6 = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/ipv6.js"(exports2) { "use strict"; 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 common2 = __importStar2(require_common11()); var constants4 = __importStar2(require_constants7()); var constants6 = __importStar2(require_constants8()); var helpers = __importStar2(require_helpers2()); var ipv4_1 = require_ipv4(); var regular_expressions_1 = require_regular_expressions(); var address_error_1 = require_address_error(); var jsbn_1 = require_jsbn(); var sprintf_js_1 = require_sprintf(); 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]+)$/, '$1$2'); n = n.replace(/^(0{1,})(0)$/, '$1$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 (0, sprintf_js_1.sprintf)("%04x", parseInt(octet, 16)); } 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 = common2.isInSubnet; this.isCorrect = common2.isCorrect(constants6.BITS); 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, ""); } else if (/\//.test(address)) { throw new address_error_1.AddressError("Invalid subnet mask."); } const zone = constants6.RE_ZONE_STRING.exec(address); if (zone) { this.zone = zone[0]; address = address.replace(constants6.RE_ZONE_STRING, ""); } this.addressMinusSuffix = address; this.parsedAddress = this.parse(this.addressMinusSuffix); } static isValid(address) { try { new _Address6(address); return true; } catch (e2) { return false; } } /** * Convert a BigInteger to a v6 address object * @memberof Address6 * @static * @param {BigInteger} bigInteger - a BigInteger to convert * @returns {Address6} * @example * var bigInteger = new BigInteger('1000000000000'); * var address = Address6.fromBigInteger(bigInteger); * address.correctForm(); // '::e8:d4a5:1000' */ static fromBigInteger(bigInteger) { const hex = bigInteger.toString(16).padStart(32, "0"); const groups = []; let i; for (i = 0; i < constants6.GROUPS; i++) { groups.push(hex.slice(i * 4, (i + 1) * 4)); } return new _Address6(groups.join(":")); } /** * Convert a URL (with optional port number) to an address object * @memberof Address6 * @static * @param {string} url - a URL with optional port number * @example * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); * addressAndPort.address.correctForm(); // 'ffff::' * addressAndPort.port; // 8080 */ static fromURL(url3) { let host; let port = null; let result; if (url3.indexOf("[") !== -1 && url3.indexOf("]:") !== -1) { result = constants6.RE_URL_WITH_PORT.exec(url3); if (result === null) { return { error: "failed to parse address with port", address: null, port: null }; } host = result[1]; port = result[2]; } else if (url3.indexOf("/") !== -1) { url3 = url3.replace(/^[a-z0-9]+:\/\//, ""); result = constants6.RE_URL.exec(url3); if (result === null) { return { error: "failed to parse address from URL", address: null, port: null }; } host = result[1]; } else { host = url3; } if (port) { port = parseInt(port, 10); if (port < 0 || port > 65536) { port = null; } } else { port = null; } return { address: new _Address6(host), port }; } /** * Create an IPv6-mapped address given an IPv4 address * @memberof Address6 * @static * @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 * @memberof Address6 * @static * @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' */ static fromArpa(arpaFormAddress) { let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, ""); const semicolonAmount = 7; if (address.length !== 63) { throw new address_error_1.AddressError("Invalid 'ip6.arpa' form."); } const parts = address.split(".").reverse(); for (let i = semicolonAmount; i > 0; i--) { const insertIndex = i * 4; parts.splice(insertIndex, 0, ":"); } address = parts.join(""); return new _Address6(address); } /** * Return the Microsoft UNC transcription of the address * @memberof Address6 * @instance * @returns {String} the Microsoft UNC transcription of the address */ microsoftTranscription() { return (0, sprintf_js_1.sprintf)("%s.ipv6-literal.net", this.correctForm().replace(/:/g, "-")); } /** * Return the first n bits of the address, defaulting to the subnet mask * @memberof Address6 * @instance * @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 * @memberof Address6 * @instance * @param {number} [size=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(new jsbn_1.BigInteger("2", 10).pow(subnetPowers).toString(10)); } /** * Helper function getting start address. * @memberof Address6 * @instance * @returns {BigInteger} */ _startAddress() { return new jsbn_1.BigInteger(this.mask() + "0".repeat(constants6.BITS - this.subnetMask), 2); } /** * The first address in the range given by this address' subnet * Often referred to as the Network Address. * @memberof Address6 * @instance * @returns {Address6} */ startAddress() { return _Address6.fromBigInteger(this._startAddress()); } /** * The first host address in the range given by this address's subnet ie * the first address after the Network Address * @memberof Address6 * @instance * @returns {Address6} */ startAddressExclusive() { const adjust = new jsbn_1.BigInteger("1"); return _Address6.fromBigInteger(this._startAddress().add(adjust)); } /** * Helper function getting end address. * @memberof Address6 * @instance * @returns {BigInteger} */ _endAddress() { return new jsbn_1.BigInteger(this.mask() + "1".repeat(constants6.BITS - this.subnetMask), 2); } /** * The last address in the range given by this address' subnet * Often referred to as the Broadcast * @memberof Address6 * @instance * @returns {Address6} */ endAddress() { return _Address6.fromBigInteger(this._endAddress()); } /** * The last host address in the range given by this address's subnet ie * the last address prior to the Broadcast Address * @memberof Address6 * @instance * @returns {Address6} */ endAddressExclusive() { const adjust = new jsbn_1.BigInteger("1"); return _Address6.fromBigInteger(this._endAddress().subtract(adjust)); } /** * Return the scope of the address * @memberof Address6 * @instance * @returns {String} */ getScope() { let scope = constants6.SCOPES[this.getBits(12, 16).intValue()]; if (this.getType() === "Global unicast" && scope !== "Link local") { scope = "Global"; } return scope || "Unknown"; } /** * Return the type of the address * @memberof Address6 * @instance * @returns {String} */ getType() { for (const subnet of Object.keys(constants6.TYPES)) { if (this.isInSubnet(new _Address6(subnet))) { return constants6.TYPES[subnet]; } } return "Global unicast"; } /** * Return the bits in the given range as a BigInteger * @memberof Address6 * @instance * @returns {BigInteger} */ getBits(start, end) { return new jsbn_1.BigInteger(this.getBitsBase2(start, end), 2); } /** * Return the bits in the given range as a base-2 string * @memberof Address6 * @instance * @returns {String} */ getBitsBase2(start, end) { return this.binaryZeroPad().slice(start, end); } /** * Return the bits in the given range as a base-16 string * @memberof Address6 * @instance * @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 * @memberof Address6 * @instance * @returns {String} */ getBitsPastSubnet() { return this.getBitsBase2(this.subnetMask, constants6.BITS); } /** * Return the reversed ip6.arpa form of the address * @memberof Address6 * @param {Object} options * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix * @instance * @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 (0, sprintf_js_1.sprintf)("%s.ip6.arpa.", reversed); } if (options.omitSuffix) { return ""; } return "ip6.arpa."; } /** * Return the correct form of the address * @memberof Address6 * @instance * @returns {String} */ 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 index = zeroLengths.indexOf(Math.max(...zeroLengths)); groups = compact(this.parsedAddress, zeroes[index]); } 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 * @memberof Address6 * @instance * @returns {String} * @example * var address = new Address6('2001:4860:4001:803::1011'); * address.binaryZeroPad(); * // '0010000000000001010010000110000001000000000000010000100000000011 * // 0000000000000000000000000000000000000000000000000001000000010001' */ binaryZeroPad() { return this.bigInteger().toString(2).padStart(constants6.BITS, "0"); } // TODO: Improve the semantics of this helper function parse4in6(address) { const groups = address.split(":"); const lastGroup = groups.slice(-1)[0]; const address4 = lastGroup.match(constants4.RE_ADDRESS); if (address4) { this.parsedAddress4 = address4[0]; this.address4 = new ipv4_1.Address4(this.parsedAddress4); for (let i = 0; i < this.address4.groups; i++) { if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) { throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", address.replace(constants4.RE_ADDRESS, this.address4.parsedAddress.map(spanLeadingZeroes4).join("."))); } } this.v4 = true; groups[groups.length - 1] = this.address4.toGroup6(); address = groups.join(":"); } return address; } // 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((0, sprintf_js_1.sprintf)("Bad character%s detected in address: %s", badCharacters.length > 1 ? "s" : "", badCharacters.join("")), address.replace(constants6.RE_BAD_CHARACTERS, '$1')); } const badAddress = address.match(constants6.RE_BAD_ADDRESS); if (badAddress) { throw new address_error_1.AddressError((0, sprintf_js_1.sprintf)("Address failed regex: %s", badAddress.join("")), address.replace(constants6.RE_BAD_ADDRESS, '$1')); } 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) => (0, sprintf_js_1.sprintf)("%x", parseInt(group, 16))); if (groups.length !== this.groups) { throw new address_error_1.AddressError("Incorrect number of groups found"); } return groups; } /** * Return the canonical form of the address * @memberof Address6 * @instance * @returns {String} */ canonicalForm() { return this.parsedAddress.map(paddedHex).join(":"); } /** * Return the decimal form of the address * @memberof Address6 * @instance * @returns {String} */ decimal() { return this.parsedAddress.map((n) => (0, sprintf_js_1.sprintf)("%05d", parseInt(n, 16))).join(":"); } /** * Return the address as a BigInteger * @memberof Address6 * @instance * @returns {BigInteger} */ bigInteger() { return new jsbn_1.BigInteger(this.parsedAddress.map(paddedHex).join(""), 16); } /** * Return the last two groups of this address as an IPv4 address string * @memberof Address6 * @instance * @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(""); return ipv4_1.Address4.fromHex(new jsbn_1.BigInteger(binary.slice(96, 128).join(""), 2).toString(16)); } /** * Return the v4-in-v6 form of the address * @memberof Address6 * @instance * @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.address; } /** * Return an object containing the Teredo properties of the address * @memberof Address6 * @instance * @returns {Object} */ inspectTeredo() { const prefix = this.getBitsBase16(0, 32); const udpPort = this.getBits(80, 96).xor(new jsbn_1.BigInteger("ffff", 16)).toString(); const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64)); const client4 = ipv4_1.Address4.fromHex(this.getBits(96, 128).xor(new jsbn_1.BigInteger("ffffffff", 16)).toString(16)); const flags = this.getBits(64, 80); const flagsBase2 = this.getBitsBase2(64, 80); const coneNat = flags.testBit(15); const reserved = flags.testBit(14); const groupIndividual = flags.testBit(8); const universalLocal = flags.testBit(9); const nonce = new jsbn_1.BigInteger(flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16), 2).toString(10); return { prefix: (0, sprintf_js_1.sprintf)("%s:%s", prefix.slice(0, 4), prefix.slice(4, 8)), server4: server4.address, client4: client4.address, flags: flagsBase2, coneNat, microsoft: { reserved, universalLocal, groupIndividual, nonce }, udpPort }; } /** * Return an object containing the 6to4 properties of the address * @memberof Address6 * @instance * @returns {Object} */ inspect6to4() { const prefix = this.getBitsBase16(0, 16); const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48)); return { prefix: (0, sprintf_js_1.sprintf)("%s", prefix.slice(0, 4)), gateway: gateway.address }; } /** * Return a v6 6to4 address from a v6 v4inv6 address * @memberof Address6 * @instance * @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); } /** * Return a byte array * @memberof Address6 * @instance * @returns {Array} */ toByteArray() { const byteArray = this.bigInteger().toByteArray(); if (byteArray.length === 17 && byteArray[0] === 0) { return byteArray.slice(1); } return byteArray; } /** * Return an unsigned byte array * @memberof Address6 * @instance * @returns {Array} */ toUnsignedByteArray() { return this.toByteArray().map(unsignByte); } /** * Convert a byte array to an Address6 object * @memberof Address6 * @static * @returns {Address6} */ static fromByteArray(bytes9) { return this.fromUnsignedByteArray(bytes9.map(unsignByte)); } /** * Convert an unsigned byte array to an Address6 object * @memberof Address6 * @static * @returns {Address6} */ static fromUnsignedByteArray(bytes9) { const BYTE_MAX = new jsbn_1.BigInteger("256", 10); let result = new jsbn_1.BigInteger("0", 10); let multiplier = new jsbn_1.BigInteger("1", 10); for (let i = bytes9.length - 1; i >= 0; i--) { result = result.add(multiplier.multiply(new jsbn_1.BigInteger(bytes9[i].toString(10), 10))); multiplier = multiplier.multiply(BYTE_MAX); } return _Address6.fromBigInteger(result); } /** * Returns true if the address is in the canonical form, false otherwise * @memberof Address6 * @instance * @returns {boolean} */ isCanonical() { return this.addressMinusSuffix === this.canonicalForm(); } /** * Returns true if the address is a link local address, false otherwise * @memberof Address6 * @instance * @returns {boolean} */ isLinkLocal() { if (this.getBitsBase2(0, 64) === "1111111010000000000000000000000000000000000000000000000000000000") { return true; } return false; } /** * Returns true if the address is a multicast address, false otherwise * @memberof Address6 * @instance * @returns {boolean} */ isMulticast() { return this.getType() === "Multicast"; } /** * Returns true if the address is a v4-in-v6 address, false otherwise * @memberof Address6 * @instance * @returns {boolean} */ is4() { return this.v4; } /** * Returns true if the address is a Teredo address, false otherwise * @memberof Address6 * @instance * @returns {boolean} */ isTeredo() { return this.isInSubnet(new _Address6("2001::/32")); } /** * Returns true if the address is a 6to4 address, false otherwise * @memberof Address6 * @instance * @returns {boolean} */ is6to4() { return this.isInSubnet(new _Address6("2002::/16")); } /** * Returns true if the address is a loopback address, false otherwise * @memberof Address6 * @instance * @returns {boolean} */ isLoopback() { return this.getType() === "Loopback"; } // #endregion // #region HTML /** * @returns {String} the address in link form with a default port of 80 */ href(optionalPort) { if (optionalPort === void 0) { optionalPort = ""; } else { optionalPort = (0, sprintf_js_1.sprintf)(":%s", optionalPort); } return (0, sprintf_js_1.sprintf)("http://[%s]%s/", this.correctForm(), optionalPort); } /** * @returns {String} a link suitable for conveying the address via a URL hash */ 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; } if (options.className) { return (0, sprintf_js_1.sprintf)('%2$s', options.prefix, formFunction.call(this), options.className); } return (0, sprintf_js_1.sprintf)('%2$s', options.prefix, formFunction.call(this)); } /** * Groups an address * @returns {String} */ group() { if (this.elidedGroups === 0) { return helpers.simpleGroup(this.address).join(":"); } assert(typeof this.elidedGroups === "number"); assert(typeof this.elisionBegin === "number"); const output2 = []; const [left, right] = this.address.split("::"); if (left.length) { output2.push(...helpers.simpleGroup(left)); } else { output2.push(""); } const classes = ["hover-group"]; for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) { classes.push((0, sprintf_js_1.sprintf)("group-%d", i)); } output2.push((0, sprintf_js_1.sprintf)('', classes.join(" "))); if (right.length) { output2.push(...helpers.simpleGroup(right, this.elisionEnd)); } else { output2.push(""); } if (this.is4()) { assert(this.address4 instanceof ipv4_1.Address4); output2.pop(); output2.push(this.address4.groupForV6()); } return output2.join(":"); } // #endregion // #region Regular expressions /** * Generate a regular expression string that can be used to find or validate * all variations of this address * @memberof Address6 * @instance * @param {boolean} substringSearch * @returns {string} */ regularExpressionString(substringSearch = false) { let output2 = []; const address6 = new _Address6(this.correctForm()); if (address6.elidedGroups === 0) { output2.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress)); } else if (address6.elidedGroups === constants6.GROUPS) { output2.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS)); } else { const halves = address6.address.split("::"); if (halves[0].length) { output2.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(":"))); } assert(typeof address6.elidedGroups === "number"); output2.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0)); if (halves[1].length) { output2.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(":"))); } output2 = [output2.join(":")]; } if (!substringSearch) { output2 = [ "(?=^|", regular_expressions_1.ADDRESS_BOUNDARY, "|[^\\w\\:])(", ...output2, ")(?=[^\\w\\:]|", regular_expressions_1.ADDRESS_BOUNDARY, "|$)" ]; } return output2.join(""); } /** * Generate a regular expression that can be used to find or validate all * variations of this address. * @memberof Address6 * @instance * @param {boolean} substringSearch * @returns {RegExp} */ regularExpression(substringSearch = false) { return new RegExp(this.regularExpressionString(substringSearch), "i"); } }; exports2.Address6 = Address6; } }); // ../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/ip-address.js var require_ip_address = __commonJS2({ "../../node_modules/.pnpm/ip-address@9.0.5/node_modules/ip-address/dist/ip-address.js"(exports2) { "use strict"; 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_helpers2()); exports2.v6 = { helpers }; } }); // ../../node_modules/.pnpm/socks@2.8.4/node_modules/socks/build/common/helpers.js var require_helpers3 = __commonJS2({ "../../node_modules/.pnpm/socks@2.8.4/node_modules/socks/build/common/helpers.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ipToBuffer = exports2.int32ToIpv4 = exports2.ipv4ToInt32 = exports2.validateSocksClientChainOptions = exports2.validateSocksClientOptions = void 0; var util_1 = require_util8(); var constants_1 = require_constants6(); 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); } } exports2.validateSocksClientOptions = validateSocksClientOptions; 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); } } exports2.validateSocksClientChainOptions = validateSocksClientChainOptions; 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" && 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); } exports2.ipv4ToInt32 = ipv4ToInt32; 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("."); } exports2.int32ToIpv4 = int32ToIpv4; 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"); } } exports2.ipToBuffer = ipToBuffer; } }); // ../../node_modules/.pnpm/socks@2.8.4/node_modules/socks/build/common/receivebuffer.js var require_receivebuffer = __commonJS2({ "../../node_modules/.pnpm/socks@2.8.4/node_modules/socks/build/common/receivebuffer.js"(exports2) { "use strict"; 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/.pnpm/socks@2.8.4/node_modules/socks/build/client/socksclient.js var require_socksclient = __commonJS2({ "../../node_modules/.pnpm/socks@2.8.4/node_modules/socks/build/client/socksclient.js"(exports2) { "use strict"; var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve14) { resolve14(value); }); } return new (P || (P = Promise))(function(resolve14, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e2) { reject(e2); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e2) { reject(e2); } } function step(result) { result.done ? resolve14(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_constants6(); var helpers_1 = require_helpers3(); var receivebuffer_1 = require_receivebuffer(); var util_1 = require_util8(); 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((resolve14, reject) => { try { (0, helpers_1.validateSocksClientOptions)(options, ["connect"]); } catch (err) { if (typeof callback === "function") { callback(err); return resolve14(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); resolve14(info); } else { resolve14(info); } }); client2.once("error", (err) => { client2.removeAllListeners(); if (typeof callback === "function") { callback(err); resolve14(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((resolve14, reject) => __awaiter2(this, void 0, void 0, function* () { try { (0, helpers_1.validateSocksClientChainOptions)(options); } catch (err) { if (typeof callback === "function") { callback(err); return resolve14(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 }); resolve14({ socket: sock }); } else { resolve14({ socket: sock }); } } catch (err) { if (typeof callback === "function") { callback(err); resolve14(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/.pnpm/socks@2.8.4/node_modules/socks/build/index.js var require_build = __commonJS2({ "../../node_modules/.pnpm/socks@2.8.4/node_modules/socks/build/index.js"(exports2) { "use strict"; 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/.pnpm/socks-proxy-agent@8.0.5/node_modules/socks-proxy-agent/dist/index.js var require_dist15 = __commonJS2({ "../../node_modules/.pnpm/socks-proxy-agent@8.0.5/node_modules/socks-proxy-agent/dist/index.js"(exports2) { "use strict"; 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.SocksProxyAgent = void 0; var socks_1 = require_build(); var agent_base_1 = require_dist9(); var debug_1 = __importDefault2(require_src2()); var dns2 = __importStar2(__require("dns")); var net = __importStar2(__require("net")); var tls = __importStar2(__require("tls")); var url_1 = __require("url"); var debug2 = (0, debug_1.default)("socks-proxy-agent"); var setServernameFromNonIpHost = (options) => { if (options.servername === void 0 && options.host && !net.isIP(options.host)) { return { ...options, servername: options.host }; } return options; }; function parseSocksURL(url3) { let lookup = false; let type = 5; const host = url3.hostname; const port = parseInt(url3.port, 10) || 1080; switch (url3.protocol.replace(":", "")) { case "socks4": lookup = true; type = 4; break; case "socks4a": type = 4; break; case "socks5": lookup = true; type = 5; break; case "socks": type = 5; break; case "socks5h": type = 5; break; default: throw new TypeError(`A "socks" protocol must be specified! Got: ${String(url3.protocol)}`); } const proxy = { host, port, type }; if (url3.username) { Object.defineProperty(proxy, "userId", { value: decodeURIComponent(url3.username), enumerable: false }); } if (url3.password != null) { Object.defineProperty(proxy, "password", { value: decodeURIComponent(url3.password), enumerable: false }); } return { lookup, proxy }; } var SocksProxyAgent = class extends agent_base_1.Agent { constructor(uri, opts) { super(opts); const url3 = typeof uri === "string" ? new url_1.URL(uri) : uri; const { proxy, lookup } = parseSocksURL(url3); this.shouldLookup = lookup; this.proxy = proxy; this.timeout = opts?.timeout ?? null; this.socketOptions = opts?.socketOptions ?? null; } /** * Initiates a SOCKS connection to the specified SOCKS proxy server, * which in turn connects to the specified remote host and port. */ async connect(req, opts) { const { shouldLookup, proxy, timeout } = this; if (!opts.host) { throw new Error("No `host` defined!"); } let { host } = opts; const { port, lookup: lookupFn = dns2.lookup } = opts; if (shouldLookup) { host = await new Promise((resolve14, reject) => { lookupFn(host, {}, (err, res) => { if (err) { reject(err); } else { resolve14(res); } }); }); } const socksOpts = { proxy, destination: { host, port: typeof port === "number" ? port : parseInt(port, 10) }, command: "connect", timeout: timeout ?? void 0, // @ts-expect-error the type supplied by socks for socket_options is wider // than necessary since socks will always override the host and port socket_options: this.socketOptions ?? void 0 }; const cleanup = (tlsSocket) => { req.destroy(); socket.destroy(); if (tlsSocket) tlsSocket.destroy(); }; debug2("Creating socks proxy connection: %o", socksOpts); const { socket } = await socks_1.SocksClient.createConnection(socksOpts); debug2("Successfully created socks proxy connection"); if (timeout !== null) { socket.setTimeout(timeout); socket.on("timeout", () => cleanup()); } if (opts.secureEndpoint) { debug2("Upgrading socket connection to TLS"); const tlsSocket = tls.connect({ ...omit(setServernameFromNonIpHost(opts), "host", "path", "port"), socket }); tlsSocket.once("error", (error3) => { debug2("Socket TLS error", error3.message); cleanup(tlsSocket); }); return tlsSocket; } return socket; } }; SocksProxyAgent.protocols = [ "socks", "socks4", "socks4a", "socks5", "socks5h" ]; exports2.SocksProxyAgent = SocksProxyAgent; function omit(obj, ...keys) { const ret = {}; let key; for (key in obj) { if (!keys.includes(key)) { ret[key] = obj[key]; } } return ret; } } }); // ../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js var require_parse_proxy_response2 = __commonJS2({ "../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js"(exports2) { "use strict"; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.parseProxyResponse = void 0; var debug_1 = __importDefault2(require_src2()); var debug2 = (0, debug_1.default)("https-proxy-agent:parse-proxy-response"); function parseProxyResponse(socket) { return new Promise((resolve14, reject) => { let buffersLength = 0; const buffers = []; function read() { const b = socket.read(); if (b) ondata(b); else socket.once("readable", read); } function cleanup() { socket.removeListener("end", onend); socket.removeListener("error", onerror); socket.removeListener("readable", read); } function onend() { cleanup(); debug2("onend"); reject(new Error("Proxy connection ended before receiving CONNECT response")); } function onerror(err) { cleanup(); debug2("onerror %o", err); reject(err); } function ondata(b) { buffers.push(b); buffersLength += b.length; const buffered = Buffer.concat(buffers, buffersLength); const endOfHeaders = buffered.indexOf("\r\n\r\n"); if (endOfHeaders === -1) { debug2("have not received end of HTTP headers yet..."); read(); return; } const headerParts = buffered.slice(0, endOfHeaders).toString("ascii").split("\r\n"); const firstLine = headerParts.shift(); if (!firstLine) { socket.destroy(); return reject(new Error("No header received from proxy CONNECT response")); } const firstLineParts = firstLine.split(" "); const statusCode = +firstLineParts[1]; const statusText = firstLineParts.slice(2).join(" "); const headers = {}; for (const header of headerParts) { if (!header) continue; const firstColon = header.indexOf(":"); if (firstColon === -1) { socket.destroy(); return reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`)); } const key = header.slice(0, firstColon).toLowerCase(); const value = header.slice(firstColon + 1).trimStart(); const current = headers[key]; if (typeof current === "string") { headers[key] = [current, value]; } else if (Array.isArray(current)) { current.push(value); } else { headers[key] = value; } } debug2("got proxy server response: %o %o", firstLine, headers); cleanup(); resolve14({ connect: { statusCode, statusText, headers }, buffered }); } socket.on("error", onerror); socket.on("end", onend); read(); }); } exports2.parseProxyResponse = parseProxyResponse; } }); // ../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js var require_dist16 = __commonJS2({ "../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js"(exports2) { "use strict"; 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.HttpsProxyAgent = void 0; var net = __importStar2(__require("net")); var tls = __importStar2(__require("tls")); var assert_1 = __importDefault2(__require("assert")); var debug_1 = __importDefault2(require_src2()); var agent_base_1 = require_dist9(); var url_1 = __require("url"); var parse_proxy_response_1 = require_parse_proxy_response2(); var debug2 = (0, debug_1.default)("https-proxy-agent"); var setServernameFromNonIpHost = (options) => { if (options.servername === void 0 && options.host && !net.isIP(options.host)) { return { ...options, servername: options.host }; } return options; }; var HttpsProxyAgent = class extends agent_base_1.Agent { constructor(proxy, opts) { super(opts); this.options = { path: void 0 }; this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy; this.proxyHeaders = opts?.headers ?? {}; debug2("Creating new HttpsProxyAgent instance: %o", this.proxy.href); const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, ""); const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80; this.connectOpts = { // Attempt to negotiate http/1.1 for proxy servers that support http/2 ALPNProtocols: ["http/1.1"], ...opts ? omit(opts, "headers") : null, host, port }; } /** * Called when the node-core HTTP client library is creating a * new HTTP request. */ async connect(req, opts) { const { proxy } = this; if (!opts.host) { throw new TypeError('No "host" provided'); } let socket; if (proxy.protocol === "https:") { debug2("Creating `tls.Socket`: %o", this.connectOpts); socket = tls.connect(setServernameFromNonIpHost(this.connectOpts)); } else { debug2("Creating `net.Socket`: %o", this.connectOpts); socket = net.connect(this.connectOpts); } const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders }; const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host; let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\r `; if (proxy.username || proxy.password) { const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`; headers["Proxy-Authorization"] = `Basic ${Buffer.from(auth).toString("base64")}`; } headers.Host = `${host}:${opts.port}`; if (!headers["Proxy-Connection"]) { headers["Proxy-Connection"] = this.keepAlive ? "Keep-Alive" : "close"; } for (const name of Object.keys(headers)) { payload += `${name}: ${headers[name]}\r `; } const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket); socket.write(`${payload}\r `); const { connect: connect2, buffered } = await proxyResponsePromise; req.emit("proxyConnect", connect2); this.emit("proxyConnect", connect2, req); if (connect2.statusCode === 200) { req.once("socket", resume); if (opts.secureEndpoint) { debug2("Upgrading socket connection to TLS"); return tls.connect({ ...omit(setServernameFromNonIpHost(opts), "host", "path", "port"), socket }); } return socket; } socket.destroy(); const fakeSocket = new net.Socket({ writable: false }); fakeSocket.readable = true; req.once("socket", (s) => { debug2("Replaying proxy buffer for failed request"); (0, assert_1.default)(s.listenerCount("data") > 0); s.push(buffered); s.push(null); }); return fakeSocket; } }; HttpsProxyAgent.protocols = ["http", "https"]; exports2.HttpsProxyAgent = HttpsProxyAgent; function resume(socket) { socket.resume(); } function omit(obj, ...keys) { const ret = {}; let key; for (key in obj) { if (!keys.includes(key)) { ret[key] = obj[key]; } } return ret; } } }); // ../../node_modules/.pnpm/http-proxy-agent@7.0.2/node_modules/http-proxy-agent/dist/index.js var require_dist17 = __commonJS2({ "../../node_modules/.pnpm/http-proxy-agent@7.0.2/node_modules/http-proxy-agent/dist/index.js"(exports2) { "use strict"; 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.HttpProxyAgent = void 0; var net = __importStar2(__require("net")); var tls = __importStar2(__require("tls")); var debug_1 = __importDefault2(require_src2()); var events_1 = __require("events"); var agent_base_1 = require_dist9(); var url_1 = __require("url"); var debug2 = (0, debug_1.default)("http-proxy-agent"); var HttpProxyAgent = class extends agent_base_1.Agent { constructor(proxy, opts) { super(opts); this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy; this.proxyHeaders = opts?.headers ?? {}; debug2("Creating new HttpProxyAgent instance: %o", this.proxy.href); const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, ""); const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80; this.connectOpts = { ...opts ? omit(opts, "headers") : null, host, port }; } addRequest(req, opts) { req._header = null; this.setRequestProps(req, opts); super.addRequest(req, opts); } setRequestProps(req, opts) { const { proxy } = this; const protocol = opts.secureEndpoint ? "https:" : "http:"; const hostname3 = req.getHeader("host") || "localhost"; const base = `${protocol}//${hostname3}`; const url3 = new url_1.URL(req.path, base); if (opts.port !== 80) { url3.port = String(opts.port); } req.path = String(url3); const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders }; if (proxy.username || proxy.password) { const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`; headers["Proxy-Authorization"] = `Basic ${Buffer.from(auth).toString("base64")}`; } if (!headers["Proxy-Connection"]) { headers["Proxy-Connection"] = this.keepAlive ? "Keep-Alive" : "close"; } for (const name of Object.keys(headers)) { const value = headers[name]; if (value) { req.setHeader(name, value); } } } async connect(req, opts) { req._header = null; if (!req.path.includes("://")) { this.setRequestProps(req, opts); } let first; let endOfHeaders; debug2("Regenerating stored HTTP header string for request"); req._implicitHeader(); if (req.outputData && req.outputData.length > 0) { debug2("Patching connection write() output buffer with updated header"); first = req.outputData[0].data; endOfHeaders = first.indexOf("\r\n\r\n") + 4; req.outputData[0].data = req._header + first.substring(endOfHeaders); debug2("Output buffer: %o", req.outputData[0].data); } let socket; if (this.proxy.protocol === "https:") { debug2("Creating `tls.Socket`: %o", this.connectOpts); socket = tls.connect(this.connectOpts); } else { debug2("Creating `net.Socket`: %o", this.connectOpts); socket = net.connect(this.connectOpts); } await (0, events_1.once)(socket, "connect"); return socket; } }; HttpProxyAgent.protocols = ["http", "https"]; exports2.HttpProxyAgent = HttpProxyAgent; function omit(obj, ...keys) { const ret = {}; let key; for (key in obj) { if (!keys.includes(key)) { ret[key] = obj[key]; } } return ret; } } }); // ../../node_modules/.pnpm/pac-proxy-agent@7.2.0/node_modules/pac-proxy-agent/dist/index.js var require_dist18 = __commonJS2({ "../../node_modules/.pnpm/pac-proxy-agent@7.2.0/node_modules/pac-proxy-agent/dist/index.js"(exports2) { "use strict"; 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.PacProxyAgent = void 0; var net = __importStar2(__require("net")); var tls = __importStar2(__require("tls")); var crypto = __importStar2(__require("crypto")); var events_1 = __require("events"); var debug_1 = __importDefault2(require_src2()); var url_1 = __require("url"); var agent_base_1 = require_dist9(); var get_uri_1 = require_dist11(); var pac_resolver_1 = require_dist13(); var quickjs_emscripten_1 = require_dist14(); var debug2 = (0, debug_1.default)("pac-proxy-agent"); var setServernameFromNonIpHost = (options) => { if (options.servername === void 0 && options.host && !net.isIP(options.host)) { return { ...options, servername: options.host }; } return options; }; var PacProxyAgent = class extends agent_base_1.Agent { constructor(uri, opts) { super(opts); this.clearResolverPromise = () => { this.resolverPromise = void 0; }; const uriStr = typeof uri === "string" ? uri : uri.href; this.uri = new url_1.URL(uriStr.replace(/^pac\+/i, "")); debug2("Creating PacProxyAgent with URI %o", this.uri.href); this.opts = { ...opts }; this.cache = void 0; this.resolver = void 0; this.resolverHash = ""; this.resolverPromise = void 0; if (!this.opts.filename) { this.opts.filename = this.uri.href; } } /** * Loads the PAC proxy file from the source if necessary, and returns * a generated `FindProxyForURL()` resolver function to use. */ getResolver() { if (!this.resolverPromise) { this.resolverPromise = this.loadResolver(); this.resolverPromise.then(this.clearResolverPromise, this.clearResolverPromise); } return this.resolverPromise; } async loadResolver() { try { const [qjs, code2] = await Promise.all([ (0, quickjs_emscripten_1.getQuickJS)(), this.loadPacFile() ]); const hash = crypto.createHash("sha1").update(code2).digest("hex"); if (this.resolver && this.resolverHash === hash) { debug2("Same sha1 hash for code - contents have not changed, reusing previous proxy resolver"); return this.resolver; } debug2("Creating new proxy resolver instance"); this.resolver = (0, pac_resolver_1.createPacResolver)(qjs, code2, this.opts); this.resolverHash = hash; return this.resolver; } catch (err) { if (this.resolver && err.code === "ENOTMODIFIED") { debug2("Got ENOTMODIFIED response, reusing previous proxy resolver"); return this.resolver; } throw err; } } /** * Loads the contents of the PAC proxy file. * * @api private */ async loadPacFile() { debug2("Loading PAC file: %o", this.uri); const rs = await (0, get_uri_1.getUri)(this.uri, { ...this.opts, cache: this.cache }); debug2("Got `Readable` instance for URI"); this.cache = rs; const buf = await (0, agent_base_1.toBuffer)(rs); debug2("Read %o byte PAC file from URI", buf.length); return buf.toString("utf8"); } /** * Called when the node-core HTTP client library is creating a new HTTP request. */ async connect(req, opts) { const { secureEndpoint } = opts; const isWebSocket = req.getHeader("upgrade") === "websocket"; const resolver = await this.getResolver(); const protocol = secureEndpoint ? "https:" : "http:"; const host = opts.host && net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host; const defaultPort = secureEndpoint ? 443 : 80; const url3 = Object.assign(new url_1.URL(req.path, `${protocol}//${host}`), defaultPort ? void 0 : { port: opts.port }); debug2("url: %s", url3); let result = await resolver(url3); if (!result) { result = "DIRECT"; } const proxies = String(result).trim().split(/\s*;\s*/g).filter(Boolean); if (this.opts.fallbackToDirect && !proxies.includes("DIRECT")) { proxies.push("DIRECT"); } for (const proxy of proxies) { let agent = null; let socket = null; const [type, target] = proxy.split(/\s+/); debug2("Attempting to use proxy: %o", proxy); if (type === "DIRECT") { if (secureEndpoint) { socket = tls.connect(setServernameFromNonIpHost(opts)); } else { socket = net.connect(opts); } } else if (type === "SOCKS" || type === "SOCKS5") { const { SocksProxyAgent } = await Promise.resolve().then(() => __importStar2(require_dist15())); agent = new SocksProxyAgent(`socks://${target}`, this.opts); } else if (type === "SOCKS4") { const { SocksProxyAgent } = await Promise.resolve().then(() => __importStar2(require_dist15())); agent = new SocksProxyAgent(`socks4a://${target}`, this.opts); } else if (type === "PROXY" || type === "HTTP" || type === "HTTPS") { const proxyURL = `${type === "HTTPS" ? "https" : "http"}://${target}`; if (secureEndpoint || isWebSocket) { const { HttpsProxyAgent } = await Promise.resolve().then(() => __importStar2(require_dist16())); agent = new HttpsProxyAgent(proxyURL, this.opts); } else { const { HttpProxyAgent } = await Promise.resolve().then(() => __importStar2(require_dist17())); agent = new HttpProxyAgent(proxyURL, this.opts); } } try { if (socket) { await (0, events_1.once)(socket, "connect"); req.emit("proxy", { proxy, socket }); return socket; } if (agent) { const s = await agent.connect(req, opts); if (!(s instanceof net.Socket)) { throw new Error("Expected a `net.Socket` to be returned from agent"); } req.emit("proxy", { proxy, socket: s }); return s; } throw new Error(`Could not determine proxy type for: ${proxy}`); } catch (err) { debug2("Got error for proxy %o: %o", proxy, err); req.emit("proxy", { proxy, error: err }); } } throw new Error(`Failed to establish a socket connection to proxies: ${JSON.stringify(proxies)}`); } }; PacProxyAgent.protocols = [ "pac+data", "pac+file", "pac+ftp", "pac+http", "pac+https" ]; exports2.PacProxyAgent = PacProxyAgent; } }); // ../../node_modules/.pnpm/proxy-agent@6.4.0/node_modules/proxy-agent/dist/index.js var require_dist19 = __commonJS2({ "../../node_modules/.pnpm/proxy-agent@6.4.0/node_modules/proxy-agent/dist/index.js"(exports2) { "use strict"; 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.ProxyAgent = exports2.proxies = void 0; var http3 = __importStar2(__require("http")); var https = __importStar2(__require("https")); var url_1 = __require("url"); var lru_cache_1 = __importDefault2(require_lru_cache()); var agent_base_1 = require_dist9(); var debug_1 = __importDefault2(require_src()); var proxy_from_env_1 = require_proxy_from_env(); var pac_proxy_agent_1 = require_dist18(); var http_proxy_agent_1 = require_dist17(); var https_proxy_agent_1 = require_dist16(); var socks_proxy_agent_1 = require_dist15(); var debug2 = (0, debug_1.default)("proxy-agent"); var PROTOCOLS = [ ...http_proxy_agent_1.HttpProxyAgent.protocols, ...socks_proxy_agent_1.SocksProxyAgent.protocols, ...pac_proxy_agent_1.PacProxyAgent.protocols ]; exports2.proxies = { http: [http_proxy_agent_1.HttpProxyAgent, https_proxy_agent_1.HttpsProxyAgent], https: [http_proxy_agent_1.HttpProxyAgent, https_proxy_agent_1.HttpsProxyAgent], socks: [socks_proxy_agent_1.SocksProxyAgent, socks_proxy_agent_1.SocksProxyAgent], socks4: [socks_proxy_agent_1.SocksProxyAgent, socks_proxy_agent_1.SocksProxyAgent], socks4a: [socks_proxy_agent_1.SocksProxyAgent, socks_proxy_agent_1.SocksProxyAgent], socks5: [socks_proxy_agent_1.SocksProxyAgent, socks_proxy_agent_1.SocksProxyAgent], socks5h: [socks_proxy_agent_1.SocksProxyAgent, socks_proxy_agent_1.SocksProxyAgent], "pac+data": [pac_proxy_agent_1.PacProxyAgent, pac_proxy_agent_1.PacProxyAgent], "pac+file": [pac_proxy_agent_1.PacProxyAgent, pac_proxy_agent_1.PacProxyAgent], "pac+ftp": [pac_proxy_agent_1.PacProxyAgent, pac_proxy_agent_1.PacProxyAgent], "pac+http": [pac_proxy_agent_1.PacProxyAgent, pac_proxy_agent_1.PacProxyAgent], "pac+https": [pac_proxy_agent_1.PacProxyAgent, pac_proxy_agent_1.PacProxyAgent] }; function isValidProtocol(v) { return PROTOCOLS.includes(v); } var ProxyAgent2 = class extends agent_base_1.Agent { constructor(opts) { super(opts); this.cache = new lru_cache_1.default({ max: 20 }); debug2("Creating new ProxyAgent instance: %o", opts); this.connectOpts = opts; this.httpAgent = opts?.httpAgent || new http3.Agent(opts); this.httpsAgent = opts?.httpsAgent || new https.Agent(opts); this.getProxyForUrl = opts?.getProxyForUrl || proxy_from_env_1.getProxyForUrl; } async connect(req, opts) { const { secureEndpoint } = opts; const isWebSocket = req.getHeader("upgrade") === "websocket"; const protocol = secureEndpoint ? isWebSocket ? "wss:" : "https:" : isWebSocket ? "ws:" : "http:"; const host = req.getHeader("host"); const url3 = new url_1.URL(req.path, `${protocol}//${host}`).href; const proxy = await this.getProxyForUrl(url3); if (!proxy) { debug2("Proxy not enabled for URL: %o", url3); return secureEndpoint ? this.httpsAgent : this.httpAgent; } debug2("Request URL: %o", url3); debug2("Proxy URL: %o", proxy); const cacheKey = `${protocol}+${proxy}`; let agent = this.cache.get(cacheKey); if (!agent) { const proxyUrl = new url_1.URL(proxy); const proxyProto = proxyUrl.protocol.replace(":", ""); if (!isValidProtocol(proxyProto)) { throw new Error(`Unsupported protocol for proxy URL: ${proxy}`); } const ctor = exports2.proxies[proxyProto][secureEndpoint || isWebSocket ? 1 : 0]; agent = new ctor(proxy, this.connectOpts); this.cache.set(cacheKey, agent); } else { debug2("Cache hit for proxy URL: %o", proxy); } return agent; } destroy() { for (const agent of this.cache.values()) { agent.destroy(); } super.destroy(); } }; exports2.ProxyAgent = ProxyAgent2; } }); // src/util/output/box.ts function box(message2, { borderColor, padding: padding2 = 1, textAlignment = "center", terminalColumns: cols = process.stdout.columns || process.env.COLUMNS && parseInt(process.env.COLUMNS, 10) || 80 } = {}) { const lines3 = message2.split(/\r?\n/).map((line) => [line, (0, import_strip_ansi4.default)(line).length]); const maxLine = lines3.reduce((p, [, len]) => Math.max(p, len), 0); const borderColorFn = borderColor && import_chalk28.default[borderColor] || import_chalk28.default.yellow; const clampedSidePadding = Math.max(1, padding2 * 3); const narrowMode = maxLine + 2 + clampedSidePadding * 2 > cols; const sidePadding = narrowMode ? 0 : clampedSidePadding; const innerWidth = Math.min(maxLine + sidePadding * 2, cols); const [hr, topLeft, topRight, left, right, bottomLeft, bottomRight] = narrowMode ? nothing : border; const spacerRow = narrowMode ? "\n".repeat(padding2) : `${borderColorFn(`${left}${" ".repeat(innerWidth)}${right}`)} `.repeat( padding2 ); const renderLine = ([line, len]) => { let leftPadding = 0; let rightPadding = 0; if (!narrowMode) { leftPadding = sidePadding; rightPadding = sidePadding; if (textAlignment === "center") { leftPadding += Math.floor((maxLine - len) / 2); rightPadding += maxLine - len - leftPadding + sidePadding; } else if (textAlignment === "right") { leftPadding += maxLine - len; } else if (textAlignment === "left") { rightPadding += maxLine - len; } } return borderColorFn(left) + " ".repeat(leftPadding) + line + " ".repeat(rightPadding) + borderColorFn(right); }; return borderColorFn(`${topLeft}${hr.repeat(innerWidth)}${topRight}`) + "\n" + spacerRow + lines3.map(renderLine).join("\n") + "\n" + spacerRow + borderColorFn(`${bottomLeft}${hr.repeat(innerWidth)}${bottomRight}`); } var import_chalk28, import_strip_ansi4, border, nothing; var init_box = __esm({ "src/util/output/box.ts"() { "use strict"; import_chalk28 = __toESM3(require_source(), 1); import_strip_ansi4 = __toESM3(require_strip_ansi2(), 1); border = ["\u2500", "\u256D", "\u256E", "\u2502", "\u2502", "\u2570", "\u256F"]; nothing = ["\u2500", "", "", "", "", "", ""]; } }); // ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js var require_windows = __commonJS2({ "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js"(exports2, module2) { module2.exports = isexe; isexe.sync = sync; var fs15 = __require("fs"); function checkPathExt(path11, options) { var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT; if (!pathext) { return true; } pathext = pathext.split(";"); if (pathext.indexOf("") !== -1) { return true; } for (var i = 0; i < pathext.length; i++) { var p = pathext[i].toLowerCase(); if (p && path11.substr(-p.length).toLowerCase() === p) { return true; } } return false; } function checkStat(stat2, path11, options) { if (!stat2.isSymbolicLink() && !stat2.isFile()) { return false; } return checkPathExt(path11, options); } function isexe(path11, options, cb) { fs15.stat(path11, function(er, stat2) { cb(er, er ? false : checkStat(stat2, path11, options)); }); } function sync(path11, options) { return checkStat(fs15.statSync(path11), path11, options); } } }); // ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js var require_mode = __commonJS2({ "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js"(exports2, module2) { module2.exports = isexe; isexe.sync = sync; var fs15 = __require("fs"); function isexe(path11, options, cb) { fs15.stat(path11, function(er, stat2) { cb(er, er ? false : checkStat(stat2, options)); }); } function sync(path11, options) { return checkStat(fs15.statSync(path11), options); } function checkStat(stat2, options) { return stat2.isFile() && checkMode(stat2, options); } function checkMode(stat2, options) { var mod = stat2.mode; var uid = stat2.uid; var gid = stat2.gid; var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid(); var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid(); var u = parseInt("100", 8); var g = parseInt("010", 8); var o = parseInt("001", 8); var ug = u | g; var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0; return ret; } } }); // ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js var require_isexe = __commonJS2({ "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js"(exports2, module2) { var fs15 = __require("fs"); var core; if (process.platform === "win32" || global.TESTING_WINDOWS) { core = require_windows(); } else { core = require_mode(); } module2.exports = isexe; isexe.sync = sync; function isexe(path11, options, cb) { if (typeof options === "function") { cb = options; options = {}; } if (!cb) { if (typeof Promise !== "function") { throw new TypeError("callback not provided"); } return new Promise(function(resolve14, reject) { isexe(path11, options || {}, function(er, is) { if (er) { reject(er); } else { resolve14(is); } }); }); } core(path11, options || {}, function(er, is) { if (er) { if (er.code === "EACCES" || options && options.ignoreErrors) { er = null; is = false; } } cb(er, is); }); } function sync(path11, options) { try { return core.sync(path11, options || {}); } catch (er) { if (options && options.ignoreErrors || er.code === "EACCES") { return false; } else { throw er; } } } } }); // ../../node_modules/.pnpm/which@3.0.0/node_modules/which/lib/index.js var require_lib12 = __commonJS2({ "../../node_modules/.pnpm/which@3.0.0/node_modules/which/lib/index.js"(exports2, module2) { var isexe = require_isexe(); var { join: join26, delimiter: delimiter3, sep: sep3, posix: posix2 } = __require("path"); var isWindows = process.platform === "win32"; var rSlash = new RegExp(`[${posix2.sep}${sep3 === posix2.sep ? "" : sep3}]`.replace(/(\\)/g, "\\$1")); var rRel = new RegExp(`^\\.${rSlash.source}`); var getNotFoundError = (cmd2) => Object.assign(new Error(`not found: ${cmd2}`), { code: "ENOENT" }); var getPathInfo = (cmd2, { path: optPath = process.env.PATH, pathExt: optPathExt = process.env.PATHEXT, delimiter: optDelimiter = delimiter3 }) => { const pathEnv = cmd2.match(rSlash) ? [""] : [ // windows always checks the cwd first ...isWindows ? [process.cwd()] : [], ...(optPath || /* istanbul ignore next: very unusual */ "").split(optDelimiter) ]; if (isWindows) { const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter); const pathExt = pathExtExe.split(optDelimiter); if (cmd2.includes(".") && pathExt[0] !== "") { pathExt.unshift(""); } return { pathEnv, pathExt, pathExtExe }; } return { pathEnv, pathExt: [""] }; }; var getPathPart = (raw, cmd2) => { const pathPart = /^".*"$/.test(raw) ? raw.slice(1, -1) : raw; const prefix = !pathPart && rRel.test(cmd2) ? cmd2.slice(0, 2) : ""; return prefix + join26(pathPart, cmd2); }; var which2 = async (cmd2, opt = {}) => { const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd2, opt); const found = []; for (const envPart of pathEnv) { const p = getPathPart(envPart, cmd2); for (const ext of pathExt) { const withExt = p + ext; const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true }); if (is) { if (!opt.all) { return withExt; } found.push(withExt); } } } if (opt.all && found.length) { return found; } if (opt.nothrow) { return null; } throw getNotFoundError(cmd2); }; var whichSync = (cmd2, opt = {}) => { const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd2, opt); const found = []; for (const pathEnvPart of pathEnv) { const p = getPathPart(pathEnvPart, cmd2); for (const ext of pathExt) { const withExt = p + ext; const is = isexe.sync(withExt, { pathExt: pathExtExe, ignoreErrors: true }); if (is) { if (!opt.all) { return withExt; } found.push(withExt); } } } if (opt.all && found.length) { return found; } if (opt.nothrow) { return null; } throw getNotFoundError(cmd2); }; module2.exports = which2; which2.sync = whichSync; } }); // ../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js var require_which = __commonJS2({ "../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js"(exports2, module2) { var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys"; var path11 = __require("path"); var COLON = isWindows ? ";" : ":"; var isexe = require_isexe(); var getNotFoundError = (cmd2) => Object.assign(new Error(`not found: ${cmd2}`), { code: "ENOENT" }); var getPathInfo = (cmd2, opt) => { const colon = opt.colon || COLON; const pathEnv = cmd2.match(/\//) || isWindows && cmd2.match(/\\/) ? [""] : [ // windows always checks the cwd first ...isWindows ? [process.cwd()] : [], ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */ "").split(colon) ]; const pathExtExe = isWindows ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : ""; const pathExt = isWindows ? pathExtExe.split(colon) : [""]; if (isWindows) { if (cmd2.indexOf(".") !== -1 && pathExt[0] !== "") pathExt.unshift(""); } return { pathEnv, pathExt, pathExtExe }; }; var which2 = (cmd2, opt, cb) => { if (typeof opt === "function") { cb = opt; opt = {}; } if (!opt) opt = {}; const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd2, opt); const found = []; const step = (i) => new Promise((resolve14, reject) => { if (i === pathEnv.length) return opt.all && found.length ? resolve14(found) : reject(getNotFoundError(cmd2)); const ppRaw = pathEnv[i]; const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; const pCmd = path11.join(pathPart, cmd2); const p = !pathPart && /^\.[\\\/]/.test(cmd2) ? cmd2.slice(0, 2) + pCmd : pCmd; resolve14(subStep(p, i, 0)); }); const subStep = (p, i, ii) => new Promise((resolve14, reject) => { if (ii === pathExt.length) return resolve14(step(i + 1)); const ext = pathExt[ii]; isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { if (!er && is) { if (opt.all) found.push(p + ext); else return resolve14(p + ext); } return resolve14(subStep(p, i, ii + 1)); }); }); return cb ? step(0).then((res) => cb(null, res), cb) : step(0); }; var whichSync = (cmd2, opt) => { opt = opt || {}; const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd2, opt); const found = []; for (let i = 0; i < pathEnv.length; i++) { const ppRaw = pathEnv[i]; const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; const pCmd = path11.join(pathPart, cmd2); const p = !pathPart && /^\.[\\\/]/.test(cmd2) ? cmd2.slice(0, 2) + pCmd : pCmd; for (let j = 0; j < pathExt.length; j++) { const cur = p + pathExt[j]; try { const is = isexe.sync(cur, { pathExt: pathExtExe }); if (is) { if (opt.all) found.push(cur); else return cur; } } catch (ex) { } } } if (opt.all && found.length) return found; if (opt.nothrow) return null; throw getNotFoundError(cmd2); }; module2.exports = which2; which2.sync = whichSync; } }); // ../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js var require_path_key = __commonJS2({ "../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js"(exports2, module2) { "use strict"; var pathKey = (options = {}) => { const environment = options.env || process.env; const platform = options.platform || process.platform; if (platform !== "win32") { return "PATH"; } return Object.keys(environment).reverse().find((key) => key.toUpperCase() === "PATH") || "Path"; }; module2.exports = pathKey; module2.exports.default = pathKey; } }); // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js var require_resolveCommand = __commonJS2({ "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var which2 = require_which(); var getPathKey = require_path_key(); function resolveCommandAttempt(parsed, withoutPathExt) { const env = parsed.options.env || process.env; const cwd = process.cwd(); const hasCustomCwd = parsed.options.cwd != null; const shouldSwitchCwd = hasCustomCwd && process.chdir !== void 0 && !process.chdir.disabled; if (shouldSwitchCwd) { try { process.chdir(parsed.options.cwd); } catch (err) { } } let resolved; try { resolved = which2.sync(parsed.command, { path: env[getPathKey({ env })], pathExt: withoutPathExt ? path11.delimiter : void 0 }); } catch (e2) { } finally { if (shouldSwitchCwd) { process.chdir(cwd); } } if (resolved) { resolved = path11.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved); } return resolved; } function resolveCommand(parsed) { return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); } module2.exports = resolveCommand; } }); // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js var require_escape = __commonJS2({ "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js"(exports2, module2) { "use strict"; var metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; function escapeCommand(arg2) { arg2 = arg2.replace(metaCharsRegExp, "^$1"); return arg2; } function escapeArgument(arg2, doubleEscapeMetaChars) { arg2 = `${arg2}`; arg2 = arg2.replace(/(?=(\\+?)?)\1"/g, '$1$1\\"'); arg2 = arg2.replace(/(?=(\\+?)?)\1$/, "$1$1"); arg2 = `"${arg2}"`; arg2 = arg2.replace(metaCharsRegExp, "^$1"); if (doubleEscapeMetaChars) { arg2 = arg2.replace(metaCharsRegExp, "^$1"); } return arg2; } module2.exports.command = escapeCommand; module2.exports.argument = escapeArgument; } }); // ../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js var require_shebang_regex = __commonJS2({ "../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js"(exports2, module2) { "use strict"; module2.exports = /^#!(.*)/; } }); // ../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js var require_shebang_command = __commonJS2({ "../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js"(exports2, module2) { "use strict"; var shebangRegex = require_shebang_regex(); module2.exports = (string = "") => { const match = string.match(shebangRegex); if (!match) { return null; } const [path11, argument] = match[0].replace(/#! ?/, "").split(" "); const binary = path11.split("/").pop(); if (binary === "env") { return argument; } return argument ? `${binary} ${argument}` : binary; }; } }); // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js var require_readShebang = __commonJS2({ "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js"(exports2, module2) { "use strict"; var fs15 = __require("fs"); var shebangCommand = require_shebang_command(); function readShebang(command) { const size = 150; const buffer = Buffer.alloc(size); let fd; try { fd = fs15.openSync(command, "r"); fs15.readSync(fd, buffer, 0, size, 0); fs15.closeSync(fd); } catch (e2) { } return shebangCommand(buffer.toString()); } module2.exports = readShebang; } }); // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js var require_parse6 = __commonJS2({ "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var resolveCommand = require_resolveCommand(); var escape2 = require_escape(); var readShebang = require_readShebang(); var isWin = process.platform === "win32"; var isExecutableRegExp = /\.(?:com|exe)$/i; var isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; function detectShebang(parsed) { parsed.file = resolveCommand(parsed); const shebang = parsed.file && readShebang(parsed.file); if (shebang) { parsed.args.unshift(parsed.file); parsed.command = shebang; return resolveCommand(parsed); } return parsed.file; } function parseNonShell(parsed) { if (!isWin) { return parsed; } const commandFile = detectShebang(parsed); const needsShell = !isExecutableRegExp.test(commandFile); if (parsed.options.forceShell || needsShell) { const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); parsed.command = path11.normalize(parsed.command); parsed.command = escape2.command(parsed.command); parsed.args = parsed.args.map((arg2) => escape2.argument(arg2, needsDoubleEscapeMetaChars)); const shellCommand = [parsed.command].concat(parsed.args).join(" "); parsed.args = ["/d", "/s", "/c", `"${shellCommand}"`]; parsed.command = process.env.comspec || "cmd.exe"; parsed.options.windowsVerbatimArguments = true; } return parsed; } function parse11(command, args2, options) { if (args2 && !Array.isArray(args2)) { options = args2; args2 = null; } args2 = args2 ? args2.slice(0) : []; options = Object.assign({}, options); const parsed = { command, args: args2, options, file: void 0, original: { command, args: args2 } }; return options.shell ? parsed : parseNonShell(parsed); } module2.exports = parse11; } }); // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js var require_enoent = __commonJS2({ "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js"(exports2, module2) { "use strict"; var isWin = process.platform === "win32"; function notFoundError(original, syscall) { return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { code: "ENOENT", errno: "ENOENT", syscall: `${syscall} ${original.command}`, path: original.command, spawnargs: original.args }); } function hookChildProcess(cp, parsed) { if (!isWin) { return; } const originalEmit = cp.emit; cp.emit = function(name, arg1) { if (name === "exit") { const err = verifyENOENT(arg1, parsed); if (err) { return originalEmit.call(cp, "error", err); } } return originalEmit.apply(cp, arguments); }; } function verifyENOENT(status3, parsed) { if (isWin && status3 === 1 && !parsed.file) { return notFoundError(parsed.original, "spawn"); } return null; } function verifyENOENTSync(status3, parsed) { if (isWin && status3 === 1 && !parsed.file) { return notFoundError(parsed.original, "spawnSync"); } return null; } module2.exports = { hookChildProcess, verifyENOENT, verifyENOENTSync, notFoundError }; } }); // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js var require_cross_spawn = __commonJS2({ "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js"(exports2, module2) { "use strict"; var cp = __require("child_process"); var parse11 = require_parse6(); var enoent = require_enoent(); function spawn6(command, args2, options) { const parsed = parse11(command, args2, options); const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); enoent.hookChildProcess(spawned, parsed); return spawned; } function spawnSync(command, args2, options) { const parsed = parse11(command, args2, options); const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); return result; } module2.exports = spawn6; module2.exports.spawn = spawn6; module2.exports.sync = spawnSync; module2.exports._parse = parse11; module2.exports._enoent = enoent; } }); // ../../node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js var require_strip_final_newline = __commonJS2({ "../../node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js"(exports2, module2) { "use strict"; module2.exports = (input) => { const LF = typeof input === "string" ? "\n" : "\n".charCodeAt(); const CR = typeof input === "string" ? "\r" : "\r".charCodeAt(); if (input[input.length - 1] === LF) { input = input.slice(0, input.length - 1); } if (input[input.length - 1] === CR) { input = input.slice(0, input.length - 1); } return input; }; } }); // ../../node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js var require_npm_run_path = __commonJS2({ "../../node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var pathKey = require_path_key(); var npmRunPath = (options) => { options = { cwd: process.cwd(), path: process.env[pathKey()], execPath: process.execPath, ...options }; let previous; let cwdPath = path11.resolve(options.cwd); const result = []; while (previous !== cwdPath) { result.push(path11.join(cwdPath, "node_modules/.bin")); previous = cwdPath; cwdPath = path11.resolve(cwdPath, ".."); } const execPathDir = path11.resolve(options.cwd, options.execPath, ".."); result.push(execPathDir); return result.concat(options.path).join(path11.delimiter); }; module2.exports = npmRunPath; module2.exports.default = npmRunPath; module2.exports.env = (options) => { options = { env: process.env, ...options }; const env = { ...options.env }; const path12 = pathKey({ env }); options.path = env[path12]; env[path12] = module2.exports(options); return env; }; } }); // ../../node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js var require_mimic_fn2 = __commonJS2({ "../../node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js"(exports2, module2) { "use strict"; var mimicFn = (to, from) => { for (const prop of Reflect.ownKeys(from)) { Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop)); } return to; }; module2.exports = mimicFn; module2.exports.default = mimicFn; } }); // ../../node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js var require_onetime2 = __commonJS2({ "../../node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js"(exports2, module2) { "use strict"; var mimicFn = require_mimic_fn2(); var calledFunctions = /* @__PURE__ */ new WeakMap(); var onetime = (function_, options = {}) => { if (typeof function_ !== "function") { throw new TypeError("Expected a function"); } let returnValue; let callCount = 0; const functionName = function_.displayName || function_.name || ""; const onetime2 = function(...arguments_) { calledFunctions.set(onetime2, ++callCount); if (callCount === 1) { returnValue = function_.apply(this, arguments_); function_ = null; } else if (options.throw === true) { throw new Error(`Function \`${functionName}\` can only be called once`); } return returnValue; }; mimicFn(onetime2, function_); calledFunctions.set(onetime2, callCount); return onetime2; }; module2.exports = onetime; module2.exports.default = onetime; module2.exports.callCount = (function_) => { if (!calledFunctions.has(function_)) { throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`); } return calledFunctions.get(function_); }; } }); // ../../node_modules/.pnpm/human-signals@1.1.1/node_modules/human-signals/build/src/core.js var require_core4 = __commonJS2({ "../../node_modules/.pnpm/human-signals@1.1.1/node_modules/human-signals/build/src/core.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SIGNALS = void 0; var SIGNALS = [ { name: "SIGHUP", number: 1, action: "terminate", description: "Terminal closed", standard: "posix" }, { name: "SIGINT", number: 2, action: "terminate", description: "User interruption with CTRL-C", standard: "ansi" }, { name: "SIGQUIT", number: 3, action: "core", description: "User interruption with CTRL-\\", standard: "posix" }, { name: "SIGILL", number: 4, action: "core", description: "Invalid machine instruction", standard: "ansi" }, { name: "SIGTRAP", number: 5, action: "core", description: "Debugger breakpoint", standard: "posix" }, { name: "SIGABRT", number: 6, action: "core", description: "Aborted", standard: "ansi" }, { name: "SIGIOT", number: 6, action: "core", description: "Aborted", standard: "bsd" }, { name: "SIGBUS", number: 7, action: "core", description: "Bus error due to misaligned, non-existing address or paging error", standard: "bsd" }, { name: "SIGEMT", number: 7, action: "terminate", description: "Command should be emulated but is not implemented", standard: "other" }, { name: "SIGFPE", number: 8, action: "core", description: "Floating point arithmetic error", standard: "ansi" }, { name: "SIGKILL", number: 9, action: "terminate", description: "Forced termination", standard: "posix", forced: true }, { name: "SIGUSR1", number: 10, action: "terminate", description: "Application-specific signal", standard: "posix" }, { name: "SIGSEGV", number: 11, action: "core", description: "Segmentation fault", standard: "ansi" }, { name: "SIGUSR2", number: 12, action: "terminate", description: "Application-specific signal", standard: "posix" }, { name: "SIGPIPE", number: 13, action: "terminate", description: "Broken pipe or socket", standard: "posix" }, { name: "SIGALRM", number: 14, action: "terminate", description: "Timeout or timer", standard: "posix" }, { name: "SIGTERM", number: 15, action: "terminate", description: "Termination", standard: "ansi" }, { name: "SIGSTKFLT", number: 16, action: "terminate", description: "Stack is empty or overflowed", standard: "other" }, { name: "SIGCHLD", number: 17, action: "ignore", description: "Child process terminated, paused or unpaused", standard: "posix" }, { name: "SIGCLD", number: 17, action: "ignore", description: "Child process terminated, paused or unpaused", standard: "other" }, { name: "SIGCONT", number: 18, action: "unpause", description: "Unpaused", standard: "posix", forced: true }, { name: "SIGSTOP", number: 19, action: "pause", description: "Paused", standard: "posix", forced: true }, { name: "SIGTSTP", number: 20, action: "pause", description: 'Paused using CTRL-Z or "suspend"', standard: "posix" }, { name: "SIGTTIN", number: 21, action: "pause", description: "Background process cannot read terminal input", standard: "posix" }, { name: "SIGBREAK", number: 21, action: "terminate", description: "User interruption with CTRL-BREAK", standard: "other" }, { name: "SIGTTOU", number: 22, action: "pause", description: "Background process cannot write to terminal output", standard: "posix" }, { name: "SIGURG", number: 23, action: "ignore", description: "Socket received out-of-band data", standard: "bsd" }, { name: "SIGXCPU", number: 24, action: "core", description: "Process timed out", standard: "bsd" }, { name: "SIGXFSZ", number: 25, action: "core", description: "File too big", standard: "bsd" }, { name: "SIGVTALRM", number: 26, action: "terminate", description: "Timeout or timer", standard: "bsd" }, { name: "SIGPROF", number: 27, action: "terminate", description: "Timeout or timer", standard: "bsd" }, { name: "SIGWINCH", number: 28, action: "ignore", description: "Terminal window size changed", standard: "bsd" }, { name: "SIGIO", number: 29, action: "terminate", description: "I/O is available", standard: "other" }, { name: "SIGPOLL", number: 29, action: "terminate", description: "Watched event", standard: "other" }, { name: "SIGINFO", number: 29, action: "ignore", description: "Request for process information", standard: "other" }, { name: "SIGPWR", number: 30, action: "terminate", description: "Device running out of power", standard: "systemv" }, { name: "SIGSYS", number: 31, action: "core", description: "Invalid system call", standard: "other" }, { name: "SIGUNUSED", number: 31, action: "terminate", description: "Invalid system call", standard: "other" } ]; exports2.SIGNALS = SIGNALS; } }); // ../../node_modules/.pnpm/human-signals@1.1.1/node_modules/human-signals/build/src/realtime.js var require_realtime = __commonJS2({ "../../node_modules/.pnpm/human-signals@1.1.1/node_modules/human-signals/build/src/realtime.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SIGRTMAX = exports2.getRealtimeSignals = void 0; var getRealtimeSignals = function() { const length = SIGRTMAX - SIGRTMIN + 1; return Array.from({ length }, getRealtimeSignal); }; exports2.getRealtimeSignals = getRealtimeSignals; var getRealtimeSignal = function(value, index) { return { name: `SIGRT${index + 1}`, number: SIGRTMIN + index, action: "terminate", description: "Application-specific signal (realtime)", standard: "posix" }; }; var SIGRTMIN = 34; var SIGRTMAX = 64; exports2.SIGRTMAX = SIGRTMAX; } }); // ../../node_modules/.pnpm/human-signals@1.1.1/node_modules/human-signals/build/src/signals.js var require_signals2 = __commonJS2({ "../../node_modules/.pnpm/human-signals@1.1.1/node_modules/human-signals/build/src/signals.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getSignals = void 0; var _os = __require("os"); var _core = require_core4(); var _realtime = require_realtime(); var getSignals = function() { const realtimeSignals = (0, _realtime.getRealtimeSignals)(); const signals2 = [..._core.SIGNALS, ...realtimeSignals].map(normalizeSignal); return signals2; }; exports2.getSignals = getSignals; var normalizeSignal = function({ name, number: defaultNumber, description, action, forced = false, standard }) { const { signals: { [name]: constantSignal } } = _os.constants; const supported = constantSignal !== void 0; const number = supported ? constantSignal : defaultNumber; return { name, number, description, supported, action, forced, standard }; }; } }); // ../../node_modules/.pnpm/human-signals@1.1.1/node_modules/human-signals/build/src/main.js var require_main3 = __commonJS2({ "../../node_modules/.pnpm/human-signals@1.1.1/node_modules/human-signals/build/src/main.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.signalsByNumber = exports2.signalsByName = void 0; var _os = __require("os"); var _signals = require_signals2(); var _realtime = require_realtime(); var getSignalsByName = function() { const signals2 = (0, _signals.getSignals)(); return signals2.reduce(getSignalByName, {}); }; var getSignalByName = function(signalByNameMemo, { name, number, description, supported, action, forced, standard }) { return { ...signalByNameMemo, [name]: { name, number, description, supported, action, forced, standard } }; }; var signalsByName = getSignalsByName(); exports2.signalsByName = signalsByName; var getSignalsByNumber = function() { const signals2 = (0, _signals.getSignals)(); const length = _realtime.SIGRTMAX + 1; const signalsA = Array.from({ length }, (value, number) => getSignalByNumber(number, signals2)); return Object.assign({}, ...signalsA); }; var getSignalByNumber = function(number, signals2) { const signal = findSignalByNumber(number, signals2); if (signal === void 0) { return {}; } const { name, description, supported, action, forced, standard } = signal; return { [number]: { name, number, description, supported, action, forced, standard } }; }; var findSignalByNumber = function(number, signals2) { const signal = signals2.find(({ name }) => _os.constants.signals[name] === number); if (signal !== void 0) { return signal; } return signals2.find((signalA) => signalA.number === number); }; var signalsByNumber = getSignalsByNumber(); exports2.signalsByNumber = signalsByNumber; } }); // ../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/error.js var require_error3 = __commonJS2({ "../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/error.js"(exports2, module2) { "use strict"; var { signalsByName } = require_main3(); var getErrorPrefix = ({ timedOut, timeout, errorCode, signal, signalDescription, exitCode: exitCode2, isCanceled }) => { if (timedOut) { return `timed out after ${timeout} milliseconds`; } if (isCanceled) { return "was canceled"; } if (errorCode !== void 0) { return `failed with ${errorCode}`; } if (signal !== void 0) { return `was killed with ${signal} (${signalDescription})`; } if (exitCode2 !== void 0) { return `failed with exit code ${exitCode2}`; } return "failed"; }; var makeError = ({ stdout, stderr, all, error: error3, signal, exitCode: exitCode2, command, timedOut, isCanceled, killed, parsed: { options: { timeout } } }) => { exitCode2 = exitCode2 === null ? void 0 : exitCode2; signal = signal === null ? void 0 : signal; const signalDescription = signal === void 0 ? void 0 : signalsByName[signal].description; const errorCode = error3 && error3.code; const prefix = getErrorPrefix({ timedOut, timeout, errorCode, signal, signalDescription, exitCode: exitCode2, isCanceled }); const message2 = `Command ${prefix}: ${command}`; if (error3 instanceof Error) { error3.originalMessage = error3.message; error3.message = `${message2} ${error3.message}`; } else { error3 = new Error(message2); } error3.command = command; error3.exitCode = exitCode2; error3.signal = signal; error3.signalDescription = signalDescription; error3.stdout = stdout; error3.stderr = stderr; if (all !== void 0) { error3.all = all; } if ("bufferedData" in error3) { delete error3.bufferedData; } error3.failed = true; error3.timedOut = Boolean(timedOut); error3.isCanceled = isCanceled; error3.killed = killed && !timedOut; return error3; }; module2.exports = makeError; } }); // ../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/stdio.js var require_stdio = __commonJS2({ "../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/stdio.js"(exports2, module2) { "use strict"; var aliases = ["stdin", "stdout", "stderr"]; var hasAlias = (opts) => aliases.some((alias2) => opts[alias2] !== void 0); var normalizeStdio = (opts) => { if (!opts) { return; } const { stdio } = opts; if (stdio === void 0) { return aliases.map((alias2) => opts[alias2]); } if (hasAlias(opts)) { throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map((alias2) => `\`${alias2}\``).join(", ")}`); } if (typeof stdio === "string") { return stdio; } if (!Array.isArray(stdio)) { throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); } const length = Math.max(stdio.length, aliases.length); return Array.from({ length }, (value, index) => stdio[index]); }; module2.exports = normalizeStdio; module2.exports.node = (opts) => { const stdio = normalizeStdio(opts); if (stdio === "ipc") { return "ipc"; } if (stdio === void 0 || typeof stdio === "string") { return [stdio, stdio, stdio, "ipc"]; } if (stdio.includes("ipc")) { return stdio; } return [...stdio, "ipc"]; }; } }); // ../../node_modules/.pnpm/p-finally@2.0.1/node_modules/p-finally/index.js var require_p_finally = __commonJS2({ "../../node_modules/.pnpm/p-finally@2.0.1/node_modules/p-finally/index.js"(exports2, module2) { "use strict"; module2.exports = async (promise, onFinally = () => { }) => { let value; try { value = await promise; } catch (error3) { await onFinally(); throw error3; } await onFinally(); return value; }; } }); // ../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/kill.js var require_kill = __commonJS2({ "../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/kill.js"(exports2, module2) { "use strict"; var os4 = __require("os"); var onExit2 = require_signal_exit(); var pFinally = require_p_finally(); var DEFAULT_FORCE_KILL_TIMEOUT = 1e3 * 5; var spawnedKill = (kill, signal = "SIGTERM", options = {}) => { const killResult = kill(signal); setKillTimeout(kill, signal, options, killResult); return killResult; }; var setKillTimeout = (kill, signal, options, killResult) => { if (!shouldForceKill(signal, options, killResult)) { return; } const timeout = getForceKillAfterTimeout(options); setTimeout(() => { kill("SIGKILL"); }, timeout).unref(); }; var shouldForceKill = (signal, { forceKillAfterTimeout }, killResult) => { return isSigterm(signal) && forceKillAfterTimeout !== false && killResult; }; var isSigterm = (signal) => { return signal === os4.constants.signals.SIGTERM || typeof signal === "string" && signal.toUpperCase() === "SIGTERM"; }; var getForceKillAfterTimeout = ({ forceKillAfterTimeout = true }) => { if (forceKillAfterTimeout === true) { return DEFAULT_FORCE_KILL_TIMEOUT; } if (!Number.isInteger(forceKillAfterTimeout) || forceKillAfterTimeout < 0) { throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`); } return forceKillAfterTimeout; }; var spawnedCancel = (spawned, context) => { const killResult = spawned.kill(); if (killResult) { context.isCanceled = true; } }; var timeoutKill = (spawned, signal, reject) => { spawned.kill(signal); reject(Object.assign(new Error("Timed out"), { timedOut: true, signal })); }; var setupTimeout = (spawned, { timeout, killSignal = "SIGTERM" }, spawnedPromise) => { if (timeout === 0 || timeout === void 0) { return spawnedPromise; } if (!Number.isInteger(timeout) || timeout < 0) { throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`); } let timeoutId; const timeoutPromise = new Promise((resolve14, reject) => { timeoutId = setTimeout(() => { timeoutKill(spawned, killSignal, reject); }, timeout); }); const safeSpawnedPromise = pFinally(spawnedPromise, () => { clearTimeout(timeoutId); }); return Promise.race([timeoutPromise, safeSpawnedPromise]); }; var setExitHandler = (spawned, { cleanup, detached }, timedPromise) => { if (!cleanup || detached) { return timedPromise; } const removeExitHandler = onExit2(() => { spawned.kill(); }); return pFinally(timedPromise, removeExitHandler); }; module2.exports = { spawnedKill, spawnedCancel, setupTimeout, setExitHandler }; } }); // ../../node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js var require_is_stream = __commonJS2({ "../../node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js"(exports2, module2) { "use strict"; var isStream = (stream) => stream !== null && typeof stream === "object" && typeof stream.pipe === "function"; isStream.writable = (stream) => isStream(stream) && stream.writable !== false && typeof stream._write === "function" && typeof stream._writableState === "object"; isStream.readable = (stream) => isStream(stream) && stream.readable !== false && typeof stream._read === "function" && typeof stream._readableState === "object"; isStream.duplex = (stream) => isStream.writable(stream) && isStream.readable(stream); isStream.transform = (stream) => isStream.duplex(stream) && typeof stream._transform === "function"; module2.exports = isStream; } }); // ../../node_modules/.pnpm/pump@3.0.2/node_modules/pump/index.js var require_pump2 = __commonJS2({ "../../node_modules/.pnpm/pump@3.0.2/node_modules/pump/index.js"(exports2, module2) { var once2 = require_once(); var eos = require_end_of_stream(); var fs15; try { fs15 = __require("fs"); } catch (e2) { } var noop = function() { }; var ancient = /^v?\.0/.test(process.version); var isFn = function(fn2) { return typeof fn2 === "function"; }; var isFS = function(stream) { if (!ancient) return false; if (!fs15) return false; return (stream instanceof (fs15.ReadStream || noop) || stream instanceof (fs15.WriteStream || noop)) && isFn(stream.close); }; var isRequest = function(stream) { return stream.setHeader && isFn(stream.abort); }; var destroyer = function(stream, reading, writing, callback) { callback = once2(callback); var closed = false; stream.on("close", function() { closed = true; }); eos(stream, { readable: reading, writable: writing }, function(err) { if (err) return callback(err); closed = true; callback(); }); var destroyed = false; return function(err) { if (closed) return; if (destroyed) return; destroyed = true; if (isFS(stream)) return stream.close(noop); if (isRequest(stream)) return stream.abort(); if (isFn(stream.destroy)) return stream.destroy(); callback(err || new Error("stream was destroyed")); }; }; var call = function(fn2) { fn2(); }; var pipe3 = function(from, to) { return from.pipe(to); }; var pump = function() { var streams = Array.prototype.slice.call(arguments); var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop; if (Array.isArray(streams[0])) streams = streams[0]; if (streams.length < 2) throw new Error("pump requires two streams per minimum"); var error3; var destroys = streams.map(function(stream, i) { var reading = i < streams.length - 1; var writing = i > 0; return destroyer(stream, reading, writing, function(err) { if (!error3) error3 = err; if (err) destroys.forEach(call); if (reading) return; destroys.forEach(call); callback(error3); }); }); return streams.reduce(pipe3); }; module2.exports = pump; } }); // ../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/buffer-stream.js var require_buffer_stream = __commonJS2({ "../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/buffer-stream.js"(exports2, module2) { "use strict"; var { PassThrough: PassThroughStream } = __require("stream"); module2.exports = (options) => { options = { ...options }; const { array } = options; let { encoding } = options; const isBuffer = encoding === "buffer"; let objectMode = false; if (array) { objectMode = !(encoding || isBuffer); } else { encoding = encoding || "utf8"; } if (isBuffer) { encoding = null; } const stream = new PassThroughStream({ objectMode }); if (encoding) { stream.setEncoding(encoding); } let length = 0; const chunks = []; stream.on("data", (chunk) => { chunks.push(chunk); if (objectMode) { length = chunks.length; } else { length += chunk.length; } }); stream.getBufferedValue = () => { if (array) { return chunks; } return isBuffer ? Buffer.concat(chunks, length) : chunks.join(""); }; stream.getBufferedLength = () => length; return stream; }; } }); // ../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/index.js var require_get_stream = __commonJS2({ "../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/index.js"(exports2, module2) { "use strict"; var { constants: BufferConstants } = __require("buffer"); var pump = require_pump2(); var bufferStream = require_buffer_stream(); var MaxBufferError = class extends Error { constructor() { super("maxBuffer exceeded"); this.name = "MaxBufferError"; } }; async function getStream(inputStream, options) { if (!inputStream) { return Promise.reject(new Error("Expected a stream")); } options = { maxBuffer: Infinity, ...options }; const { maxBuffer } = options; let stream; await new Promise((resolve14, reject) => { const rejectPromise = (error3) => { if (error3 && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) { error3.bufferedData = stream.getBufferedValue(); } reject(error3); }; stream = pump(inputStream, bufferStream(options), (error3) => { if (error3) { rejectPromise(error3); return; } resolve14(); }); stream.on("data", () => { if (stream.getBufferedLength() > maxBuffer) { rejectPromise(new MaxBufferError()); } }); }); return stream.getBufferedValue(); } module2.exports = getStream; module2.exports.default = getStream; module2.exports.buffer = (stream, options) => getStream(stream, { ...options, encoding: "buffer" }); module2.exports.array = (stream, options) => getStream(stream, { ...options, array: true }); module2.exports.MaxBufferError = MaxBufferError; } }); // ../../node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js var require_merge_stream = __commonJS2({ "../../node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js"(exports2, module2) { "use strict"; var { PassThrough } = __require("stream"); module2.exports = function() { var sources = []; var output2 = new PassThrough({ objectMode: true }); output2.setMaxListeners(0); output2.add = add9; output2.isEmpty = isEmpty; output2.on("unpipe", remove7); Array.prototype.slice.call(arguments).forEach(add9); return output2; function add9(source) { if (Array.isArray(source)) { source.forEach(add9); return this; } sources.push(source); source.once("end", remove7.bind(null, source)); source.once("error", output2.emit.bind(output2, "error")); source.pipe(output2, { end: false }); return this; } function isEmpty() { return sources.length == 0; } function remove7(source) { sources = sources.filter(function(it) { return it !== source; }); if (!sources.length && output2.readable) { output2.end(); } } }; } }); // ../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/stream.js var require_stream6 = __commonJS2({ "../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/stream.js"(exports2, module2) { "use strict"; var isStream = require_is_stream(); var getStream = require_get_stream(); var mergeStream = require_merge_stream(); var handleInput = (spawned, input) => { if (input === void 0 || spawned.stdin === void 0) { return; } if (isStream(input)) { input.pipe(spawned.stdin); } else { spawned.stdin.end(input); } }; var makeAllStream = (spawned, { all }) => { if (!all || !spawned.stdout && !spawned.stderr) { return; } const mixed = mergeStream(); if (spawned.stdout) { mixed.add(spawned.stdout); } if (spawned.stderr) { mixed.add(spawned.stderr); } return mixed; }; var getBufferedData = async (stream, streamPromise) => { if (!stream) { return; } stream.destroy(); try { return await streamPromise; } catch (error3) { return error3.bufferedData; } }; var getStreamPromise = (stream, { encoding, buffer, maxBuffer }) => { if (!stream || !buffer) { return; } if (encoding) { return getStream(stream, { encoding, maxBuffer }); } return getStream.buffer(stream, { maxBuffer }); }; var getSpawnedResult = async ({ stdout, stderr, all }, { encoding, buffer, maxBuffer }, processDone) => { const stdoutPromise = getStreamPromise(stdout, { encoding, buffer, maxBuffer }); const stderrPromise = getStreamPromise(stderr, { encoding, buffer, maxBuffer }); const allPromise = getStreamPromise(all, { encoding, buffer, maxBuffer: maxBuffer * 2 }); try { return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]); } catch (error3) { return Promise.all([ { error: error3, signal: error3.signal, timedOut: error3.timedOut }, getBufferedData(stdout, stdoutPromise), getBufferedData(stderr, stderrPromise), getBufferedData(all, allPromise) ]); } }; var validateInputSync = ({ input }) => { if (isStream(input)) { throw new TypeError("The `input` option cannot be a stream in sync mode"); } }; module2.exports = { handleInput, makeAllStream, getSpawnedResult, validateInputSync }; } }); // ../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/promise.js var require_promise = __commonJS2({ "../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/promise.js"(exports2, module2) { "use strict"; var mergePromiseProperty = (spawned, promise, property) => { const value = typeof promise === "function" ? (...args2) => promise()[property](...args2) : promise[property].bind(promise); Object.defineProperty(spawned, property, { value, writable: true, enumerable: false, configurable: true }); }; var mergePromise = (spawned, promise) => { mergePromiseProperty(spawned, promise, "then"); mergePromiseProperty(spawned, promise, "catch"); if (Promise.prototype.finally) { mergePromiseProperty(spawned, promise, "finally"); } return spawned; }; var getSpawnedPromise = (spawned) => { return new Promise((resolve14, reject) => { spawned.on("exit", (exitCode2, signal) => { resolve14({ exitCode: exitCode2, signal }); }); spawned.on("error", (error3) => { reject(error3); }); if (spawned.stdin) { spawned.stdin.on("error", (error3) => { reject(error3); }); } }); }; module2.exports = { mergePromise, getSpawnedPromise }; } }); // ../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/command.js var require_command = __commonJS2({ "../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/lib/command.js"(exports2, module2) { "use strict"; var SPACES_REGEXP = / +/g; var joinCommand = (file, args2 = []) => { if (!Array.isArray(args2)) { return file; } return [file, ...args2].join(" "); }; var handleEscaping = (tokens, token, index) => { if (index === 0) { return [token]; } const previousToken = tokens[tokens.length - 1]; if (previousToken.endsWith("\\")) { return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`]; } return [...tokens, token]; }; var parseCommand = (command) => { return command.trim().split(SPACES_REGEXP).reduce(handleEscaping, []); }; module2.exports = { joinCommand, parseCommand }; } }); // ../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/index.js var require_execa = __commonJS2({ "../../node_modules/.pnpm/execa@3.2.0/node_modules/execa/index.js"(exports2, module2) { "use strict"; var path11 = __require("path"); var childProcess = __require("child_process"); var crossSpawn = require_cross_spawn(); var stripFinalNewline = require_strip_final_newline(); var npmRunPath = require_npm_run_path(); var onetime = require_onetime2(); var makeError = require_error3(); var normalizeStdio = require_stdio(); var { spawnedKill, spawnedCancel, setupTimeout, setExitHandler } = require_kill(); var { handleInput, getSpawnedResult, makeAllStream, validateInputSync } = require_stream6(); var { mergePromise, getSpawnedPromise } = require_promise(); var { joinCommand, parseCommand } = require_command(); var DEFAULT_MAX_BUFFER = 1e3 * 1e3 * 100; var getEnv = ({ env: envOption, extendEnv, preferLocal, localDir, execPath }) => { const env = extendEnv ? { ...process.env, ...envOption } : envOption; if (preferLocal) { return npmRunPath.env({ env, cwd: localDir, execPath }); } return env; }; var handleArgs = (file, args2, options = {}) => { const parsed = crossSpawn._parse(file, args2, options); file = parsed.command; args2 = parsed.args; options = parsed.options; options = { maxBuffer: DEFAULT_MAX_BUFFER, buffer: true, stripFinalNewline: true, extendEnv: true, preferLocal: false, localDir: options.cwd || process.cwd(), execPath: process.execPath, encoding: "utf8", reject: true, cleanup: true, all: false, ...options, windowsHide: true }; options.env = getEnv(options); options.stdio = normalizeStdio(options); if (process.platform === "win32" && path11.basename(file, ".exe") === "cmd") { args2.unshift("/q"); } return { file, args: args2, options, parsed }; }; var handleOutput = (options, value, error3) => { if (typeof value !== "string" && !Buffer.isBuffer(value)) { return error3 === void 0 ? void 0 : ""; } if (options.stripFinalNewline) { return stripFinalNewline(value); } return value; }; var execa5 = (file, args2, options) => { const parsed = handleArgs(file, args2, options); const command = joinCommand(file, args2); let spawned; try { spawned = childProcess.spawn(parsed.file, parsed.args, parsed.options); } catch (error3) { const dummySpawned = new childProcess.ChildProcess(); const errorPromise = Promise.reject(makeError({ error: error3, stdout: "", stderr: "", all: "", command, parsed, timedOut: false, isCanceled: false, killed: false })); return mergePromise(dummySpawned, errorPromise); } const spawnedPromise = getSpawnedPromise(spawned); const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise); const processDone = setExitHandler(spawned, parsed.options, timedPromise); const context = { isCanceled: false }; spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned)); spawned.cancel = spawnedCancel.bind(null, spawned, context); const handlePromise = async () => { const [{ error: error3, exitCode: exitCode2, signal, timedOut }, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone); const stdout = handleOutput(parsed.options, stdoutResult); const stderr = handleOutput(parsed.options, stderrResult); const all = handleOutput(parsed.options, allResult); if (error3 || exitCode2 !== 0 || signal !== null) { const returnedError = makeError({ error: error3, exitCode: exitCode2, signal, stdout, stderr, all, command, parsed, timedOut, isCanceled: context.isCanceled, killed: spawned.killed }); if (!parsed.options.reject) { return returnedError; } throw returnedError; } return { command, exitCode: 0, stdout, stderr, all, failed: false, timedOut: false, isCanceled: false, killed: false }; }; const handlePromiseOnce = onetime(handlePromise); crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed); handleInput(spawned, parsed.options.input); spawned.all = makeAllStream(spawned, parsed.options); return mergePromise(spawned, handlePromiseOnce); }; module2.exports = execa5; module2.exports.sync = (file, args2, options) => { const parsed = handleArgs(file, args2, options); const command = joinCommand(file, args2); validateInputSync(parsed.options); let result; try { result = childProcess.spawnSync(parsed.file, parsed.args, parsed.options); } catch (error3) { throw makeError({ error: error3, stdout: "", stderr: "", all: "", command, parsed, timedOut: false, isCanceled: false, killed: false }); } const stdout = handleOutput(parsed.options, result.stdout, result.error); const stderr = handleOutput(parsed.options, result.stderr, result.error); if (result.error || result.status !== 0 || result.signal !== null) { const error3 = makeError({ stdout, stderr, error: result.error, signal: result.signal, exitCode: result.status, command, parsed, timedOut: result.error && result.error.code === "ETIMEDOUT", isCanceled: false, killed: result.signal !== null }); if (!parsed.options.reject) { return error3; } throw error3; } return { command, exitCode: 0, stdout, stderr, failed: false, timedOut: false, isCanceled: false, killed: false }; }; module2.exports.command = (command, options) => { const [file, ...args2] = parseCommand(command); return execa5(file, args2, options); }; module2.exports.commandSync = (command, options) => { const [file, ...args2] = parseCommand(command); return execa5.sync(file, args2, options); }; module2.exports.node = (scriptPath, args2, options = {}) => { if (args2 && !Array.isArray(args2) && typeof args2 === "object") { options = args2; args2 = []; } const stdio = normalizeStdio.node(options); const { nodePath = process.execPath, nodeOptions = process.execArgv } = options; return execa5( nodePath, [ ...nodeOptions, scriptPath, ...Array.isArray(args2) ? args2 : [] ], { ...options, stdin: void 0, stdout: void 0, stderr: void 0, stdio, shell: false } ); }; } }); // ../../node_modules/.pnpm/@edge-runtime+node-utils@2.3.0/node_modules/@edge-runtime/node-utils/dist/index.js var require_dist20 = __commonJS2({ "../../node_modules/.pnpm/@edge-runtime+node-utils@2.3.0/node_modules/@edge-runtime/node-utils/dist/index.js"(exports, module) { "use strict"; var __create2 = Object.create; var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; var __getOwnPropNames2 = Object.getOwnPropertyNames; var __getProtoOf2 = Object.getPrototypeOf; var __hasOwnProp2 = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require2() { return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export2 = (target, all) => { for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); }; var __copyProps2 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames2(from)) if (!__hasOwnProp2.call(to, key) && key !== except) __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); } return to; }; var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2( // 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 ? __defProp2(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); var require_console_js_text = __commonJS({ "../primitives/dist/console.js.text.js"(exports2, module2) { "use strict"; module2.exports = '"use strict";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, "name", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. "__esModule" has not been set), then set\n // "default" to the CommonJS "module.exports" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n// \nvar init_define_process = __esm({\n ""() {\n }\n});\n\n// ../format/dist/index.js\nvar require_dist = __commonJS({\n "../format/dist/index.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var __defProp2 = Object.defineProperty;\n var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames2 = Object.getOwnPropertyNames;\n var __hasOwnProp2 = Object.prototype.hasOwnProperty;\n var __export2 = /* @__PURE__ */ __name((target, all) => {\n for (var name in all)\n __defProp2(target, name, { get: all[name], enumerable: true });\n }, "__export");\n var __copyProps2 = /* @__PURE__ */ __name((to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames2(from))\n if (!__hasOwnProp2.call(to, key) && key !== except)\n __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });\n }\n return to;\n }, "__copyProps");\n var __toCommonJS2 = /* @__PURE__ */ __name((mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod), "__toCommonJS");\n var src_exports = {};\n __export2(src_exports, {\n createFormat: () => createFormat2\n });\n module2.exports = __toCommonJS2(src_exports);\n var ReflectGetOwnPropertyDescriptor = Reflect.getOwnPropertyDescriptor;\n function GetOwnGetter(target, key) {\n const descriptor = ReflectGetOwnPropertyDescriptor(target, key);\n return descriptor ? descriptor.get : void 0;\n }\n __name(GetOwnGetter, "GetOwnGetter");\n var ReflectGetPrototypeOf = Reflect.getPrototypeOf;\n var TypedArray = ReflectGetPrototypeOf(Uint8Array);\n var ArrayPrototypeFilter = Array.prototype.filter;\n var ArrayPrototypePush = Array.prototype.push;\n var DatePrototypeGetTime = Date.prototype.getTime;\n var DatePrototypeToISOString = Date.prototype.toISOString;\n var ObjectGetOwnPropertyDescriptors = Object.getOwnPropertyDescriptors;\n var ObjectGetOwnPropertyNames = Object.getOwnPropertyNames;\n var ObjectGetOwnPropertySymbols = Object.getOwnPropertySymbols;\n var ObjectKeys = Object.keys;\n var ObjectPrototypePropertyIsEnumerable = Object.prototype.propertyIsEnumerable;\n var ObjectPrototypeToString = Object.prototype.toString;\n var MapPrototypeGetSize = GetOwnGetter(Map.prototype, "size");\n var SetPrototypeGetSize = GetOwnGetter(Set.prototype, "size");\n var StringPrototypeIncludes = String.prototype.includes;\n var SymbolIterator = Symbol.iterator;\n var SymbolPrototypeToString = Symbol.prototype.toString;\n var TypedArrayPrototypeGetLength = GetOwnGetter(\n TypedArray.prototype,\n "length"\n );\n var typedArrayStrings = /* @__PURE__ */ new Set([\n "[object BigInt64Array]",\n "[object BigUint64Array]",\n "[object Float32Array]",\n "[object Float64Array]",\n "[object Int8Array]",\n "[object Int16Array]",\n "[object Int32Array]",\n "[object Uint8Array]",\n "[object Uint8ClampedArray]",\n "[object Uint16Array]",\n "[object Uint32Array]"\n ]);\n function getOwnNonIndexProperties(object, filter) {\n const indexes = Array.isArray(object) || isTypedArray(object) ? new Set([...object.keys()].map((v) => v.toString())) : void 0;\n return Object.entries(ObjectGetOwnPropertyDescriptors(object)).filter(([key, desc]) => {\n if (indexes && indexes.has(key)) {\n return false;\n }\n if (filter === 1 && !desc.enumerable) {\n return false;\n }\n return true;\n }).map(([key]) => key);\n }\n __name(getOwnNonIndexProperties, "getOwnNonIndexProperties");\n var isTypedArray = /* @__PURE__ */ __name((value) => kind(value, "object") && typedArrayStrings.has(ObjectPrototypeToString.call(value)), "isTypedArray");\n function kind(value, type) {\n return typeof value === type;\n }\n __name(kind, "kind");\n var getConstructorName = /* @__PURE__ */ __name((object) => {\n var _a;\n return (_a = object.constructor) == null ? void 0 : _a.name;\n }, "getConstructorName");\n var getPrefix = /* @__PURE__ */ __name((constructor = "", size = "") => `${constructor}${size} `, "getPrefix");\n function createFormat2(opts = {}) {\n if (opts.customInspectSymbol === void 0) {\n opts.customInspectSymbol = Symbol.for("edge-runtime.inspect.custom");\n }\n if (opts.formatError === void 0) {\n opts.formatError = (error2) => `[${Error.prototype.toString.call(error2)}]`;\n }\n const { formatError, customInspectSymbol } = opts;\n function format2(...args) {\n const [firstArg] = args;\n if (!kind(firstArg, "string")) {\n if (hasCustomSymbol(firstArg, customInspectSymbol)) {\n return format2(firstArg[customInspectSymbol]({ format: format2 }));\n } else {\n return args.map((item) => inspect(item, { customInspectSymbol })).join(" ");\n }\n }\n let index = 1;\n let str = String(firstArg).replace(/%[sjdOoif%]/g, (token) => {\n if (token === "%%")\n return "%";\n if (index >= args.length)\n return token;\n switch (token) {\n case "%s": {\n const arg = args[index++];\n if (hasCustomSymbol(arg, customInspectSymbol)) {\n return format2(arg[customInspectSymbol]({ format: format2 }));\n } else if (isDate(arg) || isError(arg) || kind(arg, "bigint")) {\n return format2(arg);\n } else {\n return String(arg);\n }\n }\n case "%j":\n return safeStringify(args[index++]);\n case "%d": {\n const arg = args[index++];\n if (kind(arg, "bigint")) {\n return format2(arg);\n } else {\n return String(Number(arg));\n }\n }\n case "%O":\n return inspect(args[index++], { customInspectSymbol });\n case "%o":\n return inspect(args[index++], {\n customInspectSymbol,\n showHidden: true,\n depth: 4\n });\n case "%i": {\n const arg = args[index++];\n if (kind(arg, "bigint")) {\n return format2(arg);\n } else {\n return String(parseInt(arg, 10));\n }\n }\n case "%f":\n return String(parseFloat(args[index++]));\n default:\n return token;\n }\n });\n for (let arg = args[index]; index < args.length; arg = args[++index]) {\n if (arg === null || !kind(arg, "object")) {\n str += " " + arg;\n } else {\n str += " " + inspect(arg);\n }\n }\n return str;\n }\n __name(format2, "format");\n function formatValue(ctx, value, recurseTimes) {\n if (hasCustomSymbol(value, customInspectSymbol)) {\n return format2(value[customInspectSymbol]({ format: format2 }));\n }\n const formattedPrimitive = formatPrimitive(value);\n if (formattedPrimitive !== void 0) {\n return formattedPrimitive;\n }\n if (ctx.seen.includes(value)) {\n let index = 1;\n if (ctx.circular === void 0) {\n ctx.circular = /* @__PURE__ */ new Map();\n ctx.circular.set(value, index);\n } else {\n index = ctx.circular.get(value);\n if (index === void 0) {\n index = ctx.circular.size + 1;\n ctx.circular.set(value, index);\n }\n }\n return `[Circular *${index}]`;\n }\n return formatRaw(ctx, value, recurseTimes);\n }\n __name(formatValue, "formatValue");\n function formatRaw(ctx, value, recurseTimes) {\n let keys = [];\n const constructor = getConstructorName(value);\n let base = "";\n let formatter = /* @__PURE__ */ __name(() => [], "formatter");\n let braces = ["", ""];\n let noIterator = true;\n const filter = ctx.showHidden ? 0 : 1;\n if (SymbolIterator in value) {\n noIterator = false;\n if (Array.isArray(value)) {\n const prefix = constructor !== "Array" ? getPrefix(constructor, `(${value.length})`) : "";\n keys = getOwnNonIndexProperties(value, filter);\n braces = [`${prefix}[`, "]"];\n if (value.length === 0 && keys.length === 0) {\n return `${braces[0]}]`;\n }\n formatter = formatArray;\n } else if (isSet(value)) {\n const size = SetPrototypeGetSize.call(value);\n const prefix = getPrefix(constructor, `(${size})`);\n keys = getKeys(value, ctx.showHidden);\n formatter = formatSet;\n if (size === 0 && keys.length === 0) {\n return `${prefix}{}`;\n }\n braces = [`${prefix}{`, "}"];\n } else if (isMap(value)) {\n const size = MapPrototypeGetSize.call(value);\n const prefix = getPrefix(constructor, `(${size})`);\n keys = getKeys(value, ctx.showHidden);\n formatter = formatMap;\n if (size === 0 && keys.length === 0) {\n return `${prefix}{}`;\n }\n braces = [`${prefix}{`, "}"];\n } else if (isTypedArray(value)) {\n keys = getOwnNonIndexProperties(value, filter);\n const size = TypedArrayPrototypeGetLength.call(value);\n const prefix = getPrefix(constructor, `(${size})`);\n braces = [`${prefix}[`, "]"];\n if (value.length === 0 && keys.length === 0)\n return `${braces[0]}]`;\n formatter = formatTypedArray.bind(null, size);\n } else {\n noIterator = true;\n }\n }\n if (noIterator) {\n keys = getKeys(value, ctx.showHidden);\n braces = ["{", "}"];\n if (constructor === void 0) {\n if (keys.length === 0) {\n return `[Object: null prototype] {}`;\n }\n } else if (constructor === "Object") {\n if (keys.length === 0) {\n return `{}`;\n }\n } else if (kind(value, "function")) {\n base = `[Function${value.name ? ": " + value.name : ""}]`;\n if (keys.length === 0) {\n return base;\n }\n } else if (isRegExp(value)) {\n base = RegExp.prototype.toString.call(value);\n if (keys.length === 0) {\n return base;\n }\n base = " " + base;\n } else if (isDate(value)) {\n base = Number.isNaN(DatePrototypeGetTime.call(value)) ? Date.prototype.toString.call(value) : DatePrototypeToISOString.call(value);\n if (keys.length === 0) {\n return base;\n }\n base = " " + base;\n } else if (isError(value)) {\n base = formatError(value);\n if (keys.length === 0) {\n return base;\n }\n base = " " + base;\n } else if (hasCustomSymbol(value, ctx.customInspectSymbol)) {\n base = format2(value[ctx.customInspectSymbol]({ format: format2 }));\n if (keys.length === 0) {\n return base;\n }\n base = " " + base;\n } else {\n braces[0] = `${getPrefix(constructor)}{`;\n }\n }\n if (recurseTimes && recurseTimes < 0) {\n return isRegExp(value) ? RegExp.prototype.toString.call(value) : "[Object]";\n }\n ctx.seen.push(value);\n const visibleKeys = new Set(keys);\n const output = formatter(ctx, value, recurseTimes, visibleKeys, keys);\n for (let i = 0; i < keys.length; i++) {\n output.push(\n formatProperty(\n ctx,\n value,\n recurseTimes,\n visibleKeys,\n keys[i],\n false\n )\n );\n }\n if (ctx.circular !== void 0) {\n const index = ctx.circular.get(value);\n if (index !== void 0) {\n const reference = ``;\n base = base === "" ? reference : `${reference} ${base}`;\n }\n }\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n }\n __name(formatRaw, "formatRaw");\n function inspect(value, opts2) {\n opts2 = Object.assign({ seen: [], depth: 2 }, opts2);\n return formatValue(opts2, value, opts2.depth);\n }\n __name(inspect, "inspect");\n function formatProperty(ctx, value, recurseTimes, visibleKeys, key, isArray) {\n let name;\n let str;\n const desc = Object.getOwnPropertyDescriptor(value, key) || {\n value: value[key]\n };\n if (desc.value !== void 0) {\n str = formatValue(ctx, desc.value, recurseTimes);\n } else if (desc.get) {\n str = desc.set ? "[Getter/Setter]" : "[Getter]";\n } else if (desc.set) {\n str = "[Setter]";\n } else {\n str = "undefined";\n }\n if (isArray) {\n return str;\n }\n if (kind(key, "symbol")) {\n name = `[${SymbolPrototypeToString.call(key)}]`;\n } else if (!visibleKeys.has(key)) {\n name = "[" + key + "]";\n } else {\n name = key;\n }\n return `${name}: ${str}`;\n }\n __name(formatProperty, "formatProperty");\n function formatArray(ctx, value, recurseTimes, visibleKeys) {\n const output = [];\n for (let index = 0; index < value.length; ++index) {\n if (Object.prototype.hasOwnProperty.call(value, String(index))) {\n output.push(\n formatProperty(\n ctx,\n value,\n recurseTimes,\n visibleKeys,\n String(index),\n true\n )\n );\n } else {\n output.push("");\n }\n }\n return output;\n }\n __name(formatArray, "formatArray");\n function formatTypedArray(length, ctx, value, recurseTimes) {\n const output = new Array(length);\n for (let i = 0; i < length; ++i) {\n output[i] = value.length > 0 && kind(value[0], "number") ? String(value[i]) : formatBigInt(value[i]);\n }\n if (ctx.showHidden) {\n for (const key of [\n "BYTES_PER_ELEMENT",\n "length",\n "byteLength",\n "byteOffset",\n "buffer"\n ]) {\n const str = formatValue(ctx, value[key], recurseTimes);\n ArrayPrototypePush.call(output, `[${String(key)}]: ${str}`);\n }\n }\n return output;\n }\n __name(formatTypedArray, "formatTypedArray");\n function formatSet(ctx, value, recurseTimes) {\n const output = [];\n for (const v of value) {\n ArrayPrototypePush.call(output, formatValue(ctx, v, recurseTimes));\n }\n return output;\n }\n __name(formatSet, "formatSet");\n function formatMap(ctx, value, recurseTimes) {\n const output = [];\n for (const { 0: k, 1: v } of value) {\n output.push(\n `${formatValue(ctx, k, recurseTimes)} => ${formatValue(\n ctx,\n v,\n recurseTimes\n )}`\n );\n }\n return output;\n }\n __name(formatMap, "formatMap");\n return format2;\n }\n __name(createFormat2, "createFormat");\n var formatBigInt = /* @__PURE__ */ __name((bigint) => `${bigint}n`, "formatBigInt");\n function formatPrimitive(value) {\n if (value === null)\n return "null";\n if (value === void 0)\n return "undefined";\n if (kind(value, "string")) {\n return `\'${JSON.stringify(value).replace(/^"|"$/g, "").replace(/\'/g, "\\\\\'").replace(/\\\\"/g, \'"\')}\'`;\n }\n if (kind(value, "boolean"))\n return "" + value;\n if (kind(value, "number"))\n return "" + value;\n if (kind(value, "bigint"))\n return formatBigInt(value);\n if (kind(value, "symbol"))\n return value.toString();\n }\n __name(formatPrimitive, "formatPrimitive");\n function hasCustomSymbol(value, customInspectSymbol) {\n return value !== null && kind(value, "object") && customInspectSymbol in value && kind(value[customInspectSymbol], "function");\n }\n __name(hasCustomSymbol, "hasCustomSymbol");\n function isRegExp(value) {\n return kind(value, "object") && Object.prototype.toString.call(value) === "[object RegExp]";\n }\n __name(isRegExp, "isRegExp");\n function isDate(value) {\n return kind(value, "object") && Object.prototype.toString.call(value) === "[object Date]";\n }\n __name(isDate, "isDate");\n function isError(value) {\n return kind(value, "object") && (Object.prototype.toString.call(value) === "[object Error]" || value instanceof Error);\n }\n __name(isError, "isError");\n function isMap(value) {\n return kind(value, "object") && Object.prototype.toString.call(value) === "[object Map]";\n }\n __name(isMap, "isMap");\n function isSet(value) {\n return kind(value, "object") && Object.prototype.toString.call(value) === "[object Set]";\n }\n __name(isSet, "isSet");\n function isBelowBreakLength(output, start, base) {\n const breakLength = 80;\n let totalLength = output.length + start;\n if (totalLength + output.length > breakLength) {\n return false;\n }\n for (let i = 0; i < output.length; i++) {\n totalLength += output[i].length;\n if (totalLength > breakLength) {\n return false;\n }\n }\n return base === "" || !StringPrototypeIncludes.call(base, "\\n");\n }\n __name(isBelowBreakLength, "isBelowBreakLength");\n function reduceToSingleString(output, base, braces) {\n const start = output.length + braces[0].length + base.length + 10;\n if (!isBelowBreakLength(output, start, base)) {\n return (base ? base + " " : "") + braces[0] + "\\n " + output.join(",\\n ") + "\\n" + braces[1];\n }\n return ((base ? base + " " : "") + braces[0] + " " + output.join(", ") + " " + braces[1]).trim();\n }\n __name(reduceToSingleString, "reduceToSingleString");\n function safeStringify(input) {\n if (Array.isArray(input)) {\n input = input.map(\n (element) => JSON.parse(JSON.stringify(element, makeCircularReplacer()))\n );\n }\n return JSON.stringify(input, makeCircularReplacer());\n }\n __name(safeStringify, "safeStringify");\n function makeCircularReplacer() {\n const seen = /* @__PURE__ */ new WeakSet();\n return (key, value) => {\n if (value !== null && kind(value, "object")) {\n if (seen.has(value))\n return "[Circular]";\n seen.add(value);\n }\n return value;\n };\n }\n __name(makeCircularReplacer, "makeCircularReplacer");\n function getKeys(value, showHidden = false) {\n let keys;\n const symbols = ObjectGetOwnPropertySymbols(value);\n if (showHidden) {\n keys = ObjectGetOwnPropertyNames(value);\n if (symbols.length !== 0)\n ArrayPrototypePush.apply(keys, symbols);\n } else {\n try {\n keys = ObjectKeys(value);\n } catch (err) {\n keys = ObjectGetOwnPropertyNames(value);\n }\n if (symbols.length !== 0) {\n const filter = /* @__PURE__ */ __name((key) => ObjectPrototypePropertyIsEnumerable.call(value, key), "filter");\n ArrayPrototypePush.apply(keys, ArrayPrototypeFilter.call(symbols, filter));\n }\n }\n return keys;\n }\n __name(getKeys, "getKeys");\n }\n});\n\n// src/primitives/console.js\nvar console_exports = {};\n__export(console_exports, {\n console: () => konsole\n});\nmodule.exports = __toCommonJS(console_exports);\ninit_define_process();\nvar import_format = __toESM(require_dist());\nvar format = (0, import_format.createFormat)();\nvar bareError = console.error.bind(console);\nvar bareLog = console.log.bind(console);\nvar assert = console.assert.bind(console);\nvar time = console.time.bind(console);\nvar timeEnd = console.timeEnd.bind(console);\nvar timeLog = console.timeLog.bind(console);\nvar trace = console.trace.bind(console);\nvar error = /* @__PURE__ */ __name((...args) => bareError(format(...args)), "error");\nvar log = /* @__PURE__ */ __name((...args) => bareLog(format(...args)), "log");\nvar konsole = {\n assert: (assertion, ...args) => assert(assertion, format(...args)),\n count: console.count.bind(console),\n debug: log,\n dir: console.dir.bind(console),\n error,\n info: log,\n log,\n time: (...args) => time(format(...args)),\n timeEnd: (...args) => timeEnd(format(...args)),\n timeLog,\n trace,\n warn: error\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n console\n});\n'; } }); var require_timers_js_text = __commonJS({ "../primitives/dist/timers.js.text.js"(exports2, module2) { "use strict"; module2.exports = '"use strict";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n// src/primitives/timers.js\nvar timers_exports = {};\n__export(timers_exports, {\n setInterval: () => setIntervalProxy,\n setTimeout: () => setTimeoutProxy\n});\nmodule.exports = __toCommonJS(timers_exports);\nvar setTimeoutProxy = new Proxy(setTimeout, {\n apply: (target, thisArg, args) => {\n const timeout = Reflect.apply(target, thisArg, args);\n return timeout[Symbol.toPrimitive]();\n }\n});\nvar setIntervalProxy = new Proxy(setInterval, {\n apply: (target, thisArg, args) => {\n const timeout = Reflect.apply(target, thisArg, args);\n return timeout[Symbol.toPrimitive]();\n }\n});\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n setInterval,\n setTimeout\n});\n'; } }); var require_events_js_text = __commonJS({ "../primitives/dist/events.js.text.js"(exports2, module2) { "use strict"; module2.exports = '"use strict";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, "name", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n// src/primitives/events.js\nvar events_exports = {};\n__export(events_exports, {\n FetchEvent: () => FetchEvent,\n PromiseRejectionEvent: () => PromiseRejectionEvent\n});\nmodule.exports = __toCommonJS(events_exports);\nvar _FetchEvent = class _FetchEvent extends Event {\n constructor(request) {\n super("fetch");\n this.request = request;\n this.response = null;\n this.awaiting = /* @__PURE__ */ new Set();\n }\n respondWith = (response) => {\n this.response = response;\n };\n waitUntil = (promise) => {\n this.awaiting.add(promise);\n promise.finally(() => this.awaiting.delete(promise));\n };\n};\n__name(_FetchEvent, "FetchEvent");\nvar FetchEvent = _FetchEvent;\nvar _PromiseRejectionEvent = class _PromiseRejectionEvent extends Event {\n constructor(type, init) {\n super(type, { cancelable: true });\n this.promise = init.promise;\n this.reason = init.reason;\n }\n};\n__name(_PromiseRejectionEvent, "PromiseRejectionEvent");\nvar PromiseRejectionEvent = _PromiseRejectionEvent;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n FetchEvent,\n PromiseRejectionEvent\n});\n'; } }); var require_abort_controller_js_text = __commonJS({ "../primitives/dist/abort-controller.js.text.js"(exports2, module2) { "use strict"; module2.exports = '"use strict";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, "name", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n// src/primitives/abort-controller.js\nvar abort_controller_exports = {};\n__export(abort_controller_exports, {\n AbortController: () => AbortController,\n AbortSignal: () => AbortSignal,\n DOMException: () => DOMException\n});\nmodule.exports = __toCommonJS(abort_controller_exports);\nvar kSignal = Symbol("kSignal");\nvar kAborted = Symbol("kAborted");\nvar kReason = Symbol("kReason");\nvar kName = Symbol("kName");\nvar kOnabort = Symbol("kOnabort");\nvar _DOMException = class _DOMException extends Error {\n constructor(message, name) {\n super(message);\n this[kName] = name;\n }\n get name() {\n return this[kName];\n }\n};\n__name(_DOMException, "DOMException");\nvar DOMException = _DOMException;\nfunction createAbortSignal() {\n const signal = new EventTarget();\n Object.setPrototypeOf(signal, AbortSignal.prototype);\n signal[kAborted] = false;\n signal[kReason] = void 0;\n signal[kOnabort] = void 0;\n return signal;\n}\n__name(createAbortSignal, "createAbortSignal");\nfunction abortSignalAbort(signal, reason) {\n if (typeof reason === "undefined") {\n reason = new DOMException("This operation was aborted", "AbortError");\n }\n if (signal.aborted) {\n return;\n }\n signal[kReason] = reason;\n signal[kAborted] = true;\n signal.dispatchEvent(new Event("abort"));\n}\n__name(abortSignalAbort, "abortSignalAbort");\nvar _AbortController = class _AbortController {\n constructor() {\n this[kSignal] = createAbortSignal();\n }\n get signal() {\n return this[kSignal];\n }\n abort(reason) {\n abortSignalAbort(this.signal, reason);\n }\n};\n__name(_AbortController, "AbortController");\nvar AbortController = _AbortController;\nvar _AbortSignal = class _AbortSignal extends EventTarget {\n constructor() {\n throw new TypeError("Illegal constructor");\n }\n get aborted() {\n return this[kAborted];\n }\n get reason() {\n return this[kReason];\n }\n get onabort() {\n return this[kOnabort];\n }\n set onabort(value) {\n if (this[kOnabort]) {\n this.removeEventListener("abort", this[kOnabort]);\n }\n if (value) {\n this[kOnabort] = value;\n this.addEventListener("abort", this[kOnabort]);\n }\n }\n throwIfAborted() {\n if (this[kAborted]) {\n throw this[kReason];\n }\n }\n static abort(reason) {\n const signal = createAbortSignal();\n abortSignalAbort(signal, reason);\n return signal;\n }\n static timeout(milliseconds) {\n const signal = createAbortSignal();\n setTimeout(() => {\n abortSignalAbort(\n signal,\n new DOMException(\n "The operation was aborted due to timeout",\n "TimeoutError"\n )\n );\n }, milliseconds);\n return signal;\n }\n};\n__name(_AbortSignal, "AbortSignal");\nvar AbortSignal = _AbortSignal;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AbortController,\n AbortSignal,\n DOMException\n});\n'; } }); var require_url_js_text = __commonJS({ "../primitives/dist/url.js.text.js"(exports2, module2) { "use strict"; module2.exports = '"use strict";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, "name", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError("Cannot " + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, "read from private field");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError("Cannot add the same private member more than once");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, "write to private field");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar __privateMethod = (obj, member, method) => {\n __accessCheck(obj, member, "access private method");\n return method;\n};\n\n// src/primitives/url.js\nvar url_exports = {};\n__export(url_exports, {\n URLPattern: () => me\n});\nmodule.exports = __toCommonJS(url_exports);\n\n// ../../node_modules/.pnpm/urlpattern-polyfill@10.0.0/node_modules/urlpattern-polyfill/dist/urlpattern.js\nvar _a;\nvar R = (_a = class {\n type = 3;\n name = "";\n prefix = "";\n value = "";\n suffix = "";\n modifier = 3;\n constructor(t, r, n, o, c, l) {\n this.type = t, this.name = r, this.prefix = n, this.value = o, this.suffix = c, this.modifier = l;\n }\n hasCustomName() {\n return this.name !== "" && typeof this.name != "number";\n }\n}, __name(_a, "R"), _a);\nvar be = /[$_\\p{ID_Start}]/u;\nvar Pe = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\nvar M = ".*";\nfunction Re(e, t) {\n return (t ? /^[\\x00-\\xFF]*$/ : /^[\\x00-\\x7F]*$/).test(e);\n}\n__name(Re, "Re");\nfunction v(e, t = false) {\n let r = [], n = 0;\n for (; n < e.length; ) {\n let o = e[n], c = /* @__PURE__ */ __name(function(l) {\n if (!t)\n throw new TypeError(l);\n r.push({ type: "INVALID_CHAR", index: n, value: e[n++] });\n }, "c");\n if (o === "*") {\n r.push({ type: "ASTERISK", index: n, value: e[n++] });\n continue;\n }\n if (o === "+" || o === "?") {\n r.push({ type: "OTHER_MODIFIER", index: n, value: e[n++] });\n continue;\n }\n if (o === "\\\\") {\n r.push({ type: "ESCAPED_CHAR", index: n++, value: e[n++] });\n continue;\n }\n if (o === "{") {\n r.push({ type: "OPEN", index: n, value: e[n++] });\n continue;\n }\n if (o === "}") {\n r.push({ type: "CLOSE", index: n, value: e[n++] });\n continue;\n }\n if (o === ":") {\n let l = "", s = n + 1;\n for (; s < e.length; ) {\n let i = e.substr(s, 1);\n if (s === n + 1 && be.test(i) || s !== n + 1 && Pe.test(i)) {\n l += e[s++];\n continue;\n }\n break;\n }\n if (!l) {\n c(`Missing parameter name at ${n}`);\n continue;\n }\n r.push({ type: "NAME", index: n, value: l }), n = s;\n continue;\n }\n if (o === "(") {\n let l = 1, s = "", i = n + 1, a = false;\n if (e[i] === "?") {\n c(`Pattern cannot start with "?" at ${i}`);\n continue;\n }\n for (; i < e.length; ) {\n if (!Re(e[i], false)) {\n c(`Invalid character \'${e[i]}\' at ${i}.`), a = true;\n break;\n }\n if (e[i] === "\\\\") {\n s += e[i++] + e[i++];\n continue;\n }\n if (e[i] === ")") {\n if (l--, l === 0) {\n i++;\n break;\n }\n } else if (e[i] === "(" && (l++, e[i + 1] !== "?")) {\n c(`Capturing groups are not allowed at ${i}`), a = true;\n break;\n }\n s += e[i++];\n }\n if (a)\n continue;\n if (l) {\n c(`Unbalanced pattern at ${n}`);\n continue;\n }\n if (!s) {\n c(`Missing pattern at ${n}`);\n continue;\n }\n r.push({ type: "REGEX", index: n, value: s }), n = i;\n continue;\n }\n r.push({ type: "CHAR", index: n, value: e[n++] });\n }\n return r.push({ type: "END", index: n, value: "" }), r;\n}\n__name(v, "v");\nfunction D(e, t = {}) {\n let r = v(e);\n t.delimiter ??= "/#?", t.prefixes ??= "./";\n let n = `[^${S(t.delimiter)}]+?`, o = [], c = 0, l = 0, s = "", i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ __name((h) => {\n if (l < r.length && r[l].type === h)\n return r[l++].value;\n }, "a"), f = /* @__PURE__ */ __name(() => a("OTHER_MODIFIER") ?? a("ASTERISK"), "f"), d = /* @__PURE__ */ __name((h) => {\n let u = a(h);\n if (u !== void 0)\n return u;\n let { type: p, index: A } = r[l];\n throw new TypeError(`Unexpected ${p} at ${A}, expected ${h}`);\n }, "d"), T = /* @__PURE__ */ __name(() => {\n let h = "", u;\n for (; u = a("CHAR") ?? a("ESCAPED_CHAR"); )\n h += u;\n return h;\n }, "T"), Se = /* @__PURE__ */ __name((h) => h, "Se"), L = t.encodePart || Se, I = "", U = /* @__PURE__ */ __name((h) => {\n I += h;\n }, "U"), $ = /* @__PURE__ */ __name(() => {\n I.length && (o.push(new R(3, "", "", L(I), "", 3)), I = "");\n }, "$"), V = /* @__PURE__ */ __name((h, u, p, A, Y) => {\n let g = 3;\n switch (Y) {\n case "?":\n g = 1;\n break;\n case "*":\n g = 0;\n break;\n case "+":\n g = 2;\n break;\n }\n if (!u && !p && g === 3) {\n U(h);\n return;\n }\n if ($(), !u && !p) {\n if (!h)\n return;\n o.push(new R(3, "", "", L(h), "", g));\n return;\n }\n let m;\n p ? p === "*" ? m = M : m = p : m = n;\n let O = 2;\n m === n ? (O = 1, m = "") : m === M && (O = 0, m = "");\n let P;\n if (u ? P = u : p && (P = c++), i.has(P))\n throw new TypeError(`Duplicate name \'${P}\'.`);\n i.add(P), o.push(new R(O, P, L(h), m, L(A), g));\n }, "V");\n for (; l < r.length; ) {\n let h = a("CHAR"), u = a("NAME"), p = a("REGEX");\n if (!u && !p && (p = a("ASTERISK")), u || p) {\n let g = h ?? "";\n t.prefixes.indexOf(g) === -1 && (U(g), g = ""), $();\n let m = f();\n V(g, u, p, "", m);\n continue;\n }\n let A = h ?? a("ESCAPED_CHAR");\n if (A) {\n U(A);\n continue;\n }\n if (a("OPEN")) {\n let g = T(), m = a("NAME"), O = a("REGEX");\n !m && !O && (O = a("ASTERISK"));\n let P = T();\n d("CLOSE");\n let xe = f();\n V(g, m, O, P, xe);\n continue;\n }\n $(), d("END");\n }\n return o;\n}\n__name(D, "D");\nfunction S(e) {\n return e.replace(/([.+*?^${}()[\\]|/\\\\])/g, "\\\\$1");\n}\n__name(S, "S");\nfunction X(e) {\n return e && e.ignoreCase ? "ui" : "u";\n}\n__name(X, "X");\nfunction Z(e, t, r) {\n return F(D(e, r), t, r);\n}\n__name(Z, "Z");\nfunction k(e) {\n switch (e) {\n case 0:\n return "*";\n case 1:\n return "?";\n case 2:\n return "+";\n case 3:\n return "";\n }\n}\n__name(k, "k");\nfunction F(e, t, r = {}) {\n r.delimiter ??= "/#?", r.prefixes ??= "./", r.sensitive ??= false, r.strict ??= false, r.end ??= true, r.start ??= true, r.endsWith = "";\n let n = r.start ? "^" : "";\n for (let s of e) {\n if (s.type === 3) {\n s.modifier === 3 ? n += S(s.value) : n += `(?:${S(s.value)})${k(s.modifier)}`;\n continue;\n }\n t && t.push(s.name);\n let i = `[^${S(r.delimiter)}]+?`, a = s.value;\n if (s.type === 1 ? a = i : s.type === 0 && (a = M), !s.prefix.length && !s.suffix.length) {\n s.modifier === 3 || s.modifier === 1 ? n += `(${a})${k(s.modifier)}` : n += `((?:${a})${k(s.modifier)})`;\n continue;\n }\n if (s.modifier === 3 || s.modifier === 1) {\n n += `(?:${S(s.prefix)}(${a})${S(s.suffix)})`, n += k(s.modifier);\n continue;\n }\n n += `(?:${S(s.prefix)}`, n += `((?:${a})(?:`, n += S(s.suffix), n += S(s.prefix), n += `(?:${a}))*)${S(s.suffix)})`, s.modifier === 0 && (n += "?");\n }\n let o = `[${S(r.endsWith)}]|$`, c = `[${S(r.delimiter)}]`;\n if (r.end)\n return r.strict || (n += `${c}?`), r.endsWith.length ? n += `(?=${o})` : n += "$", new RegExp(n, X(r));\n r.strict || (n += `(?:${c}(?=${o}))?`);\n let l = false;\n if (e.length) {\n let s = e[e.length - 1];\n s.type === 3 && s.modifier === 3 && (l = r.delimiter.indexOf(s) > -1);\n }\n return l || (n += `(?=${c}|${o})`), new RegExp(n, X(r));\n}\n__name(F, "F");\nvar x = { delimiter: "", prefixes: "", sensitive: true, strict: true };\nvar B = { delimiter: ".", prefixes: "", sensitive: true, strict: true };\nvar q = { delimiter: "/", prefixes: "/", sensitive: true, strict: true };\nfunction J(e, t) {\n return e.length ? e[0] === "/" ? true : !t || e.length < 2 ? false : (e[0] == "\\\\" || e[0] == "{") && e[1] == "/" : false;\n}\n__name(J, "J");\nfunction Q(e, t) {\n return e.startsWith(t) ? e.substring(t.length, e.length) : e;\n}\n__name(Q, "Q");\nfunction Ee(e, t) {\n return e.endsWith(t) ? e.substr(0, e.length - t.length) : e;\n}\n__name(Ee, "Ee");\nfunction W(e) {\n return !e || e.length < 2 ? false : e[0] === "[" || (e[0] === "\\\\" || e[0] === "{") && e[1] === "[";\n}\n__name(W, "W");\nvar ee = ["ftp", "file", "http", "https", "ws", "wss"];\nfunction N(e) {\n if (!e)\n return true;\n for (let t of ee)\n if (e.test(t))\n return true;\n return false;\n}\n__name(N, "N");\nfunction te(e, t) {\n if (e = Q(e, "#"), t || e === "")\n return e;\n let r = new URL("https://example.com");\n return r.hash = e, r.hash ? r.hash.substring(1, r.hash.length) : "";\n}\n__name(te, "te");\nfunction re(e, t) {\n if (e = Q(e, "?"), t || e === "")\n return e;\n let r = new URL("https://example.com");\n return r.search = e, r.search ? r.search.substring(1, r.search.length) : "";\n}\n__name(re, "re");\nfunction ne(e, t) {\n return t || e === "" ? e : W(e) ? j(e) : z(e);\n}\n__name(ne, "ne");\nfunction se(e, t) {\n if (t || e === "")\n return e;\n let r = new URL("https://example.com");\n return r.password = e, r.password;\n}\n__name(se, "se");\nfunction ie(e, t) {\n if (t || e === "")\n return e;\n let r = new URL("https://example.com");\n return r.username = e, r.username;\n}\n__name(ie, "ie");\nfunction ae(e, t, r) {\n if (r || e === "")\n return e;\n if (t && !ee.includes(t))\n return new URL(`${t}:${e}`).pathname;\n let n = e[0] == "/";\n return e = new URL(n ? e : "/-" + e, "https://example.com").pathname, n || (e = e.substring(2, e.length)), e;\n}\n__name(ae, "ae");\nfunction oe(e, t, r) {\n return _(t) === e && (e = ""), r || e === "" ? e : K(e);\n}\n__name(oe, "oe");\nfunction ce(e, t) {\n return e = Ee(e, ":"), t || e === "" ? e : y(e);\n}\n__name(ce, "ce");\nfunction _(e) {\n switch (e) {\n case "ws":\n case "http":\n return "80";\n case "wws":\n case "https":\n return "443";\n case "ftp":\n return "21";\n default:\n return "";\n }\n}\n__name(_, "_");\nfunction y(e) {\n if (e === "")\n return e;\n if (/^[-+.A-Za-z0-9]*$/.test(e))\n return e.toLowerCase();\n throw new TypeError(`Invalid protocol \'${e}\'.`);\n}\n__name(y, "y");\nfunction le(e) {\n if (e === "")\n return e;\n let t = new URL("https://example.com");\n return t.username = e, t.username;\n}\n__name(le, "le");\nfunction fe(e) {\n if (e === "")\n return e;\n let t = new URL("https://example.com");\n return t.password = e, t.password;\n}\n__name(fe, "fe");\nfunction z(e) {\n if (e === "")\n return e;\n if (/[\\t\\n\\r #%/:<>?@[\\]^\\\\|]/g.test(e))\n throw new TypeError(`Invalid hostname \'${e}\'`);\n let t = new URL("https://example.com");\n return t.hostname = e, t.hostname;\n}\n__name(z, "z");\nfunction j(e) {\n if (e === "")\n return e;\n if (/[^0-9a-fA-F[\\]:]/g.test(e))\n throw new TypeError(`Invalid IPv6 hostname \'${e}\'`);\n return e.toLowerCase();\n}\n__name(j, "j");\nfunction K(e) {\n if (e === "" || /^[0-9]*$/.test(e) && parseInt(e) <= 65535)\n return e;\n throw new TypeError(`Invalid port \'${e}\'.`);\n}\n__name(K, "K");\nfunction he(e) {\n if (e === "")\n return e;\n let t = new URL("https://example.com");\n return t.pathname = e[0] !== "/" ? "/-" + e : e, e[0] !== "/" ? t.pathname.substring(2, t.pathname.length) : t.pathname;\n}\n__name(he, "he");\nfunction ue(e) {\n return e === "" ? e : new URL(`data:${e}`).pathname;\n}\n__name(ue, "ue");\nfunction de(e) {\n if (e === "")\n return e;\n let t = new URL("https://example.com");\n return t.search = e, t.search.substring(1, t.search.length);\n}\n__name(de, "de");\nfunction pe(e) {\n if (e === "")\n return e;\n let t = new URL("https://example.com");\n return t.hash = e, t.hash.substring(1, t.hash.length);\n}\n__name(pe, "pe");\nvar _i, _n, _t, _e, _s, _l, _o, _d, _p, _g, _r, r_fn, _R, R_fn, _b, b_fn, _u, u_fn, _m, m_fn, _a2, a_fn, _P, P_fn, _E, E_fn, _S, S_fn, _O, O_fn, _k, k_fn, _x, x_fn, _h, h_fn, _f, f_fn, _T, T_fn, _A, A_fn, _y, y_fn, _w, w_fn, _c, c_fn, _C, C_fn, _a3;\nvar H = (_a3 = class {\n constructor(t) {\n __privateAdd(this, _r);\n __privateAdd(this, _R);\n __privateAdd(this, _b);\n __privateAdd(this, _u);\n __privateAdd(this, _m);\n __privateAdd(this, _a2);\n __privateAdd(this, _P);\n __privateAdd(this, _E);\n __privateAdd(this, _S);\n __privateAdd(this, _O);\n __privateAdd(this, _k);\n __privateAdd(this, _x);\n __privateAdd(this, _h);\n __privateAdd(this, _f);\n __privateAdd(this, _T);\n __privateAdd(this, _A);\n __privateAdd(this, _y);\n __privateAdd(this, _w);\n __privateAdd(this, _c);\n __privateAdd(this, _C);\n __privateAdd(this, _i, void 0);\n __privateAdd(this, _n, []);\n __privateAdd(this, _t, {});\n __privateAdd(this, _e, 0);\n __privateAdd(this, _s, 1);\n __privateAdd(this, _l, 0);\n __privateAdd(this, _o, 0);\n __privateAdd(this, _d, 0);\n __privateAdd(this, _p, 0);\n __privateAdd(this, _g, false);\n __privateSet(this, _i, t);\n }\n get result() {\n return __privateGet(this, _t);\n }\n parse() {\n for (__privateSet(this, _n, v(__privateGet(this, _i), true)); __privateGet(this, _e) < __privateGet(this, _n).length; __privateSet(this, _e, __privateGet(this, _e) + __privateGet(this, _s))) {\n if (__privateSet(this, _s, 1), __privateGet(this, _n)[__privateGet(this, _e)].type === "END") {\n if (__privateGet(this, _o) === 0) {\n __privateMethod(this, _b, b_fn).call(this), __privateMethod(this, _f, f_fn).call(this) ? __privateMethod(this, _r, r_fn).call(this, 9, 1) : __privateMethod(this, _h, h_fn).call(this) ? __privateMethod(this, _r, r_fn).call(this, 8, 1) : __privateMethod(this, _r, r_fn).call(this, 7, 0);\n continue;\n } else if (__privateGet(this, _o) === 2) {\n __privateMethod(this, _u, u_fn).call(this, 5);\n continue;\n }\n __privateMethod(this, _r, r_fn).call(this, 10, 0);\n break;\n }\n if (__privateGet(this, _d) > 0)\n if (__privateMethod(this, _A, A_fn).call(this))\n __privateSet(this, _d, __privateGet(this, _d) - 1);\n else\n continue;\n if (__privateMethod(this, _T, T_fn).call(this)) {\n __privateSet(this, _d, __privateGet(this, _d) + 1);\n continue;\n }\n switch (__privateGet(this, _o)) {\n case 0:\n __privateMethod(this, _P, P_fn).call(this) && __privateMethod(this, _u, u_fn).call(this, 1);\n break;\n case 1:\n if (__privateMethod(this, _P, P_fn).call(this)) {\n __privateMethod(this, _C, C_fn).call(this);\n let t = 7, r = 1;\n __privateMethod(this, _E, E_fn).call(this) ? (t = 2, r = 3) : __privateGet(this, _g) && (t = 2), __privateMethod(this, _r, r_fn).call(this, t, r);\n }\n break;\n case 2:\n __privateMethod(this, _S, S_fn).call(this) ? __privateMethod(this, _u, u_fn).call(this, 3) : (__privateMethod(this, _x, x_fn).call(this) || __privateMethod(this, _h, h_fn).call(this) || __privateMethod(this, _f, f_fn).call(this)) && __privateMethod(this, _u, u_fn).call(this, 5);\n break;\n case 3:\n __privateMethod(this, _O, O_fn).call(this) ? __privateMethod(this, _r, r_fn).call(this, 4, 1) : __privateMethod(this, _S, S_fn).call(this) && __privateMethod(this, _r, r_fn).call(this, 5, 1);\n break;\n case 4:\n __privateMethod(this, _S, S_fn).call(this) && __privateMethod(this, _r, r_fn).call(this, 5, 1);\n break;\n case 5:\n __privateMethod(this, _y, y_fn).call(this) ? __privateSet(this, _p, __privateGet(this, _p) + 1) : __privateMethod(this, _w, w_fn).call(this) && __privateSet(this, _p, __privateGet(this, _p) - 1), __privateMethod(this, _k, k_fn).call(this) && !__privateGet(this, _p) ? __privateMethod(this, _r, r_fn).call(this, 6, 1) : __privateMethod(this, _x, x_fn).call(this) ? __privateMethod(this, _r, r_fn).call(this, 7, 0) : __privateMethod(this, _h, h_fn).call(this) ? __privateMethod(this, _r, r_fn).call(this, 8, 1) : __privateMethod(this, _f, f_fn).call(this) && __privateMethod(this, _r, r_fn).call(this, 9, 1);\n break;\n case 6:\n __privateMethod(this, _x, x_fn).call(this) ? __privateMethod(this, _r, r_fn).call(this, 7, 0) : __privateMethod(this, _h, h_fn).call(this) ? __privateMethod(this, _r, r_fn).call(this, 8, 1) : __privateMethod(this, _f, f_fn).call(this) && __privateMethod(this, _r, r_fn).call(this, 9, 1);\n break;\n case 7:\n __privateMethod(this, _h, h_fn).call(this) ? __privateMethod(this, _r, r_fn).call(this, 8, 1) : __privateMethod(this, _f, f_fn).call(this) && __privateMethod(this, _r, r_fn).call(this, 9, 1);\n break;\n case 8:\n __privateMethod(this, _f, f_fn).call(this) && __privateMethod(this, _r, r_fn).call(this, 9, 1);\n break;\n case 9:\n break;\n case 10:\n break;\n }\n }\n __privateGet(this, _t).hostname !== void 0 && __privateGet(this, _t).port === void 0 && (__privateGet(this, _t).port = "");\n }\n}, _i = new WeakMap(), _n = new WeakMap(), _t = new WeakMap(), _e = new WeakMap(), _s = new WeakMap(), _l = new WeakMap(), _o = new WeakMap(), _d = new WeakMap(), _p = new WeakMap(), _g = new WeakMap(), _r = new WeakSet(), r_fn = /* @__PURE__ */ __name(function(t, r) {\n switch (__privateGet(this, _o)) {\n case 0:\n break;\n case 1:\n __privateGet(this, _t).protocol = __privateMethod(this, _c, c_fn).call(this);\n break;\n case 2:\n break;\n case 3:\n __privateGet(this, _t).username = __privateMethod(this, _c, c_fn).call(this);\n break;\n case 4:\n __privateGet(this, _t).password = __privateMethod(this, _c, c_fn).call(this);\n break;\n case 5:\n __privateGet(this, _t).hostname = __privateMethod(this, _c, c_fn).call(this);\n break;\n case 6:\n __privateGet(this, _t).port = __privateMethod(this, _c, c_fn).call(this);\n break;\n case 7:\n __privateGet(this, _t).pathname = __privateMethod(this, _c, c_fn).call(this);\n break;\n case 8:\n __privateGet(this, _t).search = __privateMethod(this, _c, c_fn).call(this);\n break;\n case 9:\n __privateGet(this, _t).hash = __privateMethod(this, _c, c_fn).call(this);\n break;\n case 10:\n break;\n }\n __privateGet(this, _o) !== 0 && t !== 10 && ([1, 2, 3, 4].includes(__privateGet(this, _o)) && [6, 7, 8, 9].includes(t) && (__privateGet(this, _t).hostname ??= ""), [1, 2, 3, 4, 5, 6].includes(__privateGet(this, _o)) && [8, 9].includes(t) && (__privateGet(this, _t).pathname ??= __privateGet(this, _g) ? "/" : ""), [1, 2, 3, 4, 5, 6, 7].includes(__privateGet(this, _o)) && t === 9 && (__privateGet(this, _t).search ??= "")), __privateMethod(this, _R, R_fn).call(this, t, r);\n}, "#r"), _R = new WeakSet(), R_fn = /* @__PURE__ */ __name(function(t, r) {\n __privateSet(this, _o, t), __privateSet(this, _l, __privateGet(this, _e) + r), __privateSet(this, _e, __privateGet(this, _e) + r), __privateSet(this, _s, 0);\n}, "#R"), _b = new WeakSet(), b_fn = /* @__PURE__ */ __name(function() {\n __privateSet(this, _e, __privateGet(this, _l)), __privateSet(this, _s, 0);\n}, "#b"), _u = new WeakSet(), u_fn = /* @__PURE__ */ __name(function(t) {\n __privateMethod(this, _b, b_fn).call(this), __privateSet(this, _o, t);\n}, "#u"), _m = new WeakSet(), m_fn = /* @__PURE__ */ __name(function(t) {\n return t < 0 && (t = __privateGet(this, _n).length - t), t < __privateGet(this, _n).length ? __privateGet(this, _n)[t] : __privateGet(this, _n)[__privateGet(this, _n).length - 1];\n}, "#m"), _a2 = new WeakSet(), a_fn = /* @__PURE__ */ __name(function(t, r) {\n let n = __privateMethod(this, _m, m_fn).call(this, t);\n return n.value === r && (n.type === "CHAR" || n.type === "ESCAPED_CHAR" || n.type === "INVALID_CHAR");\n}, "#a"), _P = new WeakSet(), P_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), ":");\n}, "#P"), _E = new WeakSet(), E_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e) + 1, "/") && __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e) + 2, "/");\n}, "#E"), _S = new WeakSet(), S_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), "@");\n}, "#S"), _O = new WeakSet(), O_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), ":");\n}, "#O"), _k = new WeakSet(), k_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), ":");\n}, "#k"), _x = new WeakSet(), x_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), "/");\n}, "#x"), _h = new WeakSet(), h_fn = /* @__PURE__ */ __name(function() {\n if (__privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), "?"))\n return true;\n if (__privateGet(this, _n)[__privateGet(this, _e)].value !== "?")\n return false;\n let t = __privateMethod(this, _m, m_fn).call(this, __privateGet(this, _e) - 1);\n return t.type !== "NAME" && t.type !== "REGEX" && t.type !== "CLOSE" && t.type !== "ASTERISK";\n}, "#h"), _f = new WeakSet(), f_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), "#");\n}, "#f"), _T = new WeakSet(), T_fn = /* @__PURE__ */ __name(function() {\n return __privateGet(this, _n)[__privateGet(this, _e)].type == "OPEN";\n}, "#T"), _A = new WeakSet(), A_fn = /* @__PURE__ */ __name(function() {\n return __privateGet(this, _n)[__privateGet(this, _e)].type == "CLOSE";\n}, "#A"), _y = new WeakSet(), y_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), "[");\n}, "#y"), _w = new WeakSet(), w_fn = /* @__PURE__ */ __name(function() {\n return __privateMethod(this, _a2, a_fn).call(this, __privateGet(this, _e), "]");\n}, "#w"), _c = new WeakSet(), c_fn = /* @__PURE__ */ __name(function() {\n let t = __privateGet(this, _n)[__privateGet(this, _e)], r = __privateMethod(this, _m, m_fn).call(this, __privateGet(this, _l)).index;\n return __privateGet(this, _i).substring(r, t.index);\n}, "#c"), _C = new WeakSet(), C_fn = /* @__PURE__ */ __name(function() {\n let t = {};\n Object.assign(t, x), t.encodePart = y;\n let r = Z(__privateMethod(this, _c, c_fn).call(this), void 0, t);\n __privateSet(this, _g, N(r));\n}, "#C"), __name(_a3, "H"), _a3);\nvar G = ["protocol", "username", "password", "hostname", "port", "pathname", "search", "hash"];\nvar E = "*";\nfunction ge(e, t) {\n if (typeof e != "string")\n throw new TypeError("parameter 1 is not of type \'string\'.");\n let r = new URL(e, t);\n return { protocol: r.protocol.substring(0, r.protocol.length - 1), username: r.username, password: r.password, hostname: r.hostname, port: r.port, pathname: r.pathname, search: r.search !== "" ? r.search.substring(1, r.search.length) : void 0, hash: r.hash !== "" ? r.hash.substring(1, r.hash.length) : void 0 };\n}\n__name(ge, "ge");\nfunction b(e, t) {\n return t ? C(e) : e;\n}\n__name(b, "b");\nfunction w(e, t, r) {\n let n;\n if (typeof t.baseURL == "string")\n try {\n n = new URL(t.baseURL), t.protocol === void 0 && (e.protocol = b(n.protocol.substring(0, n.protocol.length - 1), r)), !r && t.protocol === void 0 && t.hostname === void 0 && t.port === void 0 && t.username === void 0 && (e.username = b(n.username, r)), !r && t.protocol === void 0 && t.hostname === void 0 && t.port === void 0 && t.username === void 0 && t.password === void 0 && (e.password = b(n.password, r)), t.protocol === void 0 && t.hostname === void 0 && (e.hostname = b(n.hostname, r)), t.protocol === void 0 && t.hostname === void 0 && t.port === void 0 && (e.port = b(n.port, r)), t.protocol === void 0 && t.hostname === void 0 && t.port === void 0 && t.pathname === void 0 && (e.pathname = b(n.pathname, r)), t.protocol === void 0 && t.hostname === void 0 && t.port === void 0 && t.pathname === void 0 && t.search === void 0 && (e.search = b(n.search.substring(1, n.search.length), r)), t.protocol === void 0 && t.hostname === void 0 && t.port === void 0 && t.pathname === void 0 && t.search === void 0 && t.hash === void 0 && (e.hash = b(n.hash.substring(1, n.hash.length), r));\n } catch {\n throw new TypeError(`invalid baseURL \'${t.baseURL}\'.`);\n }\n if (typeof t.protocol == "string" && (e.protocol = ce(t.protocol, r)), typeof t.username == "string" && (e.username = ie(t.username, r)), typeof t.password == "string" && (e.password = se(t.password, r)), typeof t.hostname == "string" && (e.hostname = ne(t.hostname, r)), typeof t.port == "string" && (e.port = oe(t.port, e.protocol, r)), typeof t.pathname == "string") {\n if (e.pathname = t.pathname, n && !J(e.pathname, r)) {\n let o = n.pathname.lastIndexOf("/");\n o >= 0 && (e.pathname = b(n.pathname.substring(0, o + 1), r) + e.pathname);\n }\n e.pathname = ae(e.pathname, e.protocol, r);\n }\n return typeof t.search == "string" && (e.search = re(t.search, r)), typeof t.hash == "string" && (e.hash = te(t.hash, r)), e;\n}\n__name(w, "w");\nfunction C(e) {\n return e.replace(/([+*?:{}()\\\\])/g, "\\\\$1");\n}\n__name(C, "C");\nfunction Oe(e) {\n return e.replace(/([.+*?^${}()[\\]|/\\\\])/g, "\\\\$1");\n}\n__name(Oe, "Oe");\nfunction ke(e, t) {\n t.delimiter ??= "/#?", t.prefixes ??= "./", t.sensitive ??= false, t.strict ??= false, t.end ??= true, t.start ??= true, t.endsWith = "";\n let r = ".*", n = `[^${Oe(t.delimiter)}]+?`, o = /[$_\\u200C\\u200D\\p{ID_Continue}]/u, c = "";\n for (let l = 0; l < e.length; ++l) {\n let s = e[l];\n if (s.type === 3) {\n if (s.modifier === 3) {\n c += C(s.value);\n continue;\n }\n c += `{${C(s.value)}}${k(s.modifier)}`;\n continue;\n }\n let i = s.hasCustomName(), a = !!s.suffix.length || !!s.prefix.length && (s.prefix.length !== 1 || !t.prefixes.includes(s.prefix)), f = l > 0 ? e[l - 1] : null, d = l < e.length - 1 ? e[l + 1] : null;\n if (!a && i && s.type === 1 && s.modifier === 3 && d && !d.prefix.length && !d.suffix.length)\n if (d.type === 3) {\n let T = d.value.length > 0 ? d.value[0] : "";\n a = o.test(T);\n } else\n a = !d.hasCustomName();\n if (!a && !s.prefix.length && f && f.type === 3) {\n let T = f.value[f.value.length - 1];\n a = t.prefixes.includes(T);\n }\n a && (c += "{"), c += C(s.prefix), i && (c += `:${s.name}`), s.type === 2 ? c += `(${s.value})` : s.type === 1 ? i || (c += `(${n})`) : s.type === 0 && (!i && (!f || f.type === 3 || f.modifier !== 3 || a || s.prefix !== "") ? c += "*" : c += `(${r})`), s.type === 1 && i && s.suffix.length && o.test(s.suffix[0]) && (c += "\\\\"), c += C(s.suffix), a && (c += "}"), s.modifier !== 3 && (c += k(s.modifier));\n }\n return c;\n}\n__name(ke, "ke");\nvar _i2, _n2, _t2, _e2, _s2, _l2, _a4;\nvar me = (_a4 = class {\n constructor(t = {}, r, n) {\n __privateAdd(this, _i2, void 0);\n __privateAdd(this, _n2, {});\n __privateAdd(this, _t2, {});\n __privateAdd(this, _e2, {});\n __privateAdd(this, _s2, {});\n __privateAdd(this, _l2, false);\n try {\n let o;\n if (typeof r == "string" ? o = r : n = r, typeof t == "string") {\n let i = new H(t);\n if (i.parse(), t = i.result, o === void 0 && typeof t.protocol != "string")\n throw new TypeError("A base URL must be provided for a relative constructor string.");\n t.baseURL = o;\n } else {\n if (!t || typeof t != "object")\n throw new TypeError("parameter 1 is not of type \'string\' and cannot convert to dictionary.");\n if (o)\n throw new TypeError("parameter 1 is not of type \'string\'.");\n }\n typeof n > "u" && (n = { ignoreCase: false });\n let c = { ignoreCase: n.ignoreCase === true }, l = { pathname: E, protocol: E, username: E, password: E, hostname: E, port: E, search: E, hash: E };\n __privateSet(this, _i2, w(l, t, true)), _(__privateGet(this, _i2).protocol) === __privateGet(this, _i2).port && (__privateGet(this, _i2).port = "");\n let s;\n for (s of G) {\n if (!(s in __privateGet(this, _i2)))\n continue;\n let i = {}, a = __privateGet(this, _i2)[s];\n switch (__privateGet(this, _t2)[s] = [], s) {\n case "protocol":\n Object.assign(i, x), i.encodePart = y;\n break;\n case "username":\n Object.assign(i, x), i.encodePart = le;\n break;\n case "password":\n Object.assign(i, x), i.encodePart = fe;\n break;\n case "hostname":\n Object.assign(i, B), W(a) ? i.encodePart = j : i.encodePart = z;\n break;\n case "port":\n Object.assign(i, x), i.encodePart = K;\n break;\n case "pathname":\n N(__privateGet(this, _n2).protocol) ? (Object.assign(i, q, c), i.encodePart = he) : (Object.assign(i, x, c), i.encodePart = ue);\n break;\n case "search":\n Object.assign(i, x, c), i.encodePart = de;\n break;\n case "hash":\n Object.assign(i, x, c), i.encodePart = pe;\n break;\n }\n try {\n __privateGet(this, _s2)[s] = D(a, i), __privateGet(this, _n2)[s] = F(__privateGet(this, _s2)[s], __privateGet(this, _t2)[s], i), __privateGet(this, _e2)[s] = ke(__privateGet(this, _s2)[s], i), __privateSet(this, _l2, __privateGet(this, _l2) || __privateGet(this, _s2)[s].some((f) => f.type === 2));\n } catch {\n throw new TypeError(`invalid ${s} pattern \'${__privateGet(this, _i2)[s]}\'.`);\n }\n }\n } catch (o) {\n throw new TypeError(`Failed to construct \'URLPattern\': ${o.message}`);\n }\n }\n test(t = {}, r) {\n let n = { pathname: "", protocol: "", username: "", password: "", hostname: "", port: "", search: "", hash: "" };\n if (typeof t != "string" && r)\n throw new TypeError("parameter 1 is not of type \'string\'.");\n if (typeof t > "u")\n return false;\n try {\n typeof t == "object" ? n = w(n, t, false) : n = w(n, ge(t, r), false);\n } catch {\n return false;\n }\n let o;\n for (o of G)\n if (!__privateGet(this, _n2)[o].exec(n[o]))\n return false;\n return true;\n }\n exec(t = {}, r) {\n let n = { pathname: "", protocol: "", username: "", password: "", hostname: "", port: "", search: "", hash: "" };\n if (typeof t != "string" && r)\n throw new TypeError("parameter 1 is not of type \'string\'.");\n if (typeof t > "u")\n return;\n try {\n typeof t == "object" ? n = w(n, t, false) : n = w(n, ge(t, r), false);\n } catch {\n return null;\n }\n let o = {};\n r ? o.inputs = [t, r] : o.inputs = [t];\n let c;\n for (c of G) {\n let l = __privateGet(this, _n2)[c].exec(n[c]);\n if (!l)\n return null;\n let s = {};\n for (let [i, a] of __privateGet(this, _t2)[c].entries())\n if (typeof a == "string" || typeof a == "number") {\n let f = l[i + 1];\n s[a] = f;\n }\n o[c] = { input: n[c] ?? "", groups: s };\n }\n return o;\n }\n static compareComponent(t, r, n) {\n let o = /* @__PURE__ */ __name((i, a) => {\n for (let f of ["type", "modifier", "prefix", "value", "suffix"]) {\n if (i[f] < a[f])\n return -1;\n if (i[f] === a[f])\n continue;\n return 1;\n }\n return 0;\n }, "o"), c = new R(3, "", "", "", "", 3), l = new R(0, "", "", "", "", 3), s = /* @__PURE__ */ __name((i, a) => {\n let f = 0;\n for (; f < Math.min(i.length, a.length); ++f) {\n let d = o(i[f], a[f]);\n if (d)\n return d;\n }\n return i.length === a.length ? 0 : o(i[f] ?? c, a[f] ?? c);\n }, "s");\n return !__privateGet(r, _e2)[t] && !__privateGet(n, _e2)[t] ? 0 : __privateGet(r, _e2)[t] && !__privateGet(n, _e2)[t] ? s(__privateGet(r, _s2)[t], [l]) : !__privateGet(r, _e2)[t] && __privateGet(n, _e2)[t] ? s([l], __privateGet(n, _s2)[t]) : s(__privateGet(r, _s2)[t], __privateGet(n, _s2)[t]);\n }\n get protocol() {\n return __privateGet(this, _e2).protocol;\n }\n get username() {\n return __privateGet(this, _e2).username;\n }\n get password() {\n return __privateGet(this, _e2).password;\n }\n get hostname() {\n return __privateGet(this, _e2).hostname;\n }\n get port() {\n return __privateGet(this, _e2).port;\n }\n get pathname() {\n return __privateGet(this, _e2).pathname;\n }\n get search() {\n return __privateGet(this, _e2).search;\n }\n get hash() {\n return __privateGet(this, _e2).hash;\n }\n get hasRegExpGroups() {\n return __privateGet(this, _l2);\n }\n}, _i2 = new WeakMap(), _n2 = new WeakMap(), _t2 = new WeakMap(), _e2 = new WeakMap(), _s2 = new WeakMap(), _l2 = new WeakMap(), __name(_a4, "me"), _a4);\n\n// ../../node_modules/.pnpm/urlpattern-polyfill@10.0.0/node_modules/urlpattern-polyfill/index.js\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = me;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n URLPattern\n});\n'; } }); var require_blob_js_text = __commonJS({ "../primitives/dist/blob.js.text.js"(exports2, module2) { "use strict"; module2.exports = `"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 __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; 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 init_define_process = __esm({ ""() { } }); // ../../node_modules/.pnpm/blob-polyfill@7.0.20220408/node_modules/blob-polyfill/Blob.js var require_Blob = __commonJS({ "../../node_modules/.pnpm/blob-polyfill@7.0.20220408/node_modules/blob-polyfill/Blob.js"(exports2) { "use strict"; init_define_process(); (function(global2) { (function(factory) { if (typeof define === "function" && define.amd) { define(["exports"], factory); } else if (typeof exports2 === "object" && typeof exports2.nodeName !== "string") { factory(exports2); } else { factory(global2); } })(function(exports3) { "use strict"; var BlobBuilder = global2.BlobBuilder || global2.WebKitBlobBuilder || global2.MSBlobBuilder || global2.MozBlobBuilder; var URL = global2.URL || global2.webkitURL || function(href, a) { a = document.createElement("a"); a.href = href; return a; }; var origBlob = global2.Blob; var createObjectURL = URL.createObjectURL; var revokeObjectURL = URL.revokeObjectURL; var strTag = global2.Symbol && global2.Symbol.toStringTag; var blobSupported = false; var blobSupportsArrayBufferView = false; var blobBuilderSupported = BlobBuilder && BlobBuilder.prototype.append && BlobBuilder.prototype.getBlob; try { blobSupported = new Blob(["\\xE4"]).size === 2; blobSupportsArrayBufferView = new Blob([new Uint8Array([1, 2])]).size === 2; } catch (e) { } function mapArrayBufferViews(ary) { return ary.map(function(chunk) { if (chunk.buffer instanceof ArrayBuffer) { var buf = chunk.buffer; if (chunk.byteLength !== buf.byteLength) { var copy = new Uint8Array(chunk.byteLength); copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength)); buf = copy.buffer; } return buf; } return chunk; }); } __name(mapArrayBufferViews, "mapArrayBufferViews"); function BlobBuilderConstructor(ary, options) { options = options || {}; var bb = new BlobBuilder(); mapArrayBufferViews(ary).forEach(function(part) { bb.append(part); }); return options.type ? bb.getBlob(options.type) : bb.getBlob(); } __name(BlobBuilderConstructor, "BlobBuilderConstructor"); function BlobConstructor(ary, options) { return new origBlob(mapArrayBufferViews(ary), options || {}); } __name(BlobConstructor, "BlobConstructor"); if (global2.Blob) { BlobBuilderConstructor.prototype = Blob.prototype; BlobConstructor.prototype = Blob.prototype; } function stringEncode(string) { var pos = 0; var len = string.length; var Arr = global2.Uint8Array || Array; var at = 0; var tlen = Math.max(32, len + (len >> 1) + 7); var target = new Arr(tlen >> 3 << 3); while (pos < len) { var value = string.charCodeAt(pos++); if (value >= 55296 && value <= 56319) { if (pos < len) { var extra = string.charCodeAt(pos); if ((extra & 64512) === 56320) { ++pos; value = ((value & 1023) << 10) + (extra & 1023) + 65536; } } if (value >= 55296 && value <= 56319) { continue; } } if (at + 4 > target.length) { tlen += 8; tlen *= 1 + pos / string.length * 2; tlen = tlen >> 3 << 3; var update = new Uint8Array(tlen); update.set(target); target = update; } if ((value & 4294967168) === 0) { target[at++] = value; continue; } else if ((value & 4294965248) === 0) { target[at++] = value >> 6 & 31 | 192; } else if ((value & 4294901760) === 0) { target[at++] = value >> 12 & 15 | 224; target[at++] = value >> 6 & 63 | 128; } else if ((value & 4292870144) === 0) { target[at++] = value >> 18 & 7 | 240; target[at++] = value >> 12 & 63 | 128; target[at++] = value >> 6 & 63 | 128; } else { continue; } target[at++] = value & 63 | 128; } return target.slice(0, at); } __name(stringEncode, "stringEncode"); function stringDecode(buf) { var end = buf.length; var res = []; var i = 0; while (i < end) { var firstByte = buf[i]; var codePoint = null; var bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1; if (i + bytesPerSequence <= end) { var secondByte, thirdByte, fourthByte, tempCodePoint; switch (bytesPerSequence) { case 1: if (firstByte < 128) { codePoint = firstByte; } break; case 2: secondByte = buf[i + 1]; if ((secondByte & 192) === 128) { tempCodePoint = (firstByte & 31) << 6 | secondByte & 63; if (tempCodePoint > 127) { codePoint = tempCodePoint; } } break; case 3: secondByte = buf[i + 1]; thirdByte = buf[i + 2]; if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) { tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63; if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) { codePoint = tempCodePoint; } } break; case 4: secondByte = buf[i + 1]; thirdByte = buf[i + 2]; fourthByte = buf[i + 3]; if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) { tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63; if (tempCodePoint > 65535 && tempCodePoint < 1114112) { codePoint = tempCodePoint; } } } } if (codePoint === null) { codePoint = 65533; bytesPerSequence = 1; } else if (codePoint > 65535) { codePoint -= 65536; res.push(codePoint >>> 10 & 1023 | 55296); codePoint = 56320 | codePoint & 1023; } res.push(codePoint); i += bytesPerSequence; } var len = res.length; var str = ""; var j = 0; while (j < len) { str += String.fromCharCode.apply(String, res.slice(j, j += 4096)); } return str; } __name(stringDecode, "stringDecode"); var textEncode = typeof TextEncoder === "function" ? TextEncoder.prototype.encode.bind(new TextEncoder()) : stringEncode; var textDecode = typeof TextDecoder === "function" ? TextDecoder.prototype.decode.bind(new TextDecoder()) : stringDecode; function FakeBlobBuilder() { function bufferClone(buf) { var view = new Array(buf.byteLength); var array = new Uint8Array(buf); var i = view.length; while (i--) { view[i] = array[i]; } return view; } __name(bufferClone, "bufferClone"); function array2base64(input) { var byteToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var output = []; for (var i = 0; i < input.length; i += 3) { var byte1 = input[i]; var haveByte2 = i + 1 < input.length; var byte2 = haveByte2 ? input[i + 1] : 0; var haveByte3 = i + 2 < input.length; var byte3 = haveByte3 ? input[i + 2] : 0; var outByte1 = byte1 >> 2; var outByte2 = (byte1 & 3) << 4 | byte2 >> 4; var outByte3 = (byte2 & 15) << 2 | byte3 >> 6; var outByte4 = byte3 & 63; if (!haveByte3) { outByte4 = 64; if (!haveByte2) { outByte3 = 64; } } output.push( byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4] ); } return output.join(""); } __name(array2base64, "array2base64"); var create = Object.create || function(a) { function c() { } __name(c, "c"); c.prototype = a; return new c(); }; function getObjectTypeName(o) { return Object.prototype.toString.call(o).slice(8, -1); } __name(getObjectTypeName, "getObjectTypeName"); function isPrototypeOf(c, o) { return typeof c === "object" && Object.prototype.isPrototypeOf.call(c.prototype, o); } __name(isPrototypeOf, "isPrototypeOf"); function isDataView(o) { return getObjectTypeName(o) === "DataView" || isPrototypeOf(global2.DataView, o); } __name(isDataView, "isDataView"); var arrayBufferClassNames = [ "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array", "ArrayBuffer" ]; function includes(a, v) { return a.indexOf(v) !== -1; } __name(includes, "includes"); function isArrayBuffer(o) { return includes(arrayBufferClassNames, getObjectTypeName(o)) || isPrototypeOf(global2.ArrayBuffer, o); } __name(isArrayBuffer, "isArrayBuffer"); function concatTypedarrays(chunks) { var size = 0; var j = chunks.length; while (j--) { size += chunks[j].length; } var b = new Uint8Array(size); var offset = 0; for (var i = 0; i < chunks.length; i++) { var chunk = chunks[i]; b.set(chunk, offset); offset += chunk.byteLength || chunk.length; } return b; } __name(concatTypedarrays, "concatTypedarrays"); function Blob3(chunks, opts) { chunks = chunks ? chunks.slice() : []; opts = opts == null ? {} : opts; for (var i = 0, len = chunks.length; i < len; i++) { var chunk = chunks[i]; if (chunk instanceof Blob3) { chunks[i] = chunk._buffer; } else if (typeof chunk === "string") { chunks[i] = textEncode(chunk); } else if (isDataView(chunk)) { chunks[i] = bufferClone(chunk.buffer); } else if (isArrayBuffer(chunk)) { chunks[i] = bufferClone(chunk); } else { chunks[i] = textEncode(String(chunk)); } } this._buffer = global2.Uint8Array ? concatTypedarrays(chunks) : [].concat.apply([], chunks); this.size = this._buffer.length; this.type = opts.type || ""; if (/[^\\u0020-\\u007E]/.test(this.type)) { this.type = ""; } else { this.type = this.type.toLowerCase(); } } __name(Blob3, "Blob"); Blob3.prototype.arrayBuffer = function() { return Promise.resolve(this._buffer.buffer || this._buffer); }; Blob3.prototype.text = function() { return Promise.resolve(textDecode(this._buffer)); }; Blob3.prototype.slice = function(start, end, type) { var slice = this._buffer.slice(start || 0, end || this._buffer.length); return new Blob3([slice], { type }); }; Blob3.prototype.toString = function() { return "[object Blob]"; }; function File2(chunks, name, opts) { opts = opts || {}; var a = Blob3.call(this, chunks, opts) || this; a.name = name.replace(/\\//g, ":"); a.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : /* @__PURE__ */ new Date(); a.lastModified = +a.lastModifiedDate; return a; } __name(File2, "File"); File2.prototype = create(Blob3.prototype); File2.prototype.constructor = File2; if (Object.setPrototypeOf) { Object.setPrototypeOf(File2, Blob3); } else { try { File2.__proto__ = Blob3; } catch (e) { } } File2.prototype.toString = function() { return "[object File]"; }; function FileReader2() { if (!(this instanceof FileReader2)) { throw new TypeError("Failed to construct 'FileReader': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); } var delegate = document.createDocumentFragment(); this.addEventListener = delegate.addEventListener; this.dispatchEvent = function(evt) { var local = this["on" + evt.type]; if (typeof local === "function") local(evt); delegate.dispatchEvent(evt); }; this.removeEventListener = delegate.removeEventListener; } __name(FileReader2, "FileReader"); function _read(fr, blob2, kind) { if (!(blob2 instanceof Blob3)) { throw new TypeError("Failed to execute '" + kind + "' on 'FileReader': parameter 1 is not of type 'Blob'."); } fr.result = ""; setTimeout(function() { this.readyState = FileReader2.LOADING; fr.dispatchEvent(new Event("load")); fr.dispatchEvent(new Event("loadend")); }); } __name(_read, "_read"); FileReader2.EMPTY = 0; FileReader2.LOADING = 1; FileReader2.DONE = 2; FileReader2.prototype.error = null; FileReader2.prototype.onabort = null; FileReader2.prototype.onerror = null; FileReader2.prototype.onload = null; FileReader2.prototype.onloadend = null; FileReader2.prototype.onloadstart = null; FileReader2.prototype.onprogress = null; FileReader2.prototype.readAsDataURL = function(blob2) { _read(this, blob2, "readAsDataURL"); this.result = "data:" + blob2.type + ";base64," + array2base64(blob2._buffer); }; FileReader2.prototype.readAsText = function(blob2) { _read(this, blob2, "readAsText"); this.result = textDecode(blob2._buffer); }; FileReader2.prototype.readAsArrayBuffer = function(blob2) { _read(this, blob2, "readAsText"); this.result = (blob2._buffer.buffer || blob2._buffer).slice(); }; FileReader2.prototype.abort = function() { }; URL.createObjectURL = function(blob2) { return blob2 instanceof Blob3 ? "data:" + blob2.type + ";base64," + array2base64(blob2._buffer) : createObjectURL.call(URL, blob2); }; URL.revokeObjectURL = function(url) { revokeObjectURL && revokeObjectURL.call(URL, url); }; var _send = global2.XMLHttpRequest && global2.XMLHttpRequest.prototype.send; if (_send) { XMLHttpRequest.prototype.send = function(data) { if (data instanceof Blob3) { this.setRequestHeader("Content-Type", data.type); _send.call(this, textDecode(data._buffer)); } else { _send.call(this, data); } }; } exports3.Blob = Blob3; exports3.File = File2; exports3.FileReader = FileReader2; exports3.URL = URL; } __name(FakeBlobBuilder, "FakeBlobBuilder"); function fixFileAndXHR() { var isIE = !!global2.ActiveXObject || "-ms-scroll-limit" in document.documentElement.style && "-ms-ime-align" in document.documentElement.style; var _send = global2.XMLHttpRequest && global2.XMLHttpRequest.prototype.send; if (isIE && _send) { XMLHttpRequest.prototype.send = function(data) { if (data instanceof Blob) { this.setRequestHeader("Content-Type", data.type); _send.call(this, data); } else { _send.call(this, data); } }; } try { new File([], ""); exports3.File = global2.File; exports3.FileReader = global2.FileReader; } catch (e) { try { exports3.File = new Function( 'class File extends Blob {constructor(chunks, name, opts) {opts = opts || {};super(chunks, opts || {});this.name = name.replace(/\\\\//g, ":");this.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date();this.lastModified = +this.lastModifiedDate;}};return new File([], ""), File' )(); } catch (e2) { exports3.File = function(b, d, c) { var blob2 = new Blob(b, c); var t = c && void 0 !== c.lastModified ? new Date(c.lastModified) : /* @__PURE__ */ new Date(); blob2.name = d.replace(/\\//g, ":"); blob2.lastModifiedDate = t; blob2.lastModified = +t; blob2.toString = function() { return "[object File]"; }; if (strTag) { blob2[strTag] = "File"; } return blob2; }; } } } __name(fixFileAndXHR, "fixFileAndXHR"); if (blobSupported) { fixFileAndXHR(); exports3.Blob = blobSupportsArrayBufferView ? global2.Blob : BlobConstructor; } else if (blobBuilderSupported) { fixFileAndXHR(); exports3.Blob = BlobBuilderConstructor; } else { FakeBlobBuilder(); } if (strTag) { if (!exports3.File.prototype[strTag]) exports3.File.prototype[strTag] = "File"; if (!exports3.Blob.prototype[strTag]) exports3.Blob.prototype[strTag] = "Blob"; if (!exports3.FileReader.prototype[strTag]) exports3.FileReader.prototype[strTag] = "FileReader"; } var blob = exports3.Blob.prototype; var stream; try { new ReadableStream({ type: "bytes" }); stream = /* @__PURE__ */ __name(function stream2() { var position = 0; var blob2 = this; return new ReadableStream({ type: "bytes", autoAllocateChunkSize: 524288, pull: function(controller) { var v = controller.byobRequest.view; var chunk = blob2.slice(position, position + v.byteLength); return chunk.arrayBuffer().then(function(buffer) { var uint8array = new Uint8Array(buffer); var bytesRead = uint8array.byteLength; position += bytesRead; v.set(uint8array); controller.byobRequest.respond(bytesRead); if (position >= blob2.size) controller.close(); }); } }); }, "stream"); } catch (e) { try { new ReadableStream({}); stream = /* @__PURE__ */ __name(function stream2(blob2) { var position = 0; return new ReadableStream({ pull: function(controller) { var chunk = blob2.slice(position, position + 524288); return chunk.arrayBuffer().then(function(buffer) { position += buffer.byteLength; var uint8array = new Uint8Array(buffer); controller.enqueue(uint8array); if (position == blob2.size) controller.close(); }); } }); }, "stream"); } catch (e2) { try { new Response("").body.getReader().read(); stream = /* @__PURE__ */ __name(function stream2() { return new Response(this).body; }, "stream"); } catch (e3) { stream = /* @__PURE__ */ __name(function stream2() { throw new Error("Include https://github.com/MattiasBuelens/web-streams-polyfill"); }, "stream"); } } } function promisify(obj) { return new Promise(function(resolve, reject) { obj.onload = obj.onerror = function(evt) { obj.onload = obj.onerror = null; evt.type === "load" ? resolve(obj.result || obj) : reject(new Error("Failed to read the blob/file")); }; }); } __name(promisify, "promisify"); if (!blob.arrayBuffer) { blob.arrayBuffer = /* @__PURE__ */ __name(function arrayBuffer() { var fr = new FileReader(); fr.readAsArrayBuffer(this); return promisify(fr); }, "arrayBuffer"); } if (!blob.text) { blob.text = /* @__PURE__ */ __name(function text() { var fr = new FileReader(); fr.readAsText(this); return promisify(fr); }, "text"); } if (!blob.stream) { blob.stream = stream; } }); })( typeof self !== "undefined" && self || typeof window !== "undefined" && window || typeof global !== "undefined" && global || exports2 ); } }); // src/primitives/blob.js var blob_exports = {}; __export(blob_exports, { Blob: () => import_blob_polyfill.Blob }); module.exports = __toCommonJS(blob_exports); init_define_process(); var import_blob_polyfill = __toESM(require_Blob()); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Blob }); `; } }); var require_structured_clone_js_text = __commonJS({ "../primitives/dist/structured-clone.js.text.js"(exports2, module2) { "use strict"; module2.exports = '"use strict";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, "name", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n// src/primitives/structured-clone.js\nvar structured_clone_exports = {};\n__export(structured_clone_exports, {\n structuredClone: () => structuredClone2\n});\nmodule.exports = __toCommonJS(structured_clone_exports);\n\n// ../../node_modules/.pnpm/@ungap+structured-clone@1.2.0/node_modules/@ungap/structured-clone/esm/types.js\nvar VOID = -1;\nvar PRIMITIVE = 0;\nvar ARRAY = 1;\nvar OBJECT = 2;\nvar DATE = 3;\nvar REGEXP = 4;\nvar MAP = 5;\nvar SET = 6;\nvar ERROR = 7;\nvar BIGINT = 8;\n\n// ../../node_modules/.pnpm/@ungap+structured-clone@1.2.0/node_modules/@ungap/structured-clone/esm/deserialize.js\nvar env = typeof self === "object" ? self : globalThis;\nvar deserializer = /* @__PURE__ */ __name(($, _) => {\n const as = /* @__PURE__ */ __name((out, index) => {\n $.set(index, out);\n return out;\n }, "as");\n const unpair = /* @__PURE__ */ __name((index) => {\n if ($.has(index))\n return $.get(index);\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index2 of value)\n arr.push(unpair(index2));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index2] of value)\n object[unpair(key)] = unpair(index2);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const { source, flags } = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(/* @__PURE__ */ new Map(), index);\n for (const [key, index2] of value)\n map.set(unpair(key), unpair(index2));\n return map;\n }\n case SET: {\n const set = as(/* @__PURE__ */ new Set(), index);\n for (const index2 of value)\n set.add(unpair(index2));\n return set;\n }\n case ERROR: {\n const { name, message } = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case "BigInt":\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n }, "unpair");\n return unpair;\n}, "deserializer");\nvar deserialize = /* @__PURE__ */ __name((serialized) => deserializer(/* @__PURE__ */ new Map(), serialized)(0), "deserialize");\n\n// ../../node_modules/.pnpm/@ungap+structured-clone@1.2.0/node_modules/@ungap/structured-clone/esm/serialize.js\nvar EMPTY = "";\nvar { toString } = {};\nvar { keys } = Object;\nvar typeOf = /* @__PURE__ */ __name((value) => {\n const type = typeof value;\n if (type !== "object" || !value)\n return [PRIMITIVE, type];\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case "Array":\n return [ARRAY, EMPTY];\n case "Object":\n return [OBJECT, EMPTY];\n case "Date":\n return [DATE, EMPTY];\n case "RegExp":\n return [REGEXP, EMPTY];\n case "Map":\n return [MAP, EMPTY];\n case "Set":\n return [SET, EMPTY];\n }\n if (asString.includes("Array"))\n return [ARRAY, asString];\n if (asString.includes("Error"))\n return [ERROR, asString];\n return [OBJECT, asString];\n}, "typeOf");\nvar shouldSkip = /* @__PURE__ */ __name(([TYPE, type]) => TYPE === PRIMITIVE && (type === "function" || type === "symbol"), "shouldSkip");\nvar serializer = /* @__PURE__ */ __name((strict, json, $, _) => {\n const as = /* @__PURE__ */ __name((out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n }, "as");\n const pair = /* @__PURE__ */ __name((value) => {\n if ($.has(value))\n return $.get(value);\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case "bigint":\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case "function":\n case "symbol":\n if (strict)\n throw new TypeError("unable to serialize " + type);\n entry = null;\n break;\n case "undefined":\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case "BigInt":\n return as([type, value.toString()], value);\n case "Boolean":\n case "Number":\n case "String":\n return as([type, value.valueOf()], value);\n }\n }\n if (json && "toJSON" in value)\n return pair(value.toJSON());\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const { source, flags } = value;\n return as([TYPE, { source, flags }], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n const { message } = value;\n return as([TYPE, { name: type, message }], value);\n }, "pair");\n return pair;\n}, "serializer");\nvar serialize = /* @__PURE__ */ __name((value, { json, lossy } = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, /* @__PURE__ */ new Map(), _)(value), _;\n}, "serialize");\n\n// ../../node_modules/.pnpm/@ungap+structured-clone@1.2.0/node_modules/@ungap/structured-clone/esm/index.js\nvar esm_default = typeof structuredClone === "function" ? (\n /* c8 ignore start */\n (any, options) => options && ("json" in options || "lossy" in options) ? deserialize(serialize(any, options)) : structuredClone(any)\n) : (any, options) => deserialize(serialize(any, options));\n\n// src/primitives/structured-clone.js\nfunction structuredClone2(value, options) {\n if (value instanceof ReadableStream) {\n const transform = new TransformStream({});\n value.pipeTo(transform.writable);\n return transform.readable;\n }\n return esm_default(value, options);\n}\n__name(structuredClone2, "structuredClone");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n structuredClone\n});\n'; } }); var require_fetch_js_text = __commonJS({ "../primitives/dist/fetch.js.text.js"(exports2, module2) { "use strict"; module2.exports = '"use strict";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, "name", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. "__esModule" has not been set), then set\n // "default" to the CommonJS "module.exports" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError("Cannot " + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, "read from private field");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError("Cannot add the same private member more than once");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, "write to private field");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar __privateMethod = (obj, member, method) => {\n __accessCheck(obj, member, "access private method");\n return method;\n};\n\n// \nvar define_process_default;\nvar init_define_process = __esm({\n ""() {\n define_process_default = { env: {}, versions: { node: "16.6.0" } };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/symbols.js\nvar require_symbols = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/symbols.js"(exports2, module2) {\n "use strict";\n init_define_process();\n module2.exports = {\n kUrl: Symbol("url"),\n kHeaders: Symbol("headers"),\n kSignal: Symbol("signal"),\n kState: Symbol("state"),\n kGuard: Symbol("guard"),\n kRealm: Symbol("realm")\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/core/symbols.js\nvar require_symbols2 = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/core/symbols.js"(exports2, module2) {\n "use strict";\n init_define_process();\n module2.exports = {\n kClose: Symbol("close"),\n kDestroy: Symbol("destroy"),\n kDispatch: Symbol("dispatch"),\n kUrl: Symbol("url"),\n kWriting: Symbol("writing"),\n kResuming: Symbol("resuming"),\n kQueue: Symbol("queue"),\n kConnect: Symbol("connect"),\n kConnecting: Symbol("connecting"),\n kHeadersList: Symbol("headers list"),\n kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"),\n kKeepAliveMaxTimeout: Symbol("max keep alive timeout"),\n kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"),\n kKeepAliveTimeoutValue: Symbol("keep alive timeout"),\n kKeepAlive: Symbol("keep alive"),\n kHeadersTimeout: Symbol("headers timeout"),\n kBodyTimeout: Symbol("body timeout"),\n kServerName: Symbol("server name"),\n kLocalAddress: Symbol("local address"),\n kHost: Symbol("host"),\n kNoRef: Symbol("no ref"),\n kBodyUsed: Symbol("used"),\n kRunning: Symbol("running"),\n kBlocking: Symbol("blocking"),\n kPending: Symbol("pending"),\n kSize: Symbol("size"),\n kBusy: Symbol("busy"),\n kQueued: Symbol("queued"),\n kFree: Symbol("free"),\n kConnected: Symbol("connected"),\n kClosed: Symbol("closed"),\n kNeedDrain: Symbol("need drain"),\n kReset: Symbol("reset"),\n kDestroyed: Symbol.for("nodejs.stream.destroyed"),\n kMaxHeadersSize: Symbol("max headers size"),\n kRunningIdx: Symbol("running index"),\n kPendingIdx: Symbol("pending index"),\n kError: Symbol("error"),\n kClients: Symbol("clients"),\n kClient: Symbol("client"),\n kParser: Symbol("parser"),\n kOnDestroyed: Symbol("destroy callbacks"),\n kPipelining: Symbol("pipelining"),\n kSocket: Symbol("socket"),\n kHostHeader: Symbol("host header"),\n kConnector: Symbol("connector"),\n kStrictContentLength: Symbol("strict content length"),\n kMaxRedirections: Symbol("maxRedirections"),\n kMaxRequests: Symbol("maxRequestsPerClient"),\n kProxy: Symbol("proxy agent options"),\n kCounter: Symbol("socket request counter"),\n kInterceptors: Symbol("dispatch interceptors"),\n kMaxResponseSize: Symbol("max response size")\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/core/errors.js\nvar require_errors = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/core/errors.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var _UndiciError = class _UndiciError extends Error {\n constructor(message) {\n super(message);\n this.name = "UndiciError";\n this.code = "UND_ERR";\n }\n };\n __name(_UndiciError, "UndiciError");\n var UndiciError = _UndiciError;\n var _ConnectTimeoutError = class _ConnectTimeoutError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _ConnectTimeoutError);\n this.name = "ConnectTimeoutError";\n this.message = message || "Connect Timeout Error";\n this.code = "UND_ERR_CONNECT_TIMEOUT";\n }\n };\n __name(_ConnectTimeoutError, "ConnectTimeoutError");\n var ConnectTimeoutError = _ConnectTimeoutError;\n var _HeadersTimeoutError = class _HeadersTimeoutError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _HeadersTimeoutError);\n this.name = "HeadersTimeoutError";\n this.message = message || "Headers Timeout Error";\n this.code = "UND_ERR_HEADERS_TIMEOUT";\n }\n };\n __name(_HeadersTimeoutError, "HeadersTimeoutError");\n var HeadersTimeoutError = _HeadersTimeoutError;\n var _HeadersOverflowError = class _HeadersOverflowError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _HeadersOverflowError);\n this.name = "HeadersOverflowError";\n this.message = message || "Headers Overflow Error";\n this.code = "UND_ERR_HEADERS_OVERFLOW";\n }\n };\n __name(_HeadersOverflowError, "HeadersOverflowError");\n var HeadersOverflowError = _HeadersOverflowError;\n var _BodyTimeoutError = class _BodyTimeoutError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _BodyTimeoutError);\n this.name = "BodyTimeoutError";\n this.message = message || "Body Timeout Error";\n this.code = "UND_ERR_BODY_TIMEOUT";\n }\n };\n __name(_BodyTimeoutError, "BodyTimeoutError");\n var BodyTimeoutError = _BodyTimeoutError;\n var _ResponseStatusCodeError = class _ResponseStatusCodeError extends UndiciError {\n constructor(message, statusCode, headers, body) {\n super(message);\n Error.captureStackTrace(this, _ResponseStatusCodeError);\n this.name = "ResponseStatusCodeError";\n this.message = message || "Response Status Code Error";\n this.code = "UND_ERR_RESPONSE_STATUS_CODE";\n this.body = body;\n this.status = statusCode;\n this.statusCode = statusCode;\n this.headers = headers;\n }\n };\n __name(_ResponseStatusCodeError, "ResponseStatusCodeError");\n var ResponseStatusCodeError = _ResponseStatusCodeError;\n var _InvalidArgumentError = class _InvalidArgumentError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _InvalidArgumentError);\n this.name = "InvalidArgumentError";\n this.message = message || "Invalid Argument Error";\n this.code = "UND_ERR_INVALID_ARG";\n }\n };\n __name(_InvalidArgumentError, "InvalidArgumentError");\n var InvalidArgumentError2 = _InvalidArgumentError;\n var _InvalidReturnValueError = class _InvalidReturnValueError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _InvalidReturnValueError);\n this.name = "InvalidReturnValueError";\n this.message = message || "Invalid Return Value Error";\n this.code = "UND_ERR_INVALID_RETURN_VALUE";\n }\n };\n __name(_InvalidReturnValueError, "InvalidReturnValueError");\n var InvalidReturnValueError = _InvalidReturnValueError;\n var _RequestAbortedError = class _RequestAbortedError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _RequestAbortedError);\n this.name = "AbortError";\n this.message = message || "Request aborted";\n this.code = "UND_ERR_ABORTED";\n }\n };\n __name(_RequestAbortedError, "RequestAbortedError");\n var RequestAbortedError = _RequestAbortedError;\n var _InformationalError = class _InformationalError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _InformationalError);\n this.name = "InformationalError";\n this.message = message || "Request information";\n this.code = "UND_ERR_INFO";\n }\n };\n __name(_InformationalError, "InformationalError");\n var InformationalError = _InformationalError;\n var _RequestContentLengthMismatchError = class _RequestContentLengthMismatchError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _RequestContentLengthMismatchError);\n this.name = "RequestContentLengthMismatchError";\n this.message = message || "Request body length does not match content-length header";\n this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH";\n }\n };\n __name(_RequestContentLengthMismatchError, "RequestContentLengthMismatchError");\n var RequestContentLengthMismatchError = _RequestContentLengthMismatchError;\n var _ResponseContentLengthMismatchError = class _ResponseContentLengthMismatchError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _ResponseContentLengthMismatchError);\n this.name = "ResponseContentLengthMismatchError";\n this.message = message || "Response body length does not match content-length header";\n this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH";\n }\n };\n __name(_ResponseContentLengthMismatchError, "ResponseContentLengthMismatchError");\n var ResponseContentLengthMismatchError = _ResponseContentLengthMismatchError;\n var _ClientDestroyedError = class _ClientDestroyedError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _ClientDestroyedError);\n this.name = "ClientDestroyedError";\n this.message = message || "The client is destroyed";\n this.code = "UND_ERR_DESTROYED";\n }\n };\n __name(_ClientDestroyedError, "ClientDestroyedError");\n var ClientDestroyedError = _ClientDestroyedError;\n var _ClientClosedError = class _ClientClosedError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _ClientClosedError);\n this.name = "ClientClosedError";\n this.message = message || "The client is closed";\n this.code = "UND_ERR_CLOSED";\n }\n };\n __name(_ClientClosedError, "ClientClosedError");\n var ClientClosedError = _ClientClosedError;\n var _SocketError = class _SocketError extends UndiciError {\n constructor(message, socket) {\n super(message);\n Error.captureStackTrace(this, _SocketError);\n this.name = "SocketError";\n this.message = message || "Socket error";\n this.code = "UND_ERR_SOCKET";\n this.socket = socket;\n }\n };\n __name(_SocketError, "SocketError");\n var SocketError = _SocketError;\n var _NotSupportedError = class _NotSupportedError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _NotSupportedError);\n this.name = "NotSupportedError";\n this.message = message || "Not supported error";\n this.code = "UND_ERR_NOT_SUPPORTED";\n }\n };\n __name(_NotSupportedError, "NotSupportedError");\n var NotSupportedError = _NotSupportedError;\n var _BalancedPoolMissingUpstreamError = class _BalancedPoolMissingUpstreamError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, NotSupportedError);\n this.name = "MissingUpstreamError";\n this.message = message || "No upstream has been added to the BalancedPool";\n this.code = "UND_ERR_BPL_MISSING_UPSTREAM";\n }\n };\n __name(_BalancedPoolMissingUpstreamError, "BalancedPoolMissingUpstreamError");\n var BalancedPoolMissingUpstreamError = _BalancedPoolMissingUpstreamError;\n var _HTTPParserError = class _HTTPParserError extends Error {\n constructor(message, code, data) {\n super(message);\n Error.captureStackTrace(this, _HTTPParserError);\n this.name = "HTTPParserError";\n this.code = code ? `HPE_${code}` : void 0;\n this.data = data ? data.toString() : void 0;\n }\n };\n __name(_HTTPParserError, "HTTPParserError");\n var HTTPParserError = _HTTPParserError;\n var _ResponseExceededMaxSizeError = class _ResponseExceededMaxSizeError extends UndiciError {\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, _ResponseExceededMaxSizeError);\n this.name = "ResponseExceededMaxSizeError";\n this.message = message || "Response content exceeded max size";\n this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE";\n }\n };\n __name(_ResponseExceededMaxSizeError, "ResponseExceededMaxSizeError");\n var ResponseExceededMaxSizeError = _ResponseExceededMaxSizeError;\n module2.exports = {\n HTTPParserError,\n UndiciError,\n HeadersTimeoutError,\n HeadersOverflowError,\n BodyTimeoutError,\n RequestContentLengthMismatchError,\n ConnectTimeoutError,\n ResponseStatusCodeError,\n InvalidArgumentError: InvalidArgumentError2,\n InvalidReturnValueError,\n RequestAbortedError,\n ClientDestroyedError,\n ClientClosedError,\n InformationalError,\n SocketError,\n NotSupportedError,\n ResponseContentLengthMismatchError,\n BalancedPoolMissingUpstreamError,\n ResponseExceededMaxSizeError\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/core/util.js\nvar require_util = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/core/util.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var assert = require("assert");\n var { kDestroyed, kBodyUsed } = require_symbols2();\n var { IncomingMessage } = require("http");\n var stream = require("stream");\n var net = require("net");\n var { InvalidArgumentError: InvalidArgumentError2 } = require_errors();\n var { Blob: Blob2 } = require("buffer");\n var nodeUtil = require("util");\n var { stringify } = require("querystring");\n var [nodeMajor, nodeMinor] = define_process_default.versions.node.split(".").map((v) => Number(v));\n function nop() {\n }\n __name(nop, "nop");\n function isStream(obj) {\n return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function";\n }\n __name(isStream, "isStream");\n function isBlobLike(object) {\n return Blob2 && object instanceof Blob2 || object && typeof object === "object" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]);\n }\n __name(isBlobLike, "isBlobLike");\n function buildURL(url, queryParams) {\n if (url.includes("?") || url.includes("#")) {\n throw new Error(\'Query params cannot be passed when url already contains "?" or "#".\');\n }\n const stringified = stringify(queryParams);\n if (stringified) {\n url += "?" + stringified;\n }\n return url;\n }\n __name(buildURL, "buildURL");\n function parseURL(url) {\n if (typeof url === "string") {\n url = new URL(url);\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError2("Invalid URL protocol: the URL must start with `http:` or `https:`.");\n }\n return url;\n }\n if (!url || typeof url !== "object") {\n throw new InvalidArgumentError2("Invalid URL: The URL argument must be a non-null object.");\n }\n if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) {\n throw new InvalidArgumentError2("Invalid URL: port must be a valid integer or a string representation of an integer.");\n }\n if (url.path != null && typeof url.path !== "string") {\n throw new InvalidArgumentError2("Invalid URL path: the path must be a string or null/undefined.");\n }\n if (url.pathname != null && typeof url.pathname !== "string") {\n throw new InvalidArgumentError2("Invalid URL pathname: the pathname must be a string or null/undefined.");\n }\n if (url.hostname != null && typeof url.hostname !== "string") {\n throw new InvalidArgumentError2("Invalid URL hostname: the hostname must be a string or null/undefined.");\n }\n if (url.origin != null && typeof url.origin !== "string") {\n throw new InvalidArgumentError2("Invalid URL origin: the origin must be a string or null/undefined.");\n }\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError2("Invalid URL protocol: the URL must start with `http:` or `https:`.");\n }\n if (!(url instanceof URL)) {\n const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80;\n let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`;\n let path = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;\n if (origin.endsWith("/")) {\n origin = origin.substring(0, origin.length - 1);\n }\n if (path && !path.startsWith("/")) {\n path = `/${path}`;\n }\n url = new URL(origin + path);\n }\n return url;\n }\n __name(parseURL, "parseURL");\n function parseOrigin(url) {\n url = parseURL(url);\n if (url.pathname !== "/" || url.search || url.hash) {\n throw new InvalidArgumentError2("invalid url");\n }\n return url;\n }\n __name(parseOrigin, "parseOrigin");\n function getHostname(host) {\n if (host[0] === "[") {\n const idx2 = host.indexOf("]");\n assert(idx2 !== -1);\n return host.substr(1, idx2 - 1);\n }\n const idx = host.indexOf(":");\n if (idx === -1)\n return host;\n return host.substr(0, idx);\n }\n __name(getHostname, "getHostname");\n function getServerName(host) {\n if (!host) {\n return null;\n }\n assert.strictEqual(typeof host, "string");\n const servername = getHostname(host);\n if (net.isIP(servername)) {\n return "";\n }\n return servername;\n }\n __name(getServerName, "getServerName");\n function deepClone(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n __name(deepClone, "deepClone");\n function isAsyncIterable(obj) {\n return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function");\n }\n __name(isAsyncIterable, "isAsyncIterable");\n function isIterable(obj) {\n return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function"));\n }\n __name(isIterable, "isIterable");\n function bodyLength(body) {\n if (body == null) {\n return 0;\n } else if (isStream(body)) {\n const state = body._readableState;\n return state && state.ended === true && Number.isFinite(state.length) ? state.length : null;\n } else if (isBlobLike(body)) {\n return body.size != null ? body.size : null;\n } else if (isBuffer(body)) {\n return body.byteLength;\n }\n return null;\n }\n __name(bodyLength, "bodyLength");\n function isDestroyed(stream2) {\n return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]);\n }\n __name(isDestroyed, "isDestroyed");\n function isReadableAborted(stream2) {\n const state = stream2 && stream2._readableState;\n return isDestroyed(stream2) && state && !state.endEmitted;\n }\n __name(isReadableAborted, "isReadableAborted");\n function destroy(stream2, err) {\n if (!isStream(stream2) || isDestroyed(stream2)) {\n return;\n }\n if (typeof stream2.destroy === "function") {\n if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) {\n stream2.socket = null;\n }\n stream2.destroy(err);\n } else if (err) {\n define_process_default.nextTick((stream3, err2) => {\n stream3.emit("error", err2);\n }, stream2, err);\n }\n if (stream2.destroyed !== true) {\n stream2[kDestroyed] = true;\n }\n }\n __name(destroy, "destroy");\n var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/;\n function parseKeepAliveTimeout(val) {\n const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR);\n return m ? parseInt(m[1], 10) * 1e3 : null;\n }\n __name(parseKeepAliveTimeout, "parseKeepAliveTimeout");\n function parseHeaders(headers, obj = {}) {\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i].toString().toLowerCase();\n let val = obj[key];\n if (!val) {\n if (Array.isArray(headers[i + 1])) {\n obj[key] = headers[i + 1];\n } else {\n obj[key] = headers[i + 1].toString("utf8");\n }\n } else {\n if (!Array.isArray(val)) {\n val = [val];\n obj[key] = val;\n }\n val.push(headers[i + 1].toString("utf8"));\n }\n }\n if ("content-length" in obj && "content-disposition" in obj) {\n obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1");\n }\n return obj;\n }\n __name(parseHeaders, "parseHeaders");\n function parseRawHeaders(headers) {\n const ret = [];\n let hasContentLength = false;\n let contentDispositionIdx = -1;\n for (let n = 0; n < headers.length; n += 2) {\n const key = headers[n + 0].toString();\n const val = headers[n + 1].toString("utf8");\n if (key.length === 14 && (key === "content-length" || key.toLowerCase() === "content-length")) {\n ret.push(key, val);\n hasContentLength = true;\n } else if (key.length === 19 && (key === "content-disposition" || key.toLowerCase() === "content-disposition")) {\n contentDispositionIdx = ret.push(key, val) - 1;\n } else {\n ret.push(key, val);\n }\n }\n if (hasContentLength && contentDispositionIdx !== -1) {\n ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1");\n }\n return ret;\n }\n __name(parseRawHeaders, "parseRawHeaders");\n function isBuffer(buffer) {\n return buffer instanceof Uint8Array || Buffer.isBuffer(buffer);\n }\n __name(isBuffer, "isBuffer");\n function validateHandler(handler, method, upgrade) {\n if (!handler || typeof handler !== "object") {\n throw new InvalidArgumentError2("handler must be an object");\n }\n if (typeof handler.onConnect !== "function") {\n throw new InvalidArgumentError2("invalid onConnect method");\n }\n if (typeof handler.onError !== "function") {\n throw new InvalidArgumentError2("invalid onError method");\n }\n if (typeof handler.onBodySent !== "function" && handler.onBodySent !== void 0) {\n throw new InvalidArgumentError2("invalid onBodySent method");\n }\n if (upgrade || method === "CONNECT") {\n if (typeof handler.onUpgrade !== "function") {\n throw new InvalidArgumentError2("invalid onUpgrade method");\n }\n } else {\n if (typeof handler.onHeaders !== "function") {\n throw new InvalidArgumentError2("invalid onHeaders method");\n }\n if (typeof handler.onData !== "function") {\n throw new InvalidArgumentError2("invalid onData method");\n }\n if (typeof handler.onComplete !== "function") {\n throw new InvalidArgumentError2("invalid onComplete method");\n }\n }\n }\n __name(validateHandler, "validateHandler");\n function isDisturbed(body) {\n return !!(body && (stream.isDisturbed ? stream.isDisturbed(body) || body[kBodyUsed] : body[kBodyUsed] || body.readableDidRead || body._readableState && body._readableState.dataEmitted || isReadableAborted(body)));\n }\n __name(isDisturbed, "isDisturbed");\n function isErrored(body) {\n return !!(body && (stream.isErrored ? stream.isErrored(body) : /state: \'errored\'/.test(\n nodeUtil.inspect(body)\n )));\n }\n __name(isErrored, "isErrored");\n function isReadable(body) {\n return !!(body && (stream.isReadable ? stream.isReadable(body) : /state: \'readable\'/.test(\n nodeUtil.inspect(body)\n )));\n }\n __name(isReadable, "isReadable");\n function getSocketInfo(socket) {\n return {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily,\n timeout: socket.timeout,\n bytesWritten: socket.bytesWritten,\n bytesRead: socket.bytesRead\n };\n }\n __name(getSocketInfo, "getSocketInfo");\n var ReadableStream;\n function ReadableStreamFrom(iterable) {\n if (!ReadableStream) {\n ReadableStream = require("./streams").ReadableStream;\n }\n if (ReadableStream.from) {\n return ReadableStream.from(iterable);\n }\n let iterator;\n return new ReadableStream(\n {\n async start() {\n iterator = iterable[Symbol.asyncIterator]();\n },\n async pull(controller) {\n const { done, value } = await iterator.next();\n if (done) {\n queueMicrotask(() => {\n controller.close();\n });\n } else {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value);\n controller.enqueue(new Uint8Array(buf));\n }\n return controller.desiredSize > 0;\n },\n async cancel(reason) {\n await iterator.return();\n }\n },\n 0\n );\n }\n __name(ReadableStreamFrom, "ReadableStreamFrom");\n function isFormDataLike(object) {\n return object && typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && object[Symbol.toStringTag] === "FormData";\n }\n __name(isFormDataLike, "isFormDataLike");\n function throwIfAborted(signal) {\n if (!signal) {\n return;\n }\n if (typeof signal.throwIfAborted === "function") {\n signal.throwIfAborted();\n } else {\n if (signal.aborted) {\n const err = new Error("The operation was aborted");\n err.name = "AbortError";\n throw err;\n }\n }\n }\n __name(throwIfAborted, "throwIfAborted");\n var events;\n function addAbortListener(signal, listener) {\n if (typeof Symbol.dispose === "symbol") {\n if (!events) {\n events = require("events");\n }\n if (typeof events.addAbortListener === "function" && "aborted" in signal) {\n return events.addAbortListener(signal, listener);\n }\n }\n if ("addEventListener" in signal) {\n signal.addEventListener("abort", listener, { once: true });\n return () => signal.removeEventListener("abort", listener);\n }\n signal.addListener("abort", listener);\n return () => signal.removeListener("abort", listener);\n }\n __name(addAbortListener, "addAbortListener");\n var hasToWellFormed = !!String.prototype.toWellFormed;\n function toUSVString(val) {\n if (hasToWellFormed) {\n return `${val}`.toWellFormed();\n } else if (nodeUtil.toUSVString) {\n return nodeUtil.toUSVString(val);\n }\n return `${val}`;\n }\n __name(toUSVString, "toUSVString");\n var kEnumerableProperty = /* @__PURE__ */ Object.create(null);\n kEnumerableProperty.enumerable = true;\n module2.exports = {\n kEnumerableProperty,\n nop,\n isDisturbed,\n isErrored,\n isReadable,\n toUSVString,\n isReadableAborted,\n isBlobLike,\n parseOrigin,\n parseURL,\n getServerName,\n isStream,\n isIterable,\n isAsyncIterable,\n isDestroyed,\n parseRawHeaders,\n parseHeaders,\n parseKeepAliveTimeout,\n destroy,\n bodyLength,\n deepClone,\n ReadableStreamFrom,\n isBuffer,\n validateHandler,\n getSocketInfo,\n isFormDataLike,\n buildURL,\n throwIfAborted,\n addAbortListener,\n nodeMajor,\n nodeMinor,\n nodeHasAutoSelectFamily: nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 13\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/constants.js\nvar require_constants = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/constants.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { MessageChannel, receiveMessageOnPort } = require("worker_threads");\n var corsSafeListedMethods = ["GET", "HEAD", "POST"];\n var nullBodyStatus = [101, 204, 205, 304];\n var redirectStatus = [301, 302, 303, 307, 308];\n var badPorts = [\n "1",\n "7",\n "9",\n "11",\n "13",\n "15",\n "17",\n "19",\n "20",\n "21",\n "22",\n "23",\n "25",\n "37",\n "42",\n "43",\n "53",\n "69",\n "77",\n "79",\n "87",\n "95",\n "101",\n "102",\n "103",\n "104",\n "109",\n "110",\n "111",\n "113",\n "115",\n "117",\n "119",\n "123",\n "135",\n "137",\n "139",\n "143",\n "161",\n "179",\n "389",\n "427",\n "465",\n "512",\n "513",\n "514",\n "515",\n "526",\n "530",\n "531",\n "532",\n "540",\n "548",\n "554",\n "556",\n "563",\n "587",\n "601",\n "636",\n "989",\n "990",\n "993",\n "995",\n "1719",\n "1720",\n "1723",\n "2049",\n "3659",\n "4045",\n "5060",\n "5061",\n "6000",\n "6566",\n "6665",\n "6666",\n "6667",\n "6668",\n "6669",\n "6697",\n "10080"\n ];\n var referrerPolicy = [\n "",\n "no-referrer",\n "no-referrer-when-downgrade",\n "same-origin",\n "origin",\n "strict-origin",\n "origin-when-cross-origin",\n "strict-origin-when-cross-origin",\n "unsafe-url"\n ];\n var requestRedirect = ["follow", "manual", "error"];\n var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"];\n var requestMode = ["navigate", "same-origin", "no-cors", "cors"];\n var requestCredentials = ["omit", "same-origin", "include"];\n var requestCache = [\n "default",\n "no-store",\n "reload",\n "no-cache",\n "force-cache",\n "only-if-cached"\n ];\n var requestBodyHeader = [\n "content-encoding",\n "content-language",\n "content-location",\n "content-type",\n // See https://github.com/nodejs/undici/issues/2021\n // \'Content-Length\' is a forbidden header name, which is typically\n // removed in the Headers implementation. However, undici doesn\'t\n // filter out headers, so we add it here.\n "content-length"\n ];\n var requestDuplex = [\n "half"\n ];\n var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"];\n var subresource = [\n "audio",\n "audioworklet",\n "font",\n "image",\n "manifest",\n "paintworklet",\n "script",\n "style",\n "track",\n "video",\n "xslt",\n ""\n ];\n var DOMException = globalThis.DOMException ?? (() => {\n try {\n atob("~");\n } catch (err) {\n return Object.getPrototypeOf(err).constructor;\n }\n })();\n var channel;\n var structuredClone = globalThis.structuredClone ?? // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js\n // structuredClone was added in v17.0.0, but fetch supports v16.8\n /* @__PURE__ */ __name(function structuredClone2(value, options = void 0) {\n if (arguments.length === 0) {\n throw new TypeError("missing argument");\n }\n if (!channel) {\n channel = new MessageChannel();\n }\n channel.port1.unref();\n channel.port2.unref();\n channel.port1.postMessage(value, options?.transfer);\n return receiveMessageOnPort(channel.port2).message;\n }, "structuredClone");\n module2.exports = {\n DOMException,\n structuredClone,\n subresource,\n forbiddenMethods,\n requestBodyHeader,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n redirectStatus,\n corsSafeListedMethods,\n nullBodyStatus,\n safeMethods,\n badPorts,\n requestDuplex\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/global.js\nvar require_global = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/global.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var globalOrigin = Symbol.for("undici.globalOrigin.1");\n function getGlobalOrigin() {\n return globalThis[globalOrigin];\n }\n __name(getGlobalOrigin, "getGlobalOrigin");\n function setGlobalOrigin(newOrigin) {\n if (newOrigin !== void 0 && typeof newOrigin !== "string" && !(newOrigin instanceof URL)) {\n throw new Error("Invalid base url");\n }\n if (newOrigin === void 0) {\n Object.defineProperty(globalThis, globalOrigin, {\n value: void 0,\n writable: true,\n enumerable: false,\n configurable: false\n });\n return;\n }\n const parsedURL = new URL(newOrigin);\n if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") {\n throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`);\n }\n Object.defineProperty(globalThis, globalOrigin, {\n value: parsedURL,\n writable: true,\n enumerable: false,\n configurable: false\n });\n }\n __name(setGlobalOrigin, "setGlobalOrigin");\n module2.exports = {\n getGlobalOrigin,\n setGlobalOrigin\n };\n }\n});\n\n// src/patches/util-types.js\nvar require_util_types = __commonJS({\n "src/patches/util-types.js"(exports2, module2) {\n "use strict";\n init_define_process();\n module2.exports = require("util").types;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/util.js\nvar require_util2 = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/util.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { redirectStatus, badPorts, referrerPolicy: referrerPolicyTokens } = require_constants();\n var { getGlobalOrigin } = require_global();\n var { performance: performance2 } = require("perf_hooks");\n var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util();\n var assert = require("assert");\n var { isUint8Array } = require_util_types();\n var crypto;\n try {\n crypto = require("crypto");\n } catch {\n }\n function responseURL(response) {\n const urlList = response.urlList;\n const length = urlList.length;\n return length === 0 ? null : urlList[length - 1].toString();\n }\n __name(responseURL, "responseURL");\n function responseLocationURL(response, requestFragment) {\n if (!redirectStatus.includes(response.status)) {\n return null;\n }\n let location = response.headersList.get("location");\n if (location !== null && isValidHeaderValue(location)) {\n location = new URL(location, responseURL(response));\n }\n if (location && !location.hash) {\n location.hash = requestFragment;\n }\n return location;\n }\n __name(responseLocationURL, "responseLocationURL");\n function requestCurrentURL(request) {\n return request.urlList[request.urlList.length - 1];\n }\n __name(requestCurrentURL, "requestCurrentURL");\n function requestBadPort(request) {\n const url = requestCurrentURL(request);\n if (urlIsHttpHttpsScheme(url) && badPorts.includes(url.port)) {\n return "blocked";\n }\n return "allowed";\n }\n __name(requestBadPort, "requestBadPort");\n function isErrorLike(object) {\n return object instanceof Error || (object?.constructor?.name === "Error" || object?.constructor?.name === "DOMException");\n }\n __name(isErrorLike, "isErrorLike");\n function isValidReasonPhrase(statusText) {\n for (let i = 0; i < statusText.length; ++i) {\n const c = statusText.charCodeAt(i);\n if (!(c === 9 || // HTAB\n c >= 32 && c <= 126 || // SP / VCHAR\n c >= 128 && c <= 255)) {\n return false;\n }\n }\n return true;\n }\n __name(isValidReasonPhrase, "isValidReasonPhrase");\n function isTokenChar(c) {\n return !(c >= 127 || c <= 32 || c === "(" || c === ")" || c === "<" || c === ">" || c === "@" || c === "," || c === ";" || c === ":" || c === "\\\\" || c === \'"\' || c === "/" || c === "[" || c === "]" || c === "?" || c === "=" || c === "{" || c === "}");\n }\n __name(isTokenChar, "isTokenChar");\n function isValidHTTPToken(characters) {\n if (!characters || typeof characters !== "string") {\n return false;\n }\n for (let i = 0; i < characters.length; ++i) {\n const c = characters.charCodeAt(i);\n if (c > 127 || !isTokenChar(c)) {\n return false;\n }\n }\n return true;\n }\n __name(isValidHTTPToken, "isValidHTTPToken");\n function isValidHeaderName2(potentialValue) {\n if (potentialValue.length === 0) {\n return false;\n }\n return isValidHTTPToken(potentialValue);\n }\n __name(isValidHeaderName2, "isValidHeaderName");\n function isValidHeaderValue(potentialValue) {\n if (potentialValue.startsWith(" ") || potentialValue.startsWith(" ") || potentialValue.endsWith(" ") || potentialValue.endsWith(" ")) {\n return false;\n }\n if (potentialValue.includes("\\0") || potentialValue.includes("\\r") || potentialValue.includes("\\n")) {\n return false;\n }\n return true;\n }\n __name(isValidHeaderValue, "isValidHeaderValue");\n function setRequestReferrerPolicyOnRedirect(request, actualResponse) {\n const { headersList } = actualResponse;\n const policyHeader = (headersList.get("referrer-policy") ?? "").split(",");\n let policy = "";\n if (policyHeader.length > 0) {\n for (let i = policyHeader.length; i !== 0; i--) {\n const token = policyHeader[i - 1].trim();\n if (referrerPolicyTokens.includes(token)) {\n policy = token;\n break;\n }\n }\n }\n if (policy !== "") {\n request.referrerPolicy = policy;\n }\n }\n __name(setRequestReferrerPolicyOnRedirect, "setRequestReferrerPolicyOnRedirect");\n function crossOriginResourcePolicyCheck() {\n return "allowed";\n }\n __name(crossOriginResourcePolicyCheck, "crossOriginResourcePolicyCheck");\n function corsCheck() {\n return "success";\n }\n __name(corsCheck, "corsCheck");\n function TAOCheck() {\n return "success";\n }\n __name(TAOCheck, "TAOCheck");\n function appendFetchMetadata(httpRequest) {\n let header = null;\n header = httpRequest.mode;\n httpRequest.headersList.set("sec-fetch-mode", header);\n }\n __name(appendFetchMetadata, "appendFetchMetadata");\n function appendRequestOriginHeader(request) {\n let serializedOrigin = request.origin;\n if (request.responseTainting === "cors" || request.mode === "websocket") {\n if (serializedOrigin) {\n request.headersList.append("origin", serializedOrigin);\n }\n } else if (request.method !== "GET" && request.method !== "HEAD") {\n switch (request.referrerPolicy) {\n case "no-referrer":\n serializedOrigin = null;\n break;\n case "no-referrer-when-downgrade":\n case "strict-origin":\n case "strict-origin-when-cross-origin":\n if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n serializedOrigin = null;\n }\n break;\n case "same-origin":\n if (!sameOrigin(request, requestCurrentURL(request))) {\n serializedOrigin = null;\n }\n break;\n default:\n }\n if (serializedOrigin) {\n request.headersList.append("origin", serializedOrigin);\n }\n }\n }\n __name(appendRequestOriginHeader, "appendRequestOriginHeader");\n function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) {\n return performance2.now();\n }\n __name(coarsenedSharedCurrentTime, "coarsenedSharedCurrentTime");\n function createOpaqueTimingInfo(timingInfo) {\n return {\n startTime: timingInfo.startTime ?? 0,\n redirectStartTime: 0,\n redirectEndTime: 0,\n postRedirectStartTime: timingInfo.startTime ?? 0,\n finalServiceWorkerStartTime: 0,\n finalNetworkResponseStartTime: 0,\n finalNetworkRequestStartTime: 0,\n endTime: 0,\n encodedBodySize: 0,\n decodedBodySize: 0,\n finalConnectionTimingInfo: null\n };\n }\n __name(createOpaqueTimingInfo, "createOpaqueTimingInfo");\n function makePolicyContainer() {\n return {\n referrerPolicy: "strict-origin-when-cross-origin"\n };\n }\n __name(makePolicyContainer, "makePolicyContainer");\n function clonePolicyContainer(policyContainer) {\n return {\n referrerPolicy: policyContainer.referrerPolicy\n };\n }\n __name(clonePolicyContainer, "clonePolicyContainer");\n function determineRequestsReferrer(request) {\n const policy = request.referrerPolicy;\n assert(policy);\n let referrerSource = null;\n if (request.referrer === "client") {\n const globalOrigin = getGlobalOrigin();\n if (!globalOrigin || globalOrigin.origin === "null") {\n return "no-referrer";\n }\n referrerSource = new URL(globalOrigin);\n } else if (request.referrer instanceof URL) {\n referrerSource = request.referrer;\n }\n let referrerURL = stripURLForReferrer(referrerSource);\n const referrerOrigin = stripURLForReferrer(referrerSource, true);\n if (referrerURL.toString().length > 4096) {\n referrerURL = referrerOrigin;\n }\n const areSameOrigin = sameOrigin(request, referrerURL);\n const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request.url);\n switch (policy) {\n case "origin":\n return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true);\n case "unsafe-url":\n return referrerURL;\n case "same-origin":\n return areSameOrigin ? referrerOrigin : "no-referrer";\n case "origin-when-cross-origin":\n return areSameOrigin ? referrerURL : referrerOrigin;\n case "strict-origin-when-cross-origin": {\n const currentURL = requestCurrentURL(request);\n if (sameOrigin(referrerURL, currentURL)) {\n return referrerURL;\n }\n if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n return "no-referrer";\n }\n return referrerOrigin;\n }\n case "strict-origin":\n case "no-referrer-when-downgrade":\n default:\n return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin;\n }\n }\n __name(determineRequestsReferrer, "determineRequestsReferrer");\n function stripURLForReferrer(url, originOnly) {\n assert(url instanceof URL);\n if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") {\n return "no-referrer";\n }\n url.username = "";\n url.password = "";\n url.hash = "";\n if (originOnly) {\n url.pathname = "";\n url.search = "";\n }\n return url;\n }\n __name(stripURLForReferrer, "stripURLForReferrer");\n function isURLPotentiallyTrustworthy(url) {\n if (!(url instanceof URL)) {\n return false;\n }\n if (url.href === "about:blank" || url.href === "about:srcdoc") {\n return true;\n }\n if (url.protocol === "data:")\n return true;\n if (url.protocol === "file:")\n return true;\n return isOriginPotentiallyTrustworthy(url.origin);\n function isOriginPotentiallyTrustworthy(origin) {\n if (origin == null || origin === "null")\n return false;\n const originAsURL = new URL(origin);\n if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") {\n return true;\n }\n if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) || (originAsURL.hostname === "localhost" || originAsURL.hostname.includes("localhost.")) || originAsURL.hostname.endsWith(".localhost")) {\n return true;\n }\n return false;\n }\n __name(isOriginPotentiallyTrustworthy, "isOriginPotentiallyTrustworthy");\n }\n __name(isURLPotentiallyTrustworthy, "isURLPotentiallyTrustworthy");\n function bytesMatch(bytes, metadataList) {\n if (crypto === void 0) {\n return true;\n }\n const parsedMetadata = parseMetadata(metadataList);\n if (parsedMetadata === "no metadata") {\n return true;\n }\n if (parsedMetadata.length === 0) {\n return true;\n }\n const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo));\n const strongest = list[0].algo;\n const metadata = list.filter((item) => item.algo === strongest);\n for (const item of metadata) {\n const algorithm = item.algo;\n const expectedValue = item.hash;\n const actualValue = crypto.createHash(algorithm).update(bytes).digest("base64");\n if (actualValue === expectedValue) {\n return true;\n }\n }\n return false;\n }\n __name(bytesMatch, "bytesMatch");\n var parseHashWithOptions = /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\\x21-\\x7e]?)?/i;\n function parseMetadata(metadata) {\n const result = [];\n let empty = true;\n const supportedHashes = crypto.getHashes();\n for (const token of metadata.split(" ")) {\n empty = false;\n const parsedToken = parseHashWithOptions.exec(token);\n if (parsedToken === null || parsedToken.groups === void 0) {\n continue;\n }\n const algorithm = parsedToken.groups.algo;\n if (supportedHashes.includes(algorithm.toLowerCase())) {\n result.push(parsedToken.groups);\n }\n }\n if (empty === true) {\n return "no metadata";\n }\n return result;\n }\n __name(parseMetadata, "parseMetadata");\n function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) {\n }\n __name(tryUpgradeRequestToAPotentiallyTrustworthyURL, "tryUpgradeRequestToAPotentiallyTrustworthyURL");\n function sameOrigin(A, B) {\n if (A.origin === B.origin && A.origin === "null") {\n return true;\n }\n if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n return true;\n }\n return false;\n }\n __name(sameOrigin, "sameOrigin");\n function createDeferredPromise() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n return { promise, resolve: res, reject: rej };\n }\n __name(createDeferredPromise, "createDeferredPromise");\n function isAborted(fetchParams) {\n return fetchParams.controller.state === "aborted";\n }\n __name(isAborted, "isAborted");\n function isCancelled(fetchParams) {\n return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated";\n }\n __name(isCancelled, "isCancelled");\n function normalizeMethod(method) {\n return /^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(method) ? method.toUpperCase() : method;\n }\n __name(normalizeMethod, "normalizeMethod");\n function serializeJavascriptValueToJSONString(value) {\n const result = JSON.stringify(value);\n if (result === void 0) {\n throw new TypeError("Value is not JSON serializable");\n }\n assert(typeof result === "string");\n return result;\n }\n __name(serializeJavascriptValueToJSONString, "serializeJavascriptValueToJSONString");\n var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));\n function makeIterator(iterator, name, kind) {\n const object = {\n index: 0,\n kind,\n target: iterator\n };\n const i = {\n next() {\n if (Object.getPrototypeOf(this) !== i) {\n throw new TypeError(\n `\'next\' called on an object that does not implement interface ${name} Iterator.`\n );\n }\n const { index, kind: kind2, target } = object;\n const values = target();\n const len = values.length;\n if (index >= len) {\n return { value: void 0, done: true };\n }\n const pair = values[index];\n object.index = index + 1;\n return iteratorResult(pair, kind2);\n },\n // The class string of an iterator prototype object for a given interface is the\n // result of concatenating the identifier of the interface and the string " Iterator".\n [Symbol.toStringTag]: `${name} Iterator`\n };\n Object.setPrototypeOf(i, esIteratorPrototype);\n return Object.setPrototypeOf({}, i);\n }\n __name(makeIterator, "makeIterator");\n function iteratorResult(pair, kind) {\n let result;\n switch (kind) {\n case "key": {\n result = pair[0];\n break;\n }\n case "value": {\n result = pair[1];\n break;\n }\n case "key+value": {\n result = pair;\n break;\n }\n }\n return { value: result, done: false };\n }\n __name(iteratorResult, "iteratorResult");\n function fullyReadBody(body, processBody, processBodyError) {\n const successSteps = /* @__PURE__ */ __name((bytes) => queueMicrotask(() => processBody(bytes)), "successSteps");\n const errorSteps = /* @__PURE__ */ __name((error) => queueMicrotask(() => processBodyError(error)), "errorSteps");\n let reader;\n try {\n reader = body.stream.getReader();\n } catch (e) {\n errorSteps(e);\n return;\n }\n readAllBytes(reader, successSteps, errorSteps);\n }\n __name(fullyReadBody, "fullyReadBody");\n var ReadableStream = globalThis.ReadableStream;\n function isReadableStreamLike(stream) {\n if (!ReadableStream) {\n ReadableStream = require("./streams").ReadableStream;\n }\n return stream instanceof ReadableStream || stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function";\n }\n __name(isReadableStreamLike, "isReadableStreamLike");\n var MAXIMUM_ARGUMENT_LENGTH = 65535;\n function isomorphicDecode(input) {\n if (input.length < MAXIMUM_ARGUMENT_LENGTH) {\n return String.fromCharCode(...input);\n }\n return input.reduce((previous, current) => previous + String.fromCharCode(current), "");\n }\n __name(isomorphicDecode, "isomorphicDecode");\n function readableStreamClose(controller) {\n try {\n controller.close();\n } catch (err) {\n if (!err.message.includes("Controller is already closed")) {\n throw err;\n }\n }\n }\n __name(readableStreamClose, "readableStreamClose");\n function isomorphicEncode(input) {\n for (let i = 0; i < input.length; i++) {\n assert(input.charCodeAt(i) <= 255);\n }\n return input;\n }\n __name(isomorphicEncode, "isomorphicEncode");\n async function readAllBytes(reader, successSteps, failureSteps) {\n const bytes = [];\n let byteLength = 0;\n while (true) {\n let done;\n let chunk;\n try {\n ({ done, value: chunk } = await reader.read());\n } catch (e) {\n failureSteps(e);\n return;\n }\n if (done) {\n successSteps(Buffer.concat(bytes, byteLength));\n return;\n }\n if (!isUint8Array(chunk)) {\n failureSteps(new TypeError("Received non-Uint8Array chunk"));\n return;\n }\n bytes.push(chunk);\n byteLength += chunk.length;\n }\n }\n __name(readAllBytes, "readAllBytes");\n function urlIsLocal(url) {\n assert("protocol" in url);\n const protocol = url.protocol;\n return protocol === "about:" || protocol === "blob:" || protocol === "data:";\n }\n __name(urlIsLocal, "urlIsLocal");\n function urlHasHttpsScheme(url) {\n if (typeof url === "string") {\n return url.startsWith("https:");\n }\n return url.protocol === "https:";\n }\n __name(urlHasHttpsScheme, "urlHasHttpsScheme");\n function urlIsHttpHttpsScheme(url) {\n assert("protocol" in url);\n const protocol = url.protocol;\n return protocol === "http:" || protocol === "https:";\n }\n __name(urlIsHttpHttpsScheme, "urlIsHttpHttpsScheme");\n var hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key));\n module2.exports = {\n isAborted,\n isCancelled,\n createDeferredPromise,\n ReadableStreamFrom,\n toUSVString,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n coarsenedSharedCurrentTime,\n determineRequestsReferrer,\n makePolicyContainer,\n clonePolicyContainer,\n appendFetchMetadata,\n appendRequestOriginHeader,\n TAOCheck,\n corsCheck,\n crossOriginResourcePolicyCheck,\n createOpaqueTimingInfo,\n setRequestReferrerPolicyOnRedirect,\n isValidHTTPToken,\n requestBadPort,\n requestCurrentURL,\n responseURL,\n responseLocationURL,\n isBlobLike,\n isURLPotentiallyTrustworthy,\n isValidReasonPhrase,\n sameOrigin,\n normalizeMethod,\n serializeJavascriptValueToJSONString,\n makeIterator,\n isValidHeaderName: isValidHeaderName2,\n isValidHeaderValue,\n hasOwn,\n isErrorLike,\n fullyReadBody,\n bytesMatch,\n isReadableStreamLike,\n readableStreamClose,\n isomorphicEncode,\n isomorphicDecode,\n urlIsLocal,\n urlHasHttpsScheme,\n urlIsHttpHttpsScheme,\n readAllBytes\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/webidl.js\nvar require_webidl = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/webidl.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { types } = require("util");\n var { hasOwn, toUSVString } = require_util2();\n var webidl = {};\n webidl.converters = {};\n webidl.util = {};\n webidl.errors = {};\n webidl.errors.exception = function(message) {\n return new TypeError(`${message.header}: ${message.message}`);\n };\n webidl.errors.conversionFailed = function(context) {\n const plural = context.types.length === 1 ? "" : " one of";\n const message = `${context.argument} could not be converted to${plural}: ${context.types.join(", ")}.`;\n return webidl.errors.exception({\n header: context.prefix,\n message\n });\n };\n webidl.errors.invalidArgument = function(context) {\n return webidl.errors.exception({\n header: context.prefix,\n message: `"${context.value}" is an invalid ${context.type}.`\n });\n };\n webidl.brandCheck = function(V, I, opts = void 0) {\n if (opts?.strict !== false && !(V instanceof I)) {\n throw new TypeError("Illegal invocation");\n } else {\n return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag];\n }\n };\n webidl.argumentLengthCheck = function({ length }, min, ctx) {\n if (length < min) {\n throw webidl.errors.exception({\n message: `${min} argument${min !== 1 ? "s" : ""} required, but${length ? " only" : ""} ${length} found.`,\n ...ctx\n });\n }\n };\n webidl.illegalConstructor = function() {\n throw webidl.errors.exception({\n header: "TypeError",\n message: "Illegal constructor"\n });\n };\n webidl.util.Type = function(V) {\n switch (typeof V) {\n case "undefined":\n return "Undefined";\n case "boolean":\n return "Boolean";\n case "string":\n return "String";\n case "symbol":\n return "Symbol";\n case "number":\n return "Number";\n case "bigint":\n return "BigInt";\n case "function":\n case "object": {\n if (V === null) {\n return "Null";\n }\n return "Object";\n }\n }\n };\n webidl.util.ConvertToInt = function(V, bitLength, signedness, opts = {}) {\n let upperBound;\n let lowerBound;\n if (bitLength === 64) {\n upperBound = Math.pow(2, 53) - 1;\n if (signedness === "unsigned") {\n lowerBound = 0;\n } else {\n lowerBound = Math.pow(-2, 53) + 1;\n }\n } else if (signedness === "unsigned") {\n lowerBound = 0;\n upperBound = Math.pow(2, bitLength) - 1;\n } else {\n lowerBound = Math.pow(-2, bitLength) - 1;\n upperBound = Math.pow(2, bitLength - 1) - 1;\n }\n let x = Number(V);\n if (x === 0) {\n x = 0;\n }\n if (opts.enforceRange === true) {\n if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {\n throw webidl.errors.exception({\n header: "Integer conversion",\n message: `Could not convert ${V} to an integer.`\n });\n }\n x = webidl.util.IntegerPart(x);\n if (x < lowerBound || x > upperBound) {\n throw webidl.errors.exception({\n header: "Integer conversion",\n message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n });\n }\n return x;\n }\n if (!Number.isNaN(x) && opts.clamp === true) {\n x = Math.min(Math.max(x, lowerBound), upperBound);\n if (Math.floor(x) % 2 === 0) {\n x = Math.floor(x);\n } else {\n x = Math.ceil(x);\n }\n return x;\n }\n if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {\n return 0;\n }\n x = webidl.util.IntegerPart(x);\n x = x % Math.pow(2, bitLength);\n if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) {\n return x - Math.pow(2, bitLength);\n }\n return x;\n };\n webidl.util.IntegerPart = function(n) {\n const r = Math.floor(Math.abs(n));\n if (n < 0) {\n return -1 * r;\n }\n return r;\n };\n webidl.sequenceConverter = function(converter) {\n return (V) => {\n if (webidl.util.Type(V) !== "Object") {\n throw webidl.errors.exception({\n header: "Sequence",\n message: `Value of type ${webidl.util.Type(V)} is not an Object.`\n });\n }\n const method = V?.[Symbol.iterator]?.();\n const seq = [];\n if (method === void 0 || typeof method.next !== "function") {\n throw webidl.errors.exception({\n header: "Sequence",\n message: "Object is not an iterator."\n });\n }\n while (true) {\n const { done, value } = method.next();\n if (done) {\n break;\n }\n seq.push(converter(value));\n }\n return seq;\n };\n };\n webidl.recordConverter = function(keyConverter, valueConverter) {\n return (O) => {\n if (webidl.util.Type(O) !== "Object") {\n throw webidl.errors.exception({\n header: "Record",\n message: `Value of type ${webidl.util.Type(O)} is not an Object.`\n });\n }\n const result = {};\n if (!types.isProxy(O)) {\n const keys2 = Object.keys(O);\n for (const key of keys2) {\n const typedKey = keyConverter(key);\n const typedValue = valueConverter(O[key]);\n result[typedKey] = typedValue;\n }\n return result;\n }\n const keys = Reflect.ownKeys(O);\n for (const key of keys) {\n const desc = Reflect.getOwnPropertyDescriptor(O, key);\n if (desc?.enumerable) {\n const typedKey = keyConverter(key);\n const typedValue = valueConverter(O[key]);\n result[typedKey] = typedValue;\n }\n }\n return result;\n };\n };\n webidl.interfaceConverter = function(i) {\n return (V, opts = {}) => {\n if (opts.strict !== false && !(V instanceof i)) {\n throw webidl.errors.exception({\n header: i.name,\n message: `Expected ${V} to be an instance of ${i.name}.`\n });\n }\n return V;\n };\n };\n webidl.dictionaryConverter = function(converters) {\n return (dictionary) => {\n const type = webidl.util.Type(dictionary);\n const dict = {};\n if (type === "Null" || type === "Undefined") {\n return dict;\n } else if (type !== "Object") {\n throw webidl.errors.exception({\n header: "Dictionary",\n message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n });\n }\n for (const options of converters) {\n const { key, defaultValue, required, converter } = options;\n if (required === true) {\n if (!hasOwn(dictionary, key)) {\n throw webidl.errors.exception({\n header: "Dictionary",\n message: `Missing required key "${key}".`\n });\n }\n }\n let value = dictionary[key];\n const hasDefault = hasOwn(options, "defaultValue");\n if (hasDefault && value !== null) {\n value = value ?? defaultValue;\n }\n if (required || hasDefault || value !== void 0) {\n value = converter(value);\n if (options.allowedValues && !options.allowedValues.includes(value)) {\n throw webidl.errors.exception({\n header: "Dictionary",\n message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.`\n });\n }\n dict[key] = value;\n }\n }\n return dict;\n };\n };\n webidl.nullableConverter = function(converter) {\n return (V) => {\n if (V === null) {\n return V;\n }\n return converter(V);\n };\n };\n webidl.converters.DOMString = function(V, opts = {}) {\n if (V === null && opts.legacyNullToEmptyString) {\n return "";\n }\n if (typeof V === "symbol") {\n throw new TypeError("Could not convert argument of type symbol to string.");\n }\n return String(V);\n };\n webidl.converters.ByteString = function(V) {\n const x = webidl.converters.DOMString(V);\n for (let index = 0; index < x.length; index++) {\n const charCode = x.charCodeAt(index);\n if (charCode > 255) {\n throw new TypeError(\n `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${charCode} which is greater than 255.`\n );\n }\n }\n return x;\n };\n webidl.converters.USVString = toUSVString;\n webidl.converters.boolean = function(V) {\n const x = Boolean(V);\n return x;\n };\n webidl.converters.any = function(V) {\n return V;\n };\n webidl.converters["long long"] = function(V) {\n const x = webidl.util.ConvertToInt(V, 64, "signed");\n return x;\n };\n webidl.converters["unsigned long long"] = function(V) {\n const x = webidl.util.ConvertToInt(V, 64, "unsigned");\n return x;\n };\n webidl.converters["unsigned long"] = function(V) {\n const x = webidl.util.ConvertToInt(V, 32, "unsigned");\n return x;\n };\n webidl.converters["unsigned short"] = function(V, opts) {\n const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts);\n return x;\n };\n webidl.converters.ArrayBuffer = function(V, opts = {}) {\n if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) {\n throw webidl.errors.conversionFailed({\n prefix: `${V}`,\n argument: `${V}`,\n types: ["ArrayBuffer"]\n });\n }\n if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {\n throw webidl.errors.exception({\n header: "ArrayBuffer",\n message: "SharedArrayBuffer is not allowed."\n });\n }\n return V;\n };\n webidl.converters.TypedArray = function(V, T, opts = {}) {\n if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) {\n throw webidl.errors.conversionFailed({\n prefix: `${T.name}`,\n argument: `${V}`,\n types: [T.name]\n });\n }\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: "ArrayBuffer",\n message: "SharedArrayBuffer is not allowed."\n });\n }\n return V;\n };\n webidl.converters.DataView = function(V, opts = {}) {\n if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) {\n throw webidl.errors.exception({\n header: "DataView",\n message: "Object is not a DataView."\n });\n }\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: "ArrayBuffer",\n message: "SharedArrayBuffer is not allowed."\n });\n }\n return V;\n };\n webidl.converters.BufferSource = function(V, opts = {}) {\n if (types.isAnyArrayBuffer(V)) {\n return webidl.converters.ArrayBuffer(V, opts);\n }\n if (types.isTypedArray(V)) {\n return webidl.converters.TypedArray(V, V.constructor);\n }\n if (types.isDataView(V)) {\n return webidl.converters.DataView(V, opts);\n }\n throw new TypeError(`Could not convert ${V} to a BufferSource.`);\n };\n webidl.converters["sequence"] = webidl.sequenceConverter(\n webidl.converters.ByteString\n );\n webidl.converters["sequence>"] = webidl.sequenceConverter(\n webidl.converters["sequence"]\n );\n webidl.converters["record"] = webidl.recordConverter(\n webidl.converters.ByteString,\n webidl.converters.ByteString\n );\n module2.exports = {\n webidl\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/headers.js\nvar require_headers = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/headers.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { kHeadersList } = require_symbols2();\n var { kGuard: kGuard2 } = require_symbols();\n var { kEnumerableProperty } = require_util();\n var {\n makeIterator,\n isValidHeaderName: isValidHeaderName2,\n isValidHeaderValue\n } = require_util2();\n var { webidl } = require_webidl();\n var assert = require("assert");\n var kHeadersMap = Symbol("headers map");\n var kHeadersSortedMap = Symbol("headers map sorted");\n function headerValueNormalize(potentialValue) {\n let i = potentialValue.length;\n while (/[\\r\\n\\t ]/.test(potentialValue.charAt(--i)))\n ;\n return potentialValue.slice(0, i + 1).replace(/^[\\r\\n\\t ]+/, "");\n }\n __name(headerValueNormalize, "headerValueNormalize");\n function fill(headers, object) {\n if (Array.isArray(object)) {\n for (const header of object) {\n if (header.length !== 2) {\n throw webidl.errors.exception({\n header: "Headers constructor",\n message: `expected name/value pair to be length 2, found ${header.length}.`\n });\n }\n headers.append(header[0], header[1]);\n }\n } else if (typeof object === "object" && object !== null) {\n for (const [key, value] of Object.entries(object)) {\n headers.append(key, value);\n }\n } else {\n throw webidl.errors.conversionFailed({\n prefix: "Headers constructor",\n argument: "Argument 1",\n types: ["sequence>", "record"]\n });\n }\n }\n __name(fill, "fill");\n var _HeadersList = class _HeadersList {\n /** @type {[string, string][]|null} */\n cookies = null;\n constructor(init) {\n if (init instanceof _HeadersList) {\n this[kHeadersMap] = new Map(init[kHeadersMap]);\n this[kHeadersSortedMap] = init[kHeadersSortedMap];\n this.cookies = init.cookies;\n } else {\n this[kHeadersMap] = new Map(init);\n this[kHeadersSortedMap] = null;\n }\n }\n // https://fetch.spec.whatwg.org/#header-list-contains\n contains(name) {\n name = name.toLowerCase();\n return this[kHeadersMap].has(name);\n }\n clear() {\n this[kHeadersMap].clear();\n this[kHeadersSortedMap] = null;\n this.cookies = null;\n }\n // https://fetch.spec.whatwg.org/#concept-header-list-append\n append(name, value) {\n this[kHeadersSortedMap] = null;\n const lowercaseName = name.toLowerCase();\n const exists = this[kHeadersMap].get(lowercaseName);\n if (exists) {\n const delimiter = lowercaseName === "cookie" ? "; " : ", ";\n this[kHeadersMap].set(lowercaseName, {\n name: exists.name,\n value: `${exists.value}${delimiter}${value}`\n });\n } else {\n this[kHeadersMap].set(lowercaseName, { name, value });\n }\n if (lowercaseName === "set-cookie") {\n this.cookies ??= [];\n this.cookies.push(value);\n }\n }\n // https://fetch.spec.whatwg.org/#concept-header-list-set\n set(name, value) {\n this[kHeadersSortedMap] = null;\n const lowercaseName = name.toLowerCase();\n if (lowercaseName === "set-cookie") {\n this.cookies = [value];\n }\n return this[kHeadersMap].set(lowercaseName, { name, value });\n }\n // https://fetch.spec.whatwg.org/#concept-header-list-delete\n delete(name) {\n this[kHeadersSortedMap] = null;\n name = name.toLowerCase();\n if (name === "set-cookie") {\n this.cookies = null;\n }\n return this[kHeadersMap].delete(name);\n }\n // https://fetch.spec.whatwg.org/#concept-header-list-get\n get(name) {\n if (!this.contains(name)) {\n return null;\n }\n return this[kHeadersMap].get(name.toLowerCase())?.value ?? null;\n }\n *[Symbol.iterator]() {\n for (const [name, { value }] of this[kHeadersMap]) {\n yield [name, value];\n }\n }\n get entries() {\n const headers = {};\n if (this[kHeadersMap].size) {\n for (const { name, value } of this[kHeadersMap].values()) {\n headers[name] = value;\n }\n }\n return headers;\n }\n };\n __name(_HeadersList, "HeadersList");\n var HeadersList = _HeadersList;\n var _Headers = class _Headers {\n constructor(init = void 0) {\n this[kHeadersList] = new HeadersList();\n this[kGuard2] = "none";\n if (init !== void 0) {\n init = webidl.converters.HeadersInit(init);\n fill(this, init);\n }\n }\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append(name, value) {\n webidl.brandCheck(this, _Headers);\n webidl.argumentLengthCheck(arguments, 2, { header: "Headers.append" });\n name = webidl.converters.ByteString(name);\n value = webidl.converters.ByteString(value);\n value = headerValueNormalize(value);\n if (!isValidHeaderName2(name)) {\n throw webidl.errors.invalidArgument({\n prefix: "Headers.append",\n value: name,\n type: "header name"\n });\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: "Headers.append",\n value,\n type: "header value"\n });\n }\n if (this[kGuard2] === "immutable") {\n throw new TypeError("immutable");\n } else if (this[kGuard2] === "request-no-cors") {\n }\n return this[kHeadersList].append(name, value);\n }\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete(name) {\n webidl.brandCheck(this, _Headers);\n webidl.argumentLengthCheck(arguments, 1, { header: "Headers.delete" });\n name = webidl.converters.ByteString(name);\n if (!isValidHeaderName2(name)) {\n throw webidl.errors.invalidArgument({\n prefix: "Headers.delete",\n value: name,\n type: "header name"\n });\n }\n if (this[kGuard2] === "immutable") {\n throw new TypeError("immutable");\n } else if (this[kGuard2] === "request-no-cors") {\n }\n if (!this[kHeadersList].contains(name)) {\n return;\n }\n return this[kHeadersList].delete(name);\n }\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get(name) {\n webidl.brandCheck(this, _Headers);\n webidl.argumentLengthCheck(arguments, 1, { header: "Headers.get" });\n name = webidl.converters.ByteString(name);\n if (!isValidHeaderName2(name)) {\n throw webidl.errors.invalidArgument({\n prefix: "Headers.get",\n value: name,\n type: "header name"\n });\n }\n return this[kHeadersList].get(name);\n }\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has(name) {\n webidl.brandCheck(this, _Headers);\n webidl.argumentLengthCheck(arguments, 1, { header: "Headers.has" });\n name = webidl.converters.ByteString(name);\n if (!isValidHeaderName2(name)) {\n throw webidl.errors.invalidArgument({\n prefix: "Headers.has",\n value: name,\n type: "header name"\n });\n }\n return this[kHeadersList].contains(name);\n }\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set(name, value) {\n webidl.brandCheck(this, _Headers);\n webidl.argumentLengthCheck(arguments, 2, { header: "Headers.set" });\n name = webidl.converters.ByteString(name);\n value = webidl.converters.ByteString(value);\n value = headerValueNormalize(value);\n if (!isValidHeaderName2(name)) {\n throw webidl.errors.invalidArgument({\n prefix: "Headers.set",\n value: name,\n type: "header name"\n });\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: "Headers.set",\n value,\n type: "header value"\n });\n }\n if (this[kGuard2] === "immutable") {\n throw new TypeError("immutable");\n } else if (this[kGuard2] === "request-no-cors") {\n }\n return this[kHeadersList].set(name, value);\n }\n // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n getSetCookie() {\n webidl.brandCheck(this, _Headers);\n const list = this[kHeadersList].cookies;\n if (list) {\n return [...list];\n }\n return [];\n }\n // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n get [kHeadersSortedMap]() {\n if (this[kHeadersList][kHeadersSortedMap]) {\n return this[kHeadersList][kHeadersSortedMap];\n }\n const headers = [];\n const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1);\n const cookies = this[kHeadersList].cookies;\n for (const [name, value] of names) {\n if (name === "set-cookie") {\n for (const value2 of cookies) {\n headers.push([name, value2]);\n }\n } else {\n assert(value !== null);\n headers.push([name, value]);\n }\n }\n this[kHeadersList][kHeadersSortedMap] = headers;\n return headers;\n }\n keys() {\n webidl.brandCheck(this, _Headers);\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n "Headers",\n "key"\n );\n }\n values() {\n webidl.brandCheck(this, _Headers);\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n "Headers",\n "value"\n );\n }\n entries() {\n webidl.brandCheck(this, _Headers);\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n "Headers",\n "key+value"\n );\n }\n /**\n * @param {(value: string, key: string, self: Headers) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach(callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, _Headers);\n webidl.argumentLengthCheck(arguments, 1, { header: "Headers.forEach" });\n if (typeof callbackFn !== "function") {\n throw new TypeError(\n "Failed to execute \'forEach\' on \'Headers\': parameter 1 is not of type \'Function\'."\n );\n }\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this]);\n }\n }\n [Symbol.for("nodejs.util.inspect.custom")]() {\n webidl.brandCheck(this, _Headers);\n return this[kHeadersList];\n }\n };\n __name(_Headers, "Headers");\n var Headers3 = _Headers;\n Headers3.prototype[Symbol.iterator] = Headers3.prototype.entries;\n Object.defineProperties(Headers3.prototype, {\n append: kEnumerableProperty,\n delete: kEnumerableProperty,\n get: kEnumerableProperty,\n has: kEnumerableProperty,\n set: kEnumerableProperty,\n getSetCookie: kEnumerableProperty,\n keys: kEnumerableProperty,\n values: kEnumerableProperty,\n entries: kEnumerableProperty,\n forEach: kEnumerableProperty,\n [Symbol.iterator]: { enumerable: false },\n [Symbol.toStringTag]: {\n value: "Headers",\n configurable: true\n }\n });\n webidl.converters.HeadersInit = function(V) {\n if (webidl.util.Type(V) === "Object") {\n if (V[Symbol.iterator]) {\n return webidl.converters["sequence>"](V);\n }\n return webidl.converters["record"](V);\n }\n throw webidl.errors.conversionFailed({\n prefix: "Headers constructor",\n argument: "Argument 1",\n types: ["sequence>", "record"]\n });\n };\n module2.exports = {\n fill,\n Headers: Headers3,\n HeadersList\n };\n }\n});\n\n// ../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/utils.js\nvar require_utils = __commonJS({\n "../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/utils.js"(exports2, module2) {\n "use strict";\n init_define_process();\n function parseContentType(str) {\n if (str.length === 0)\n return;\n const params = /* @__PURE__ */ Object.create(null);\n let i = 0;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (TOKEN[code] !== 1) {\n if (code !== 47 || i === 0)\n return;\n break;\n }\n }\n if (i === str.length)\n return;\n const type = str.slice(0, i).toLowerCase();\n const subtypeStart = ++i;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (TOKEN[code] !== 1) {\n if (i === subtypeStart)\n return;\n if (parseContentTypeParams(str, i, params) === void 0)\n return;\n break;\n }\n }\n if (i === subtypeStart)\n return;\n const subtype = str.slice(subtypeStart, i).toLowerCase();\n return { type, subtype, params };\n }\n __name(parseContentType, "parseContentType");\n function parseContentTypeParams(str, i, params) {\n while (i < str.length) {\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (code !== 32 && code !== 9)\n break;\n }\n if (i === str.length)\n break;\n if (str.charCodeAt(i++) !== 59)\n return;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (code !== 32 && code !== 9)\n break;\n }\n if (i === str.length)\n return;\n let name;\n const nameStart = i;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (TOKEN[code] !== 1) {\n if (code !== 61)\n return;\n break;\n }\n }\n if (i === str.length)\n return;\n name = str.slice(nameStart, i);\n ++i;\n if (i === str.length)\n return;\n let value = "";\n let valueStart;\n if (str.charCodeAt(i) === 34) {\n valueStart = ++i;\n let escaping = false;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (code === 92) {\n if (escaping) {\n valueStart = i;\n escaping = false;\n } else {\n value += str.slice(valueStart, i);\n escaping = true;\n }\n continue;\n }\n if (code === 34) {\n if (escaping) {\n valueStart = i;\n escaping = false;\n continue;\n }\n value += str.slice(valueStart, i);\n break;\n }\n if (escaping) {\n valueStart = i - 1;\n escaping = false;\n }\n if (QDTEXT[code] !== 1)\n return;\n }\n if (i === str.length)\n return;\n ++i;\n } else {\n valueStart = i;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (TOKEN[code] !== 1) {\n if (i === valueStart)\n return;\n break;\n }\n }\n value = str.slice(valueStart, i);\n }\n name = name.toLowerCase();\n if (params[name] === void 0)\n params[name] = value;\n }\n return params;\n }\n __name(parseContentTypeParams, "parseContentTypeParams");\n function parseDisposition(str, defDecoder) {\n if (str.length === 0)\n return;\n const params = /* @__PURE__ */ Object.create(null);\n let i = 0;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (TOKEN[code] !== 1) {\n if (parseDispositionParams(str, i, params, defDecoder) === void 0)\n return;\n break;\n }\n }\n const type = str.slice(0, i).toLowerCase();\n return { type, params };\n }\n __name(parseDisposition, "parseDisposition");\n function parseDispositionParams(str, i, params, defDecoder) {\n while (i < str.length) {\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (code !== 32 && code !== 9)\n break;\n }\n if (i === str.length)\n break;\n if (str.charCodeAt(i++) !== 59)\n return;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (code !== 32 && code !== 9)\n break;\n }\n if (i === str.length)\n return;\n let name;\n const nameStart = i;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (TOKEN[code] !== 1) {\n if (code === 61)\n break;\n return;\n }\n }\n if (i === str.length)\n return;\n let value = "";\n let valueStart;\n let charset;\n name = str.slice(nameStart, i);\n if (name.charCodeAt(name.length - 1) === 42) {\n const charsetStart = ++i;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (CHARSET[code] !== 1) {\n if (code !== 39)\n return;\n break;\n }\n }\n if (i === str.length)\n return;\n charset = str.slice(charsetStart, i);\n ++i;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (code === 39)\n break;\n }\n if (i === str.length)\n return;\n ++i;\n if (i === str.length)\n return;\n valueStart = i;\n let encode = 0;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (EXTENDED_VALUE[code] !== 1) {\n if (code === 37) {\n let hexUpper;\n let hexLower;\n if (i + 2 < str.length && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1 && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) {\n const byteVal = (hexUpper << 4) + hexLower;\n value += str.slice(valueStart, i);\n value += String.fromCharCode(byteVal);\n i += 2;\n valueStart = i + 1;\n if (byteVal >= 128)\n encode = 2;\n else if (encode === 0)\n encode = 1;\n continue;\n }\n return;\n }\n break;\n }\n }\n value += str.slice(valueStart, i);\n value = convertToUTF8(value, charset, encode);\n if (value === void 0)\n return;\n } else {\n ++i;\n if (i === str.length)\n return;\n if (str.charCodeAt(i) === 34) {\n valueStart = ++i;\n let escaping = false;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (code === 92) {\n if (escaping) {\n valueStart = i;\n escaping = false;\n } else {\n value += str.slice(valueStart, i);\n escaping = true;\n }\n continue;\n }\n if (code === 34) {\n if (escaping) {\n valueStart = i;\n escaping = false;\n continue;\n }\n value += str.slice(valueStart, i);\n break;\n }\n if (escaping) {\n valueStart = i - 1;\n escaping = false;\n }\n if (QDTEXT[code] !== 1)\n return;\n }\n if (i === str.length)\n return;\n ++i;\n } else {\n valueStart = i;\n for (; i < str.length; ++i) {\n const code = str.charCodeAt(i);\n if (TOKEN[code] !== 1) {\n if (i === valueStart)\n return;\n break;\n }\n }\n value = str.slice(valueStart, i);\n }\n value = defDecoder(value, 2);\n if (value === void 0)\n return;\n }\n name = name.toLowerCase();\n if (params[name] === void 0)\n params[name] = value;\n }\n return params;\n }\n __name(parseDispositionParams, "parseDispositionParams");\n function getDecoder(charset) {\n let lc;\n while (true) {\n switch (charset) {\n case "utf-8":\n case "utf8":\n return decoders.utf8;\n case "latin1":\n case "ascii":\n case "us-ascii":\n case "iso-8859-1":\n case "iso8859-1":\n case "iso88591":\n case "iso_8859-1":\n case "windows-1252":\n case "iso_8859-1:1987":\n case "cp1252":\n case "x-cp1252":\n return decoders.latin1;\n case "utf16le":\n case "utf-16le":\n case "ucs2":\n case "ucs-2":\n return decoders.utf16le;\n case "base64":\n return decoders.base64;\n default:\n if (lc === void 0) {\n lc = true;\n charset = charset.toLowerCase();\n continue;\n }\n return decoders.other.bind(charset);\n }\n }\n }\n __name(getDecoder, "getDecoder");\n var decoders = {\n utf8: (data, hint) => {\n if (data.length === 0)\n return "";\n if (typeof data === "string") {\n if (hint < 2)\n return data;\n data = Buffer.from(data, "latin1");\n }\n return data.utf8Slice(0, data.length);\n },\n latin1: (data, hint) => {\n if (data.length === 0)\n return "";\n if (typeof data === "string")\n return data;\n return data.latin1Slice(0, data.length);\n },\n utf16le: (data, hint) => {\n if (data.length === 0)\n return "";\n if (typeof data === "string")\n data = Buffer.from(data, "latin1");\n return data.ucs2Slice(0, data.length);\n },\n base64: (data, hint) => {\n if (data.length === 0)\n return "";\n if (typeof data === "string")\n data = Buffer.from(data, "latin1");\n return data.base64Slice(0, data.length);\n },\n other: (data, hint) => {\n if (data.length === 0)\n return "";\n if (typeof data === "string")\n data = Buffer.from(data, "latin1");\n try {\n const decoder = new TextDecoder(exports2);\n return decoder.decode(data);\n } catch {\n }\n }\n };\n function convertToUTF8(data, charset, hint) {\n const decode = getDecoder(charset);\n if (decode)\n return decode(data, hint);\n }\n __name(convertToUTF8, "convertToUTF8");\n function basename(path) {\n if (typeof path !== "string")\n return "";\n for (let i = path.length - 1; i >= 0; --i) {\n switch (path.charCodeAt(i)) {\n case 47:\n case 92:\n path = path.slice(i + 1);\n return path === ".." || path === "." ? "" : path;\n }\n }\n return path === ".." || path === "." ? "" : path;\n }\n __name(basename, "basename");\n var TOKEN = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 1,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 1,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var QDTEXT = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1\n ];\n var CHARSET = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 1,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var EXTENDED_VALUE = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 1,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var HEX_VALUES = [\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1\n ];\n module2.exports = {\n basename,\n convertToUTF8,\n getDecoder,\n parseContentType,\n parseDisposition\n };\n }\n});\n\n// ../../node_modules/.pnpm/streamsearch@1.1.0/node_modules/streamsearch/lib/sbmh.js\nvar require_sbmh = __commonJS({\n "../../node_modules/.pnpm/streamsearch@1.1.0/node_modules/streamsearch/lib/sbmh.js"(exports2, module2) {\n "use strict";\n init_define_process();\n function memcmp(buf1, pos1, buf2, pos2, num) {\n for (let i = 0; i < num; ++i) {\n if (buf1[pos1 + i] !== buf2[pos2 + i])\n return false;\n }\n return true;\n }\n __name(memcmp, "memcmp");\n var _SBMH = class _SBMH {\n constructor(needle, cb) {\n if (typeof cb !== "function")\n throw new Error("Missing match callback");\n if (typeof needle === "string")\n needle = Buffer.from(needle);\n else if (!Buffer.isBuffer(needle))\n throw new Error(`Expected Buffer for needle, got ${typeof needle}`);\n const needleLen = needle.length;\n this.maxMatches = Infinity;\n this.matches = 0;\n this._cb = cb;\n this._lookbehindSize = 0;\n this._needle = needle;\n this._bufPos = 0;\n this._lookbehind = Buffer.allocUnsafe(needleLen);\n this._occ = [\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen,\n needleLen\n ];\n if (needleLen > 1) {\n for (let i = 0; i < needleLen - 1; ++i)\n this._occ[needle[i]] = needleLen - 1 - i;\n }\n }\n reset() {\n this.matches = 0;\n this._lookbehindSize = 0;\n this._bufPos = 0;\n }\n push(chunk, pos) {\n let result;\n if (!Buffer.isBuffer(chunk))\n chunk = Buffer.from(chunk, "latin1");\n const chunkLen = chunk.length;\n this._bufPos = pos || 0;\n while (result !== chunkLen && this.matches < this.maxMatches)\n result = feed(this, chunk);\n return result;\n }\n destroy() {\n const lbSize = this._lookbehindSize;\n if (lbSize)\n this._cb(false, this._lookbehind, 0, lbSize, false);\n this.reset();\n }\n };\n __name(_SBMH, "SBMH");\n var SBMH = _SBMH;\n function feed(self, data) {\n const len = data.length;\n const needle = self._needle;\n const needleLen = needle.length;\n let pos = -self._lookbehindSize;\n const lastNeedleCharPos = needleLen - 1;\n const lastNeedleChar = needle[lastNeedleCharPos];\n const end = len - needleLen;\n const occ = self._occ;\n const lookbehind = self._lookbehind;\n if (pos < 0) {\n while (pos < 0 && pos <= end) {\n const nextPos = pos + lastNeedleCharPos;\n const ch = nextPos < 0 ? lookbehind[self._lookbehindSize + nextPos] : data[nextPos];\n if (ch === lastNeedleChar && matchNeedle(self, data, pos, lastNeedleCharPos)) {\n self._lookbehindSize = 0;\n ++self.matches;\n if (pos > -self._lookbehindSize)\n self._cb(true, lookbehind, 0, self._lookbehindSize + pos, false);\n else\n self._cb(true, void 0, 0, 0, true);\n return self._bufPos = pos + needleLen;\n }\n pos += occ[ch];\n }\n while (pos < 0 && !matchNeedle(self, data, pos, len - pos))\n ++pos;\n if (pos < 0) {\n const bytesToCutOff = self._lookbehindSize + pos;\n if (bytesToCutOff > 0) {\n self._cb(false, lookbehind, 0, bytesToCutOff, false);\n }\n self._lookbehindSize -= bytesToCutOff;\n lookbehind.copy(lookbehind, 0, bytesToCutOff, self._lookbehindSize);\n lookbehind.set(data, self._lookbehindSize);\n self._lookbehindSize += len;\n self._bufPos = len;\n return len;\n }\n self._cb(false, lookbehind, 0, self._lookbehindSize, false);\n self._lookbehindSize = 0;\n }\n pos += self._bufPos;\n const firstNeedleChar = needle[0];\n while (pos <= end) {\n const ch = data[pos + lastNeedleCharPos];\n if (ch === lastNeedleChar && data[pos] === firstNeedleChar && memcmp(needle, 0, data, pos, lastNeedleCharPos)) {\n ++self.matches;\n if (pos > 0)\n self._cb(true, data, self._bufPos, pos, true);\n else\n self._cb(true, void 0, 0, 0, true);\n return self._bufPos = pos + needleLen;\n }\n pos += occ[ch];\n }\n while (pos < len) {\n if (data[pos] !== firstNeedleChar || !memcmp(data, pos, needle, 0, len - pos)) {\n ++pos;\n continue;\n }\n data.copy(lookbehind, 0, pos, len);\n self._lookbehindSize = len - pos;\n break;\n }\n if (pos > 0)\n self._cb(false, data, self._bufPos, pos < len ? pos : len, true);\n self._bufPos = len;\n return len;\n }\n __name(feed, "feed");\n function matchNeedle(self, data, pos, len) {\n const lb = self._lookbehind;\n const lbSize = self._lookbehindSize;\n const needle = self._needle;\n for (let i = 0; i < len; ++i, ++pos) {\n const ch = pos < 0 ? lb[lbSize + pos] : data[pos];\n if (ch !== needle[i])\n return false;\n }\n return true;\n }\n __name(matchNeedle, "matchNeedle");\n module2.exports = SBMH;\n }\n});\n\n// ../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/multipart.js\nvar require_multipart = __commonJS({\n "../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/multipart.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { Readable, Writable } = require("stream");\n var StreamSearch = require_sbmh();\n var {\n basename,\n convertToUTF8,\n getDecoder,\n parseContentType,\n parseDisposition\n } = require_utils();\n var BUF_CRLF = Buffer.from("\\r\\n");\n var BUF_CR = Buffer.from("\\r");\n var BUF_DASH = Buffer.from("-");\n function noop() {\n }\n __name(noop, "noop");\n var MAX_HEADER_PAIRS = 2e3;\n var MAX_HEADER_SIZE = 16 * 1024;\n var HPARSER_NAME = 0;\n var HPARSER_PRE_OWS = 1;\n var HPARSER_VALUE = 2;\n var _HeaderParser = class _HeaderParser {\n constructor(cb) {\n this.header = /* @__PURE__ */ Object.create(null);\n this.pairCount = 0;\n this.byteCount = 0;\n this.state = HPARSER_NAME;\n this.name = "";\n this.value = "";\n this.crlf = 0;\n this.cb = cb;\n }\n reset() {\n this.header = /* @__PURE__ */ Object.create(null);\n this.pairCount = 0;\n this.byteCount = 0;\n this.state = HPARSER_NAME;\n this.name = "";\n this.value = "";\n this.crlf = 0;\n }\n push(chunk, pos, end) {\n let start = pos;\n while (pos < end) {\n switch (this.state) {\n case HPARSER_NAME: {\n let done = false;\n for (; pos < end; ++pos) {\n if (this.byteCount === MAX_HEADER_SIZE)\n return -1;\n ++this.byteCount;\n const code = chunk[pos];\n if (TOKEN[code] !== 1) {\n if (code !== 58)\n return -1;\n this.name += chunk.latin1Slice(start, pos);\n if (this.name.length === 0)\n return -1;\n ++pos;\n done = true;\n this.state = HPARSER_PRE_OWS;\n break;\n }\n }\n if (!done) {\n this.name += chunk.latin1Slice(start, pos);\n break;\n }\n }\n case HPARSER_PRE_OWS: {\n let done = false;\n for (; pos < end; ++pos) {\n if (this.byteCount === MAX_HEADER_SIZE)\n return -1;\n ++this.byteCount;\n const code = chunk[pos];\n if (code !== 32 && code !== 9) {\n start = pos;\n done = true;\n this.state = HPARSER_VALUE;\n break;\n }\n }\n if (!done)\n break;\n }\n case HPARSER_VALUE:\n switch (this.crlf) {\n case 0:\n for (; pos < end; ++pos) {\n if (this.byteCount === MAX_HEADER_SIZE)\n return -1;\n ++this.byteCount;\n const code = chunk[pos];\n if (FIELD_VCHAR[code] !== 1) {\n if (code !== 13)\n return -1;\n ++this.crlf;\n break;\n }\n }\n this.value += chunk.latin1Slice(start, pos++);\n break;\n case 1:\n if (this.byteCount === MAX_HEADER_SIZE)\n return -1;\n ++this.byteCount;\n if (chunk[pos++] !== 10)\n return -1;\n ++this.crlf;\n break;\n case 2: {\n if (this.byteCount === MAX_HEADER_SIZE)\n return -1;\n ++this.byteCount;\n const code = chunk[pos];\n if (code === 32 || code === 9) {\n start = pos;\n this.crlf = 0;\n } else {\n if (++this.pairCount < MAX_HEADER_PAIRS) {\n this.name = this.name.toLowerCase();\n if (this.header[this.name] === void 0)\n this.header[this.name] = [this.value];\n else\n this.header[this.name].push(this.value);\n }\n if (code === 13) {\n ++this.crlf;\n ++pos;\n } else {\n start = pos;\n this.crlf = 0;\n this.state = HPARSER_NAME;\n this.name = "";\n this.value = "";\n }\n }\n break;\n }\n case 3: {\n if (this.byteCount === MAX_HEADER_SIZE)\n return -1;\n ++this.byteCount;\n if (chunk[pos++] !== 10)\n return -1;\n const header = this.header;\n this.reset();\n this.cb(header);\n return pos;\n }\n }\n break;\n }\n }\n return pos;\n }\n };\n __name(_HeaderParser, "HeaderParser");\n var HeaderParser = _HeaderParser;\n var _FileStream = class _FileStream extends Readable {\n constructor(opts, owner) {\n super(opts);\n this.truncated = false;\n this._readcb = null;\n this.once("end", () => {\n this._read();\n if (--owner._fileEndsLeft === 0 && owner._finalcb) {\n const cb = owner._finalcb;\n owner._finalcb = null;\n define_process_default.nextTick(cb);\n }\n });\n }\n _read(n) {\n const cb = this._readcb;\n if (cb) {\n this._readcb = null;\n cb();\n }\n }\n };\n __name(_FileStream, "FileStream");\n var FileStream = _FileStream;\n var ignoreData = {\n push: (chunk, pos) => {\n },\n destroy: () => {\n }\n };\n function callAndUnsetCb(self, err) {\n const cb = self._writecb;\n self._writecb = null;\n if (err)\n self.destroy(err);\n else if (cb)\n cb();\n }\n __name(callAndUnsetCb, "callAndUnsetCb");\n function nullDecoder(val, hint) {\n return val;\n }\n __name(nullDecoder, "nullDecoder");\n var _Multipart = class _Multipart extends Writable {\n constructor(cfg) {\n const streamOpts = {\n autoDestroy: true,\n emitClose: true,\n highWaterMark: typeof cfg.highWaterMark === "number" ? cfg.highWaterMark : void 0\n };\n super(streamOpts);\n if (!cfg.conType.params || typeof cfg.conType.params.boundary !== "string")\n throw new Error("Multipart: Boundary not found");\n const boundary = cfg.conType.params.boundary;\n const paramDecoder = typeof cfg.defParamCharset === "string" && cfg.defParamCharset ? getDecoder(cfg.defParamCharset) : nullDecoder;\n const defCharset = cfg.defCharset || "utf8";\n const preservePath = cfg.preservePath;\n const fileOpts = {\n autoDestroy: true,\n emitClose: true,\n highWaterMark: typeof cfg.fileHwm === "number" ? cfg.fileHwm : void 0\n };\n const limits = cfg.limits;\n const fieldSizeLimit = limits && typeof limits.fieldSize === "number" ? limits.fieldSize : 1 * 1024 * 1024;\n const fileSizeLimit = limits && typeof limits.fileSize === "number" ? limits.fileSize : Infinity;\n const filesLimit = limits && typeof limits.files === "number" ? limits.files : Infinity;\n const fieldsLimit = limits && typeof limits.fields === "number" ? limits.fields : Infinity;\n const partsLimit = limits && typeof limits.parts === "number" ? limits.parts : Infinity;\n let parts = -1;\n let fields = 0;\n let files = 0;\n let skipPart = false;\n this._fileEndsLeft = 0;\n this._fileStream = void 0;\n this._complete = false;\n let fileSize = 0;\n let field;\n let fieldSize = 0;\n let partCharset;\n let partEncoding;\n let partType;\n let partName;\n let partTruncated = false;\n let hitFilesLimit = false;\n let hitFieldsLimit = false;\n this._hparser = null;\n const hparser = new HeaderParser((header) => {\n this._hparser = null;\n skipPart = false;\n partType = "text/plain";\n partCharset = defCharset;\n partEncoding = "7bit";\n partName = void 0;\n partTruncated = false;\n let filename;\n if (!header["content-disposition"]) {\n skipPart = true;\n return;\n }\n const disp = parseDisposition(\n header["content-disposition"][0],\n paramDecoder\n );\n if (!disp || disp.type !== "form-data") {\n skipPart = true;\n return;\n }\n if (disp.params) {\n if (disp.params.name)\n partName = disp.params.name;\n if (disp.params["filename*"])\n filename = disp.params["filename*"];\n else if (disp.params.filename)\n filename = disp.params.filename;\n if (filename !== void 0 && !preservePath)\n filename = basename(filename);\n }\n if (header["content-type"]) {\n const conType = parseContentType(header["content-type"][0]);\n if (conType) {\n partType = `${conType.type}/${conType.subtype}`;\n if (conType.params && typeof conType.params.charset === "string")\n partCharset = conType.params.charset.toLowerCase();\n }\n }\n if (header["content-transfer-encoding"])\n partEncoding = header["content-transfer-encoding"][0].toLowerCase();\n if (partType === "application/octet-stream" || filename !== void 0) {\n if (files === filesLimit) {\n if (!hitFilesLimit) {\n hitFilesLimit = true;\n this.emit("filesLimit");\n }\n skipPart = true;\n return;\n }\n ++files;\n if (this.listenerCount("file") === 0) {\n skipPart = true;\n return;\n }\n fileSize = 0;\n this._fileStream = new FileStream(fileOpts, this);\n ++this._fileEndsLeft;\n this.emit(\n "file",\n partName,\n this._fileStream,\n {\n filename,\n encoding: partEncoding,\n mimeType: partType\n }\n );\n } else {\n if (fields === fieldsLimit) {\n if (!hitFieldsLimit) {\n hitFieldsLimit = true;\n this.emit("fieldsLimit");\n }\n skipPart = true;\n return;\n }\n ++fields;\n if (this.listenerCount("field") === 0) {\n skipPart = true;\n return;\n }\n field = [];\n fieldSize = 0;\n }\n });\n let matchPostBoundary = 0;\n const ssCb = /* @__PURE__ */ __name((isMatch, data, start, end, isDataSafe) => {\n retrydata:\n while (data) {\n if (this._hparser !== null) {\n const ret = this._hparser.push(data, start, end);\n if (ret === -1) {\n this._hparser = null;\n hparser.reset();\n this.emit("error", new Error("Malformed part header"));\n break;\n }\n start = ret;\n }\n if (start === end)\n break;\n if (matchPostBoundary !== 0) {\n if (matchPostBoundary === 1) {\n switch (data[start]) {\n case 45:\n matchPostBoundary = 2;\n ++start;\n break;\n case 13:\n matchPostBoundary = 3;\n ++start;\n break;\n default:\n matchPostBoundary = 0;\n }\n if (start === end)\n return;\n }\n if (matchPostBoundary === 2) {\n matchPostBoundary = 0;\n if (data[start] === 45) {\n this._complete = true;\n this._bparser = ignoreData;\n return;\n }\n const writecb = this._writecb;\n this._writecb = noop;\n ssCb(false, BUF_DASH, 0, 1, false);\n this._writecb = writecb;\n } else if (matchPostBoundary === 3) {\n matchPostBoundary = 0;\n if (data[start] === 10) {\n ++start;\n if (parts >= partsLimit)\n break;\n this._hparser = hparser;\n if (start === end)\n break;\n continue retrydata;\n } else {\n const writecb = this._writecb;\n this._writecb = noop;\n ssCb(false, BUF_CR, 0, 1, false);\n this._writecb = writecb;\n }\n }\n }\n if (!skipPart) {\n if (this._fileStream) {\n let chunk;\n const actualLen = Math.min(end - start, fileSizeLimit - fileSize);\n if (!isDataSafe) {\n chunk = Buffer.allocUnsafe(actualLen);\n data.copy(chunk, 0, start, start + actualLen);\n } else {\n chunk = data.slice(start, start + actualLen);\n }\n fileSize += chunk.length;\n if (fileSize === fileSizeLimit) {\n if (chunk.length > 0)\n this._fileStream.push(chunk);\n this._fileStream.emit("limit");\n this._fileStream.truncated = true;\n skipPart = true;\n } else if (!this._fileStream.push(chunk)) {\n if (this._writecb)\n this._fileStream._readcb = this._writecb;\n this._writecb = null;\n }\n } else if (field !== void 0) {\n let chunk;\n const actualLen = Math.min(\n end - start,\n fieldSizeLimit - fieldSize\n );\n if (!isDataSafe) {\n chunk = Buffer.allocUnsafe(actualLen);\n data.copy(chunk, 0, start, start + actualLen);\n } else {\n chunk = data.slice(start, start + actualLen);\n }\n fieldSize += actualLen;\n field.push(chunk);\n if (fieldSize === fieldSizeLimit) {\n skipPart = true;\n partTruncated = true;\n }\n }\n }\n break;\n }\n if (isMatch) {\n matchPostBoundary = 1;\n if (this._fileStream) {\n this._fileStream.push(null);\n this._fileStream = null;\n } else if (field !== void 0) {\n let data2;\n switch (field.length) {\n case 0:\n data2 = "";\n break;\n case 1:\n data2 = convertToUTF8(field[0], partCharset, 0);\n break;\n default:\n data2 = convertToUTF8(\n Buffer.concat(field, fieldSize),\n partCharset,\n 0\n );\n }\n field = void 0;\n fieldSize = 0;\n this.emit(\n "field",\n partName,\n data2,\n {\n nameTruncated: false,\n valueTruncated: partTruncated,\n encoding: partEncoding,\n mimeType: partType\n }\n );\n }\n if (++parts === partsLimit)\n this.emit("partsLimit");\n }\n }, "ssCb");\n this._bparser = new StreamSearch(`\\r\n--${boundary}`, ssCb);\n this._writecb = null;\n this._finalcb = null;\n this.write(BUF_CRLF);\n }\n static detect(conType) {\n return conType.type === "multipart" && conType.subtype === "form-data";\n }\n _write(chunk, enc, cb) {\n this._writecb = cb;\n this._bparser.push(chunk, 0);\n if (this._writecb)\n callAndUnsetCb(this);\n }\n _destroy(err, cb) {\n this._hparser = null;\n this._bparser = ignoreData;\n if (!err)\n err = checkEndState(this);\n const fileStream = this._fileStream;\n if (fileStream) {\n this._fileStream = null;\n fileStream.destroy(err);\n }\n cb(err);\n }\n _final(cb) {\n this._bparser.destroy();\n if (!this._complete)\n return cb(new Error("Unexpected end of form"));\n if (this._fileEndsLeft)\n this._finalcb = finalcb.bind(null, this, cb);\n else\n finalcb(this, cb);\n }\n };\n __name(_Multipart, "Multipart");\n var Multipart = _Multipart;\n function finalcb(self, cb, err) {\n if (err)\n return cb(err);\n err = checkEndState(self);\n cb(err);\n }\n __name(finalcb, "finalcb");\n function checkEndState(self) {\n if (self._hparser)\n return new Error("Malformed part header");\n const fileStream = self._fileStream;\n if (fileStream) {\n self._fileStream = null;\n fileStream.destroy(new Error("Unexpected end of file"));\n }\n if (!self._complete)\n return new Error("Unexpected end of form");\n }\n __name(checkEndState, "checkEndState");\n var TOKEN = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 1,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 1,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var FIELD_VCHAR = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1\n ];\n module2.exports = Multipart;\n }\n});\n\n// ../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/urlencoded.js\nvar require_urlencoded = __commonJS({\n "../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/urlencoded.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { Writable } = require("stream");\n var { getDecoder } = require_utils();\n var _URLEncoded = class _URLEncoded extends Writable {\n constructor(cfg) {\n const streamOpts = {\n autoDestroy: true,\n emitClose: true,\n highWaterMark: typeof cfg.highWaterMark === "number" ? cfg.highWaterMark : void 0\n };\n super(streamOpts);\n let charset = cfg.defCharset || "utf8";\n if (cfg.conType.params && typeof cfg.conType.params.charset === "string")\n charset = cfg.conType.params.charset;\n this.charset = charset;\n const limits = cfg.limits;\n this.fieldSizeLimit = limits && typeof limits.fieldSize === "number" ? limits.fieldSize : 1 * 1024 * 1024;\n this.fieldsLimit = limits && typeof limits.fields === "number" ? limits.fields : Infinity;\n this.fieldNameSizeLimit = limits && typeof limits.fieldNameSize === "number" ? limits.fieldNameSize : 100;\n this._inKey = true;\n this._keyTrunc = false;\n this._valTrunc = false;\n this._bytesKey = 0;\n this._bytesVal = 0;\n this._fields = 0;\n this._key = "";\n this._val = "";\n this._byte = -2;\n this._lastPos = 0;\n this._encode = 0;\n this._decoder = getDecoder(charset);\n }\n static detect(conType) {\n return conType.type === "application" && conType.subtype === "x-www-form-urlencoded";\n }\n _write(chunk, enc, cb) {\n if (this._fields >= this.fieldsLimit)\n return cb();\n let i = 0;\n const len = chunk.length;\n this._lastPos = 0;\n if (this._byte !== -2) {\n i = readPctEnc(this, chunk, i, len);\n if (i === -1)\n return cb(new Error("Malformed urlencoded form"));\n if (i >= len)\n return cb();\n if (this._inKey)\n ++this._bytesKey;\n else\n ++this._bytesVal;\n }\n main:\n while (i < len) {\n if (this._inKey) {\n i = skipKeyBytes(this, chunk, i, len);\n while (i < len) {\n switch (chunk[i]) {\n case 61:\n if (this._lastPos < i)\n this._key += chunk.latin1Slice(this._lastPos, i);\n this._lastPos = ++i;\n this._key = this._decoder(this._key, this._encode);\n this._encode = 0;\n this._inKey = false;\n continue main;\n case 38:\n if (this._lastPos < i)\n this._key += chunk.latin1Slice(this._lastPos, i);\n this._lastPos = ++i;\n this._key = this._decoder(this._key, this._encode);\n this._encode = 0;\n if (this._bytesKey > 0) {\n this.emit(\n "field",\n this._key,\n "",\n {\n nameTruncated: this._keyTrunc,\n valueTruncated: false,\n encoding: this.charset,\n mimeType: "text/plain"\n }\n );\n }\n this._key = "";\n this._val = "";\n this._keyTrunc = false;\n this._valTrunc = false;\n this._bytesKey = 0;\n this._bytesVal = 0;\n if (++this._fields >= this.fieldsLimit) {\n this.emit("fieldsLimit");\n return cb();\n }\n continue;\n case 43:\n if (this._lastPos < i)\n this._key += chunk.latin1Slice(this._lastPos, i);\n this._key += " ";\n this._lastPos = i + 1;\n break;\n case 37:\n if (this._encode === 0)\n this._encode = 1;\n if (this._lastPos < i)\n this._key += chunk.latin1Slice(this._lastPos, i);\n this._lastPos = i + 1;\n this._byte = -1;\n i = readPctEnc(this, chunk, i + 1, len);\n if (i === -1)\n return cb(new Error("Malformed urlencoded form"));\n if (i >= len)\n return cb();\n ++this._bytesKey;\n i = skipKeyBytes(this, chunk, i, len);\n continue;\n }\n ++i;\n ++this._bytesKey;\n i = skipKeyBytes(this, chunk, i, len);\n }\n if (this._lastPos < i)\n this._key += chunk.latin1Slice(this._lastPos, i);\n } else {\n i = skipValBytes(this, chunk, i, len);\n while (i < len) {\n switch (chunk[i]) {\n case 38:\n if (this._lastPos < i)\n this._val += chunk.latin1Slice(this._lastPos, i);\n this._lastPos = ++i;\n this._inKey = true;\n this._val = this._decoder(this._val, this._encode);\n this._encode = 0;\n if (this._bytesKey > 0 || this._bytesVal > 0) {\n this.emit(\n "field",\n this._key,\n this._val,\n {\n nameTruncated: this._keyTrunc,\n valueTruncated: this._valTrunc,\n encoding: this.charset,\n mimeType: "text/plain"\n }\n );\n }\n this._key = "";\n this._val = "";\n this._keyTrunc = false;\n this._valTrunc = false;\n this._bytesKey = 0;\n this._bytesVal = 0;\n if (++this._fields >= this.fieldsLimit) {\n this.emit("fieldsLimit");\n return cb();\n }\n continue main;\n case 43:\n if (this._lastPos < i)\n this._val += chunk.latin1Slice(this._lastPos, i);\n this._val += " ";\n this._lastPos = i + 1;\n break;\n case 37:\n if (this._encode === 0)\n this._encode = 1;\n if (this._lastPos < i)\n this._val += chunk.latin1Slice(this._lastPos, i);\n this._lastPos = i + 1;\n this._byte = -1;\n i = readPctEnc(this, chunk, i + 1, len);\n if (i === -1)\n return cb(new Error("Malformed urlencoded form"));\n if (i >= len)\n return cb();\n ++this._bytesVal;\n i = skipValBytes(this, chunk, i, len);\n continue;\n }\n ++i;\n ++this._bytesVal;\n i = skipValBytes(this, chunk, i, len);\n }\n if (this._lastPos < i)\n this._val += chunk.latin1Slice(this._lastPos, i);\n }\n }\n cb();\n }\n _final(cb) {\n if (this._byte !== -2)\n return cb(new Error("Malformed urlencoded form"));\n if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) {\n if (this._inKey)\n this._key = this._decoder(this._key, this._encode);\n else\n this._val = this._decoder(this._val, this._encode);\n this.emit(\n "field",\n this._key,\n this._val,\n {\n nameTruncated: this._keyTrunc,\n valueTruncated: this._valTrunc,\n encoding: this.charset,\n mimeType: "text/plain"\n }\n );\n }\n cb();\n }\n };\n __name(_URLEncoded, "URLEncoded");\n var URLEncoded = _URLEncoded;\n function readPctEnc(self, chunk, pos, len) {\n if (pos >= len)\n return len;\n if (self._byte === -1) {\n const hexUpper = HEX_VALUES[chunk[pos++]];\n if (hexUpper === -1)\n return -1;\n if (hexUpper >= 8)\n self._encode = 2;\n if (pos < len) {\n const hexLower = HEX_VALUES[chunk[pos++]];\n if (hexLower === -1)\n return -1;\n if (self._inKey)\n self._key += String.fromCharCode((hexUpper << 4) + hexLower);\n else\n self._val += String.fromCharCode((hexUpper << 4) + hexLower);\n self._byte = -2;\n self._lastPos = pos;\n } else {\n self._byte = hexUpper;\n }\n } else {\n const hexLower = HEX_VALUES[chunk[pos++]];\n if (hexLower === -1)\n return -1;\n if (self._inKey)\n self._key += String.fromCharCode((self._byte << 4) + hexLower);\n else\n self._val += String.fromCharCode((self._byte << 4) + hexLower);\n self._byte = -2;\n self._lastPos = pos;\n }\n return pos;\n }\n __name(readPctEnc, "readPctEnc");\n function skipKeyBytes(self, chunk, pos, len) {\n if (self._bytesKey > self.fieldNameSizeLimit) {\n if (!self._keyTrunc) {\n if (self._lastPos < pos)\n self._key += chunk.latin1Slice(self._lastPos, pos - 1);\n }\n self._keyTrunc = true;\n for (; pos < len; ++pos) {\n const code = chunk[pos];\n if (code === 61 || code === 38)\n break;\n ++self._bytesKey;\n }\n self._lastPos = pos;\n }\n return pos;\n }\n __name(skipKeyBytes, "skipKeyBytes");\n function skipValBytes(self, chunk, pos, len) {\n if (self._bytesVal > self.fieldSizeLimit) {\n if (!self._valTrunc) {\n if (self._lastPos < pos)\n self._val += chunk.latin1Slice(self._lastPos, pos - 1);\n }\n self._valTrunc = true;\n for (; pos < len; ++pos) {\n if (chunk[pos] === 38)\n break;\n ++self._bytesVal;\n }\n self._lastPos = pos;\n }\n return pos;\n }\n __name(skipValBytes, "skipValBytes");\n var HEX_VALUES = [\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1\n ];\n module2.exports = URLEncoded;\n }\n});\n\n// ../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/index.js\nvar require_lib = __commonJS({\n "../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/index.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { parseContentType } = require_utils();\n function getInstance(cfg) {\n const headers = cfg.headers;\n const conType = parseContentType(headers["content-type"]);\n if (!conType)\n throw new Error("Malformed content type");\n for (const type of TYPES) {\n const matched = type.detect(conType);\n if (!matched)\n continue;\n const instanceCfg = {\n limits: cfg.limits,\n headers,\n conType,\n highWaterMark: void 0,\n fileHwm: void 0,\n defCharset: void 0,\n defParamCharset: void 0,\n preservePath: false\n };\n if (cfg.highWaterMark)\n instanceCfg.highWaterMark = cfg.highWaterMark;\n if (cfg.fileHwm)\n instanceCfg.fileHwm = cfg.fileHwm;\n instanceCfg.defCharset = cfg.defCharset;\n instanceCfg.defParamCharset = cfg.defParamCharset;\n instanceCfg.preservePath = cfg.preservePath;\n return new type(instanceCfg);\n }\n throw new Error(`Unsupported content type: ${headers["content-type"]}`);\n }\n __name(getInstance, "getInstance");\n var TYPES = [\n require_multipart(),\n require_urlencoded()\n ].filter(function(typemod) {\n return typeof typemod.detect === "function";\n });\n module2.exports = (cfg) => {\n if (typeof cfg !== "object" || cfg === null)\n cfg = {};\n if (typeof cfg.headers !== "object" || cfg.headers === null || typeof cfg.headers["content-type"] !== "string") {\n throw new Error("Missing Content-Type");\n }\n return getInstance(cfg);\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/dataURL.js\nvar require_dataURL = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/dataURL.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var assert = require("assert");\n var { atob: atob2 } = require("buffer");\n var { isomorphicDecode } = require_util2();\n var encoder = new TextEncoder();\n var HTTP_TOKEN_CODEPOINTS = /^[!#$%&\'*+-.^_|~A-Za-z0-9]+$/;\n var HTTP_WHITESPACE_REGEX = /(\\u000A|\\u000D|\\u0009|\\u0020)/;\n var HTTP_QUOTED_STRING_TOKENS = /[\\u0009|\\u0020-\\u007E|\\u0080-\\u00FF]/;\n function dataURLProcessor(dataURL) {\n assert(dataURL.protocol === "data:");\n let input = URLSerializer(dataURL, true);\n input = input.slice(5);\n const position = { position: 0 };\n let mimeType = collectASequenceOfCodePointsFast(\n ",",\n input,\n position\n );\n const mimeTypeLength = mimeType.length;\n mimeType = removeASCIIWhitespace(mimeType, true, true);\n if (position.position >= input.length) {\n return "failure";\n }\n position.position++;\n const encodedBody = input.slice(mimeTypeLength + 1);\n let body = stringPercentDecode(encodedBody);\n if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n const stringBody = isomorphicDecode(body);\n body = forgivingBase64(stringBody);\n if (body === "failure") {\n return "failure";\n }\n mimeType = mimeType.slice(0, -6);\n mimeType = mimeType.replace(/(\\u0020)+$/, "");\n mimeType = mimeType.slice(0, -1);\n }\n if (mimeType.startsWith(";")) {\n mimeType = "text/plain" + mimeType;\n }\n let mimeTypeRecord = parseMIMEType(mimeType);\n if (mimeTypeRecord === "failure") {\n mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII");\n }\n return { mimeType: mimeTypeRecord, body };\n }\n __name(dataURLProcessor, "dataURLProcessor");\n function URLSerializer(url, excludeFragment = false) {\n const href = url.href;\n if (!excludeFragment) {\n return href;\n }\n const hash = href.lastIndexOf("#");\n if (hash === -1) {\n return href;\n }\n return href.slice(0, hash);\n }\n __name(URLSerializer, "URLSerializer");\n function collectASequenceOfCodePoints(condition, input, position) {\n let result = "";\n while (position.position < input.length && condition(input[position.position])) {\n result += input[position.position];\n position.position++;\n }\n return result;\n }\n __name(collectASequenceOfCodePoints, "collectASequenceOfCodePoints");\n function collectASequenceOfCodePointsFast(char, input, position) {\n const idx = input.indexOf(char, position.position);\n const start = position.position;\n if (idx === -1) {\n position.position = input.length;\n return input.slice(start);\n }\n position.position = idx;\n return input.slice(start, position.position);\n }\n __name(collectASequenceOfCodePointsFast, "collectASequenceOfCodePointsFast");\n function stringPercentDecode(input) {\n const bytes = encoder.encode(input);\n return percentDecode(bytes);\n }\n __name(stringPercentDecode, "stringPercentDecode");\n function percentDecode(input) {\n const output = [];\n for (let i = 0; i < input.length; i++) {\n const byte = input[i];\n if (byte !== 37) {\n output.push(byte);\n } else if (byte === 37 && !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))) {\n output.push(37);\n } else {\n const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]);\n const bytePoint = Number.parseInt(nextTwoBytes, 16);\n output.push(bytePoint);\n i += 2;\n }\n }\n return Uint8Array.from(output);\n }\n __name(percentDecode, "percentDecode");\n function parseMIMEType(input) {\n input = removeHTTPWhitespace(input, true, true);\n const position = { position: 0 };\n const type = collectASequenceOfCodePointsFast(\n "/",\n input,\n position\n );\n if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n return "failure";\n }\n if (position.position > input.length) {\n return "failure";\n }\n position.position++;\n let subtype = collectASequenceOfCodePointsFast(\n ";",\n input,\n position\n );\n subtype = removeHTTPWhitespace(subtype, false, true);\n if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n return "failure";\n }\n const typeLowercase = type.toLowerCase();\n const subtypeLowercase = subtype.toLowerCase();\n const mimeType = {\n type: typeLowercase,\n subtype: subtypeLowercase,\n /** @type {Map} */\n parameters: /* @__PURE__ */ new Map(),\n // https://mimesniff.spec.whatwg.org/#mime-type-essence\n essence: `${typeLowercase}/${subtypeLowercase}`\n };\n while (position.position < input.length) {\n position.position++;\n collectASequenceOfCodePoints(\n // https://fetch.spec.whatwg.org/#http-whitespace\n (char) => HTTP_WHITESPACE_REGEX.test(char),\n input,\n position\n );\n let parameterName = collectASequenceOfCodePoints(\n (char) => char !== ";" && char !== "=",\n input,\n position\n );\n parameterName = parameterName.toLowerCase();\n if (position.position < input.length) {\n if (input[position.position] === ";") {\n continue;\n }\n position.position++;\n }\n if (position.position > input.length) {\n break;\n }\n let parameterValue = null;\n if (input[position.position] === \'"\') {\n parameterValue = collectAnHTTPQuotedString(input, position, true);\n collectASequenceOfCodePointsFast(\n ";",\n input,\n position\n );\n } else {\n parameterValue = collectASequenceOfCodePointsFast(\n ";",\n input,\n position\n );\n parameterValue = removeHTTPWhitespace(parameterValue, false, true);\n if (parameterValue.length === 0) {\n continue;\n }\n }\n if (parameterName.length !== 0 && HTTP_TOKEN_CODEPOINTS.test(parameterName) && (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && !mimeType.parameters.has(parameterName)) {\n mimeType.parameters.set(parameterName, parameterValue);\n }\n }\n return mimeType;\n }\n __name(parseMIMEType, "parseMIMEType");\n function forgivingBase64(data) {\n data = data.replace(/[\\u0009\\u000A\\u000C\\u000D\\u0020]/g, "");\n if (data.length % 4 === 0) {\n data = data.replace(/=?=$/, "");\n }\n if (data.length % 4 === 1) {\n return "failure";\n }\n if (/[^+/0-9A-Za-z]/.test(data)) {\n return "failure";\n }\n const binary = atob2(data);\n const bytes = new Uint8Array(binary.length);\n for (let byte = 0; byte < binary.length; byte++) {\n bytes[byte] = binary.charCodeAt(byte);\n }\n return bytes;\n }\n __name(forgivingBase64, "forgivingBase64");\n function collectAnHTTPQuotedString(input, position, extractValue) {\n const positionStart = position.position;\n let value = "";\n assert(input[position.position] === \'"\');\n position.position++;\n while (true) {\n value += collectASequenceOfCodePoints(\n (char) => char !== \'"\' && char !== "\\\\",\n input,\n position\n );\n if (position.position >= input.length) {\n break;\n }\n const quoteOrBackslash = input[position.position];\n position.position++;\n if (quoteOrBackslash === "\\\\") {\n if (position.position >= input.length) {\n value += "\\\\";\n break;\n }\n value += input[position.position];\n position.position++;\n } else {\n assert(quoteOrBackslash === \'"\');\n break;\n }\n }\n if (extractValue) {\n return value;\n }\n return input.slice(positionStart, position.position);\n }\n __name(collectAnHTTPQuotedString, "collectAnHTTPQuotedString");\n function serializeAMimeType(mimeType) {\n assert(mimeType !== "failure");\n const { parameters, essence } = mimeType;\n let serialization = essence;\n for (let [name, value] of parameters.entries()) {\n serialization += ";";\n serialization += name;\n serialization += "=";\n if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n value = value.replace(/(\\\\|")/g, "\\\\$1");\n value = \'"\' + value;\n value += \'"\';\n }\n serialization += value;\n }\n return serialization;\n }\n __name(serializeAMimeType, "serializeAMimeType");\n function isHTTPWhiteSpace(char) {\n return char === "\\r" || char === "\\n" || char === " " || char === " ";\n }\n __name(isHTTPWhiteSpace, "isHTTPWhiteSpace");\n function removeHTTPWhitespace(str, leading = true, trailing = true) {\n let lead = 0;\n let trail = str.length - 1;\n if (leading) {\n for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++)\n ;\n }\n if (trailing) {\n for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--)\n ;\n }\n return str.slice(lead, trail + 1);\n }\n __name(removeHTTPWhitespace, "removeHTTPWhitespace");\n function isASCIIWhitespace(char) {\n return char === "\\r" || char === "\\n" || char === " " || char === "\\f" || char === " ";\n }\n __name(isASCIIWhitespace, "isASCIIWhitespace");\n function removeASCIIWhitespace(str, leading = true, trailing = true) {\n let lead = 0;\n let trail = str.length - 1;\n if (leading) {\n for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++)\n ;\n }\n if (trailing) {\n for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--)\n ;\n }\n return str.slice(lead, trail + 1);\n }\n __name(removeASCIIWhitespace, "removeASCIIWhitespace");\n module2.exports = {\n dataURLProcessor,\n URLSerializer,\n collectASequenceOfCodePoints,\n collectASequenceOfCodePointsFast,\n stringPercentDecode,\n parseMIMEType,\n collectAnHTTPQuotedString,\n serializeAMimeType\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/file.js\nvar require_file = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/file.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { Blob: Blob2, File: NativeFile } = require("buffer");\n var { types } = require("util");\n var { kState } = require_symbols();\n var { isBlobLike } = require_util2();\n var { webidl } = require_webidl();\n var { parseMIMEType, serializeAMimeType } = require_dataURL();\n var { kEnumerableProperty } = require_util();\n var _File = class _File extends Blob2 {\n constructor(fileBits, fileName, options = {}) {\n webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" });\n fileBits = webidl.converters["sequence"](fileBits);\n fileName = webidl.converters.USVString(fileName);\n options = webidl.converters.FilePropertyBag(options);\n const n = fileName;\n let t = options.type;\n let d;\n substep: {\n if (t) {\n t = parseMIMEType(t);\n if (t === "failure") {\n t = "";\n break substep;\n }\n t = serializeAMimeType(t).toLowerCase();\n }\n d = options.lastModified;\n }\n super(processBlobParts(fileBits, options), { type: t });\n this[kState] = {\n name: n,\n lastModified: d,\n type: t\n };\n }\n get name() {\n webidl.brandCheck(this, _File);\n return this[kState].name;\n }\n get lastModified() {\n webidl.brandCheck(this, _File);\n return this[kState].lastModified;\n }\n get type() {\n webidl.brandCheck(this, _File);\n return this[kState].type;\n }\n };\n __name(_File, "File");\n var File2 = _File;\n var _FileLike = class _FileLike {\n constructor(blobLike, fileName, options = {}) {\n const n = fileName;\n const t = options.type;\n const d = options.lastModified ?? Date.now();\n this[kState] = {\n blobLike,\n name: n,\n type: t,\n lastModified: d\n };\n }\n stream(...args) {\n webidl.brandCheck(this, _FileLike);\n return this[kState].blobLike.stream(...args);\n }\n arrayBuffer(...args) {\n webidl.brandCheck(this, _FileLike);\n return this[kState].blobLike.arrayBuffer(...args);\n }\n slice(...args) {\n webidl.brandCheck(this, _FileLike);\n return this[kState].blobLike.slice(...args);\n }\n text(...args) {\n webidl.brandCheck(this, _FileLike);\n return this[kState].blobLike.text(...args);\n }\n get size() {\n webidl.brandCheck(this, _FileLike);\n return this[kState].blobLike.size;\n }\n get type() {\n webidl.brandCheck(this, _FileLike);\n return this[kState].blobLike.type;\n }\n get name() {\n webidl.brandCheck(this, _FileLike);\n return this[kState].name;\n }\n get lastModified() {\n webidl.brandCheck(this, _FileLike);\n return this[kState].lastModified;\n }\n get [Symbol.toStringTag]() {\n return "File";\n }\n };\n __name(_FileLike, "FileLike");\n var FileLike = _FileLike;\n Object.defineProperties(File2.prototype, {\n [Symbol.toStringTag]: {\n value: "File",\n configurable: true\n },\n name: kEnumerableProperty,\n lastModified: kEnumerableProperty\n });\n webidl.converters.Blob = webidl.interfaceConverter(Blob2);\n webidl.converters.BlobPart = function(V, opts) {\n if (webidl.util.Type(V) === "Object") {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false });\n }\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V, opts);\n }\n }\n return webidl.converters.USVString(V, opts);\n };\n webidl.converters["sequence"] = webidl.sequenceConverter(\n webidl.converters.BlobPart\n );\n webidl.converters.FilePropertyBag = webidl.dictionaryConverter([\n {\n key: "lastModified",\n converter: webidl.converters["long long"],\n get defaultValue() {\n return Date.now();\n }\n },\n {\n key: "type",\n converter: webidl.converters.DOMString,\n defaultValue: ""\n },\n {\n key: "endings",\n converter: (value) => {\n value = webidl.converters.DOMString(value);\n value = value.toLowerCase();\n if (value !== "native") {\n value = "transparent";\n }\n return value;\n },\n defaultValue: "transparent"\n }\n ]);\n function processBlobParts(parts, options) {\n const bytes = [];\n for (const element of parts) {\n if (typeof element === "string") {\n let s = element;\n if (options.endings === "native") {\n s = convertLineEndingsNative(s);\n }\n bytes.push(new TextEncoder().encode(s));\n } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) {\n if (!element.buffer) {\n bytes.push(new Uint8Array(element));\n } else {\n bytes.push(\n new Uint8Array(element.buffer, element.byteOffset, element.byteLength)\n );\n }\n } else if (isBlobLike(element)) {\n bytes.push(element);\n }\n }\n return bytes;\n }\n __name(processBlobParts, "processBlobParts");\n function convertLineEndingsNative(s) {\n let nativeLineEnding = "\\n";\n if (define_process_default.platform === "win32") {\n nativeLineEnding = "\\r\\n";\n }\n return s.replace(/\\r?\\n/g, nativeLineEnding);\n }\n __name(convertLineEndingsNative, "convertLineEndingsNative");\n function isFileLike(object) {\n return NativeFile && object instanceof NativeFile || object instanceof File2 || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File";\n }\n __name(isFileLike, "isFileLike");\n module2.exports = { File: File2, FileLike, isFileLike };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/formdata.js\nvar require_formdata = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/formdata.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { isBlobLike, toUSVString, makeIterator } = require_util2();\n var { kState } = require_symbols();\n var { File: UndiciFile, FileLike, isFileLike } = require_file();\n var { webidl } = require_webidl();\n var { Blob: Blob2, File: NativeFile } = require("buffer");\n var File2 = NativeFile ?? UndiciFile;\n var _FormData = class _FormData {\n constructor(form) {\n if (form !== void 0) {\n throw webidl.errors.conversionFailed({\n prefix: "FormData constructor",\n argument: "Argument 1",\n types: ["undefined"]\n });\n }\n this[kState] = [];\n }\n append(name, value, filename = void 0) {\n webidl.brandCheck(this, _FormData);\n webidl.argumentLengthCheck(arguments, 2, { header: "FormData.append" });\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n "Failed to execute \'append\' on \'FormData\': parameter 2 is not of type \'Blob\'"\n );\n }\n name = webidl.converters.USVString(name);\n value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value);\n filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0;\n const entry = makeEntry(name, value, filename);\n this[kState].push(entry);\n }\n delete(name) {\n webidl.brandCheck(this, _FormData);\n webidl.argumentLengthCheck(arguments, 1, { header: "FormData.delete" });\n name = webidl.converters.USVString(name);\n this[kState] = this[kState].filter((entry) => entry.name !== name);\n }\n get(name) {\n webidl.brandCheck(this, _FormData);\n webidl.argumentLengthCheck(arguments, 1, { header: "FormData.get" });\n name = webidl.converters.USVString(name);\n const idx = this[kState].findIndex((entry) => entry.name === name);\n if (idx === -1) {\n return null;\n }\n return this[kState][idx].value;\n }\n getAll(name) {\n webidl.brandCheck(this, _FormData);\n webidl.argumentLengthCheck(arguments, 1, { header: "FormData.getAll" });\n name = webidl.converters.USVString(name);\n return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value);\n }\n has(name) {\n webidl.brandCheck(this, _FormData);\n webidl.argumentLengthCheck(arguments, 1, { header: "FormData.has" });\n name = webidl.converters.USVString(name);\n return this[kState].findIndex((entry) => entry.name === name) !== -1;\n }\n set(name, value, filename = void 0) {\n webidl.brandCheck(this, _FormData);\n webidl.argumentLengthCheck(arguments, 2, { header: "FormData.set" });\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n "Failed to execute \'set\' on \'FormData\': parameter 2 is not of type \'Blob\'"\n );\n }\n name = webidl.converters.USVString(name);\n value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value);\n filename = arguments.length === 3 ? toUSVString(filename) : void 0;\n const entry = makeEntry(name, value, filename);\n const idx = this[kState].findIndex((entry2) => entry2.name === name);\n if (idx !== -1) {\n this[kState] = [\n ...this[kState].slice(0, idx),\n entry,\n ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name)\n ];\n } else {\n this[kState].push(entry);\n }\n }\n entries() {\n webidl.brandCheck(this, _FormData);\n return makeIterator(\n () => this[kState].map((pair) => [pair.name, pair.value]),\n "FormData",\n "key+value"\n );\n }\n keys() {\n webidl.brandCheck(this, _FormData);\n return makeIterator(\n () => this[kState].map((pair) => [pair.name, pair.value]),\n "FormData",\n "key"\n );\n }\n values() {\n webidl.brandCheck(this, _FormData);\n return makeIterator(\n () => this[kState].map((pair) => [pair.name, pair.value]),\n "FormData",\n "value"\n );\n }\n /**\n * @param {(value: string, key: string, self: FormData) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach(callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, _FormData);\n webidl.argumentLengthCheck(arguments, 1, { header: "FormData.forEach" });\n if (typeof callbackFn !== "function") {\n throw new TypeError(\n "Failed to execute \'forEach\' on \'FormData\': parameter 1 is not of type \'Function\'."\n );\n }\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this]);\n }\n }\n };\n __name(_FormData, "FormData");\n var FormData2 = _FormData;\n FormData2.prototype[Symbol.iterator] = FormData2.prototype.entries;\n Object.defineProperties(FormData2.prototype, {\n [Symbol.toStringTag]: {\n value: "FormData",\n configurable: true\n }\n });\n function makeEntry(name, value, filename) {\n name = Buffer.from(name).toString("utf8");\n if (typeof value === "string") {\n value = Buffer.from(value).toString("utf8");\n } else {\n if (!isFileLike(value)) {\n value = value instanceof Blob2 ? new File2([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type });\n }\n if (filename !== void 0) {\n const options = {\n type: value.type,\n lastModified: value.lastModified\n };\n value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File2([value], filename, options) : new FileLike(value, filename, options);\n }\n }\n return { name, value };\n }\n __name(makeEntry, "makeEntry");\n module2.exports = { FormData: FormData2 };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/body.js\nvar require_body = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/body.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var Busboy = require_lib();\n var util = require_util();\n var {\n ReadableStreamFrom,\n isBlobLike,\n isReadableStreamLike,\n readableStreamClose,\n createDeferredPromise,\n fullyReadBody\n } = require_util2();\n var { FormData: FormData2 } = require_formdata();\n var { kState } = require_symbols();\n var { webidl } = require_webidl();\n var { DOMException, structuredClone } = require_constants();\n var { Blob: Blob2, File: NativeFile } = require("buffer");\n var { kBodyUsed } = require_symbols2();\n var assert = require("assert");\n var { isErrored } = require_util();\n var { isUint8Array, isArrayBuffer } = require_util_types();\n var { File: UndiciFile } = require_file();\n var { parseMIMEType, serializeAMimeType } = require_dataURL();\n var ReadableStream = globalThis.ReadableStream;\n var File2 = NativeFile ?? UndiciFile;\n function extractBody(object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require("./streams").ReadableStream;\n }\n let stream = null;\n if (object instanceof ReadableStream) {\n stream = object;\n } else if (isBlobLike(object)) {\n stream = object.stream();\n } else {\n stream = new ReadableStream({\n async pull(controller) {\n controller.enqueue(\n typeof source === "string" ? new TextEncoder().encode(source) : source\n );\n queueMicrotask(() => readableStreamClose(controller));\n },\n start() {\n },\n type: void 0\n });\n }\n assert(isReadableStreamLike(stream));\n let action = null;\n let source = null;\n let length = null;\n let type = null;\n if (typeof object === "string") {\n source = object;\n type = "text/plain;charset=UTF-8";\n } else if (object instanceof URLSearchParams) {\n source = object.toString();\n type = "application/x-www-form-urlencoded;charset=UTF-8";\n } else if (isArrayBuffer(object)) {\n source = new Uint8Array(object.slice());\n } else if (ArrayBuffer.isView(object)) {\n source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength));\n } else if (util.isFormDataLike(object)) {\n const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, "0")}`;\n const prefix = `--${boundary}\\r\nContent-Disposition: form-data`;\n const escape = /* @__PURE__ */ __name((str) => str.replace(/\\n/g, "%0A").replace(/\\r/g, "%0D").replace(/"/g, "%22"), "escape");\n const normalizeLinefeeds = /* @__PURE__ */ __name((value) => value.replace(/\\r?\\n|\\r/g, "\\r\\n"), "normalizeLinefeeds");\n const enc = new TextEncoder();\n const blobParts = [];\n const rn = new Uint8Array([13, 10]);\n length = 0;\n let hasUnknownSizeValue = false;\n for (const [name, value] of object) {\n if (typeof value === "string") {\n const chunk2 = enc.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\\r\n\\r\n${normalizeLinefeeds(value)}\\r\n`);\n blobParts.push(chunk2);\n length += chunk2.byteLength;\n } else {\n const chunk2 = enc.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\\r\nContent-Type: ${value.type || "application/octet-stream"}\\r\n\\r\n`);\n blobParts.push(chunk2, value, rn);\n if (typeof value.size === "number") {\n length += chunk2.byteLength + value.size + rn.byteLength;\n } else {\n hasUnknownSizeValue = true;\n }\n }\n }\n const chunk = enc.encode(`--${boundary}--`);\n blobParts.push(chunk);\n length += chunk.byteLength;\n if (hasUnknownSizeValue) {\n length = null;\n }\n source = object;\n action = /* @__PURE__ */ __name(async function* () {\n for (const part of blobParts) {\n if (part.stream) {\n yield* part.stream();\n } else {\n yield part;\n }\n }\n }, "action");\n type = "multipart/form-data; boundary=" + boundary;\n } else if (isBlobLike(object)) {\n source = object;\n length = object.size;\n if (object.type) {\n type = object.type;\n }\n } else if (typeof object[Symbol.asyncIterator] === "function") {\n if (keepalive) {\n throw new TypeError("keepalive");\n }\n if (util.isDisturbed(object) || object.locked) {\n throw new TypeError(\n "Response body object should not be disturbed or locked"\n );\n }\n stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object);\n }\n if (typeof source === "string" || util.isBuffer(source)) {\n length = Buffer.byteLength(source);\n }\n if (action != null) {\n let iterator;\n stream = new ReadableStream({\n async start() {\n iterator = action(object)[Symbol.asyncIterator]();\n },\n async pull(controller) {\n const { value, done } = await iterator.next();\n if (done) {\n queueMicrotask(() => {\n controller.close();\n });\n } else {\n if (!isErrored(stream)) {\n controller.enqueue(new Uint8Array(value));\n }\n }\n return controller.desiredSize > 0;\n },\n async cancel(reason) {\n await iterator.return();\n },\n type: void 0\n });\n }\n const body = { stream, source, length };\n return [body, type];\n }\n __name(extractBody, "extractBody");\n function safelyExtractBody(object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require("./streams").ReadableStream;\n }\n if (object instanceof ReadableStream) {\n assert(!util.isDisturbed(object), "The body has already been consumed.");\n assert(!object.locked, "The stream is locked.");\n }\n return extractBody(object, keepalive);\n }\n __name(safelyExtractBody, "safelyExtractBody");\n function cloneBody(body) {\n const [out1, out2] = body.stream.tee();\n const out2Clone = structuredClone(out2, { transfer: [out2] });\n const [, finalClone] = out2Clone.tee();\n body.stream = out1;\n return {\n stream: finalClone,\n length: body.length,\n source: body.source\n };\n }\n __name(cloneBody, "cloneBody");\n async function* consumeBody(body) {\n if (body) {\n if (isUint8Array(body)) {\n yield body;\n } else {\n const stream = body.stream;\n if (util.isDisturbed(stream)) {\n throw new TypeError("The body has already been consumed.");\n }\n if (stream.locked) {\n throw new TypeError("The stream is locked.");\n }\n stream[kBodyUsed] = true;\n yield* stream;\n }\n }\n }\n __name(consumeBody, "consumeBody");\n function throwIfAborted(state) {\n if (state.aborted) {\n throw new DOMException("The operation was aborted.", "AbortError");\n }\n }\n __name(throwIfAborted, "throwIfAborted");\n function bodyMixinMethods(instance) {\n const methods = {\n blob() {\n return specConsumeBody(this, (bytes) => {\n let mimeType = bodyMimeType(this);\n if (mimeType === "failure") {\n mimeType = "";\n } else if (mimeType) {\n mimeType = serializeAMimeType(mimeType);\n }\n return new Blob2([bytes], { type: mimeType });\n }, instance);\n },\n arrayBuffer() {\n return specConsumeBody(this, (bytes) => {\n return new Uint8Array(bytes).buffer;\n }, instance);\n },\n text() {\n return specConsumeBody(this, utf8DecodeBytes, instance);\n },\n json() {\n return specConsumeBody(this, parseJSONFromBytes, instance);\n },\n async formData() {\n webidl.brandCheck(this, instance);\n throwIfAborted(this[kState]);\n const contentType = this.headers.get("Content-Type");\n if (/multipart\\/form-data/.test(contentType)) {\n const headers = {};\n for (const [key, value] of this.headers)\n headers[key.toLowerCase()] = value;\n const responseFormData = new FormData2();\n let busboy;\n try {\n busboy = Busboy({\n headers,\n defParamCharset: "utf8"\n });\n } catch (err) {\n throw new DOMException(`${err}`, "AbortError");\n }\n busboy.on("field", (name, value) => {\n responseFormData.append(name, value);\n });\n busboy.on("file", (name, value, info) => {\n const { filename, encoding, mimeType } = info;\n const chunks = [];\n if (encoding === "base64" || encoding.toLowerCase() === "base64") {\n let base64chunk = "";\n value.on("data", (chunk) => {\n base64chunk += chunk.toString().replace(/[\\r\\n]/gm, "");\n const end = base64chunk.length - base64chunk.length % 4;\n chunks.push(Buffer.from(base64chunk.slice(0, end), "base64"));\n base64chunk = base64chunk.slice(end);\n });\n value.on("end", () => {\n chunks.push(Buffer.from(base64chunk, "base64"));\n responseFormData.append(name, new File2(chunks, filename, { type: mimeType }));\n });\n } else {\n value.on("data", (chunk) => {\n chunks.push(chunk);\n });\n value.on("end", () => {\n responseFormData.append(name, new File2(chunks, filename, { type: mimeType }));\n });\n }\n });\n const busboyResolve = new Promise((resolve, reject) => {\n busboy.on("finish", resolve);\n busboy.on("error", (err) => reject(new TypeError(err)));\n });\n if (this.body !== null)\n for await (const chunk of consumeBody(this[kState].body))\n busboy.write(chunk);\n busboy.end();\n await busboyResolve;\n return responseFormData;\n } else if (/application\\/x-www-form-urlencoded/.test(contentType)) {\n let entries;\n try {\n let text = "";\n const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true });\n for await (const chunk of consumeBody(this[kState].body)) {\n if (!isUint8Array(chunk)) {\n throw new TypeError("Expected Uint8Array chunk");\n }\n text += textDecoder.decode(chunk, { stream: true });\n }\n text += textDecoder.decode();\n entries = new URLSearchParams(text);\n } catch (err) {\n throw Object.assign(new TypeError(), { cause: err });\n }\n const formData = new FormData2();\n for (const [name, value] of entries) {\n formData.append(name, value);\n }\n return formData;\n } else {\n await Promise.resolve();\n throwIfAborted(this[kState]);\n throw webidl.errors.exception({\n header: `${instance.name}.formData`,\n message: "Could not parse content as FormData."\n });\n }\n }\n };\n return methods;\n }\n __name(bodyMixinMethods, "bodyMixinMethods");\n function mixinBody(prototype) {\n Object.assign(prototype.prototype, bodyMixinMethods(prototype));\n }\n __name(mixinBody, "mixinBody");\n async function specConsumeBody(object, convertBytesToJSValue, instance) {\n webidl.brandCheck(object, instance);\n throwIfAborted(object[kState]);\n if (bodyUnusable(object[kState].body)) {\n throw new TypeError("Body is unusable");\n }\n const promise = createDeferredPromise();\n const errorSteps = /* @__PURE__ */ __name((error) => promise.reject(error), "errorSteps");\n const successSteps = /* @__PURE__ */ __name((data) => {\n try {\n promise.resolve(convertBytesToJSValue(data));\n } catch (e) {\n errorSteps(e);\n }\n }, "successSteps");\n if (object[kState].body == null) {\n successSteps(new Uint8Array());\n return promise.promise;\n }\n fullyReadBody(object[kState].body, successSteps, errorSteps);\n return promise.promise;\n }\n __name(specConsumeBody, "specConsumeBody");\n function bodyUnusable(body) {\n return body != null && (body.stream.locked || util.isDisturbed(body.stream));\n }\n __name(bodyUnusable, "bodyUnusable");\n function utf8DecodeBytes(buffer) {\n if (buffer.length === 0) {\n return "";\n }\n if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) {\n buffer = buffer.subarray(3);\n }\n const output = new TextDecoder().decode(buffer);\n return output;\n }\n __name(utf8DecodeBytes, "utf8DecodeBytes");\n function parseJSONFromBytes(bytes) {\n return JSON.parse(utf8DecodeBytes(bytes));\n }\n __name(parseJSONFromBytes, "parseJSONFromBytes");\n function bodyMimeType(object) {\n const { headersList } = object[kState];\n const contentType = headersList.get("content-type");\n if (contentType === null) {\n return "failure";\n }\n return parseMIMEType(contentType);\n }\n __name(bodyMimeType, "bodyMimeType");\n module2.exports = {\n extractBody,\n safelyExtractBody,\n cloneBody,\n mixinBody\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/response.js\nvar require_response = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/response.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { Headers: Headers3, HeadersList, fill } = require_headers();\n var { extractBody, cloneBody, mixinBody } = require_body();\n var util = require_util();\n var { kEnumerableProperty } = util;\n var {\n isValidReasonPhrase,\n isCancelled,\n isAborted,\n isBlobLike,\n serializeJavascriptValueToJSONString,\n isErrorLike,\n isomorphicEncode\n } = require_util2();\n var {\n redirectStatus,\n nullBodyStatus,\n DOMException\n } = require_constants();\n var { kState, kHeaders: kHeaders2, kGuard: kGuard2, kRealm } = require_symbols();\n var { webidl } = require_webidl();\n var { FormData: FormData2 } = require_formdata();\n var { getGlobalOrigin } = require_global();\n var { URLSerializer } = require_dataURL();\n var { kHeadersList } = require_symbols2();\n var assert = require("assert");\n var { types } = require("util");\n var ReadableStream = globalThis.ReadableStream || require("./streams").ReadableStream;\n var _Response = class _Response {\n // Creates network error Response.\n static error() {\n const relevantRealm = { settingsObject: {} };\n const responseObject = new _Response();\n responseObject[kState] = makeNetworkError();\n responseObject[kRealm] = relevantRealm;\n responseObject[kHeaders2][kHeadersList] = responseObject[kState].headersList;\n responseObject[kHeaders2][kGuard2] = "immutable";\n responseObject[kHeaders2][kRealm] = relevantRealm;\n return responseObject;\n }\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json(data = void 0, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: "Response.json" });\n if (init !== null) {\n init = webidl.converters.ResponseInit(init);\n }\n const bytes = new TextEncoder("utf-8").encode(\n serializeJavascriptValueToJSONString(data)\n );\n const body = extractBody(bytes);\n const relevantRealm = { settingsObject: {} };\n const responseObject = new _Response();\n responseObject[kRealm] = relevantRealm;\n responseObject[kHeaders2][kGuard2] = "response";\n responseObject[kHeaders2][kRealm] = relevantRealm;\n initializeResponse(responseObject, init, { body: body[0], type: "application/json" });\n return responseObject;\n }\n // Creates a redirect Response that redirects to url with status status.\n static redirect(url, status = 302) {\n const relevantRealm = { settingsObject: {} };\n webidl.argumentLengthCheck(arguments, 1, { header: "Response.redirect" });\n url = webidl.converters.USVString(url);\n status = webidl.converters["unsigned short"](status);\n let parsedURL;\n try {\n parsedURL = new URL(url, getGlobalOrigin());\n } catch (err) {\n throw Object.assign(new TypeError("Failed to parse URL from " + url), {\n cause: err\n });\n }\n if (!redirectStatus.includes(status)) {\n throw new RangeError("Invalid status code " + status);\n }\n const responseObject = new _Response();\n responseObject[kRealm] = relevantRealm;\n responseObject[kHeaders2][kGuard2] = "immutable";\n responseObject[kHeaders2][kRealm] = relevantRealm;\n responseObject[kState].status = status;\n const value = isomorphicEncode(URLSerializer(parsedURL));\n responseObject[kState].headersList.append("location", value);\n return responseObject;\n }\n // https://fetch.spec.whatwg.org/#dom-response\n constructor(body = null, init = {}) {\n if (body !== null) {\n body = webidl.converters.BodyInit(body);\n }\n init = webidl.converters.ResponseInit(init);\n this[kRealm] = { settingsObject: {} };\n this[kState] = makeResponse({});\n this[kHeaders2] = new Headers3();\n this[kHeaders2][kGuard2] = "response";\n this[kHeaders2][kHeadersList] = this[kState].headersList;\n this[kHeaders2][kRealm] = this[kRealm];\n let bodyWithType = null;\n if (body != null) {\n const [extractedBody, type] = extractBody(body);\n bodyWithType = { body: extractedBody, type };\n }\n initializeResponse(this, init, bodyWithType);\n }\n // Returns response\u2019s type, e.g., "cors".\n get type() {\n webidl.brandCheck(this, _Response);\n return this[kState].type;\n }\n // Returns response\u2019s URL, if it has one; otherwise the empty string.\n get url() {\n webidl.brandCheck(this, _Response);\n const urlList = this[kState].urlList;\n const url = urlList[urlList.length - 1] ?? null;\n if (url === null) {\n return "";\n }\n return URLSerializer(url, true);\n }\n // Returns whether response was obtained through a redirect.\n get redirected() {\n webidl.brandCheck(this, _Response);\n return this[kState].urlList.length > 1;\n }\n // Returns response\u2019s status.\n get status() {\n webidl.brandCheck(this, _Response);\n return this[kState].status;\n }\n // Returns whether response\u2019s status is an ok status.\n get ok() {\n webidl.brandCheck(this, _Response);\n return this[kState].status >= 200 && this[kState].status <= 299;\n }\n // Returns response\u2019s status message.\n get statusText() {\n webidl.brandCheck(this, _Response);\n return this[kState].statusText;\n }\n // Returns response\u2019s headers as Headers.\n get headers() {\n webidl.brandCheck(this, _Response);\n return this[kHeaders2];\n }\n get body() {\n webidl.brandCheck(this, _Response);\n return this[kState].body ? this[kState].body.stream : null;\n }\n get bodyUsed() {\n webidl.brandCheck(this, _Response);\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream);\n }\n // Returns a clone of response.\n clone() {\n webidl.brandCheck(this, _Response);\n if (this.bodyUsed || this.body && this.body.locked) {\n throw webidl.errors.exception({\n header: "Response.clone",\n message: "Body has already been consumed."\n });\n }\n const clonedResponse = cloneResponse(this[kState]);\n const clonedResponseObject = new _Response();\n clonedResponseObject[kState] = clonedResponse;\n clonedResponseObject[kRealm] = this[kRealm];\n clonedResponseObject[kHeaders2][kHeadersList] = clonedResponse.headersList;\n clonedResponseObject[kHeaders2][kGuard2] = this[kHeaders2][kGuard2];\n clonedResponseObject[kHeaders2][kRealm] = this[kHeaders2][kRealm];\n return clonedResponseObject;\n }\n };\n __name(_Response, "Response");\n var Response3 = _Response;\n mixinBody(Response3);\n Object.defineProperties(Response3.prototype, {\n type: kEnumerableProperty,\n url: kEnumerableProperty,\n status: kEnumerableProperty,\n ok: kEnumerableProperty,\n redirected: kEnumerableProperty,\n statusText: kEnumerableProperty,\n headers: kEnumerableProperty,\n clone: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: "Response",\n configurable: true\n }\n });\n Object.defineProperties(Response3, {\n json: kEnumerableProperty,\n redirect: kEnumerableProperty,\n error: kEnumerableProperty\n });\n function cloneResponse(response) {\n if (response.internalResponse) {\n return filterResponse(\n cloneResponse(response.internalResponse),\n response.type\n );\n }\n const newResponse = makeResponse({ ...response, body: null });\n if (response.body != null) {\n newResponse.body = cloneBody(response.body);\n }\n return newResponse;\n }\n __name(cloneResponse, "cloneResponse");\n function makeResponse(init) {\n return {\n aborted: false,\n rangeRequested: false,\n timingAllowPassed: false,\n requestIncludesCredentials: false,\n type: "default",\n status: 200,\n timingInfo: null,\n cacheState: "",\n statusText: "",\n ...init,\n headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(),\n urlList: init.urlList ? [...init.urlList] : []\n };\n }\n __name(makeResponse, "makeResponse");\n function makeNetworkError(reason) {\n const isError = isErrorLike(reason);\n return makeResponse({\n type: "error",\n status: 0,\n error: isError ? reason : new Error(reason ? String(reason) : reason),\n aborted: reason && reason.name === "AbortError"\n });\n }\n __name(makeNetworkError, "makeNetworkError");\n function makeFilteredResponse(response, state) {\n state = {\n internalResponse: response,\n ...state\n };\n return new Proxy(response, {\n get(target, p) {\n return p in state ? state[p] : target[p];\n },\n set(target, p, value) {\n assert(!(p in state));\n target[p] = value;\n return true;\n }\n });\n }\n __name(makeFilteredResponse, "makeFilteredResponse");\n function filterResponse(response, type) {\n if (type === "basic") {\n return makeFilteredResponse(response, {\n type: "basic",\n headersList: response.headersList\n });\n } else if (type === "cors") {\n return makeFilteredResponse(response, {\n type: "cors",\n headersList: response.headersList\n });\n } else if (type === "opaque") {\n return makeFilteredResponse(response, {\n type: "opaque",\n urlList: Object.freeze([]),\n status: 0,\n statusText: "",\n body: null\n });\n } else if (type === "opaqueredirect") {\n return makeFilteredResponse(response, {\n type: "opaqueredirect",\n status: 0,\n statusText: "",\n headersList: [],\n body: null\n });\n } else {\n assert(false);\n }\n }\n __name(filterResponse, "filterResponse");\n function makeAppropriateNetworkError(fetchParams) {\n assert(isCancelled(fetchParams));\n return isAborted(fetchParams) ? makeNetworkError(new DOMException("The operation was aborted.", "AbortError")) : makeNetworkError("Request was cancelled.");\n }\n __name(makeAppropriateNetworkError, "makeAppropriateNetworkError");\n function initializeResponse(response, init, body) {\n if (init.status !== null && (init.status < 200 || init.status > 599)) {\n throw new RangeError(\'init["status"] must be in the range of 200 to 599, inclusive.\');\n }\n if ("statusText" in init && init.statusText != null) {\n if (!isValidReasonPhrase(String(init.statusText))) {\n throw new TypeError("Invalid statusText");\n }\n }\n if ("status" in init && init.status != null) {\n response[kState].status = init.status;\n }\n if ("statusText" in init && init.statusText != null) {\n response[kState].statusText = init.statusText;\n }\n if ("headers" in init && init.headers != null) {\n fill(response[kHeaders2], init.headers);\n }\n if (body) {\n if (nullBodyStatus.includes(response.status)) {\n throw webidl.errors.exception({\n header: "Response constructor",\n message: "Invalid response status code " + response.status\n });\n }\n response[kState].body = body.body;\n if (body.type != null && !response[kState].headersList.contains("Content-Type")) {\n response[kState].headersList.append("content-type", body.type);\n }\n }\n }\n __name(initializeResponse, "initializeResponse");\n webidl.converters.ReadableStream = webidl.interfaceConverter(\n ReadableStream\n );\n webidl.converters.FormData = webidl.interfaceConverter(\n FormData2\n );\n webidl.converters.URLSearchParams = webidl.interfaceConverter(\n URLSearchParams\n );\n webidl.converters.XMLHttpRequestBodyInit = function(V) {\n if (typeof V === "string") {\n return webidl.converters.USVString(V);\n }\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false });\n }\n if (types.isAnyArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {\n return webidl.converters.BufferSource(V);\n }\n if (util.isFormDataLike(V)) {\n return webidl.converters.FormData(V, { strict: false });\n }\n if (V instanceof URLSearchParams) {\n return webidl.converters.URLSearchParams(V);\n }\n return webidl.converters.DOMString(V);\n };\n webidl.converters.BodyInit = function(V) {\n if (V instanceof ReadableStream) {\n return webidl.converters.ReadableStream(V);\n }\n if (V?.[Symbol.asyncIterator]) {\n return V;\n }\n return webidl.converters.XMLHttpRequestBodyInit(V);\n };\n webidl.converters.ResponseInit = webidl.dictionaryConverter([\n {\n key: "status",\n converter: webidl.converters["unsigned short"],\n defaultValue: 200\n },\n {\n key: "statusText",\n converter: webidl.converters.ByteString,\n defaultValue: ""\n },\n {\n key: "headers",\n converter: webidl.converters.HeadersInit\n }\n ]);\n module2.exports = {\n makeNetworkError,\n makeResponse,\n makeAppropriateNetworkError,\n filterResponse,\n Response: Response3,\n cloneResponse\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/compat/dispatcher-weakref.js\nvar require_dispatcher_weakref = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/compat/dispatcher-weakref.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { kConnected, kSize } = require_symbols2();\n var _CompatWeakRef = class _CompatWeakRef {\n constructor(value) {\n this.value = value;\n }\n deref() {\n return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value;\n }\n };\n __name(_CompatWeakRef, "CompatWeakRef");\n var CompatWeakRef = _CompatWeakRef;\n var _CompatFinalizer = class _CompatFinalizer {\n constructor(finalizer) {\n this.finalizer = finalizer;\n }\n register(dispatcher, key) {\n dispatcher.on("disconnect", () => {\n if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n this.finalizer(key);\n }\n });\n }\n };\n __name(_CompatFinalizer, "CompatFinalizer");\n var CompatFinalizer = _CompatFinalizer;\n module2.exports = function() {\n return {\n WeakRef: global.WeakRef || CompatWeakRef,\n FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer\n };\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/request.js\nvar require_request = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/request.js"(exports2, module2) {\n "use strict";\n init_define_process();\n global.FinalizationRegistry = function() {\n return { register: function() {\n } };\n };\n var { extractBody, mixinBody, cloneBody } = require_body();\n var { Headers: Headers3, fill: fillHeaders, HeadersList } = require_headers();\n var { FinalizationRegistry } = require_dispatcher_weakref()();\n var util = require_util();\n var {\n isValidHTTPToken,\n sameOrigin,\n normalizeMethod,\n makePolicyContainer\n } = require_util2();\n var {\n forbiddenMethods,\n corsSafeListedMethods,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n requestDuplex\n } = require_constants();\n var { kEnumerableProperty } = util;\n var { kHeaders: kHeaders2, kSignal, kState, kGuard: kGuard2, kRealm } = require_symbols();\n var { webidl } = require_webidl();\n var { getGlobalOrigin } = require_global();\n var { URLSerializer } = require_dataURL();\n var { kHeadersList } = require_symbols2();\n var assert = require("assert");\n var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require("events");\n var TransformStream = globalThis.TransformStream;\n var kInit = Symbol("init");\n var kAbortController = Symbol("abortController");\n var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n signal.removeEventListener("abort", abort);\n });\n var _Request2 = class _Request2 {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor(input, init = {}) {\n if (input === kInit) {\n return;\n }\n webidl.argumentLengthCheck(arguments, 1, { header: "Request constructor" });\n input = webidl.converters.RequestInfo(input);\n init = webidl.converters.RequestInit(init);\n this[kRealm] = {\n settingsObject: {\n baseUrl: getGlobalOrigin(),\n get origin() {\n return this.baseUrl?.origin;\n },\n policyContainer: makePolicyContainer()\n }\n };\n let request = null;\n let fallbackMode = null;\n const baseUrl = this[kRealm].settingsObject.baseUrl;\n let signal = null;\n if (typeof input === "string") {\n let parsedURL;\n try {\n parsedURL = new URL(input, baseUrl);\n } catch (err) {\n throw new TypeError("Failed to parse URL from " + input, { cause: err });\n }\n if (parsedURL.username || parsedURL.password) {\n throw new TypeError(\n "Request cannot be constructed from a URL that includes credentials: " + input\n );\n }\n request = makeRequest({ urlList: [parsedURL] });\n fallbackMode = "cors";\n } else {\n assert(input instanceof _Request2);\n request = input[kState];\n signal = input[kSignal];\n }\n const origin = this[kRealm].settingsObject.origin;\n let window = "client";\n if (request.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request.window, origin)) {\n window = request.window;\n }\n if (init.window != null) {\n throw new TypeError(`\'window\' option \'${window}\' must be null`);\n }\n if ("window" in init) {\n window = "no-window";\n }\n request = makeRequest({\n // URL request\u2019s URL.\n // undici implementation note: this is set as the first item in request\'s urlList in makeRequest\n // method request\u2019s method.\n method: request.method,\n // header list A copy of request\u2019s header list.\n // undici implementation note: headersList is cloned in makeRequest\n headersList: request.headersList,\n // unsafe-request flag Set.\n unsafeRequest: request.unsafeRequest,\n // client This\u2019s relevant settings object.\n client: this[kRealm].settingsObject,\n // window window.\n window,\n // priority request\u2019s priority.\n priority: request.priority,\n // origin request\u2019s origin. The propagation of the origin is only significant for navigation requests\n // being handled by a service worker. In this scenario a request can have an origin that is different\n // from the current client.\n origin: request.origin,\n // referrer request\u2019s referrer.\n referrer: request.referrer,\n // referrer policy request\u2019s referrer policy.\n referrerPolicy: request.referrerPolicy,\n // mode request\u2019s mode.\n mode: request.mode,\n // credentials mode request\u2019s credentials mode.\n credentials: request.credentials,\n // cache mode request\u2019s cache mode.\n cache: request.cache,\n // redirect mode request\u2019s redirect mode.\n redirect: request.redirect,\n // integrity metadata request\u2019s integrity metadata.\n integrity: request.integrity,\n // keepalive request\u2019s keepalive.\n keepalive: request.keepalive,\n // reload-navigation flag request\u2019s reload-navigation flag.\n reloadNavigation: request.reloadNavigation,\n // history-navigation flag request\u2019s history-navigation flag.\n historyNavigation: request.historyNavigation,\n // URL list A clone of request\u2019s URL list.\n urlList: [...request.urlList]\n });\n if (Object.keys(init).length > 0) {\n if (request.mode === "navigate") {\n request.mode = "same-origin";\n }\n request.reloadNavigation = false;\n request.historyNavigation = false;\n request.origin = "client";\n request.referrer = "client";\n request.referrerPolicy = "";\n request.url = request.urlList[request.urlList.length - 1];\n request.urlList = [request.url];\n }\n if (init.referrer !== void 0) {\n const referrer = init.referrer;\n if (referrer === "") {\n request.referrer = "no-referrer";\n } else {\n let parsedReferrer;\n try {\n parsedReferrer = new URL(referrer, baseUrl);\n } catch (err) {\n throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err });\n }\n if (parsedReferrer.protocol === "about:" && parsedReferrer.hostname === "client" || origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) {\n request.referrer = "client";\n } else {\n request.referrer = parsedReferrer;\n }\n }\n }\n if (init.referrerPolicy !== void 0) {\n request.referrerPolicy = init.referrerPolicy;\n }\n let mode;\n if (init.mode !== void 0) {\n mode = init.mode;\n } else {\n mode = fallbackMode;\n }\n if (mode === "navigate") {\n throw webidl.errors.exception({\n header: "Request constructor",\n message: "invalid request mode navigate."\n });\n }\n if (mode != null) {\n request.mode = mode;\n }\n if (init.credentials !== void 0) {\n request.credentials = init.credentials;\n }\n if (init.cache !== void 0) {\n request.cache = init.cache;\n }\n if (request.cache === "only-if-cached" && request.mode !== "same-origin") {\n throw new TypeError(\n "\'only-if-cached\' can be set only with \'same-origin\' mode"\n );\n }\n if (init.redirect !== void 0) {\n request.redirect = init.redirect;\n }\n if (init.integrity !== void 0 && init.integrity != null) {\n request.integrity = String(init.integrity);\n }\n if (init.keepalive !== void 0) {\n request.keepalive = Boolean(init.keepalive);\n }\n if (init.method !== void 0) {\n let method = init.method;\n if (!isValidHTTPToken(init.method)) {\n throw TypeError(`\'${init.method}\' is not a valid HTTP method.`);\n }\n if (forbiddenMethods.indexOf(method.toUpperCase()) !== -1) {\n throw TypeError(`\'${init.method}\' HTTP method is unsupported.`);\n }\n method = normalizeMethod(init.method);\n request.method = method;\n }\n if (init.signal !== void 0) {\n signal = init.signal;\n }\n this[kState] = request;\n const ac = new AbortController();\n this[kSignal] = ac.signal;\n this[kSignal][kRealm] = this[kRealm];\n if (signal != null) {\n if (!signal || typeof signal.aborted !== "boolean" || typeof signal.addEventListener !== "function") {\n throw new TypeError(\n "Failed to construct \'Request\': member signal is not of type AbortSignal."\n );\n }\n if (signal.aborted) {\n ac.abort(signal.reason);\n } else {\n this[kAbortController] = ac;\n const acRef = new WeakRef(ac);\n const abort = /* @__PURE__ */ __name(function() {\n const ac2 = acRef.deref();\n if (ac2 !== void 0) {\n ac2.abort(this.reason);\n }\n }, "abort");\n try {\n if (typeof getMaxListeners === "function" && getMaxListeners(signal) === defaultMaxListeners) {\n setMaxListeners(100, signal);\n } else if (getEventListeners(signal, "abort").length >= defaultMaxListeners) {\n setMaxListeners(100, signal);\n }\n } catch {\n }\n util.addAbortListener(signal, abort);\n requestFinalizer.register(ac, { signal, abort });\n }\n }\n this[kHeaders2] = new Headers3();\n this[kHeaders2][kHeadersList] = request.headersList;\n this[kHeaders2][kGuard2] = "request";\n this[kHeaders2][kRealm] = this[kRealm];\n if (mode === "no-cors") {\n if (!corsSafeListedMethods.includes(request.method)) {\n throw new TypeError(\n `\'${request.method} is unsupported in no-cors mode.`\n );\n }\n this[kHeaders2][kGuard2] = "request-no-cors";\n }\n if (Object.keys(init).length !== 0) {\n let headers = new Headers3(this[kHeaders2]);\n if (init.headers !== void 0) {\n headers = init.headers;\n }\n this[kHeaders2][kHeadersList].clear();\n if (headers.constructor.name === "Headers") {\n for (const [key, val] of headers) {\n this[kHeaders2].append(key, val);\n }\n } else {\n fillHeaders(this[kHeaders2], headers);\n }\n }\n const inputBody = input instanceof _Request2 ? input[kState].body : null;\n if ((init.body != null || inputBody != null) && (request.method === "GET" || request.method === "HEAD")) {\n throw new TypeError("Request with GET/HEAD method cannot have body.");\n }\n let initBody = null;\n if (init.body != null) {\n const [extractedBody, contentType] = extractBody(\n init.body,\n request.keepalive\n );\n initBody = extractedBody;\n if (contentType && !this[kHeaders2][kHeadersList].contains("content-type")) {\n this[kHeaders2].append("content-type", contentType);\n }\n }\n const inputOrInitBody = initBody ?? inputBody;\n if (inputOrInitBody != null && inputOrInitBody.source == null) {\n if (initBody != null && init.duplex == null) {\n throw new TypeError("RequestInit: duplex option is required when sending a body.");\n }\n if (request.mode !== "same-origin" && request.mode !== "cors") {\n throw new TypeError(\n \'If request is made from ReadableStream, mode should be "same-origin" or "cors"\'\n );\n }\n request.useCORSPreflightFlag = true;\n }\n let finalBody = inputOrInitBody;\n if (initBody == null && inputBody != null) {\n if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n throw new TypeError(\n "Cannot construct a Request with a Request object that has already been used."\n );\n }\n if (!TransformStream) {\n TransformStream = require("./streams").TransformStream;\n }\n const identityTransform = new TransformStream();\n inputBody.stream.pipeThrough(identityTransform);\n finalBody = {\n source: inputBody.source,\n length: inputBody.length,\n stream: identityTransform.readable\n };\n }\n this[kState].body = finalBody;\n }\n // Returns request\u2019s HTTP method, which is "GET" by default.\n get method() {\n webidl.brandCheck(this, _Request2);\n return this[kState].method;\n }\n // Returns the URL of request as a string.\n get url() {\n webidl.brandCheck(this, _Request2);\n return URLSerializer(this[kState].url);\n }\n // Returns a Headers object consisting of the headers associated with request.\n // Note that headers added in the network layer by the user agent will not\n // be accounted for in this object, e.g., the "Host" header.\n get headers() {\n webidl.brandCheck(this, _Request2);\n return this[kHeaders2];\n }\n // Returns the kind of resource requested by request, e.g., "document"\n // or "script".\n get destination() {\n webidl.brandCheck(this, _Request2);\n return this[kState].destination;\n }\n // Returns the referrer of request. Its value can be a same-origin URL if\n // explicitly set in init, the empty string to indicate no referrer, and\n // "about:client" when defaulting to the global\u2019s default. This is used\n // during fetching to determine the value of the `Referer` header of the\n // request being made.\n get referrer() {\n webidl.brandCheck(this, _Request2);\n if (this[kState].referrer === "no-referrer") {\n return "";\n }\n if (this[kState].referrer === "client") {\n return "about:client";\n }\n return this[kState].referrer.toString();\n }\n // Returns the referrer policy associated with request.\n // This is used during fetching to compute the value of the request\u2019s\n // referrer.\n get referrerPolicy() {\n webidl.brandCheck(this, _Request2);\n return this[kState].referrerPolicy;\n }\n // Returns the mode associated with request, which is a string indicating\n // whether the request will use CORS, or will be restricted to same-origin\n // URLs.\n get mode() {\n webidl.brandCheck(this, _Request2);\n return this[kState].mode;\n }\n // Returns the credentials mode associated with request,\n // which is a string indicating whether credentials will be sent with the\n // request always, never, or only when sent to a same-origin URL.\n get credentials() {\n return this[kState].credentials;\n }\n // Returns the cache mode associated with request,\n // which is a string indicating how the request will\n // interact with the browser\u2019s cache when fetching.\n get cache() {\n webidl.brandCheck(this, _Request2);\n return this[kState].cache;\n }\n // Returns the redirect mode associated with request,\n // which is a string indicating how redirects for the\n // request will be handled during fetching. A request\n // will follow redirects by default.\n get redirect() {\n webidl.brandCheck(this, _Request2);\n return this[kState].redirect;\n }\n // Returns request\u2019s subresource integrity metadata, which is a\n // cryptographic hash of the resource being fetched. Its value\n // consists of multiple hashes separated by whitespace. [SRI]\n get integrity() {\n webidl.brandCheck(this, _Request2);\n return this[kState].integrity;\n }\n // Returns a boolean indicating whether or not request can outlive the\n // global in which it was created.\n get keepalive() {\n webidl.brandCheck(this, _Request2);\n return this[kState].keepalive;\n }\n // Returns a boolean indicating whether or not request is for a reload\n // navigation.\n get isReloadNavigation() {\n webidl.brandCheck(this, _Request2);\n return this[kState].reloadNavigation;\n }\n // Returns a boolean indicating whether or not request is for a history\n // navigation (a.k.a. back-foward navigation).\n get isHistoryNavigation() {\n webidl.brandCheck(this, _Request2);\n return this[kState].historyNavigation;\n }\n // Returns the signal associated with request, which is an AbortSignal\n // object indicating whether or not request has been aborted, and its\n // abort event handler.\n get signal() {\n webidl.brandCheck(this, _Request2);\n return this[kSignal];\n }\n get body() {\n webidl.brandCheck(this, _Request2);\n return this[kState].body ? this[kState].body.stream : null;\n }\n get bodyUsed() {\n webidl.brandCheck(this, _Request2);\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream);\n }\n get duplex() {\n webidl.brandCheck(this, _Request2);\n return "half";\n }\n // Returns a clone of request.\n clone() {\n webidl.brandCheck(this, _Request2);\n if (this.bodyUsed || this.body?.locked) {\n throw new TypeError("unusable");\n }\n const clonedRequest = cloneRequest(this[kState]);\n const clonedRequestObject = new _Request2(kInit);\n clonedRequestObject[kState] = clonedRequest;\n clonedRequestObject[kRealm] = this[kRealm];\n clonedRequestObject[kHeaders2] = new Headers3();\n clonedRequestObject[kHeaders2][kHeadersList] = clonedRequest.headersList;\n clonedRequestObject[kHeaders2][kGuard2] = this[kHeaders2][kGuard2];\n clonedRequestObject[kHeaders2][kRealm] = this[kHeaders2][kRealm];\n const ac = new AbortController();\n if (this.signal.aborted) {\n ac.abort(this.signal.reason);\n } else {\n util.addAbortListener(\n this.signal,\n () => {\n ac.abort(this.signal.reason);\n }\n );\n }\n clonedRequestObject[kSignal] = ac.signal;\n return clonedRequestObject;\n }\n };\n __name(_Request2, "Request");\n var Request2 = _Request2;\n mixinBody(Request2);\n function makeRequest(init) {\n const request = {\n method: "GET",\n localURLsOnly: false,\n unsafeRequest: false,\n body: null,\n client: null,\n reservedClient: null,\n replacesClientId: "",\n window: "client",\n keepalive: false,\n serviceWorkers: "all",\n initiator: "",\n destination: "",\n priority: null,\n origin: "client",\n policyContainer: "client",\n referrer: "client",\n referrerPolicy: "",\n mode: "no-cors",\n useCORSPreflightFlag: false,\n credentials: "same-origin",\n useCredentials: false,\n cache: "default",\n redirect: "follow",\n integrity: "",\n cryptoGraphicsNonceMetadata: "",\n parserMetadata: "",\n reloadNavigation: false,\n historyNavigation: false,\n userActivation: false,\n taintedOrigin: false,\n redirectCount: 0,\n responseTainting: "basic",\n preventNoCacheCacheControlHeaderModification: false,\n done: false,\n timingAllowFailed: false,\n ...init,\n headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList()\n };\n request.url = request.urlList[0];\n return request;\n }\n __name(makeRequest, "makeRequest");\n function cloneRequest(request) {\n const newRequest = makeRequest({ ...request, body: null });\n if (request.body != null) {\n newRequest.body = cloneBody(request.body);\n }\n return newRequest;\n }\n __name(cloneRequest, "cloneRequest");\n Object.defineProperties(Request2.prototype, {\n method: kEnumerableProperty,\n url: kEnumerableProperty,\n headers: kEnumerableProperty,\n redirect: kEnumerableProperty,\n clone: kEnumerableProperty,\n signal: kEnumerableProperty,\n duplex: kEnumerableProperty,\n destination: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n isHistoryNavigation: kEnumerableProperty,\n isReloadNavigation: kEnumerableProperty,\n keepalive: kEnumerableProperty,\n integrity: kEnumerableProperty,\n cache: kEnumerableProperty,\n credentials: kEnumerableProperty,\n attribute: kEnumerableProperty,\n referrerPolicy: kEnumerableProperty,\n referrer: kEnumerableProperty,\n mode: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: "Request",\n configurable: true\n }\n });\n webidl.converters.Request = webidl.interfaceConverter(\n Request2\n );\n webidl.converters.RequestInfo = function(V) {\n if (typeof V === "string") {\n return webidl.converters.USVString(V);\n }\n if (V instanceof Request2) {\n return webidl.converters.Request(V);\n }\n return webidl.converters.USVString(V);\n };\n webidl.converters.AbortSignal = webidl.interfaceConverter(\n AbortSignal\n );\n webidl.converters.RequestInit = webidl.dictionaryConverter([\n {\n key: "method",\n converter: webidl.converters.ByteString\n },\n {\n key: "headers",\n converter: webidl.converters.HeadersInit\n },\n {\n key: "body",\n converter: webidl.nullableConverter(\n webidl.converters.BodyInit\n )\n },\n {\n key: "referrer",\n converter: webidl.converters.USVString\n },\n {\n key: "referrerPolicy",\n converter: webidl.converters.DOMString,\n // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n allowedValues: referrerPolicy\n },\n {\n key: "mode",\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#concept-request-mode\n allowedValues: requestMode\n },\n {\n key: "credentials",\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcredentials\n allowedValues: requestCredentials\n },\n {\n key: "cache",\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcache\n allowedValues: requestCache\n },\n {\n key: "redirect",\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestredirect\n allowedValues: requestRedirect\n },\n {\n key: "integrity",\n converter: webidl.converters.DOMString\n },\n {\n key: "keepalive",\n converter: webidl.converters.boolean\n },\n {\n key: "signal",\n converter: webidl.nullableConverter(\n (signal) => webidl.converters.AbortSignal(\n signal,\n { strict: false }\n )\n )\n },\n {\n key: "window",\n converter: webidl.converters.any\n },\n {\n key: "duplex",\n converter: webidl.converters.DOMString,\n allowedValues: requestDuplex\n }\n ]);\n module2.exports = { Request: Request2, makeRequest };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/dispatcher.js\nvar require_dispatcher = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/dispatcher.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var EventEmitter = require("events");\n var _Dispatcher = class _Dispatcher extends EventEmitter {\n dispatch() {\n throw new Error("not implemented");\n }\n close() {\n throw new Error("not implemented");\n }\n destroy() {\n throw new Error("not implemented");\n }\n };\n __name(_Dispatcher, "Dispatcher");\n var Dispatcher = _Dispatcher;\n module2.exports = Dispatcher;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/dispatcher-base.js\nvar require_dispatcher_base = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/dispatcher-base.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var Dispatcher = require_dispatcher();\n var {\n ClientDestroyedError,\n ClientClosedError,\n InvalidArgumentError: InvalidArgumentError2\n } = require_errors();\n var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols2();\n var kDestroyed = Symbol("destroyed");\n var kClosed = Symbol("closed");\n var kOnDestroyed = Symbol("onDestroyed");\n var kOnClosed = Symbol("onClosed");\n var kInterceptedDispatch = Symbol("Intercepted Dispatch");\n var _DispatcherBase = class _DispatcherBase extends Dispatcher {\n constructor() {\n super();\n this[kDestroyed] = false;\n this[kOnDestroyed] = null;\n this[kClosed] = false;\n this[kOnClosed] = [];\n }\n get destroyed() {\n return this[kDestroyed];\n }\n get closed() {\n return this[kClosed];\n }\n get interceptors() {\n return this[kInterceptors];\n }\n set interceptors(newInterceptors) {\n if (newInterceptors) {\n for (let i = newInterceptors.length - 1; i >= 0; i--) {\n const interceptor = this[kInterceptors][i];\n if (typeof interceptor !== "function") {\n throw new InvalidArgumentError2("interceptor must be an function");\n }\n }\n }\n this[kInterceptors] = newInterceptors;\n }\n close(callback) {\n if (callback === void 0) {\n return new Promise((resolve, reject) => {\n this.close((err, data) => {\n return err ? reject(err) : resolve(data);\n });\n });\n }\n if (typeof callback !== "function") {\n throw new InvalidArgumentError2("invalid callback");\n }\n if (this[kDestroyed]) {\n queueMicrotask(() => callback(new ClientDestroyedError(), null));\n return;\n }\n if (this[kClosed]) {\n if (this[kOnClosed]) {\n this[kOnClosed].push(callback);\n } else {\n queueMicrotask(() => callback(null, null));\n }\n return;\n }\n this[kClosed] = true;\n this[kOnClosed].push(callback);\n const onClosed = /* @__PURE__ */ __name(() => {\n const callbacks = this[kOnClosed];\n this[kOnClosed] = null;\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null);\n }\n }, "onClosed");\n this[kClose]().then(() => this.destroy()).then(() => {\n queueMicrotask(onClosed);\n });\n }\n destroy(err, callback) {\n if (typeof err === "function") {\n callback = err;\n err = null;\n }\n if (callback === void 0) {\n return new Promise((resolve, reject) => {\n this.destroy(err, (err2, data) => {\n return err2 ? (\n /* istanbul ignore next: should never error */\n reject(err2)\n ) : resolve(data);\n });\n });\n }\n if (typeof callback !== "function") {\n throw new InvalidArgumentError2("invalid callback");\n }\n if (this[kDestroyed]) {\n if (this[kOnDestroyed]) {\n this[kOnDestroyed].push(callback);\n } else {\n queueMicrotask(() => callback(null, null));\n }\n return;\n }\n if (!err) {\n err = new ClientDestroyedError();\n }\n this[kDestroyed] = true;\n this[kOnDestroyed] = this[kOnDestroyed] || [];\n this[kOnDestroyed].push(callback);\n const onDestroyed = /* @__PURE__ */ __name(() => {\n const callbacks = this[kOnDestroyed];\n this[kOnDestroyed] = null;\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null);\n }\n }, "onDestroyed");\n this[kDestroy](err).then(() => {\n queueMicrotask(onDestroyed);\n });\n }\n [kInterceptedDispatch](opts, handler) {\n if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n this[kInterceptedDispatch] = this[kDispatch];\n return this[kDispatch](opts, handler);\n }\n let dispatch = this[kDispatch].bind(this);\n for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n dispatch = this[kInterceptors][i](dispatch);\n }\n this[kInterceptedDispatch] = dispatch;\n return dispatch(opts, handler);\n }\n dispatch(opts, handler) {\n if (!handler || typeof handler !== "object") {\n throw new InvalidArgumentError2("handler must be an object");\n }\n try {\n if (!opts || typeof opts !== "object") {\n throw new InvalidArgumentError2("opts must be an object.");\n }\n if (this[kDestroyed] || this[kOnDestroyed]) {\n throw new ClientDestroyedError();\n }\n if (this[kClosed]) {\n throw new ClientClosedError();\n }\n return this[kInterceptedDispatch](opts, handler);\n } catch (err) {\n if (typeof handler.onError !== "function") {\n throw new InvalidArgumentError2("invalid onError method");\n }\n handler.onError(err);\n return false;\n }\n }\n };\n __name(_DispatcherBase, "DispatcherBase");\n var DispatcherBase = _DispatcherBase;\n module2.exports = DispatcherBase;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/node/fixed-queue.js\nvar require_fixed_queue = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/node/fixed-queue.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var kSize = 2048;\n var kMask = kSize - 1;\n var _FixedCircularBuffer = class _FixedCircularBuffer {\n constructor() {\n this.bottom = 0;\n this.top = 0;\n this.list = new Array(kSize);\n this.next = null;\n }\n isEmpty() {\n return this.top === this.bottom;\n }\n isFull() {\n return (this.top + 1 & kMask) === this.bottom;\n }\n push(data) {\n this.list[this.top] = data;\n this.top = this.top + 1 & kMask;\n }\n shift() {\n const nextItem = this.list[this.bottom];\n if (nextItem === void 0)\n return null;\n this.list[this.bottom] = void 0;\n this.bottom = this.bottom + 1 & kMask;\n return nextItem;\n }\n };\n __name(_FixedCircularBuffer, "FixedCircularBuffer");\n var FixedCircularBuffer = _FixedCircularBuffer;\n var _a;\n module2.exports = (_a = class {\n constructor() {\n this.head = this.tail = new FixedCircularBuffer();\n }\n isEmpty() {\n return this.head.isEmpty();\n }\n push(data) {\n if (this.head.isFull()) {\n this.head = this.head.next = new FixedCircularBuffer();\n }\n this.head.push(data);\n }\n shift() {\n const tail = this.tail;\n const next = tail.shift();\n if (tail.isEmpty() && tail.next !== null) {\n this.tail = tail.next;\n }\n return next;\n }\n }, __name(_a, "FixedQueue"), _a);\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/pool-stats.js\nvar require_pool_stats = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/pool-stats.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols2();\n var kPool = Symbol("pool");\n var _PoolStats = class _PoolStats {\n constructor(pool) {\n this[kPool] = pool;\n }\n get connected() {\n return this[kPool][kConnected];\n }\n get free() {\n return this[kPool][kFree];\n }\n get pending() {\n return this[kPool][kPending];\n }\n get queued() {\n return this[kPool][kQueued];\n }\n get running() {\n return this[kPool][kRunning];\n }\n get size() {\n return this[kPool][kSize];\n }\n };\n __name(_PoolStats, "PoolStats");\n var PoolStats = _PoolStats;\n module2.exports = PoolStats;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/pool-base.js\nvar require_pool_base = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/pool-base.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var DispatcherBase = require_dispatcher_base();\n var FixedQueue = require_fixed_queue();\n var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols2();\n var PoolStats = require_pool_stats();\n var kClients = Symbol("clients");\n var kNeedDrain = Symbol("needDrain");\n var kQueue = Symbol("queue");\n var kClosedResolve = Symbol("closed resolve");\n var kOnDrain = Symbol("onDrain");\n var kOnConnect = Symbol("onConnect");\n var kOnDisconnect = Symbol("onDisconnect");\n var kOnConnectionError = Symbol("onConnectionError");\n var kGetDispatcher = Symbol("get dispatcher");\n var kAddClient = Symbol("add client");\n var kRemoveClient = Symbol("remove client");\n var kStats = Symbol("stats");\n var _PoolBase = class _PoolBase extends DispatcherBase {\n constructor() {\n super();\n this[kQueue] = new FixedQueue();\n this[kClients] = [];\n this[kQueued] = 0;\n const pool = this;\n this[kOnDrain] = /* @__PURE__ */ __name(function onDrain(origin, targets) {\n const queue = pool[kQueue];\n let needDrain = false;\n while (!needDrain) {\n const item = queue.shift();\n if (!item) {\n break;\n }\n pool[kQueued]--;\n needDrain = !this.dispatch(item.opts, item.handler);\n }\n this[kNeedDrain] = needDrain;\n if (!this[kNeedDrain] && pool[kNeedDrain]) {\n pool[kNeedDrain] = false;\n pool.emit("drain", origin, [pool, ...targets]);\n }\n if (pool[kClosedResolve] && queue.isEmpty()) {\n Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]);\n }\n }, "onDrain");\n this[kOnConnect] = (origin, targets) => {\n pool.emit("connect", origin, [pool, ...targets]);\n };\n this[kOnDisconnect] = (origin, targets, err) => {\n pool.emit("disconnect", origin, [pool, ...targets], err);\n };\n this[kOnConnectionError] = (origin, targets, err) => {\n pool.emit("connectionError", origin, [pool, ...targets], err);\n };\n this[kStats] = new PoolStats(this);\n }\n get [kBusy]() {\n return this[kNeedDrain];\n }\n get [kConnected]() {\n return this[kClients].filter((client) => client[kConnected]).length;\n }\n get [kFree]() {\n return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length;\n }\n get [kPending]() {\n let ret = this[kQueued];\n for (const { [kPending]: pending } of this[kClients]) {\n ret += pending;\n }\n return ret;\n }\n get [kRunning]() {\n let ret = 0;\n for (const { [kRunning]: running } of this[kClients]) {\n ret += running;\n }\n return ret;\n }\n get [kSize]() {\n let ret = this[kQueued];\n for (const { [kSize]: size } of this[kClients]) {\n ret += size;\n }\n return ret;\n }\n get stats() {\n return this[kStats];\n }\n async [kClose]() {\n if (this[kQueue].isEmpty()) {\n return Promise.all(this[kClients].map((c) => c.close()));\n } else {\n return new Promise((resolve) => {\n this[kClosedResolve] = resolve;\n });\n }\n }\n async [kDestroy](err) {\n while (true) {\n const item = this[kQueue].shift();\n if (!item) {\n break;\n }\n item.handler.onError(err);\n }\n return Promise.all(this[kClients].map((c) => c.destroy(err)));\n }\n [kDispatch](opts, handler) {\n const dispatcher = this[kGetDispatcher]();\n if (!dispatcher) {\n this[kNeedDrain] = true;\n this[kQueue].push({ opts, handler });\n this[kQueued]++;\n } else if (!dispatcher.dispatch(opts, handler)) {\n dispatcher[kNeedDrain] = true;\n this[kNeedDrain] = !this[kGetDispatcher]();\n }\n return !this[kNeedDrain];\n }\n [kAddClient](client) {\n client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]);\n this[kClients].push(client);\n if (this[kNeedDrain]) {\n define_process_default.nextTick(() => {\n if (this[kNeedDrain]) {\n this[kOnDrain](client[kUrl], [this, client]);\n }\n });\n }\n return this;\n }\n [kRemoveClient](client) {\n client.close(() => {\n const idx = this[kClients].indexOf(client);\n if (idx !== -1) {\n this[kClients].splice(idx, 1);\n }\n });\n this[kNeedDrain] = this[kClients].some((dispatcher) => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true);\n }\n };\n __name(_PoolBase, "PoolBase");\n var PoolBase = _PoolBase;\n module2.exports = {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/timers.js\nvar require_timers = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/timers.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var fastNow = Date.now();\n var fastNowTimeout;\n var fastTimers = [];\n function onTimeout() {\n fastNow = Date.now();\n let len = fastTimers.length;\n let idx = 0;\n while (idx < len) {\n const timer = fastTimers[idx];\n if (timer.state === 0) {\n timer.state = fastNow + timer.delay;\n } else if (timer.state > 0 && fastNow >= timer.state) {\n timer.state = -1;\n timer.callback(timer.opaque);\n }\n if (timer.state === -1) {\n timer.state = -2;\n if (idx !== len - 1) {\n fastTimers[idx] = fastTimers.pop();\n } else {\n fastTimers.pop();\n }\n len -= 1;\n } else {\n idx += 1;\n }\n }\n if (fastTimers.length > 0) {\n refreshTimeout();\n }\n }\n __name(onTimeout, "onTimeout");\n function refreshTimeout() {\n if (fastNowTimeout && fastNowTimeout.refresh) {\n fastNowTimeout.refresh();\n } else {\n clearTimeout(fastNowTimeout);\n fastNowTimeout = setTimeout(onTimeout, 1e3);\n if (fastNowTimeout.unref) {\n fastNowTimeout.unref();\n }\n }\n }\n __name(refreshTimeout, "refreshTimeout");\n var _Timeout = class _Timeout {\n constructor(callback, delay, opaque) {\n this.callback = callback;\n this.delay = delay;\n this.opaque = opaque;\n this.state = -2;\n this.refresh();\n }\n refresh() {\n if (this.state === -2) {\n fastTimers.push(this);\n if (!fastNowTimeout || fastTimers.length === 1) {\n refreshTimeout();\n }\n }\n this.state = 0;\n }\n clear() {\n this.state = -1;\n }\n };\n __name(_Timeout, "Timeout");\n var Timeout = _Timeout;\n module2.exports = {\n setTimeout(callback, delay, opaque) {\n return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque);\n },\n clearTimeout(timeout) {\n if (timeout instanceof Timeout) {\n timeout.clear();\n } else {\n clearTimeout(timeout);\n }\n }\n };\n }\n});\n\n// src/patches/undici-core-request.js\nvar require_undici_core_request = __commonJS({\n "src/patches/undici-core-request.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { InvalidArgumentError: InvalidArgumentError2 } = require_errors();\n var assert = require("assert");\n var util = require_util();\n var tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&\'*+.|~]+$/;\n var headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n var invalidPathRegex = /[^\\u0021-\\u00ff]/;\n var kHandler = Symbol("handler");\n var channels = {};\n var extractBody;\n try {\n const diagnosticsChannel = require("diagnostics_channel");\n channels.create = diagnosticsChannel.channel("undici:request:create");\n channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent");\n channels.headers = diagnosticsChannel.channel("undici:request:headers");\n channels.trailers = diagnosticsChannel.channel("undici:request:trailers");\n channels.error = diagnosticsChannel.channel("undici:request:error");\n } catch {\n channels.create = { hasSubscribers: false };\n channels.bodySent = { hasSubscribers: false };\n channels.headers = { hasSubscribers: false };\n channels.trailers = { hasSubscribers: false };\n channels.error = { hasSubscribers: false };\n }\n var _Request2 = class _Request2 {\n constructor(origin, {\n path,\n method,\n body,\n headers,\n query,\n idempotent,\n blocking,\n upgrade,\n headersTimeout,\n bodyTimeout,\n reset,\n throwOnError\n }, handler) {\n if (typeof path !== "string") {\n throw new InvalidArgumentError2("path must be a string");\n } else if (path[0] !== "/" && !(path.startsWith("http://") || path.startsWith("https://")) && method !== "CONNECT") {\n throw new InvalidArgumentError2(\n "path must be an absolute URL or start with a slash"\n );\n } else if (invalidPathRegex.exec(path) !== null) {\n throw new InvalidArgumentError2("invalid request path");\n }\n if (typeof method !== "string") {\n throw new InvalidArgumentError2("method must be a string");\n } else if (tokenRegExp.exec(method) === null) {\n throw new InvalidArgumentError2("invalid request method");\n }\n if (upgrade && typeof upgrade !== "string") {\n throw new InvalidArgumentError2("upgrade must be a string");\n }\n if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError2("invalid headersTimeout");\n }\n if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError2("invalid bodyTimeout");\n }\n if (reset != null && typeof reset !== "boolean") {\n throw new InvalidArgumentError2("invalid reset");\n }\n this.headersTimeout = headersTimeout;\n this.bodyTimeout = bodyTimeout;\n this.throwOnError = throwOnError === true;\n this.method = method;\n if (body == null) {\n this.body = null;\n } else if (util.isStream(body)) {\n this.body = body;\n } else if (util.isBuffer(body)) {\n this.body = body.byteLength ? body : null;\n } else if (ArrayBuffer.isView(body)) {\n this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null;\n } else if (body instanceof ArrayBuffer) {\n this.body = body.byteLength ? Buffer.from(body) : null;\n } else if (typeof body === "string") {\n this.body = body.length ? Buffer.from(body) : null;\n } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {\n this.body = body;\n } else {\n throw new InvalidArgumentError2(\n "body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable"\n );\n }\n this.completed = false;\n this.aborted = false;\n this.upgrade = upgrade || null;\n this.path = query ? util.buildURL(path, query) : path;\n this.origin = origin;\n this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;\n this.blocking = blocking == null ? false : blocking;\n this.reset = reset == null ? null : reset;\n this.host = null;\n this.contentLength = null;\n this.contentType = null;\n this.headers = "";\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError2("headers array must be even");\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(this, headers[i], headers[i + 1]);\n }\n } else if (headers && typeof headers === "object") {\n const keys = Object.keys(headers);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n processHeader(this, key, headers[key]);\n }\n } else if (headers != null) {\n throw new InvalidArgumentError2("headers must be an object or an array");\n }\n if (util.isFormDataLike(this.body)) {\n if (util.nodeMajor < 16 || util.nodeMajor === 16 && util.nodeMinor < 8) {\n throw new InvalidArgumentError2(\n "Form-Data bodies are only supported in node v16.8 and newer."\n );\n }\n if (!extractBody) {\n extractBody = require_body().extractBody;\n }\n const [bodyStream, contentType] = extractBody(body);\n if (this.contentType == null) {\n this.contentType = contentType;\n this.headers += `content-type: ${contentType}\\r\n`;\n }\n this.body = bodyStream.stream;\n this.contentLength = bodyStream.length;\n } else if (util.isBlobLike(body) && this.contentType == null && body.type) {\n this.contentType = body.type;\n this.headers += `content-type: ${body.type}\\r\n`;\n }\n util.validateHandler(handler, method, upgrade);\n this.servername = util.getServerName(this.host);\n this[kHandler] = handler;\n if (channels.create.hasSubscribers) {\n channels.create.publish({ request: this });\n }\n }\n onBodySent(chunk) {\n if (this[kHandler].onBodySent) {\n try {\n this[kHandler].onBodySent(chunk);\n } catch (err) {\n this.onError(err);\n }\n }\n }\n onRequestSent() {\n if (channels.bodySent.hasSubscribers) {\n channels.bodySent.publish({ request: this });\n }\n }\n onConnect(abort) {\n assert(!this.aborted);\n assert(!this.completed);\n return this[kHandler].onConnect(abort);\n }\n onHeaders(statusCode, headers, resume, statusText) {\n assert(!this.aborted);\n assert(!this.completed);\n if (channels.headers.hasSubscribers) {\n channels.headers.publish({\n request: this,\n response: { statusCode, headers, statusText }\n });\n }\n return this[kHandler].onHeaders(statusCode, headers, resume, statusText);\n }\n onData(chunk) {\n assert(!this.aborted);\n assert(!this.completed);\n return this[kHandler].onData(chunk);\n }\n onUpgrade(statusCode, headers, socket) {\n assert(!this.aborted);\n assert(!this.completed);\n return this[kHandler].onUpgrade(statusCode, headers, socket);\n }\n onComplete(trailers) {\n assert(!this.aborted);\n this.completed = true;\n if (channels.trailers.hasSubscribers) {\n channels.trailers.publish({ request: this, trailers });\n }\n return this[kHandler].onComplete(trailers);\n }\n onError(error) {\n if (channels.error.hasSubscribers) {\n channels.error.publish({ request: this, error });\n }\n if (this.aborted) {\n return;\n }\n this.aborted = true;\n return this[kHandler].onError(error);\n }\n addHeader(key, value) {\n processHeader(this, key, value);\n return this;\n }\n };\n __name(_Request2, "Request");\n var Request2 = _Request2;\n function processHeaderValue(key, val) {\n if (val && typeof val === "object") {\n throw new InvalidArgumentError2(`invalid ${key} header`);\n }\n val = val != null ? `${val}` : "";\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError2(`invalid ${key} header`);\n }\n return `${key}: ${val}\\r\n`;\n }\n __name(processHeaderValue, "processHeaderValue");\n function processHeader(request, key, val) {\n if (val && typeof val === "object" && !Array.isArray(val)) {\n throw new InvalidArgumentError2(`invalid ${key} header`);\n } else if (val === void 0) {\n return;\n }\n if (request.host === null && key.length === 4 && key.toLowerCase() === "host") {\n request.host = val;\n } else if (request.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") {\n request.contentLength = parseInt(val, 10);\n if (!Number.isFinite(request.contentLength)) {\n throw new InvalidArgumentError2("invalid content-length header");\n }\n } else if (request.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") {\n request.contentType = val;\n request.headers += processHeaderValue(key, val);\n } else {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i++) {\n request.headers += processHeaderValue(key, val[i]);\n }\n } else {\n request.headers += processHeaderValue(key, val);\n }\n }\n }\n __name(processHeader, "processHeader");\n module2.exports = Request2;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/core/connect.js\nvar require_connect = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/core/connect.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var net = require("net");\n var assert = require("assert");\n var util = require_util();\n var { InvalidArgumentError: InvalidArgumentError2, ConnectTimeoutError } = require_errors();\n var tls;\n var SessionCache;\n var _a, _b;\n if (global.FinalizationRegistry) {\n SessionCache = (_a = class {\n constructor(maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions;\n this._sessionCache = /* @__PURE__ */ new Map();\n this._sessionRegistry = new global.FinalizationRegistry((key) => {\n if (this._sessionCache.size < this._maxCachedSessions) {\n return;\n }\n const ref = this._sessionCache.get(key);\n if (ref !== void 0 && ref.deref() === void 0) {\n this._sessionCache.delete(key);\n }\n });\n }\n get(sessionKey) {\n const ref = this._sessionCache.get(sessionKey);\n return ref ? ref.deref() : null;\n }\n set(sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return;\n }\n this._sessionCache.set(sessionKey, new WeakRef(session));\n this._sessionRegistry.register(session, sessionKey);\n }\n }, __name(_a, "WeakSessionCache"), _a);\n } else {\n SessionCache = (_b = class {\n constructor(maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions;\n this._sessionCache = /* @__PURE__ */ new Map();\n }\n get(sessionKey) {\n return this._sessionCache.get(sessionKey);\n }\n set(sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return;\n }\n if (this._sessionCache.size >= this._maxCachedSessions) {\n const { value: oldestKey } = this._sessionCache.keys().next();\n this._sessionCache.delete(oldestKey);\n }\n this._sessionCache.set(sessionKey, session);\n }\n }, __name(_b, "SimpleSessionCache"), _b);\n }\n function buildConnector({ maxCachedSessions, socketPath, timeout, ...opts }) {\n if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n throw new InvalidArgumentError2("maxCachedSessions must be a positive integer or zero");\n }\n const options = { path: socketPath, ...opts };\n const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions);\n timeout = timeout == null ? 1e4 : timeout;\n return /* @__PURE__ */ __name(function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n let socket;\n if (protocol === "https:") {\n if (!tls) {\n tls = require("tls");\n }\n servername = servername || options.servername || util.getServerName(host) || null;\n const sessionKey = servername || hostname;\n const session = sessionCache.get(sessionKey) || null;\n assert(sessionKey);\n socket = tls.connect({\n highWaterMark: 16384,\n // TLS in node can\'t have bigger HWM anyway...\n ...options,\n servername,\n session,\n localAddress,\n socket: httpSocket,\n // upgrade socket connection\n port: port || 443,\n host: hostname\n });\n socket.on("session", function(session2) {\n sessionCache.set(sessionKey, session2);\n });\n } else {\n assert(!httpSocket, "httpSocket can only be sent on TLS update");\n socket = net.connect({\n highWaterMark: 64 * 1024,\n // Same as nodejs fs streams.\n ...options,\n localAddress,\n port: port || 80,\n host: hostname\n });\n }\n if (options.keepAlive == null || options.keepAlive) {\n const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay;\n socket.setKeepAlive(true, keepAliveInitialDelay);\n }\n const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout);\n socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() {\n cancelTimeout();\n if (callback) {\n const cb = callback;\n callback = null;\n cb(null, this);\n }\n }).on("error", function(err) {\n cancelTimeout();\n if (callback) {\n const cb = callback;\n callback = null;\n cb(err);\n }\n });\n return socket;\n }, "connect");\n }\n __name(buildConnector, "buildConnector");\n function setupTimeout(onConnectTimeout2, timeout) {\n if (!timeout) {\n return () => {\n };\n }\n let s1 = null;\n let s2 = null;\n const timeoutId = setTimeout(() => {\n s1 = setImmediate(() => {\n if (define_process_default.platform === "win32") {\n s2 = setImmediate(() => onConnectTimeout2());\n } else {\n onConnectTimeout2();\n }\n });\n }, timeout);\n return () => {\n clearTimeout(timeoutId);\n clearImmediate(s1);\n clearImmediate(s2);\n };\n }\n __name(setupTimeout, "setupTimeout");\n function onConnectTimeout(socket) {\n util.destroy(socket, new ConnectTimeoutError());\n }\n __name(onConnectTimeout, "onConnectTimeout");\n module2.exports = buildConnector;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/llhttp/utils.js\nvar require_utils2 = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/llhttp/utils.js"(exports2) {\n "use strict";\n init_define_process();\n Object.defineProperty(exports2, "__esModule", { value: true });\n exports2.enumToMap = void 0;\n function enumToMap(obj) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n const value = obj[key];\n if (typeof value === "number") {\n res[key] = value;\n }\n });\n return res;\n }\n __name(enumToMap, "enumToMap");\n exports2.enumToMap = enumToMap;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/llhttp/constants.js\nvar require_constants2 = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/llhttp/constants.js"(exports2) {\n "use strict";\n init_define_process();\n Object.defineProperty(exports2, "__esModule", { value: true });\n exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0;\n var utils_1 = require_utils2();\n var ERROR;\n (function(ERROR2) {\n ERROR2[ERROR2["OK"] = 0] = "OK";\n ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL";\n ERROR2[ERROR2["STRICT"] = 2] = "STRICT";\n ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED";\n ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH";\n ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION";\n ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD";\n ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL";\n ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT";\n ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION";\n ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN";\n ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH";\n ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE";\n ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS";\n ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE";\n ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING";\n ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN";\n ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE";\n ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE";\n ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER";\n ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE";\n ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED";\n ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE";\n ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE";\n ERROR2[ERROR2["USER"] = 24] = "USER";\n })(ERROR = exports2.ERROR || (exports2.ERROR = {}));\n var TYPE;\n (function(TYPE2) {\n TYPE2[TYPE2["BOTH"] = 0] = "BOTH";\n TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST";\n TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE";\n })(TYPE = exports2.TYPE || (exports2.TYPE = {}));\n var FLAGS;\n (function(FLAGS2) {\n FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE";\n FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE";\n FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE";\n FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED";\n FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE";\n FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH";\n FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY";\n FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING";\n FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING";\n })(FLAGS = exports2.FLAGS || (exports2.FLAGS = {}));\n var LENIENT_FLAGS;\n (function(LENIENT_FLAGS2) {\n LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS";\n LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH";\n LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE";\n })(LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {}));\n var METHODS;\n (function(METHODS2) {\n METHODS2[METHODS2["DELETE"] = 0] = "DELETE";\n METHODS2[METHODS2["GET"] = 1] = "GET";\n METHODS2[METHODS2["HEAD"] = 2] = "HEAD";\n METHODS2[METHODS2["POST"] = 3] = "POST";\n METHODS2[METHODS2["PUT"] = 4] = "PUT";\n METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT";\n METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS";\n METHODS2[METHODS2["TRACE"] = 7] = "TRACE";\n METHODS2[METHODS2["COPY"] = 8] = "COPY";\n METHODS2[METHODS2["LOCK"] = 9] = "LOCK";\n METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL";\n METHODS2[METHODS2["MOVE"] = 11] = "MOVE";\n METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND";\n METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH";\n METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH";\n METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK";\n METHODS2[METHODS2["BIND"] = 16] = "BIND";\n METHODS2[METHODS2["REBIND"] = 17] = "REBIND";\n METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND";\n METHODS2[METHODS2["ACL"] = 19] = "ACL";\n METHODS2[METHODS2["REPORT"] = 20] = "REPORT";\n METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY";\n METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT";\n METHODS2[METHODS2["MERGE"] = 23] = "MERGE";\n METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH";\n METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY";\n METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE";\n METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE";\n METHODS2[METHODS2["PATCH"] = 28] = "PATCH";\n METHODS2[METHODS2["PURGE"] = 29] = "PURGE";\n METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR";\n METHODS2[METHODS2["LINK"] = 31] = "LINK";\n METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK";\n METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE";\n METHODS2[METHODS2["PRI"] = 34] = "PRI";\n METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE";\n METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE";\n METHODS2[METHODS2["SETUP"] = 37] = "SETUP";\n METHODS2[METHODS2["PLAY"] = 38] = "PLAY";\n METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE";\n METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN";\n METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER";\n METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER";\n METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT";\n METHODS2[METHODS2["RECORD"] = 44] = "RECORD";\n METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH";\n })(METHODS = exports2.METHODS || (exports2.METHODS = {}));\n exports2.METHODS_HTTP = [\n METHODS.DELETE,\n METHODS.GET,\n METHODS.HEAD,\n METHODS.POST,\n METHODS.PUT,\n METHODS.CONNECT,\n METHODS.OPTIONS,\n METHODS.TRACE,\n METHODS.COPY,\n METHODS.LOCK,\n METHODS.MKCOL,\n METHODS.MOVE,\n METHODS.PROPFIND,\n METHODS.PROPPATCH,\n METHODS.SEARCH,\n METHODS.UNLOCK,\n METHODS.BIND,\n METHODS.REBIND,\n METHODS.UNBIND,\n METHODS.ACL,\n METHODS.REPORT,\n METHODS.MKACTIVITY,\n METHODS.CHECKOUT,\n METHODS.MERGE,\n METHODS["M-SEARCH"],\n METHODS.NOTIFY,\n METHODS.SUBSCRIBE,\n METHODS.UNSUBSCRIBE,\n METHODS.PATCH,\n METHODS.PURGE,\n METHODS.MKCALENDAR,\n METHODS.LINK,\n METHODS.UNLINK,\n METHODS.PRI,\n // TODO(indutny): should we allow it with HTTP?\n METHODS.SOURCE\n ];\n exports2.METHODS_ICE = [\n METHODS.SOURCE\n ];\n exports2.METHODS_RTSP = [\n METHODS.OPTIONS,\n METHODS.DESCRIBE,\n METHODS.ANNOUNCE,\n METHODS.SETUP,\n METHODS.PLAY,\n METHODS.PAUSE,\n METHODS.TEARDOWN,\n METHODS.GET_PARAMETER,\n METHODS.SET_PARAMETER,\n METHODS.REDIRECT,\n METHODS.RECORD,\n METHODS.FLUSH,\n // For AirPlay\n METHODS.GET,\n METHODS.POST\n ];\n exports2.METHOD_MAP = utils_1.enumToMap(METHODS);\n exports2.H_METHOD_MAP = {};\n Object.keys(exports2.METHOD_MAP).forEach((key) => {\n if (/^H/.test(key)) {\n exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key];\n }\n });\n var FINISH;\n (function(FINISH2) {\n FINISH2[FINISH2["SAFE"] = 0] = "SAFE";\n FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB";\n FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE";\n })(FINISH = exports2.FINISH || (exports2.FINISH = {}));\n exports2.ALPHA = [];\n for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) {\n exports2.ALPHA.push(String.fromCharCode(i));\n exports2.ALPHA.push(String.fromCharCode(i + 32));\n }\n exports2.NUM_MAP = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9\n };\n exports2.HEX_MAP = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n a: 10,\n b: 11,\n c: 12,\n d: 13,\n e: 14,\n f: 15\n };\n exports2.NUM = [\n "0",\n "1",\n "2",\n "3",\n "4",\n "5",\n "6",\n "7",\n "8",\n "9"\n ];\n exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM);\n exports2.MARK = ["-", "_", ".", "!", "~", "*", "\'", "(", ")"];\n exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]);\n exports2.STRICT_URL_CHAR = [\n "!",\n \'"\',\n "$",\n "%",\n "&",\n "\'",\n "(",\n ")",\n "*",\n "+",\n ",",\n "-",\n ".",\n "/",\n ":",\n ";",\n "<",\n "=",\n ">",\n "@",\n "[",\n "\\\\",\n "]",\n "^",\n "_",\n "`",\n "{",\n "|",\n "}",\n "~"\n ].concat(exports2.ALPHANUM);\n exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([" ", "\\f"]);\n for (let i = 128; i <= 255; i++) {\n exports2.URL_CHAR.push(i);\n }\n exports2.HEX = exports2.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]);\n exports2.STRICT_TOKEN = [\n "!",\n "#",\n "$",\n "%",\n "&",\n "\'",\n "*",\n "+",\n "-",\n ".",\n "^",\n "_",\n "`",\n "|",\n "~"\n ].concat(exports2.ALPHANUM);\n exports2.TOKEN = exports2.STRICT_TOKEN.concat([" "]);\n exports2.HEADER_CHARS = [" "];\n for (let i = 32; i <= 255; i++) {\n if (i !== 127) {\n exports2.HEADER_CHARS.push(i);\n }\n }\n exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter((c) => c !== 44);\n exports2.MAJOR = exports2.NUM_MAP;\n exports2.MINOR = exports2.MAJOR;\n var HEADER_STATE;\n (function(HEADER_STATE2) {\n HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL";\n HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION";\n HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH";\n HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING";\n HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE";\n HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE";\n HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE";\n HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE";\n HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED";\n })(HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {}));\n exports2.SPECIAL_HEADERS = {\n "connection": HEADER_STATE.CONNECTION,\n "content-length": HEADER_STATE.CONTENT_LENGTH,\n "proxy-connection": HEADER_STATE.CONNECTION,\n "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING,\n "upgrade": HEADER_STATE.UPGRADE\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/handler/RedirectHandler.js\nvar require_RedirectHandler = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/handler/RedirectHandler.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var util = require_util();\n var { kBodyUsed } = require_symbols2();\n var assert = require("assert");\n var { InvalidArgumentError: InvalidArgumentError2 } = require_errors();\n var EE = require("events");\n var redirectableStatusCodes = [300, 301, 302, 303, 307, 308];\n var kBody = Symbol("body");\n var _BodyAsyncIterable = class _BodyAsyncIterable {\n constructor(body) {\n this[kBody] = body;\n this[kBodyUsed] = false;\n }\n async *[Symbol.asyncIterator]() {\n assert(!this[kBodyUsed], "disturbed");\n this[kBodyUsed] = true;\n yield* this[kBody];\n }\n };\n __name(_BodyAsyncIterable, "BodyAsyncIterable");\n var BodyAsyncIterable = _BodyAsyncIterable;\n var _RedirectHandler = class _RedirectHandler {\n constructor(dispatch, maxRedirections, opts, handler) {\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError2("maxRedirections must be a positive number");\n }\n util.validateHandler(handler, opts.method, opts.upgrade);\n this.dispatch = dispatch;\n this.location = null;\n this.abort = null;\n this.opts = { ...opts, maxRedirections: 0 };\n this.maxRedirections = maxRedirections;\n this.handler = handler;\n this.history = [];\n if (util.isStream(this.opts.body)) {\n if (util.bodyLength(this.opts.body) === 0) {\n this.opts.body.on("data", function() {\n assert(false);\n });\n }\n if (typeof this.opts.body.readableDidRead !== "boolean") {\n this.opts.body[kBodyUsed] = false;\n EE.prototype.on.call(this.opts.body, "data", function() {\n this[kBodyUsed] = true;\n });\n }\n } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") {\n this.opts.body = new BodyAsyncIterable(this.opts.body);\n } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) {\n this.opts.body = new BodyAsyncIterable(this.opts.body);\n }\n }\n onConnect(abort) {\n this.abort = abort;\n this.handler.onConnect(abort, { history: this.history });\n }\n onUpgrade(statusCode, headers, socket) {\n this.handler.onUpgrade(statusCode, headers, socket);\n }\n onError(error) {\n this.handler.onError(error);\n }\n onHeaders(statusCode, headers, resume, statusText) {\n this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers);\n if (this.opts.origin) {\n this.history.push(new URL(this.opts.path, this.opts.origin));\n }\n if (!this.location) {\n return this.handler.onHeaders(statusCode, headers, resume, statusText);\n }\n const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)));\n const path = search ? `${pathname}${search}` : pathname;\n this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin);\n this.opts.path = path;\n this.opts.origin = origin;\n this.opts.maxRedirections = 0;\n this.opts.query = null;\n if (statusCode === 303 && this.opts.method !== "HEAD") {\n this.opts.method = "GET";\n this.opts.body = null;\n }\n }\n onData(chunk) {\n if (this.location) {\n } else {\n return this.handler.onData(chunk);\n }\n }\n onComplete(trailers) {\n if (this.location) {\n this.location = null;\n this.abort = null;\n this.dispatch(this.opts, this);\n } else {\n this.handler.onComplete(trailers);\n }\n }\n onBodySent(chunk) {\n if (this.handler.onBodySent) {\n this.handler.onBodySent(chunk);\n }\n }\n };\n __name(_RedirectHandler, "RedirectHandler");\n var RedirectHandler = _RedirectHandler;\n function parseLocation(statusCode, headers) {\n if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n return null;\n }\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toString().toLowerCase() === "location") {\n return headers[i + 1];\n }\n }\n }\n __name(parseLocation, "parseLocation");\n function shouldRemoveHeader(header, removeContent, unknownOrigin) {\n return header.length === 4 && header.toString().toLowerCase() === "host" || removeContent && header.toString().toLowerCase().indexOf("content-") === 0 || unknownOrigin && header.length === 13 && header.toString().toLowerCase() === "authorization" || unknownOrigin && header.length === 6 && header.toString().toLowerCase() === "cookie";\n }\n __name(shouldRemoveHeader, "shouldRemoveHeader");\n function cleanRequestHeaders(headers, removeContent, unknownOrigin) {\n const ret = [];\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n ret.push(headers[i], headers[i + 1]);\n }\n }\n } else if (headers && typeof headers === "object") {\n for (const key of Object.keys(headers)) {\n if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n ret.push(key, headers[key]);\n }\n }\n } else {\n assert(headers == null, "headers must be an object or an array");\n }\n return ret;\n }\n __name(cleanRequestHeaders, "cleanRequestHeaders");\n module2.exports = RedirectHandler;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/interceptor/redirectInterceptor.js\nvar require_redirectInterceptor = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/interceptor/redirectInterceptor.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var RedirectHandler = require_RedirectHandler();\n function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {\n return (dispatch) => {\n return /* @__PURE__ */ __name(function Intercept(opts, handler) {\n const { maxRedirections = defaultMaxRedirections } = opts;\n if (!maxRedirections) {\n return dispatch(opts, handler);\n }\n const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler);\n opts = { ...opts, maxRedirections: 0 };\n return dispatch(opts, redirectHandler);\n }, "Intercept");\n };\n }\n __name(createRedirectInterceptor, "createRedirectInterceptor");\n module2.exports = createRedirectInterceptor;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/llhttp/llhttp-wasm.js\nvar require_llhttp_wasm = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) {\n "use strict";\n init_define_process();\n module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCsLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC1kAIABBGGpCADcDACAAQgA3AwAgAEE4akIANwMAIABBMGpCADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=";\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js\nvar require_llhttp_simd_wasm = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) {\n "use strict";\n init_define_process();\n module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AcsBygG4AckBuQHIAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBANwBC0EAIRAMxgELQQ4hEAzFAQtBDSEQDMQBC0EPIRAMwwELQRAhEAzCAQtBEyEQDMEBC0EUIRAMwAELQRUhEAy/AQtBFiEQDL4BC0EXIRAMvQELQRghEAy8AQtBGSEQDLsBC0EaIRAMugELQRshEAy5AQtBHCEQDLgBC0EIIRAMtwELQR0hEAy2AQtBICEQDLUBC0EfIRAMtAELQQchEAyzAQtBISEQDLIBC0EiIRAMsQELQR4hEAywAQtBIyEQDK8BC0ESIRAMrgELQREhEAytAQtBJCEQDKwBC0ElIRAMqwELQSYhEAyqAQtBJyEQDKkBC0HDASEQDKgBC0EpIRAMpwELQSshEAymAQtBLCEQDKUBC0EtIRAMpAELQS4hEAyjAQtBLyEQDKIBC0HEASEQDKEBC0EwIRAMoAELQTQhEAyfAQtBDCEQDJ4BC0ExIRAMnQELQTIhEAycAQtBMyEQDJsBC0E5IRAMmgELQTUhEAyZAQtBxQEhEAyYAQtBCyEQDJcBC0E6IRAMlgELQTYhEAyVAQtBCiEQDJQBC0E3IRAMkwELQTghEAySAQtBPCEQDJEBC0E7IRAMkAELQT0hEAyPAQtBCSEQDI4BC0EoIRAMjQELQT4hEAyMAQtBPyEQDIsBC0HAACEQDIoBC0HBACEQDIkBC0HCACEQDIgBC0HDACEQDIcBC0HEACEQDIYBC0HFACEQDIUBC0HGACEQDIQBC0EqIRAMgwELQccAIRAMggELQcgAIRAMgQELQckAIRAMgAELQcoAIRAMfwtBywAhEAx+C0HNACEQDH0LQcwAIRAMfAtBzgAhEAx7C0HPACEQDHoLQdAAIRAMeQtB0QAhEAx4C0HSACEQDHcLQdMAIRAMdgtB1AAhEAx1C0HWACEQDHQLQdUAIRAMcwtBBiEQDHILQdcAIRAMcQtBBSEQDHALQdgAIRAMbwtBBCEQDG4LQdkAIRAMbQtB2gAhEAxsC0HbACEQDGsLQdwAIRAMagtBAyEQDGkLQd0AIRAMaAtB3gAhEAxnC0HfACEQDGYLQeEAIRAMZQtB4AAhEAxkC0HiACEQDGMLQeMAIRAMYgtBAiEQDGELQeQAIRAMYAtB5QAhEAxfC0HmACEQDF4LQecAIRAMXQtB6AAhEAxcC0HpACEQDFsLQeoAIRAMWgtB6wAhEAxZC0HsACEQDFgLQe0AIRAMVwtB7gAhEAxWC0HvACEQDFULQfAAIRAMVAtB8QAhEAxTC0HyACEQDFILQfMAIRAMUQtB9AAhEAxQC0H1ACEQDE8LQfYAIRAMTgtB9wAhEAxNC0H4ACEQDEwLQfkAIRAMSwtB+gAhEAxKC0H7ACEQDEkLQfwAIRAMSAtB/QAhEAxHC0H+ACEQDEYLQf8AIRAMRQtBgAEhEAxEC0GBASEQDEMLQYIBIRAMQgtBgwEhEAxBC0GEASEQDEALQYUBIRAMPwtBhgEhEAw+C0GHASEQDD0LQYgBIRAMPAtBiQEhEAw7C0GKASEQDDoLQYsBIRAMOQtBjAEhEAw4C0GNASEQDDcLQY4BIRAMNgtBjwEhEAw1C0GQASEQDDQLQZEBIRAMMwtBkgEhEAwyC0GTASEQDDELQZQBIRAMMAtBlQEhEAwvC0GWASEQDC4LQZcBIRAMLQtBmAEhEAwsC0GZASEQDCsLQZoBIRAMKgtBmwEhEAwpC0GcASEQDCgLQZ0BIRAMJwtBngEhEAwmC0GfASEQDCULQaABIRAMJAtBoQEhEAwjC0GiASEQDCILQaMBIRAMIQtBpAEhEAwgC0GlASEQDB8LQaYBIRAMHgtBpwEhEAwdC0GoASEQDBwLQakBIRAMGwtBqgEhEAwaC0GrASEQDBkLQawBIRAMGAtBrQEhEAwXC0GuASEQDBYLQQEhEAwVC0GvASEQDBQLQbABIRAMEwtBsQEhEAwSC0GzASEQDBELQbIBIRAMEAtBtAEhEAwPC0G1ASEQDA4LQbYBIRAMDQtBtwEhEAwMC0G4ASEQDAsLQbkBIRAMCgtBugEhEAwJC0G7ASEQDAgLQcYBIRAMBwtBvAEhEAwGC0G9ASEQDAULQb4BIRAMBAtBvwEhEAwDC0HAASEQDAILQcIBIRAMAQtBwQEhEAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==";\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/client.js\nvar require_client = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/client.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var assert = require("assert");\n var net = require("net");\n var util = require_util();\n var timers = require_timers();\n var Request2 = require_undici_core_request();\n var DispatcherBase = require_dispatcher_base();\n var {\n RequestContentLengthMismatchError,\n ResponseContentLengthMismatchError,\n InvalidArgumentError: InvalidArgumentError2,\n RequestAbortedError,\n HeadersTimeoutError,\n HeadersOverflowError,\n SocketError,\n InformationalError,\n BodyTimeoutError,\n HTTPParserError,\n ResponseExceededMaxSizeError,\n ClientDestroyedError\n } = require_errors();\n var buildConnector = require_connect();\n var {\n kUrl,\n kReset,\n kServerName,\n kClient,\n kBusy,\n kParser,\n kConnect,\n kBlocking,\n kResuming,\n kRunning,\n kPending,\n kSize,\n kWriting,\n kQueue,\n kConnected,\n kConnecting,\n kNeedDrain,\n kNoRef,\n kKeepAliveDefaultTimeout,\n kHostHeader,\n kPendingIdx,\n kRunningIdx,\n kError,\n kPipelining,\n kSocket,\n kKeepAliveTimeoutValue,\n kMaxHeadersSize,\n kKeepAliveMaxTimeout,\n kKeepAliveTimeoutThreshold,\n kHeadersTimeout,\n kBodyTimeout,\n kStrictContentLength,\n kConnector,\n kMaxRedirections,\n kMaxRequests,\n kCounter,\n kClose,\n kDestroy,\n kDispatch,\n kInterceptors,\n kLocalAddress,\n kMaxResponseSize\n } = require_symbols2();\n var FastBuffer = Buffer[Symbol.species];\n var kClosedResolve = Symbol("kClosedResolve");\n var channels = {};\n try {\n const diagnosticsChannel = require("diagnostics_channel");\n channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders");\n channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect");\n channels.connectError = diagnosticsChannel.channel("undici:client:connectError");\n channels.connected = diagnosticsChannel.channel("undici:client:connected");\n } catch {\n channels.sendHeaders = { hasSubscribers: false };\n channels.beforeConnect = { hasSubscribers: false };\n channels.connectError = { hasSubscribers: false };\n channels.connected = { hasSubscribers: false };\n }\n var _Client = class _Client extends DispatcherBase {\n /**\n *\n * @param {string|URL} url\n * @param {import(\'../types/client\').Client.Options} options\n */\n constructor(url, {\n interceptors,\n maxHeaderSize,\n headersTimeout,\n socketTimeout,\n requestTimeout,\n connectTimeout,\n bodyTimeout,\n idleTimeout,\n keepAlive,\n keepAliveTimeout,\n maxKeepAliveTimeout,\n keepAliveMaxTimeout,\n keepAliveTimeoutThreshold,\n socketPath,\n pipelining,\n tls,\n strictContentLength,\n maxCachedSessions,\n maxRedirections,\n connect: connect2,\n maxRequestsPerClient,\n localAddress,\n maxResponseSize,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout\n } = {}) {\n super();\n if (keepAlive !== void 0) {\n throw new InvalidArgumentError2("unsupported keepAlive, use pipelining=0 instead");\n }\n if (socketTimeout !== void 0) {\n throw new InvalidArgumentError2("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");\n }\n if (requestTimeout !== void 0) {\n throw new InvalidArgumentError2("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");\n }\n if (idleTimeout !== void 0) {\n throw new InvalidArgumentError2("unsupported idleTimeout, use keepAliveTimeout instead");\n }\n if (maxKeepAliveTimeout !== void 0) {\n throw new InvalidArgumentError2("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");\n }\n if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n throw new InvalidArgumentError2("invalid maxHeaderSize");\n }\n if (socketPath != null && typeof socketPath !== "string") {\n throw new InvalidArgumentError2("invalid socketPath");\n }\n if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n throw new InvalidArgumentError2("invalid connectTimeout");\n }\n if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n throw new InvalidArgumentError2("invalid keepAliveTimeout");\n }\n if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n throw new InvalidArgumentError2("invalid keepAliveMaxTimeout");\n }\n if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n throw new InvalidArgumentError2("invalid keepAliveTimeoutThreshold");\n }\n if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError2("headersTimeout must be a positive integer or zero");\n }\n if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError2("bodyTimeout must be a positive integer or zero");\n }\n if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") {\n throw new InvalidArgumentError2("connect must be a function or an object");\n }\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError2("maxRedirections must be a positive number");\n }\n if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n throw new InvalidArgumentError2("maxRequestsPerClient must be a positive number");\n }\n if (localAddress != null && (typeof localAddress !== "string" || net.isIP(localAddress) === 0)) {\n throw new InvalidArgumentError2("localAddress must be valid string IP address");\n }\n if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n throw new InvalidArgumentError2("maxResponseSize must be a positive number");\n }\n if (autoSelectFamilyAttemptTimeout != null && (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)) {\n throw new InvalidArgumentError2("autoSelectFamilyAttemptTimeout must be a positive number");\n }\n if (typeof connect2 !== "function") {\n connect2 = buildConnector({\n ...tls,\n maxCachedSessions,\n socketPath,\n timeout: connectTimeout,\n ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,\n ...connect2\n });\n }\n this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) ? interceptors.Client : [createRedirectInterceptor({ maxRedirections })];\n this[kUrl] = util.parseOrigin(url);\n this[kConnector] = connect2;\n this[kSocket] = null;\n this[kPipelining] = pipelining != null ? pipelining : 1;\n this[kMaxHeadersSize] = maxHeaderSize || 16384;\n this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout;\n this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout;\n this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold;\n this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout];\n this[kServerName] = null;\n this[kLocalAddress] = localAddress != null ? localAddress : null;\n this[kResuming] = 0;\n this[kNeedDrain] = 0;\n this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\\r\n`;\n this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5;\n this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5;\n this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength;\n this[kMaxRedirections] = maxRedirections;\n this[kMaxRequests] = maxRequestsPerClient;\n this[kClosedResolve] = null;\n this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1;\n this[kQueue] = [];\n this[kRunningIdx] = 0;\n this[kPendingIdx] = 0;\n }\n get pipelining() {\n return this[kPipelining];\n }\n set pipelining(value) {\n this[kPipelining] = value;\n resume(this, true);\n }\n get [kPending]() {\n return this[kQueue].length - this[kPendingIdx];\n }\n get [kRunning]() {\n return this[kPendingIdx] - this[kRunningIdx];\n }\n get [kSize]() {\n return this[kQueue].length - this[kRunningIdx];\n }\n get [kConnected]() {\n return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed;\n }\n get [kBusy]() {\n const socket = this[kSocket];\n return socket && (socket[kReset] || socket[kWriting] || socket[kBlocking]) || this[kSize] >= (this[kPipelining] || 1) || this[kPending] > 0;\n }\n /* istanbul ignore: only used for test */\n [kConnect](cb) {\n connect(this);\n this.once("connect", cb);\n }\n [kDispatch](opts, handler) {\n const origin = opts.origin || this[kUrl].origin;\n const request = new Request2(origin, opts, handler);\n this[kQueue].push(request);\n if (this[kResuming]) {\n } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n this[kResuming] = 1;\n define_process_default.nextTick(resume, this);\n } else {\n resume(this, true);\n }\n if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n this[kNeedDrain] = 2;\n }\n return this[kNeedDrain] < 2;\n }\n async [kClose]() {\n return new Promise((resolve) => {\n if (!this[kSize]) {\n resolve(null);\n } else {\n this[kClosedResolve] = resolve;\n }\n });\n }\n async [kDestroy](err) {\n return new Promise((resolve) => {\n const requests = this[kQueue].splice(this[kPendingIdx]);\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i];\n errorRequest(this, request, err);\n }\n const callback = /* @__PURE__ */ __name(() => {\n if (this[kClosedResolve]) {\n this[kClosedResolve]();\n this[kClosedResolve] = null;\n }\n resolve();\n }, "callback");\n if (!this[kSocket]) {\n queueMicrotask(callback);\n } else {\n util.destroy(this[kSocket].on("close", callback), err);\n }\n resume(this);\n });\n }\n };\n __name(_Client, "Client");\n var Client = _Client;\n var constants = require_constants2();\n var createRedirectInterceptor = require_redirectInterceptor();\n var EMPTY_BUF = Buffer.alloc(0);\n async function lazyllhttp() {\n const llhttpWasmData = define_process_default.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0;\n let mod;\n try {\n mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), "base64"));\n } catch (e) {\n mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), "base64"));\n }\n return await WebAssembly.instantiate(mod, {\n env: {\n /* eslint-disable camelcase */\n wasm_on_url: (p, at, len) => {\n return 0;\n },\n wasm_on_status: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p);\n const start = at - currentBufferPtr + currentBufferRef.byteOffset;\n return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;\n },\n wasm_on_message_begin: (p) => {\n assert.strictEqual(currentParser.ptr, p);\n return currentParser.onMessageBegin() || 0;\n },\n wasm_on_header_field: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p);\n const start = at - currentBufferPtr + currentBufferRef.byteOffset;\n return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;\n },\n wasm_on_header_value: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p);\n const start = at - currentBufferPtr + currentBufferRef.byteOffset;\n return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;\n },\n wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n assert.strictEqual(currentParser.ptr, p);\n return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0;\n },\n wasm_on_body: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p);\n const start = at - currentBufferPtr + currentBufferRef.byteOffset;\n return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;\n },\n wasm_on_message_complete: (p) => {\n assert.strictEqual(currentParser.ptr, p);\n return currentParser.onMessageComplete() || 0;\n }\n /* eslint-enable camelcase */\n }\n });\n }\n __name(lazyllhttp, "lazyllhttp");\n var llhttpInstance = null;\n var llhttpPromise = lazyllhttp();\n llhttpPromise.catch();\n var currentParser = null;\n var currentBufferRef = null;\n var currentBufferSize = 0;\n var currentBufferPtr = null;\n var TIMEOUT_HEADERS = 1;\n var TIMEOUT_BODY = 2;\n var TIMEOUT_IDLE = 3;\n var _Parser = class _Parser {\n constructor(client, socket, { exports: exports3 }) {\n assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);\n this.llhttp = exports3;\n this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE);\n this.client = client;\n this.socket = socket;\n this.timeout = null;\n this.timeoutValue = null;\n this.timeoutType = null;\n this.statusCode = null;\n this.statusText = "";\n this.upgrade = false;\n this.headers = [];\n this.headersSize = 0;\n this.headersMaxSize = client[kMaxHeadersSize];\n this.shouldKeepAlive = false;\n this.paused = false;\n this.resume = this.resume.bind(this);\n this.bytesRead = 0;\n this.keepAlive = "";\n this.contentLength = "";\n this.connection = "";\n this.maxResponseSize = client[kMaxResponseSize];\n }\n setTimeout(value, type) {\n this.timeoutType = type;\n if (value !== this.timeoutValue) {\n timers.clearTimeout(this.timeout);\n if (value) {\n this.timeout = timers.setTimeout(onParserTimeout, value, this);\n if (this.timeout.unref) {\n this.timeout.unref();\n }\n } else {\n this.timeout = null;\n }\n this.timeoutValue = value;\n } else if (this.timeout) {\n if (this.timeout.refresh) {\n this.timeout.refresh();\n }\n }\n }\n resume() {\n if (this.socket.destroyed || !this.paused) {\n return;\n }\n assert(this.ptr != null);\n assert(currentParser == null);\n this.llhttp.llhttp_resume(this.ptr);\n assert(this.timeoutType === TIMEOUT_BODY);\n if (this.timeout) {\n if (this.timeout.refresh) {\n this.timeout.refresh();\n }\n }\n this.paused = false;\n this.execute(this.socket.read() || EMPTY_BUF);\n this.readMore();\n }\n readMore() {\n while (!this.paused && this.ptr) {\n const chunk = this.socket.read();\n if (chunk === null) {\n break;\n }\n this.execute(chunk);\n }\n }\n execute(data) {\n assert(this.ptr != null);\n assert(currentParser == null);\n assert(!this.paused);\n const { socket, llhttp } = this;\n if (data.length > currentBufferSize) {\n if (currentBufferPtr) {\n llhttp.free(currentBufferPtr);\n }\n currentBufferSize = Math.ceil(data.length / 4096) * 4096;\n currentBufferPtr = llhttp.malloc(currentBufferSize);\n }\n new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data);\n try {\n let ret;\n try {\n currentBufferRef = data;\n currentParser = this;\n ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length);\n } catch (err) {\n throw err;\n } finally {\n currentParser = null;\n currentBufferRef = null;\n }\n const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;\n if (ret === constants.ERROR.PAUSED_UPGRADE) {\n this.onUpgrade(data.slice(offset));\n } else if (ret === constants.ERROR.PAUSED) {\n this.paused = true;\n socket.unshift(data.slice(offset));\n } else if (ret !== constants.ERROR.OK) {\n const ptr = llhttp.llhttp_get_error_reason(this.ptr);\n let message = "";\n if (ptr) {\n const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);\n message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";\n }\n throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset));\n }\n } catch (err) {\n util.destroy(socket, err);\n }\n }\n destroy() {\n assert(this.ptr != null);\n assert(currentParser == null);\n this.llhttp.llhttp_free(this.ptr);\n this.ptr = null;\n timers.clearTimeout(this.timeout);\n this.timeout = null;\n this.timeoutValue = null;\n this.timeoutType = null;\n this.paused = false;\n }\n onStatus(buf) {\n this.statusText = buf.toString();\n }\n onMessageBegin() {\n const { socket, client } = this;\n if (socket.destroyed) {\n return -1;\n }\n const request = client[kQueue][client[kRunningIdx]];\n if (!request) {\n return -1;\n }\n }\n onHeaderField(buf) {\n const len = this.headers.length;\n if ((len & 1) === 0) {\n this.headers.push(buf);\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]);\n }\n this.trackHeader(buf.length);\n }\n onHeaderValue(buf) {\n let len = this.headers.length;\n if ((len & 1) === 1) {\n this.headers.push(buf);\n len += 1;\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]);\n }\n const key = this.headers[len - 2];\n if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") {\n this.keepAlive += buf.toString();\n } else if (key.length === 10 && key.toString().toLowerCase() === "connection") {\n this.connection += buf.toString();\n } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") {\n this.contentLength += buf.toString();\n }\n this.trackHeader(buf.length);\n }\n trackHeader(len) {\n this.headersSize += len;\n if (this.headersSize >= this.headersMaxSize) {\n util.destroy(this.socket, new HeadersOverflowError());\n }\n }\n onUpgrade(head) {\n const { upgrade, client, socket, headers, statusCode } = this;\n assert(upgrade);\n const request = client[kQueue][client[kRunningIdx]];\n assert(request);\n assert(!socket.destroyed);\n assert(socket === client[kSocket]);\n assert(!this.paused);\n assert(request.upgrade || request.method === "CONNECT");\n this.statusCode = null;\n this.statusText = "";\n this.shouldKeepAlive = null;\n assert(this.headers.length % 2 === 0);\n this.headers = [];\n this.headersSize = 0;\n socket.unshift(head);\n socket[kParser].destroy();\n socket[kParser] = null;\n socket[kClient] = null;\n socket[kError] = null;\n socket.removeListener("error", onSocketError).removeListener("readable", onSocketReadable).removeListener("end", onSocketEnd).removeListener("close", onSocketClose);\n client[kSocket] = null;\n client[kQueue][client[kRunningIdx]++] = null;\n client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));\n try {\n request.onUpgrade(statusCode, headers, socket);\n } catch (err) {\n util.destroy(socket, err);\n }\n resume(client);\n }\n onHeadersComplete(statusCode, upgrade, shouldKeepAlive) {\n const { client, socket, headers, statusText } = this;\n if (socket.destroyed) {\n return -1;\n }\n const request = client[kQueue][client[kRunningIdx]];\n if (!request) {\n return -1;\n }\n assert(!this.upgrade);\n assert(this.statusCode < 200);\n if (statusCode === 100) {\n util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));\n return -1;\n }\n if (upgrade && !request.upgrade) {\n util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket)));\n return -1;\n }\n assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS);\n this.statusCode = statusCode;\n this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD.\n request.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";\n if (this.statusCode >= 200) {\n const bodyTimeout = request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout];\n this.setTimeout(bodyTimeout, TIMEOUT_BODY);\n } else if (this.timeout) {\n if (this.timeout.refresh) {\n this.timeout.refresh();\n }\n }\n if (request.method === "CONNECT") {\n assert(client[kRunning] === 1);\n this.upgrade = true;\n return 2;\n }\n if (upgrade) {\n assert(client[kRunning] === 1);\n this.upgrade = true;\n return 2;\n }\n assert(this.headers.length % 2 === 0);\n this.headers = [];\n this.headersSize = 0;\n if (this.shouldKeepAlive && client[kPipelining]) {\n const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null;\n if (keepAliveTimeout != null) {\n const timeout = Math.min(\n keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n client[kKeepAliveMaxTimeout]\n );\n if (timeout <= 0) {\n socket[kReset] = true;\n } else {\n client[kKeepAliveTimeoutValue] = timeout;\n }\n } else {\n client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout];\n }\n } else {\n socket[kReset] = true;\n }\n let pause;\n try {\n pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false;\n } catch (err) {\n util.destroy(socket, err);\n return -1;\n }\n if (request.method === "HEAD") {\n return 1;\n }\n if (statusCode < 200) {\n return 1;\n }\n if (socket[kBlocking]) {\n socket[kBlocking] = false;\n resume(client);\n }\n return pause ? constants.ERROR.PAUSED : 0;\n }\n onBody(buf) {\n const { client, socket, statusCode, maxResponseSize } = this;\n if (socket.destroyed) {\n return -1;\n }\n const request = client[kQueue][client[kRunningIdx]];\n assert(request);\n assert.strictEqual(this.timeoutType, TIMEOUT_BODY);\n if (this.timeout) {\n if (this.timeout.refresh) {\n this.timeout.refresh();\n }\n }\n assert(statusCode >= 200);\n if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n util.destroy(socket, new ResponseExceededMaxSizeError());\n return -1;\n }\n this.bytesRead += buf.length;\n try {\n if (request.onData(buf) === false) {\n return constants.ERROR.PAUSED;\n }\n } catch (err) {\n util.destroy(socket, err);\n return -1;\n }\n }\n onMessageComplete() {\n const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this;\n if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n return -1;\n }\n if (upgrade) {\n return;\n }\n const request = client[kQueue][client[kRunningIdx]];\n assert(request);\n assert(statusCode >= 100);\n this.statusCode = null;\n this.statusText = "";\n this.bytesRead = 0;\n this.contentLength = "";\n this.keepAlive = "";\n this.connection = "";\n assert(this.headers.length % 2 === 0);\n this.headers = [];\n this.headersSize = 0;\n if (statusCode < 200) {\n return;\n }\n if (request.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n util.destroy(socket, new ResponseContentLengthMismatchError());\n return -1;\n }\n try {\n request.onComplete(headers);\n } catch (err) {\n errorRequest(client, request, err);\n }\n client[kQueue][client[kRunningIdx]++] = null;\n if (socket[kWriting]) {\n assert.strictEqual(client[kRunning], 0);\n util.destroy(socket, new InformationalError("reset"));\n return constants.ERROR.PAUSED;\n } else if (!shouldKeepAlive) {\n util.destroy(socket, new InformationalError("reset"));\n return constants.ERROR.PAUSED;\n } else if (socket[kReset] && client[kRunning] === 0) {\n util.destroy(socket, new InformationalError("reset"));\n return constants.ERROR.PAUSED;\n } else if (client[kPipelining] === 1) {\n setImmediate(resume, client);\n } else {\n resume(client);\n }\n }\n };\n __name(_Parser, "Parser");\n var Parser = _Parser;\n function onParserTimeout(parser) {\n const { socket, timeoutType, client } = parser;\n if (timeoutType === TIMEOUT_HEADERS) {\n if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n assert(!parser.paused, "cannot be paused while waiting for headers");\n util.destroy(socket, new HeadersTimeoutError());\n }\n } else if (timeoutType === TIMEOUT_BODY) {\n if (!parser.paused) {\n util.destroy(socket, new BodyTimeoutError());\n }\n } else if (timeoutType === TIMEOUT_IDLE) {\n assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]);\n util.destroy(socket, new InformationalError("socket idle timeout"));\n }\n }\n __name(onParserTimeout, "onParserTimeout");\n function onSocketReadable() {\n const { [kParser]: parser } = this;\n parser.readMore();\n }\n __name(onSocketReadable, "onSocketReadable");\n function onSocketError(err) {\n const { [kParser]: parser } = this;\n assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");\n if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {\n parser.onMessageComplete();\n return;\n }\n this[kError] = err;\n onError(this[kClient], err);\n }\n __name(onSocketError, "onSocketError");\n function onError(client, err) {\n if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") {\n assert(client[kPendingIdx] === client[kRunningIdx]);\n const requests = client[kQueue].splice(client[kRunningIdx]);\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i];\n errorRequest(client, request, err);\n }\n assert(client[kSize] === 0);\n }\n }\n __name(onError, "onError");\n function onSocketEnd() {\n const { [kParser]: parser } = this;\n if (parser.statusCode && !parser.shouldKeepAlive) {\n parser.onMessageComplete();\n return;\n }\n util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this)));\n }\n __name(onSocketEnd, "onSocketEnd");\n function onSocketClose() {\n const { [kClient]: client } = this;\n if (!this[kError] && this[kParser].statusCode && !this[kParser].shouldKeepAlive) {\n this[kParser].onMessageComplete();\n }\n this[kParser].destroy();\n this[kParser] = null;\n const err = this[kError] || new SocketError("closed", util.getSocketInfo(this));\n client[kSocket] = null;\n if (client.destroyed) {\n assert(client[kPending] === 0);\n const requests = client[kQueue].splice(client[kRunningIdx]);\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i];\n errorRequest(client, request, err);\n }\n } else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") {\n const request = client[kQueue][client[kRunningIdx]];\n client[kQueue][client[kRunningIdx]++] = null;\n errorRequest(client, request, err);\n }\n client[kPendingIdx] = client[kRunningIdx];\n assert(client[kRunning] === 0);\n client.emit("disconnect", client[kUrl], [client], err);\n resume(client);\n }\n __name(onSocketClose, "onSocketClose");\n async function connect(client) {\n assert(!client[kConnecting]);\n assert(!client[kSocket]);\n let { host, hostname, protocol, port } = client[kUrl];\n if (hostname[0] === "[") {\n const idx = hostname.indexOf("]");\n assert(idx !== -1);\n const ip = hostname.substr(1, idx - 1);\n assert(net.isIP(ip));\n hostname = ip;\n }\n client[kConnecting] = true;\n if (channels.beforeConnect.hasSubscribers) {\n channels.beforeConnect.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector]\n });\n }\n try {\n const socket = await new Promise((resolve, reject) => {\n client[kConnector]({\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n }, (err, socket2) => {\n if (err) {\n reject(err);\n } else {\n resolve(socket2);\n }\n });\n });\n if (client.destroyed) {\n util.destroy(socket.on("error", () => {\n }), new ClientDestroyedError());\n return;\n }\n if (!llhttpInstance) {\n llhttpInstance = await llhttpPromise;\n llhttpPromise = null;\n }\n client[kConnecting] = false;\n assert(socket);\n socket[kNoRef] = false;\n socket[kWriting] = false;\n socket[kReset] = false;\n socket[kBlocking] = false;\n socket[kError] = null;\n socket[kParser] = new Parser(client, socket, llhttpInstance);\n socket[kClient] = client;\n socket[kCounter] = 0;\n socket[kMaxRequests] = client[kMaxRequests];\n socket.on("error", onSocketError).on("readable", onSocketReadable).on("end", onSocketEnd).on("close", onSocketClose);\n client[kSocket] = socket;\n if (channels.connected.hasSubscribers) {\n channels.connected.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n socket\n });\n }\n client.emit("connect", client[kUrl], [client]);\n } catch (err) {\n if (client.destroyed) {\n return;\n }\n client[kConnecting] = false;\n if (channels.connectError.hasSubscribers) {\n channels.connectError.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n error: err\n });\n }\n if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") {\n assert(client[kRunning] === 0);\n while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n const request = client[kQueue][client[kPendingIdx]++];\n errorRequest(client, request, err);\n }\n } else {\n onError(client, err);\n }\n client.emit("connectionError", client[kUrl], [client], err);\n }\n resume(client);\n }\n __name(connect, "connect");\n function emitDrain(client) {\n client[kNeedDrain] = 0;\n client.emit("drain", client[kUrl], [client]);\n }\n __name(emitDrain, "emitDrain");\n function resume(client, sync) {\n if (client[kResuming] === 2) {\n return;\n }\n client[kResuming] = 2;\n _resume(client, sync);\n client[kResuming] = 0;\n if (client[kRunningIdx] > 256) {\n client[kQueue].splice(0, client[kRunningIdx]);\n client[kPendingIdx] -= client[kRunningIdx];\n client[kRunningIdx] = 0;\n }\n }\n __name(resume, "resume");\n function _resume(client, sync) {\n while (true) {\n if (client.destroyed) {\n assert(client[kPending] === 0);\n return;\n }\n if (client[kClosedResolve] && !client[kSize]) {\n client[kClosedResolve]();\n client[kClosedResolve] = null;\n return;\n }\n const socket = client[kSocket];\n if (socket && !socket.destroyed) {\n if (client[kSize] === 0) {\n if (!socket[kNoRef] && socket.unref) {\n socket.unref();\n socket[kNoRef] = true;\n }\n } else if (socket[kNoRef] && socket.ref) {\n socket.ref();\n socket[kNoRef] = false;\n }\n if (client[kSize] === 0) {\n if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE);\n }\n } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n const request2 = client[kQueue][client[kRunningIdx]];\n const headersTimeout = request2.headersTimeout != null ? request2.headersTimeout : client[kHeadersTimeout];\n socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS);\n }\n }\n }\n if (client[kBusy]) {\n client[kNeedDrain] = 2;\n } else if (client[kNeedDrain] === 2) {\n if (sync) {\n client[kNeedDrain] = 1;\n define_process_default.nextTick(emitDrain, client);\n } else {\n emitDrain(client);\n }\n continue;\n }\n if (client[kPending] === 0) {\n return;\n }\n if (client[kRunning] >= (client[kPipelining] || 1)) {\n return;\n }\n const request = client[kQueue][client[kPendingIdx]];\n if (client[kUrl].protocol === "https:" && client[kServerName] !== request.servername) {\n if (client[kRunning] > 0) {\n return;\n }\n client[kServerName] = request.servername;\n if (socket && socket.servername !== request.servername) {\n util.destroy(socket, new InformationalError("servername changed"));\n return;\n }\n }\n if (client[kConnecting]) {\n return;\n }\n if (!socket) {\n connect(client);\n return;\n }\n if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n return;\n }\n if (client[kRunning] > 0 && !request.idempotent) {\n return;\n }\n if (client[kRunning] > 0 && (request.upgrade || request.method === "CONNECT")) {\n return;\n }\n if (util.isStream(request.body) && util.bodyLength(request.body) === 0) {\n request.body.on(\n "data",\n /* istanbul ignore next */\n function() {\n assert(false);\n }\n ).on("error", function(err) {\n errorRequest(client, request, err);\n }).on("end", function() {\n util.destroy(this);\n });\n request.body = null;\n }\n if (client[kRunning] > 0 && (util.isStream(request.body) || util.isAsyncIterable(request.body))) {\n return;\n }\n if (!request.aborted && write(client, request)) {\n client[kPendingIdx]++;\n } else {\n client[kQueue].splice(client[kPendingIdx], 1);\n }\n }\n }\n __name(_resume, "_resume");\n function write(client, request) {\n const { body, method, path, host, upgrade, headers, blocking, reset } = request;\n const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";\n if (body && typeof body.read === "function") {\n body.read(0);\n }\n let contentLength = util.bodyLength(body);\n if (contentLength === null) {\n contentLength = request.contentLength;\n }\n if (contentLength === 0 && !expectsPayload) {\n contentLength = null;\n }\n if (request.contentLength !== null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError());\n return false;\n }\n define_process_default.emitWarning(new RequestContentLengthMismatchError());\n }\n const socket = client[kSocket];\n try {\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return;\n }\n errorRequest(client, request, err || new RequestAbortedError());\n util.destroy(socket, new InformationalError("aborted"));\n });\n } catch (err) {\n errorRequest(client, request, err);\n }\n if (request.aborted) {\n return false;\n }\n if (method === "HEAD") {\n socket[kReset] = true;\n }\n if (upgrade || method === "CONNECT") {\n socket[kReset] = true;\n }\n if (reset != null) {\n socket[kReset] = reset;\n }\n if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n socket[kReset] = true;\n }\n if (blocking) {\n socket[kBlocking] = true;\n }\n let header = `${method} ${path} HTTP/1.1\\r\n`;\n if (typeof host === "string") {\n header += `host: ${host}\\r\n`;\n } else {\n header += client[kHostHeader];\n }\n if (upgrade) {\n header += `connection: upgrade\\r\nupgrade: ${upgrade}\\r\n`;\n } else if (client[kPipelining] && !socket[kReset]) {\n header += "connection: keep-alive\\r\\n";\n } else {\n header += "connection: close\\r\\n";\n }\n if (headers) {\n header += headers;\n }\n if (channels.sendHeaders.hasSubscribers) {\n channels.sendHeaders.publish({ request, headers: header, socket });\n }\n if (!body) {\n if (contentLength === 0) {\n socket.write(`${header}content-length: 0\\r\n\\r\n`, "latin1");\n } else {\n assert(contentLength === null, "no body must not have content length");\n socket.write(`${header}\\r\n`, "latin1");\n }\n request.onRequestSent();\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, "buffer body must have content length");\n socket.cork();\n socket.write(`${header}content-length: ${contentLength}\\r\n\\r\n`, "latin1");\n socket.write(body);\n socket.uncork();\n request.onBodySent(body);\n request.onRequestSent();\n if (!expectsPayload) {\n socket[kReset] = true;\n }\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === "function") {\n writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload });\n } else {\n writeBlob({ body, client, request, socket, contentLength, header, expectsPayload });\n }\n } else if (util.isStream(body)) {\n writeStream({ body, client, request, socket, contentLength, header, expectsPayload });\n } else if (util.isIterable(body)) {\n writeIterable({ body, client, request, socket, contentLength, header, expectsPayload });\n } else {\n assert(false);\n }\n return true;\n }\n __name(write, "write");\n function writeStream({ body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");\n let finished = false;\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header });\n const onData = /* @__PURE__ */ __name(function(chunk) {\n if (finished) {\n return;\n }\n try {\n if (!writer.write(chunk) && this.pause) {\n this.pause();\n }\n } catch (err) {\n util.destroy(this, err);\n }\n }, "onData");\n const onDrain = /* @__PURE__ */ __name(function() {\n if (finished) {\n return;\n }\n if (body.resume) {\n body.resume();\n }\n }, "onDrain");\n const onAbort = /* @__PURE__ */ __name(function() {\n onFinished(new RequestAbortedError());\n }, "onAbort");\n const onFinished = /* @__PURE__ */ __name(function(err) {\n if (finished) {\n return;\n }\n finished = true;\n assert(socket.destroyed || socket[kWriting] && client[kRunning] <= 1);\n socket.off("drain", onDrain).off("error", onFinished);\n body.removeListener("data", onData).removeListener("end", onFinished).removeListener("error", onFinished).removeListener("close", onAbort);\n if (!err) {\n try {\n writer.end();\n } catch (er) {\n err = er;\n }\n }\n writer.destroy(err);\n if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) {\n util.destroy(body, err);\n } else {\n util.destroy(body);\n }\n }, "onFinished");\n body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onAbort);\n if (body.resume) {\n body.resume();\n }\n socket.on("drain", onDrain).on("error", onFinished);\n }\n __name(writeStream, "writeStream");\n async function writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength === body.size, "blob body must have content length");\n try {\n if (contentLength != null && contentLength !== body.size) {\n throw new RequestContentLengthMismatchError();\n }\n const buffer = Buffer.from(await body.arrayBuffer());\n socket.cork();\n socket.write(`${header}content-length: ${contentLength}\\r\n\\r\n`, "latin1");\n socket.write(buffer);\n socket.uncork();\n request.onBodySent(buffer);\n request.onRequestSent();\n if (!expectsPayload) {\n socket[kReset] = true;\n }\n resume(client);\n } catch (err) {\n util.destroy(socket, err);\n }\n }\n __name(writeBlob, "writeBlob");\n async function writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");\n let callback = null;\n function onDrain() {\n if (callback) {\n const cb = callback;\n callback = null;\n cb();\n }\n }\n __name(onDrain, "onDrain");\n const waitForDrain = /* @__PURE__ */ __name(() => new Promise((resolve, reject) => {\n assert(callback === null);\n if (socket[kError]) {\n reject(socket[kError]);\n } else {\n callback = resolve;\n }\n }), "waitForDrain");\n socket.on("close", onDrain).on("drain", onDrain);\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header });\n try {\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError];\n }\n if (!writer.write(chunk)) {\n await waitForDrain();\n }\n }\n writer.end();\n } catch (err) {\n writer.destroy(err);\n } finally {\n socket.off("close", onDrain).off("drain", onDrain);\n }\n }\n __name(writeIterable, "writeIterable");\n var _AsyncWriter = class _AsyncWriter {\n constructor({ socket, request, contentLength, client, expectsPayload, header }) {\n this.socket = socket;\n this.request = request;\n this.contentLength = contentLength;\n this.client = client;\n this.bytesWritten = 0;\n this.expectsPayload = expectsPayload;\n this.header = header;\n socket[kWriting] = true;\n }\n write(chunk) {\n const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this;\n if (socket[kError]) {\n throw socket[kError];\n }\n if (socket.destroyed) {\n return false;\n }\n const len = Buffer.byteLength(chunk);\n if (!len) {\n return true;\n }\n if (contentLength !== null && bytesWritten + len > contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError();\n }\n define_process_default.emitWarning(new RequestContentLengthMismatchError());\n }\n socket.cork();\n if (bytesWritten === 0) {\n if (!expectsPayload) {\n socket[kReset] = true;\n }\n if (contentLength === null) {\n socket.write(`${header}transfer-encoding: chunked\\r\n`, "latin1");\n } else {\n socket.write(`${header}content-length: ${contentLength}\\r\n\\r\n`, "latin1");\n }\n }\n if (contentLength === null) {\n socket.write(`\\r\n${len.toString(16)}\\r\n`, "latin1");\n }\n this.bytesWritten += len;\n const ret = socket.write(chunk);\n socket.uncork();\n request.onBodySent(chunk);\n if (!ret) {\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh();\n }\n }\n }\n return ret;\n }\n end() {\n const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this;\n request.onRequestSent();\n socket[kWriting] = false;\n if (socket[kError]) {\n throw socket[kError];\n }\n if (socket.destroyed) {\n return;\n }\n if (bytesWritten === 0) {\n if (expectsPayload) {\n socket.write(`${header}content-length: 0\\r\n\\r\n`, "latin1");\n } else {\n socket.write(`${header}\\r\n`, "latin1");\n }\n } else if (contentLength === null) {\n socket.write("\\r\\n0\\r\\n\\r\\n", "latin1");\n }\n if (contentLength !== null && bytesWritten !== contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError();\n } else {\n define_process_default.emitWarning(new RequestContentLengthMismatchError());\n }\n }\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh();\n }\n }\n resume(client);\n }\n destroy(err) {\n const { socket, client } = this;\n socket[kWriting] = false;\n if (err) {\n assert(client[kRunning] <= 1, "pipeline should only contain this request");\n util.destroy(socket, err);\n }\n }\n };\n __name(_AsyncWriter, "AsyncWriter");\n var AsyncWriter = _AsyncWriter;\n function errorRequest(client, request, err) {\n try {\n request.onError(err);\n assert(request.aborted);\n } catch (err2) {\n client.emit("error", err2);\n }\n }\n __name(errorRequest, "errorRequest");\n module2.exports = Client;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/pool.js\nvar require_pool = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/pool.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kGetDispatcher\n } = require_pool_base();\n var Client = require_client();\n var {\n InvalidArgumentError: InvalidArgumentError2\n } = require_errors();\n var util = require_util();\n var { kUrl, kInterceptors } = require_symbols2();\n var buildConnector = require_connect();\n var kOptions = Symbol("options");\n var kConnections = Symbol("connections");\n var kFactory = Symbol("factory");\n function defaultFactory(origin, opts) {\n return new Client(origin, opts);\n }\n __name(defaultFactory, "defaultFactory");\n var _Pool = class _Pool extends PoolBase {\n constructor(origin, {\n connections,\n factory = defaultFactory,\n connect,\n connectTimeout,\n tls,\n maxCachedSessions,\n socketPath,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n ...options\n } = {}) {\n super();\n if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n throw new InvalidArgumentError2("invalid connections");\n }\n if (typeof factory !== "function") {\n throw new InvalidArgumentError2("factory must be a function.");\n }\n if (connect != null && typeof connect !== "function" && typeof connect !== "object") {\n throw new InvalidArgumentError2("connect must be a function or an object");\n }\n if (typeof connect !== "function") {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n socketPath,\n timeout: connectTimeout == null ? 1e4 : connectTimeout,\n ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,\n ...connect\n });\n }\n this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : [];\n this[kConnections] = connections || null;\n this[kUrl] = util.parseOrigin(origin);\n this[kOptions] = { ...util.deepClone(options), connect };\n this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;\n this[kFactory] = factory;\n }\n [kGetDispatcher]() {\n let dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain]);\n if (dispatcher) {\n return dispatcher;\n }\n if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n dispatcher = this[kFactory](this[kUrl], this[kOptions]);\n this[kAddClient](dispatcher);\n }\n return dispatcher;\n }\n };\n __name(_Pool, "Pool");\n var Pool = _Pool;\n module2.exports = Pool;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/agent.js\nvar require_agent = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/agent.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { InvalidArgumentError: InvalidArgumentError2 } = require_errors();\n var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols2();\n var DispatcherBase = require_dispatcher_base();\n var Pool = require_pool();\n var Client = require_client();\n var util = require_util();\n var createRedirectInterceptor = require_redirectInterceptor();\n var { WeakRef: WeakRef2, FinalizationRegistry } = require_dispatcher_weakref()();\n var kOnConnect = Symbol("onConnect");\n var kOnDisconnect = Symbol("onDisconnect");\n var kOnConnectionError = Symbol("onConnectionError");\n var kMaxRedirections = Symbol("maxRedirections");\n var kOnDrain = Symbol("onDrain");\n var kFactory = Symbol("factory");\n var kFinalizer = Symbol("finalizer");\n var kOptions = Symbol("options");\n function defaultFactory(origin, opts) {\n return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts);\n }\n __name(defaultFactory, "defaultFactory");\n var _Agent = class _Agent extends DispatcherBase {\n constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n super();\n if (typeof factory !== "function") {\n throw new InvalidArgumentError2("factory must be a function.");\n }\n if (connect != null && typeof connect !== "function" && typeof connect !== "object") {\n throw new InvalidArgumentError2("connect must be a function or an object");\n }\n if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n throw new InvalidArgumentError2("maxRedirections must be a positive number");\n }\n if (connect && typeof connect !== "function") {\n connect = { ...connect };\n }\n this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) ? options.interceptors.Agent : [createRedirectInterceptor({ maxRedirections })];\n this[kOptions] = { ...util.deepClone(options), connect };\n this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;\n this[kMaxRedirections] = maxRedirections;\n this[kFactory] = factory;\n this[kClients] = /* @__PURE__ */ new Map();\n this[kFinalizer] = new FinalizationRegistry(\n /* istanbul ignore next: gc is undeterministic */\n (key) => {\n const ref = this[kClients].get(key);\n if (ref !== void 0 && ref.deref() === void 0) {\n this[kClients].delete(key);\n }\n }\n );\n const agent = this;\n this[kOnDrain] = (origin, targets) => {\n agent.emit("drain", origin, [agent, ...targets]);\n };\n this[kOnConnect] = (origin, targets) => {\n agent.emit("connect", origin, [agent, ...targets]);\n };\n this[kOnDisconnect] = (origin, targets, err) => {\n agent.emit("disconnect", origin, [agent, ...targets], err);\n };\n this[kOnConnectionError] = (origin, targets, err) => {\n agent.emit("connectionError", origin, [agent, ...targets], err);\n };\n }\n get [kRunning]() {\n let ret = 0;\n for (const ref of this[kClients].values()) {\n const client = ref.deref();\n if (client) {\n ret += client[kRunning];\n }\n }\n return ret;\n }\n [kDispatch](opts, handler) {\n let key;\n if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) {\n key = String(opts.origin);\n } else {\n throw new InvalidArgumentError2("opts.origin must be a non-empty string or URL.");\n }\n const ref = this[kClients].get(key);\n let dispatcher = ref ? ref.deref() : null;\n if (!dispatcher) {\n dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]);\n this[kClients].set(key, new WeakRef2(dispatcher));\n this[kFinalizer].register(dispatcher, key);\n }\n return dispatcher.dispatch(opts, handler);\n }\n async [kClose]() {\n const closePromises = [];\n for (const ref of this[kClients].values()) {\n const client = ref.deref();\n if (client) {\n closePromises.push(client.close());\n }\n }\n await Promise.all(closePromises);\n }\n async [kDestroy](err) {\n const destroyPromises = [];\n for (const ref of this[kClients].values()) {\n const client = ref.deref();\n if (client) {\n destroyPromises.push(client.destroy(err));\n }\n }\n await Promise.all(destroyPromises);\n }\n };\n __name(_Agent, "Agent");\n var Agent2 = _Agent;\n module2.exports = Agent2;\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/global.js\nvar require_global2 = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/global.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var globalDispatcher2 = Symbol.for("undici.globalDispatcher.1");\n var { InvalidArgumentError: InvalidArgumentError2 } = require_errors();\n var Agent2 = require_agent();\n if (getGlobalDispatcher2() === void 0) {\n setGlobalDispatcher2(new Agent2());\n }\n function setGlobalDispatcher2(agent) {\n if (!agent || typeof agent.dispatch !== "function") {\n throw new InvalidArgumentError2("Argument agent must implement Agent");\n }\n Object.defineProperty(globalThis, globalDispatcher2, {\n value: agent,\n writable: true,\n enumerable: false,\n configurable: false\n });\n }\n __name(setGlobalDispatcher2, "setGlobalDispatcher");\n function getGlobalDispatcher2() {\n return globalThis[globalDispatcher2];\n }\n __name(getGlobalDispatcher2, "getGlobalDispatcher");\n module2.exports = {\n setGlobalDispatcher: setGlobalDispatcher2,\n getGlobalDispatcher: getGlobalDispatcher2\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/index.js\nvar require_fetch = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/fetch/index.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var {\n Response: Response3,\n makeNetworkError,\n makeAppropriateNetworkError,\n filterResponse,\n makeResponse\n } = require_response();\n var { Headers: Headers3 } = require_headers();\n var { Request: Request2, makeRequest } = require_request();\n var zlib = require("zlib");\n var {\n bytesMatch,\n makePolicyContainer,\n clonePolicyContainer,\n requestBadPort,\n TAOCheck,\n appendRequestOriginHeader,\n responseLocationURL,\n requestCurrentURL,\n setRequestReferrerPolicyOnRedirect,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n createOpaqueTimingInfo,\n appendFetchMetadata,\n corsCheck,\n crossOriginResourcePolicyCheck,\n determineRequestsReferrer,\n coarsenedSharedCurrentTime,\n createDeferredPromise,\n isBlobLike,\n sameOrigin,\n isCancelled,\n isAborted,\n isErrorLike,\n fullyReadBody,\n readableStreamClose,\n isomorphicEncode,\n urlIsLocal,\n urlIsHttpHttpsScheme,\n urlHasHttpsScheme\n } = require_util2();\n var { kState, kHeaders: kHeaders2, kGuard: kGuard2, kRealm } = require_symbols();\n var assert = require("assert");\n var { safelyExtractBody } = require_body();\n var {\n redirectStatus,\n nullBodyStatus,\n safeMethods,\n requestBodyHeader,\n subresource,\n DOMException\n } = require_constants();\n var { kHeadersList } = require_symbols2();\n var EE = require("events");\n var { Readable, pipeline } = require("stream");\n var { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require_util();\n var { dataURLProcessor, serializeAMimeType } = require_dataURL();\n var { TransformStream } = require("./streams");\n var { getGlobalDispatcher: getGlobalDispatcher2 } = require_global2();\n var { webidl } = require_webidl();\n var { STATUS_CODES } = require("http");\n var resolveObjectURL;\n var ReadableStream = globalThis.ReadableStream;\n var _Fetch = class _Fetch extends EE {\n constructor(dispatcher) {\n super();\n this.dispatcher = dispatcher;\n this.connection = null;\n this.dump = false;\n this.state = "ongoing";\n this.setMaxListeners(21);\n }\n terminate(reason) {\n if (this.state !== "ongoing") {\n return;\n }\n this.state = "terminated";\n this.connection?.destroy(reason);\n this.emit("terminated", reason);\n }\n // https://fetch.spec.whatwg.org/#fetch-controller-abort\n abort(error) {\n if (this.state !== "ongoing") {\n return;\n }\n this.state = "aborted";\n if (!error) {\n error = new DOMException("The operation was aborted.", "AbortError");\n }\n this.serializedAbortReason = error;\n this.connection?.destroy(error);\n this.emit("terminated", error);\n }\n };\n __name(_Fetch, "Fetch");\n var Fetch = _Fetch;\n async function fetch2(input, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: "globalThis.fetch" });\n const p = createDeferredPromise();\n let requestObject;\n try {\n requestObject = new Request2(input, init);\n } catch (e) {\n p.reject(e);\n return p.promise;\n }\n const request = requestObject[kState];\n if (requestObject.signal.aborted) {\n abortFetch(p, request, null, requestObject.signal.reason);\n return p.promise;\n }\n const globalObject = request.client.globalObject;\n if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") {\n request.serviceWorkers = "none";\n }\n let responseObject = null;\n const relevantRealm = null;\n let locallyAborted = false;\n let controller = null;\n addAbortListener(\n requestObject.signal,\n () => {\n locallyAborted = true;\n assert(controller != null);\n controller.abort(requestObject.signal.reason);\n abortFetch(p, request, responseObject, requestObject.signal.reason);\n }\n );\n const handleFetchDone = /* @__PURE__ */ __name((response) => finalizeAndReportTiming(response, "fetch"), "handleFetchDone");\n const processResponse = /* @__PURE__ */ __name((response) => {\n if (locallyAborted) {\n return;\n }\n if (response.aborted) {\n abortFetch(p, request, responseObject, controller.serializedAbortReason);\n return;\n }\n if (response.type === "error") {\n p.reject(\n Object.assign(new TypeError("fetch failed"), { cause: response.error })\n );\n return;\n }\n responseObject = new Response3();\n responseObject[kState] = response;\n responseObject[kRealm] = relevantRealm;\n responseObject[kHeaders2][kHeadersList] = response.headersList;\n responseObject[kHeaders2][kGuard2] = "immutable";\n responseObject[kHeaders2][kRealm] = relevantRealm;\n p.resolve(responseObject);\n }, "processResponse");\n controller = fetching({\n request,\n processResponseEndOfBody: handleFetchDone,\n processResponse,\n dispatcher: init.dispatcher ?? getGlobalDispatcher2()\n // undici\n });\n return p.promise;\n }\n __name(fetch2, "fetch");\n function finalizeAndReportTiming(response, initiatorType = "other") {\n if (response.type === "error" && response.aborted) {\n return;\n }\n if (!response.urlList?.length) {\n return;\n }\n const originalURL = response.urlList[0];\n let timingInfo = response.timingInfo;\n let cacheState = response.cacheState;\n if (!urlIsHttpHttpsScheme(originalURL)) {\n return;\n }\n if (timingInfo === null) {\n return;\n }\n if (!timingInfo.timingAllowPassed) {\n timingInfo = createOpaqueTimingInfo({\n startTime: timingInfo.startTime\n });\n cacheState = "";\n }\n timingInfo.endTime = coarsenedSharedCurrentTime();\n response.timingInfo = timingInfo;\n markResourceTiming(\n timingInfo,\n originalURL,\n initiatorType,\n globalThis,\n cacheState\n );\n }\n __name(finalizeAndReportTiming, "finalizeAndReportTiming");\n function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis2, cacheState) {\n if (nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 2) {\n performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis2, cacheState);\n }\n }\n __name(markResourceTiming, "markResourceTiming");\n function abortFetch(p, request, responseObject, error) {\n if (!error) {\n error = new DOMException("The operation was aborted.", "AbortError");\n }\n p.reject(error);\n if (request.body != null && isReadable(request.body?.stream)) {\n request.body.stream.cancel(error).catch((err) => {\n if (err.code === "ERR_INVALID_STATE") {\n return;\n }\n throw err;\n });\n }\n if (responseObject == null) {\n return;\n }\n const response = responseObject[kState];\n if (response.body != null && isReadable(response.body?.stream)) {\n response.body.stream.cancel(error).catch((err) => {\n if (err.code === "ERR_INVALID_STATE") {\n return;\n }\n throw err;\n });\n }\n }\n __name(abortFetch, "abortFetch");\n function fetching({\n request,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseEndOfBody,\n processResponseConsumeBody,\n useParallelQueue = false,\n dispatcher\n // undici\n }) {\n let taskDestination = null;\n let crossOriginIsolatedCapability = false;\n if (request.client != null) {\n taskDestination = request.client.globalObject;\n crossOriginIsolatedCapability = request.client.crossOriginIsolatedCapability;\n }\n const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability);\n const timingInfo = createOpaqueTimingInfo({\n startTime: currenTime\n });\n const fetchParams = {\n controller: new Fetch(dispatcher),\n request,\n timingInfo,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseConsumeBody,\n processResponseEndOfBody,\n taskDestination,\n crossOriginIsolatedCapability\n };\n assert(!request.body || request.body.stream);\n if (request.window === "client") {\n request.window = request.client?.globalObject?.constructor?.name === "Window" ? request.client : "no-window";\n }\n if (request.origin === "client") {\n request.origin = request.client?.origin;\n }\n if (request.policyContainer === "client") {\n if (request.client != null) {\n request.policyContainer = clonePolicyContainer(\n request.client.policyContainer\n );\n } else {\n request.policyContainer = makePolicyContainer();\n }\n }\n if (!request.headersList.contains("accept")) {\n const value = "*/*";\n request.headersList.append("accept", value);\n }\n if (!request.headersList.contains("accept-language")) {\n request.headersList.append("accept-language", "*");\n }\n if (request.priority === null) {\n }\n if (subresource.includes(request.destination)) {\n }\n mainFetch(fetchParams).catch((err) => {\n fetchParams.controller.terminate(err);\n });\n return fetchParams.controller;\n }\n __name(fetching, "fetching");\n async function mainFetch(fetchParams, recursive = false) {\n const request = fetchParams.request;\n let response = null;\n if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n response = makeNetworkError("local URLs only");\n }\n tryUpgradeRequestToAPotentiallyTrustworthyURL(request);\n if (requestBadPort(request) === "blocked") {\n response = makeNetworkError("bad port");\n }\n if (request.referrerPolicy === "") {\n request.referrerPolicy = request.policyContainer.referrerPolicy;\n }\n if (request.referrer !== "no-referrer") {\n request.referrer = determineRequestsReferrer(request);\n }\n if (response === null) {\n response = await (async () => {\n const currentURL = requestCurrentURL(request);\n if (\n // - request\u2019s current URL\u2019s origin is same origin with request\u2019s origin,\n // and request\u2019s response tainting is "basic"\n sameOrigin(currentURL, request.url) && request.responseTainting === "basic" || // request\u2019s current URL\u2019s scheme is "data"\n currentURL.protocol === "data:" || // - request\u2019s mode is "navigate" or "websocket"\n (request.mode === "navigate" || request.mode === "websocket")\n ) {\n request.responseTainting = "basic";\n return await schemeFetch(fetchParams);\n }\n if (request.mode === "same-origin") {\n return makeNetworkError(\'request mode cannot be "same-origin"\');\n }\n if (request.mode === "no-cors") {\n if (request.redirect !== "follow") {\n return makeNetworkError(\n \'redirect mode cannot be "follow" for "no-cors" request\'\n );\n }\n request.responseTainting = "opaque";\n return await schemeFetch(fetchParams);\n }\n if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n return makeNetworkError("URL scheme must be a HTTP(S) scheme");\n }\n request.responseTainting = "cors";\n return await httpFetch(fetchParams);\n })();\n }\n if (recursive) {\n return response;\n }\n if (response.status !== 0 && !response.internalResponse) {\n if (request.responseTainting === "cors") {\n }\n if (request.responseTainting === "basic") {\n response = filterResponse(response, "basic");\n } else if (request.responseTainting === "cors") {\n response = filterResponse(response, "cors");\n } else if (request.responseTainting === "opaque") {\n response = filterResponse(response, "opaque");\n } else {\n assert(false);\n }\n }\n let internalResponse = response.status === 0 ? response : response.internalResponse;\n if (internalResponse.urlList.length === 0) {\n internalResponse.urlList.push(...request.urlList);\n }\n if (!request.timingAllowFailed) {\n response.timingAllowPassed = true;\n }\n if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request.headers.contains("range")) {\n response = internalResponse = makeNetworkError();\n }\n if (response.status !== 0 && (request.method === "HEAD" || request.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {\n internalResponse.body = null;\n fetchParams.controller.dump = true;\n }\n if (request.integrity) {\n const processBodyError = /* @__PURE__ */ __name((reason) => fetchFinale(fetchParams, makeNetworkError(reason)), "processBodyError");\n if (request.responseTainting === "opaque" || response.body == null) {\n processBodyError(response.error);\n return;\n }\n const processBody = /* @__PURE__ */ __name((bytes) => {\n if (!bytesMatch(bytes, request.integrity)) {\n processBodyError("integrity mismatch");\n return;\n }\n response.body = safelyExtractBody(bytes)[0];\n fetchFinale(fetchParams, response);\n }, "processBody");\n await fullyReadBody(response.body, processBody, processBodyError);\n } else {\n fetchFinale(fetchParams, response);\n }\n }\n __name(mainFetch, "mainFetch");\n async function schemeFetch(fetchParams) {\n if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n return makeAppropriateNetworkError(fetchParams);\n }\n const { request } = fetchParams;\n const { protocol: scheme } = requestCurrentURL(request);\n switch (scheme) {\n case "about:": {\n return makeNetworkError("about scheme is not supported");\n }\n case "blob:": {\n if (!resolveObjectURL) {\n resolveObjectURL = require("buffer").resolveObjectURL;\n }\n const blobURLEntry = requestCurrentURL(request);\n if (blobURLEntry.search.length !== 0) {\n return makeNetworkError("NetworkError when attempting to fetch resource.");\n }\n const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString());\n if (request.method !== "GET" || !isBlobLike(blobURLEntryObject)) {\n return makeNetworkError("invalid method");\n }\n const bodyWithType = safelyExtractBody(blobURLEntryObject);\n const body = bodyWithType[0];\n const length = isomorphicEncode(`${body.length}`);\n const type = bodyWithType[1] ?? "";\n const response = makeResponse({\n statusText: "OK",\n headersList: [\n ["content-length", { name: "Content-Length", value: length }],\n ["content-type", { name: "Content-Type", value: type }]\n ]\n });\n response.body = body;\n return response;\n }\n case "data:": {\n const currentURL = requestCurrentURL(request);\n const dataURLStruct = dataURLProcessor(currentURL);\n if (dataURLStruct === "failure") {\n return makeNetworkError("failed to fetch the data URL");\n }\n const mimeType = serializeAMimeType(dataURLStruct.mimeType);\n return makeResponse({\n statusText: "OK",\n headersList: [\n ["content-type", { name: "Content-Type", value: mimeType }]\n ],\n body: safelyExtractBody(dataURLStruct.body)[0]\n });\n }\n case "file:": {\n return makeNetworkError("not implemented... yet...");\n }\n case "http:":\n case "https:": {\n return await httpFetch(fetchParams).catch((err) => makeNetworkError(err));\n }\n default: {\n return makeNetworkError("unknown scheme");\n }\n }\n }\n __name(schemeFetch, "schemeFetch");\n function finalizeResponse(fetchParams, response) {\n fetchParams.request.done = true;\n if (fetchParams.processResponseDone != null) {\n queueMicrotask(() => fetchParams.processResponseDone(response));\n }\n }\n __name(finalizeResponse, "finalizeResponse");\n async function fetchFinale(fetchParams, response) {\n if (response.type === "error") {\n response.urlList = [fetchParams.request.urlList[0]];\n response.timingInfo = createOpaqueTimingInfo({\n startTime: fetchParams.timingInfo.startTime\n });\n }\n const processResponseEndOfBody = /* @__PURE__ */ __name(() => {\n fetchParams.request.done = true;\n if (fetchParams.processResponseEndOfBody != null) {\n queueMicrotask(() => fetchParams.processResponseEndOfBody(response));\n }\n }, "processResponseEndOfBody");\n if (fetchParams.processResponse != null) {\n queueMicrotask(() => fetchParams.processResponse(response));\n }\n if (response.body == null) {\n processResponseEndOfBody();\n } else {\n const identityTransformAlgorithm = /* @__PURE__ */ __name((chunk, controller) => {\n controller.enqueue(chunk);\n }, "identityTransformAlgorithm");\n const transformStream = new TransformStream({\n start() {\n },\n transform: identityTransformAlgorithm,\n flush: processResponseEndOfBody\n }, {\n size() {\n return 1;\n }\n }, {\n size() {\n return 1;\n }\n });\n response.body = { stream: response.body.stream.pipeThrough(transformStream) };\n }\n if (fetchParams.processResponseConsumeBody != null) {\n const processBody = /* @__PURE__ */ __name((nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes), "processBody");\n const processBodyError = /* @__PURE__ */ __name((failure) => fetchParams.processResponseConsumeBody(response, failure), "processBodyError");\n if (response.body == null) {\n queueMicrotask(() => processBody(null));\n } else {\n await fullyReadBody(response.body, processBody, processBodyError);\n }\n }\n }\n __name(fetchFinale, "fetchFinale");\n async function httpFetch(fetchParams) {\n const request = fetchParams.request;\n let response = null;\n let actualResponse = null;\n const timingInfo = fetchParams.timingInfo;\n if (request.serviceWorkers === "all") {\n }\n if (response === null) {\n if (request.redirect === "follow") {\n request.serviceWorkers = "none";\n }\n actualResponse = response = await httpNetworkOrCacheFetch(fetchParams);\n if (request.responseTainting === "cors" && corsCheck(request, response) === "failure") {\n return makeNetworkError("cors failure");\n }\n if (TAOCheck(request, response) === "failure") {\n request.timingAllowFailed = true;\n }\n }\n if ((request.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(\n request.origin,\n request.client,\n request.destination,\n actualResponse\n ) === "blocked") {\n return makeNetworkError("blocked");\n }\n if (redirectStatus.includes(actualResponse.status)) {\n if (request.redirect !== "manual") {\n fetchParams.controller.connection.destroy();\n }\n if (request.redirect === "error") {\n response = makeNetworkError("unexpected redirect");\n } else if (request.redirect === "manual") {\n response = actualResponse;\n } else if (request.redirect === "follow") {\n response = await httpRedirectFetch(fetchParams, response);\n } else {\n assert(false);\n }\n }\n response.timingInfo = timingInfo;\n return response;\n }\n __name(httpFetch, "httpFetch");\n async function httpRedirectFetch(fetchParams, response) {\n const request = fetchParams.request;\n const actualResponse = response.internalResponse ? response.internalResponse : response;\n let locationURL;\n try {\n locationURL = responseLocationURL(\n actualResponse,\n requestCurrentURL(request).hash\n );\n if (locationURL == null) {\n return response;\n }\n } catch (err) {\n return makeNetworkError(err);\n }\n if (!urlIsHttpHttpsScheme(locationURL)) {\n return makeNetworkError("URL scheme must be a HTTP(S) scheme");\n }\n if (request.redirectCount === 20) {\n return makeNetworkError("redirect count exceeded");\n }\n request.redirectCount += 1;\n if (request.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request, locationURL)) {\n return makeNetworkError(\'cross origin not allowed for request mode "cors"\');\n }\n if (request.responseTainting === "cors" && (locationURL.username || locationURL.password)) {\n return makeNetworkError(\n \'URL cannot contain credentials for request mode "cors"\'\n );\n }\n if (actualResponse.status !== 303 && request.body != null && request.body.source == null) {\n return makeNetworkError();\n }\n if ([301, 302].includes(actualResponse.status) && request.method === "POST" || actualResponse.status === 303 && !["GET", "HEAD"].includes(request.method)) {\n request.method = "GET";\n request.body = null;\n for (const headerName of requestBodyHeader) {\n request.headersList.delete(headerName);\n }\n }\n if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n request.headersList.delete("authorization");\n }\n if (request.body != null) {\n assert(request.body.source != null);\n request.body = safelyExtractBody(request.body.source)[0];\n }\n const timingInfo = fetchParams.timingInfo;\n timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability);\n if (timingInfo.redirectStartTime === 0) {\n timingInfo.redirectStartTime = timingInfo.startTime;\n }\n request.urlList.push(locationURL);\n setRequestReferrerPolicyOnRedirect(request, actualResponse);\n return mainFetch(fetchParams, true);\n }\n __name(httpRedirectFetch, "httpRedirectFetch");\n async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) {\n const request = fetchParams.request;\n let httpFetchParams = null;\n let httpRequest = null;\n let response = null;\n const httpCache = null;\n const revalidatingFlag = false;\n if (request.window === "no-window" && request.redirect === "error") {\n httpFetchParams = fetchParams;\n httpRequest = request;\n } else {\n httpRequest = makeRequest(request);\n httpFetchParams = { ...fetchParams };\n httpFetchParams.request = httpRequest;\n }\n const includeCredentials = request.credentials === "include" || request.credentials === "same-origin" && request.responseTainting === "basic";\n const contentLength = httpRequest.body ? httpRequest.body.length : null;\n let contentLengthHeaderValue = null;\n if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) {\n contentLengthHeaderValue = "0";\n }\n if (contentLength != null) {\n contentLengthHeaderValue = isomorphicEncode(`${contentLength}`);\n }\n if (contentLengthHeaderValue != null) {\n httpRequest.headersList.append("content-length", contentLengthHeaderValue);\n }\n if (contentLength != null && httpRequest.keepalive) {\n }\n if (httpRequest.referrer instanceof URL) {\n httpRequest.headersList.append("referer", isomorphicEncode(httpRequest.referrer.href));\n }\n appendRequestOriginHeader(httpRequest);\n appendFetchMetadata(httpRequest);\n if (!httpRequest.headersList.contains("user-agent")) {\n httpRequest.headersList.append("user-agent", "undici");\n }\n if (httpRequest.cache === "default" && (httpRequest.headersList.contains("if-modified-since") || httpRequest.headersList.contains("if-none-match") || httpRequest.headersList.contains("if-unmodified-since") || httpRequest.headersList.contains("if-match") || httpRequest.headersList.contains("if-range"))) {\n httpRequest.cache = "no-store";\n }\n if (httpRequest.cache === "no-cache" && !httpRequest.preventNoCacheCacheControlHeaderModification && !httpRequest.headersList.contains("cache-control")) {\n httpRequest.headersList.append("cache-control", "max-age=0");\n }\n if (httpRequest.cache === "no-store" || httpRequest.cache === "reload") {\n if (!httpRequest.headersList.contains("pragma")) {\n httpRequest.headersList.append("pragma", "no-cache");\n }\n if (!httpRequest.headersList.contains("cache-control")) {\n httpRequest.headersList.append("cache-control", "no-cache");\n }\n }\n if (httpRequest.headersList.contains("range")) {\n httpRequest.headersList.append("accept-encoding", "identity");\n }\n if (!httpRequest.headersList.contains("accept-encoding")) {\n if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n httpRequest.headersList.append("accept-encoding", "br, gzip, deflate");\n } else {\n httpRequest.headersList.append("accept-encoding", "gzip, deflate");\n }\n }\n if (includeCredentials) {\n }\n if (httpCache == null) {\n httpRequest.cache = "no-store";\n }\n if (httpRequest.mode !== "no-store" && httpRequest.mode !== "reload") {\n }\n if (response == null) {\n if (httpRequest.mode === "only-if-cached") {\n return makeNetworkError("only if cached");\n }\n const forwardResponse = await httpNetworkFetch(\n httpFetchParams,\n includeCredentials,\n isNewConnectionFetch\n );\n if (!safeMethods.includes(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) {\n }\n if (revalidatingFlag && forwardResponse.status === 304) {\n }\n if (response == null) {\n response = forwardResponse;\n }\n }\n response.urlList = [...httpRequest.urlList];\n if (httpRequest.headersList.contains("range")) {\n response.rangeRequested = true;\n }\n response.requestIncludesCredentials = includeCredentials;\n if (response.status === 407) {\n if (request.window === "no-window") {\n return makeNetworkError();\n }\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams);\n }\n return makeNetworkError("proxy authentication required");\n }\n if (\n // response\u2019s status is 421\n response.status === 421 && // isNewConnectionFetch is false\n !isNewConnectionFetch && // request\u2019s body is null, or request\u2019s body is non-null and request\u2019s body\u2019s source is non-null\n (request.body == null || request.body.source != null)\n ) {\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams);\n }\n fetchParams.controller.connection.destroy();\n response = await httpNetworkOrCacheFetch(\n fetchParams,\n isAuthenticationFetch,\n true\n );\n }\n if (isAuthenticationFetch) {\n }\n return response;\n }\n __name(httpNetworkOrCacheFetch, "httpNetworkOrCacheFetch");\n async function httpNetworkFetch(fetchParams, includeCredentials = false, forceNewConnection = false) {\n assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed);\n fetchParams.controller.connection = {\n abort: null,\n destroyed: false,\n destroy(err) {\n if (!this.destroyed) {\n this.destroyed = true;\n this.abort?.(err ?? new DOMException("The operation was aborted.", "AbortError"));\n }\n }\n };\n const request = fetchParams.request;\n let response = null;\n const timingInfo = fetchParams.timingInfo;\n const httpCache = null;\n if (httpCache == null) {\n request.cache = "no-store";\n }\n const newConnection = forceNewConnection ? "yes" : "no";\n if (request.mode === "websocket") {\n } else {\n }\n let requestBody = null;\n if (request.body == null && fetchParams.processRequestEndOfBody) {\n queueMicrotask(() => fetchParams.processRequestEndOfBody());\n } else if (request.body != null) {\n const processBodyChunk = /* @__PURE__ */ __name(async function* (bytes) {\n if (isCancelled(fetchParams)) {\n return;\n }\n yield bytes;\n fetchParams.processRequestBodyChunkLength?.(bytes.byteLength);\n }, "processBodyChunk");\n const processEndOfBody = /* @__PURE__ */ __name(() => {\n if (isCancelled(fetchParams)) {\n return;\n }\n if (fetchParams.processRequestEndOfBody) {\n fetchParams.processRequestEndOfBody();\n }\n }, "processEndOfBody");\n const processBodyError = /* @__PURE__ */ __name((e) => {\n if (isCancelled(fetchParams)) {\n return;\n }\n if (e.name === "AbortError") {\n fetchParams.controller.abort();\n } else {\n fetchParams.controller.terminate(e);\n }\n }, "processBodyError");\n requestBody = async function* () {\n try {\n for await (const bytes of request.body.stream) {\n yield* processBodyChunk(bytes);\n }\n processEndOfBody();\n } catch (err) {\n processBodyError(err);\n }\n }();\n }\n try {\n const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody });\n if (socket) {\n response = makeResponse({ status, statusText, headersList, socket });\n } else {\n const iterator = body[Symbol.asyncIterator]();\n fetchParams.controller.next = () => iterator.next();\n response = makeResponse({ status, statusText, headersList });\n }\n } catch (err) {\n if (err.name === "AbortError") {\n fetchParams.controller.connection.destroy();\n return makeAppropriateNetworkError(fetchParams);\n }\n return makeNetworkError(err);\n }\n const pullAlgorithm = /* @__PURE__ */ __name(() => {\n fetchParams.controller.resume();\n }, "pullAlgorithm");\n const cancelAlgorithm = /* @__PURE__ */ __name((reason) => {\n fetchParams.controller.abort(reason);\n }, "cancelAlgorithm");\n if (!ReadableStream) {\n ReadableStream = require("./streams").ReadableStream;\n }\n const stream = new ReadableStream(\n {\n async start(controller) {\n fetchParams.controller.controller = controller;\n },\n async pull(controller) {\n await pullAlgorithm(controller);\n },\n async cancel(reason) {\n await cancelAlgorithm(reason);\n }\n },\n {\n highWaterMark: 0,\n size() {\n return 1;\n }\n }\n );\n response.body = { stream };\n fetchParams.controller.on("terminated", onAborted);\n fetchParams.controller.resume = async () => {\n while (true) {\n let bytes;\n let isFailure;\n try {\n const { done, value } = await fetchParams.controller.next();\n if (isAborted(fetchParams)) {\n break;\n }\n bytes = done ? void 0 : value;\n } catch (err) {\n if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n bytes = void 0;\n } else {\n bytes = err;\n isFailure = true;\n }\n }\n if (bytes === void 0) {\n readableStreamClose(fetchParams.controller.controller);\n finalizeResponse(fetchParams, response);\n return;\n }\n timingInfo.decodedBodySize += bytes?.byteLength ?? 0;\n if (isFailure) {\n fetchParams.controller.terminate(bytes);\n return;\n }\n fetchParams.controller.controller.enqueue(new Uint8Array(bytes));\n if (isErrored(stream)) {\n fetchParams.controller.terminate();\n return;\n }\n if (!fetchParams.controller.controller.desiredSize) {\n return;\n }\n }\n };\n function onAborted(reason) {\n if (isAborted(fetchParams)) {\n response.aborted = true;\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(\n fetchParams.controller.serializedAbortReason\n );\n }\n } else {\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(new TypeError("terminated", {\n cause: isErrorLike(reason) ? reason : void 0\n }));\n }\n }\n fetchParams.controller.connection.destroy();\n }\n __name(onAborted, "onAborted");\n return response;\n async function dispatch({ body }) {\n const url = requestCurrentURL(request);\n const agent = fetchParams.controller.dispatcher;\n return new Promise((resolve, reject) => agent.dispatch(\n {\n path: url.pathname + url.search,\n origin: url.origin,\n method: request.method,\n body: fetchParams.controller.dispatcher.isMockActive ? request.body && request.body.source : body,\n headers: request.headersList.entries,\n maxRedirections: 0,\n upgrade: request.mode === "websocket" ? "websocket" : void 0\n },\n {\n body: null,\n abort: null,\n onConnect(abort) {\n const { connection } = fetchParams.controller;\n if (connection.destroyed) {\n abort(new DOMException("The operation was aborted.", "AbortError"));\n } else {\n fetchParams.controller.on("terminated", abort);\n this.abort = connection.abort = abort;\n }\n },\n onHeaders(status, headersList, resume, statusText) {\n if (status < 200) {\n return;\n }\n let codings = [];\n let location = "";\n const headers = new Headers3();\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString("latin1");\n const val = headersList[n + 1].toString("latin1");\n if (key.toLowerCase() === "content-encoding") {\n codings = val.toLowerCase().split(",").map((x) => x.trim()).reverse();\n } else if (key.toLowerCase() === "location") {\n location = val;\n }\n headers.append(key, val);\n }\n this.body = new Readable({ read: resume });\n const decoders = [];\n const willFollow = request.redirect === "follow" && location && redirectStatus.includes(status);\n if (request.method !== "HEAD" && request.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {\n for (const coding of codings) {\n if (coding === "x-gzip" || coding === "gzip") {\n decoders.push(zlib.createGunzip({\n // Be less strict when decoding compressed responses, since sometimes\n // servers send slightly invalid responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n }));\n } else if (coding === "deflate") {\n decoders.push(zlib.createInflate());\n } else if (coding === "br") {\n decoders.push(zlib.createBrotliDecompress());\n } else {\n decoders.length = 0;\n break;\n }\n }\n }\n resolve({\n status,\n statusText,\n headersList: headers[kHeadersList],\n body: decoders.length ? pipeline(this.body, ...decoders, () => {\n }) : this.body.on("error", () => {\n })\n });\n return true;\n },\n onData(chunk) {\n if (fetchParams.controller.dump) {\n return;\n }\n const bytes = chunk;\n timingInfo.encodedBodySize += bytes.byteLength;\n return this.body.push(bytes);\n },\n onComplete() {\n if (this.abort) {\n fetchParams.controller.off("terminated", this.abort);\n }\n fetchParams.controller.ended = true;\n this.body.push(null);\n },\n onError(error) {\n if (this.abort) {\n fetchParams.controller.off("terminated", this.abort);\n }\n this.body?.destroy(error);\n fetchParams.controller.terminate(error);\n reject(error);\n },\n onUpgrade(status, headersList, socket) {\n if (status !== 101) {\n return;\n }\n const headers = new Headers3();\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString("latin1");\n const val = headersList[n + 1].toString("latin1");\n headers.append(key, val);\n }\n resolve({\n status,\n statusText: STATUS_CODES[status],\n headersList: headers[kHeadersList],\n socket\n });\n return true;\n }\n }\n ));\n }\n __name(dispatch, "dispatch");\n }\n __name(httpNetworkFetch, "httpNetworkFetch");\n module2.exports = {\n fetch: fetch2,\n Fetch,\n fetching,\n finalizeAndReportTiming\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/constants.js\nvar require_constants3 = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/constants.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";\n var staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n };\n var states = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n };\n var opcodes = {\n CONTINUATION: 0,\n TEXT: 1,\n BINARY: 2,\n CLOSE: 8,\n PING: 9,\n PONG: 10\n };\n var maxUnsigned16Bit = 2 ** 16 - 1;\n var parserStates = {\n INFO: 0,\n PAYLOADLENGTH_16: 2,\n PAYLOADLENGTH_64: 3,\n READ_DATA: 4\n };\n var emptyBuffer = Buffer.allocUnsafe(0);\n module2.exports = {\n uid,\n staticPropertyDescriptors,\n states,\n opcodes,\n maxUnsigned16Bit,\n parserStates,\n emptyBuffer\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/symbols.js\nvar require_symbols3 = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/symbols.js"(exports2, module2) {\n "use strict";\n init_define_process();\n module2.exports = {\n kWebSocketURL: Symbol("url"),\n kReadyState: Symbol("ready state"),\n kController: Symbol("controller"),\n kResponse: Symbol("response"),\n kBinaryType: Symbol("binary type"),\n kSentClose: Symbol("sent close"),\n kReceivedClose: Symbol("received close"),\n kByteParser: Symbol("byte parser")\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/events.js\nvar require_events = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/events.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { webidl } = require_webidl();\n var { kEnumerableProperty } = require_util();\n var { MessagePort } = require("worker_threads");\n var _eventInit;\n var _MessageEvent = class _MessageEvent extends Event {\n constructor(type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent constructor" });\n type = webidl.converters.DOMString(type);\n eventInitDict = webidl.converters.MessageEventInit(eventInitDict);\n super(type, eventInitDict);\n __privateAdd(this, _eventInit, void 0);\n __privateSet(this, _eventInit, eventInitDict);\n }\n get data() {\n webidl.brandCheck(this, _MessageEvent);\n return __privateGet(this, _eventInit).data;\n }\n get origin() {\n webidl.brandCheck(this, _MessageEvent);\n return __privateGet(this, _eventInit).origin;\n }\n get lastEventId() {\n webidl.brandCheck(this, _MessageEvent);\n return __privateGet(this, _eventInit).lastEventId;\n }\n get source() {\n webidl.brandCheck(this, _MessageEvent);\n return __privateGet(this, _eventInit).source;\n }\n get ports() {\n webidl.brandCheck(this, _MessageEvent);\n if (!Object.isFrozen(__privateGet(this, _eventInit).ports)) {\n Object.freeze(__privateGet(this, _eventInit).ports);\n }\n return __privateGet(this, _eventInit).ports;\n }\n initMessageEvent(type, bubbles = false, cancelable = false, data = null, origin = "", lastEventId = "", source = null, ports = []) {\n webidl.brandCheck(this, _MessageEvent);\n webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent.initMessageEvent" });\n return new _MessageEvent(type, {\n bubbles,\n cancelable,\n data,\n origin,\n lastEventId,\n source,\n ports\n });\n }\n };\n _eventInit = new WeakMap();\n __name(_MessageEvent, "MessageEvent");\n var MessageEvent = _MessageEvent;\n var _eventInit2;\n var _CloseEvent = class _CloseEvent extends Event {\n constructor(type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: "CloseEvent constructor" });\n type = webidl.converters.DOMString(type);\n eventInitDict = webidl.converters.CloseEventInit(eventInitDict);\n super(type, eventInitDict);\n __privateAdd(this, _eventInit2, void 0);\n __privateSet(this, _eventInit2, eventInitDict);\n }\n get wasClean() {\n webidl.brandCheck(this, _CloseEvent);\n return __privateGet(this, _eventInit2).wasClean;\n }\n get code() {\n webidl.brandCheck(this, _CloseEvent);\n return __privateGet(this, _eventInit2).code;\n }\n get reason() {\n webidl.brandCheck(this, _CloseEvent);\n return __privateGet(this, _eventInit2).reason;\n }\n };\n _eventInit2 = new WeakMap();\n __name(_CloseEvent, "CloseEvent");\n var CloseEvent = _CloseEvent;\n var _eventInit3;\n var _ErrorEvent = class _ErrorEvent extends Event {\n constructor(type, eventInitDict) {\n webidl.argumentLengthCheck(arguments, 1, { header: "ErrorEvent constructor" });\n super(type, eventInitDict);\n __privateAdd(this, _eventInit3, void 0);\n type = webidl.converters.DOMString(type);\n eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {});\n __privateSet(this, _eventInit3, eventInitDict);\n }\n get message() {\n webidl.brandCheck(this, _ErrorEvent);\n return __privateGet(this, _eventInit3).message;\n }\n get filename() {\n webidl.brandCheck(this, _ErrorEvent);\n return __privateGet(this, _eventInit3).filename;\n }\n get lineno() {\n webidl.brandCheck(this, _ErrorEvent);\n return __privateGet(this, _eventInit3).lineno;\n }\n get colno() {\n webidl.brandCheck(this, _ErrorEvent);\n return __privateGet(this, _eventInit3).colno;\n }\n get error() {\n webidl.brandCheck(this, _ErrorEvent);\n return __privateGet(this, _eventInit3).error;\n }\n };\n _eventInit3 = new WeakMap();\n __name(_ErrorEvent, "ErrorEvent");\n var ErrorEvent = _ErrorEvent;\n Object.defineProperties(MessageEvent.prototype, {\n [Symbol.toStringTag]: {\n value: "MessageEvent",\n configurable: true\n },\n data: kEnumerableProperty,\n origin: kEnumerableProperty,\n lastEventId: kEnumerableProperty,\n source: kEnumerableProperty,\n ports: kEnumerableProperty,\n initMessageEvent: kEnumerableProperty\n });\n Object.defineProperties(CloseEvent.prototype, {\n [Symbol.toStringTag]: {\n value: "CloseEvent",\n configurable: true\n },\n reason: kEnumerableProperty,\n code: kEnumerableProperty,\n wasClean: kEnumerableProperty\n });\n Object.defineProperties(ErrorEvent.prototype, {\n [Symbol.toStringTag]: {\n value: "ErrorEvent",\n configurable: true\n },\n message: kEnumerableProperty,\n filename: kEnumerableProperty,\n lineno: kEnumerableProperty,\n colno: kEnumerableProperty,\n error: kEnumerableProperty\n });\n webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort);\n webidl.converters["sequence"] = webidl.sequenceConverter(\n webidl.converters.MessagePort\n );\n var eventInit = [\n {\n key: "bubbles",\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: "cancelable",\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: "composed",\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n ];\n webidl.converters.MessageEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: "data",\n converter: webidl.converters.any,\n defaultValue: null\n },\n {\n key: "origin",\n converter: webidl.converters.USVString,\n defaultValue: ""\n },\n {\n key: "lastEventId",\n converter: webidl.converters.DOMString,\n defaultValue: ""\n },\n {\n key: "source",\n // Node doesn\'t implement WindowProxy or ServiceWorker, so the only\n // valid value for source is a MessagePort.\n converter: webidl.nullableConverter(webidl.converters.MessagePort),\n defaultValue: null\n },\n {\n key: "ports",\n converter: webidl.converters["sequence"],\n get defaultValue() {\n return [];\n }\n }\n ]);\n webidl.converters.CloseEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: "wasClean",\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: "code",\n converter: webidl.converters["unsigned short"],\n defaultValue: 0\n },\n {\n key: "reason",\n converter: webidl.converters.USVString,\n defaultValue: ""\n }\n ]);\n webidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: "message",\n converter: webidl.converters.DOMString,\n defaultValue: ""\n },\n {\n key: "filename",\n converter: webidl.converters.USVString,\n defaultValue: ""\n },\n {\n key: "lineno",\n converter: webidl.converters["unsigned long"],\n defaultValue: 0\n },\n {\n key: "colno",\n converter: webidl.converters["unsigned long"],\n defaultValue: 0\n },\n {\n key: "error",\n converter: webidl.converters.any\n }\n ]);\n module2.exports = {\n MessageEvent,\n CloseEvent,\n ErrorEvent\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/util.js\nvar require_util3 = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/util.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols3();\n var { states, opcodes } = require_constants3();\n var { MessageEvent, ErrorEvent } = require_events();\n function isEstablished(ws) {\n return ws[kReadyState] === states.OPEN;\n }\n __name(isEstablished, "isEstablished");\n function isClosing(ws) {\n return ws[kReadyState] === states.CLOSING;\n }\n __name(isClosing, "isClosing");\n function isClosed(ws) {\n return ws[kReadyState] === states.CLOSED;\n }\n __name(isClosed, "isClosed");\n function fireEvent(e, target, eventConstructor = Event, eventInitDict) {\n const event = new eventConstructor(e, eventInitDict);\n target.dispatchEvent(event);\n }\n __name(fireEvent, "fireEvent");\n function websocketMessageReceived(ws, type, data) {\n if (ws[kReadyState] !== states.OPEN) {\n return;\n }\n let dataForEvent;\n if (type === opcodes.TEXT) {\n try {\n dataForEvent = new TextDecoder("utf-8", { fatal: true }).decode(data);\n } catch {\n failWebsocketConnection(ws, "Received invalid UTF-8 in text frame.");\n return;\n }\n } else if (type === opcodes.BINARY) {\n if (ws[kBinaryType] === "blob") {\n dataForEvent = new Blob([data]);\n } else {\n dataForEvent = new Uint8Array(data).buffer;\n }\n }\n fireEvent("message", ws, MessageEvent, {\n origin: ws[kWebSocketURL].origin,\n data: dataForEvent\n });\n }\n __name(websocketMessageReceived, "websocketMessageReceived");\n function isValidSubprotocol(protocol) {\n if (protocol.length === 0) {\n return false;\n }\n for (const char of protocol) {\n const code = char.charCodeAt(0);\n if (code < 33 || code > 126 || char === "(" || char === ")" || char === "<" || char === ">" || char === "@" || char === "," || char === ";" || char === ":" || char === "\\\\" || char === \'"\' || char === "/" || char === "[" || char === "]" || char === "?" || char === "=" || char === "{" || char === "}" || code === 32 || // SP\n code === 9) {\n return false;\n }\n }\n return true;\n }\n __name(isValidSubprotocol, "isValidSubprotocol");\n function isValidStatusCode(code) {\n if (code >= 1e3 && code < 1015) {\n return code !== 1004 && // reserved\n code !== 1005 && // "MUST NOT be set as a status code"\n code !== 1006;\n }\n return code >= 3e3 && code <= 4999;\n }\n __name(isValidStatusCode, "isValidStatusCode");\n function failWebsocketConnection(ws, reason) {\n const { [kController]: controller, [kResponse]: response } = ws;\n controller.abort();\n if (response?.socket && !response.socket.destroyed) {\n response.socket.destroy();\n }\n if (reason) {\n fireEvent("error", ws, ErrorEvent, {\n error: new Error(reason)\n });\n }\n }\n __name(failWebsocketConnection, "failWebsocketConnection");\n module2.exports = {\n isEstablished,\n isClosing,\n isClosed,\n fireEvent,\n isValidSubprotocol,\n isValidStatusCode,\n failWebsocketConnection,\n websocketMessageReceived\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/connection.js\nvar require_connection = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/connection.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { randomBytes, createHash } = require("crypto");\n var diagnosticsChannel = require("diagnostics_channel");\n var { uid, states } = require_constants3();\n var {\n kReadyState,\n kSentClose,\n kByteParser,\n kReceivedClose\n } = require_symbols3();\n var { fireEvent, failWebsocketConnection } = require_util3();\n var { CloseEvent } = require_events();\n var { makeRequest } = require_request();\n var { fetching } = require_fetch();\n var { Headers: Headers3 } = require_headers();\n var { getGlobalDispatcher: getGlobalDispatcher2 } = require_global2();\n var { kHeadersList } = require_symbols2();\n var channels = {};\n channels.open = diagnosticsChannel.channel("undici:websocket:open");\n channels.close = diagnosticsChannel.channel("undici:websocket:close");\n channels.socketError = diagnosticsChannel.channel("undici:websocket:socket_error");\n function establishWebSocketConnection(url, protocols, ws, onEstablish, options) {\n const requestURL = url;\n requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:";\n const request = makeRequest({\n urlList: [requestURL],\n serviceWorkers: "none",\n referrer: "no-referrer",\n mode: "websocket",\n credentials: "include",\n cache: "no-store",\n redirect: "error"\n });\n if (options.headers) {\n const headersList = new Headers3(options.headers)[kHeadersList];\n request.headersList = headersList;\n }\n const keyValue = randomBytes(16).toString("base64");\n request.headersList.append("sec-websocket-key", keyValue);\n request.headersList.append("sec-websocket-version", "13");\n for (const protocol of protocols) {\n request.headersList.append("sec-websocket-protocol", protocol);\n }\n const permessageDeflate = "";\n const controller = fetching({\n request,\n useParallelQueue: true,\n dispatcher: options.dispatcher ?? getGlobalDispatcher2(),\n processResponse(response) {\n if (response.type === "error" || response.status !== 101) {\n failWebsocketConnection(ws, "Received network error or non-101 status code.");\n return;\n }\n if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) {\n failWebsocketConnection(ws, "Server did not respond with sent protocols.");\n return;\n }\n if (response.headersList.get("Upgrade")?.toLowerCase() !== "websocket") {\n failWebsocketConnection(ws, \'Server did not set Upgrade header to "websocket".\');\n return;\n }\n if (response.headersList.get("Connection")?.toLowerCase() !== "upgrade") {\n failWebsocketConnection(ws, \'Server did not set Connection header to "upgrade".\');\n return;\n }\n const secWSAccept = response.headersList.get("Sec-WebSocket-Accept");\n const digest = createHash("sha1").update(keyValue + uid).digest("base64");\n if (secWSAccept !== digest) {\n failWebsocketConnection(ws, "Incorrect hash received in Sec-WebSocket-Accept header.");\n return;\n }\n const secExtension = response.headersList.get("Sec-WebSocket-Extensions");\n if (secExtension !== null && secExtension !== permessageDeflate) {\n failWebsocketConnection(ws, "Received different permessage-deflate than the one set.");\n return;\n }\n const secProtocol = response.headersList.get("Sec-WebSocket-Protocol");\n if (secProtocol !== null && secProtocol !== request.headersList.get("Sec-WebSocket-Protocol")) {\n failWebsocketConnection(ws, "Protocol was not set in the opening handshake.");\n return;\n }\n response.socket.on("data", onSocketData);\n response.socket.on("close", onSocketClose);\n response.socket.on("error", onSocketError);\n if (channels.open.hasSubscribers) {\n channels.open.publish({\n address: response.socket.address(),\n protocol: secProtocol,\n extensions: secExtension\n });\n }\n onEstablish(response);\n }\n });\n return controller;\n }\n __name(establishWebSocketConnection, "establishWebSocketConnection");\n function onSocketData(chunk) {\n if (!this.ws[kByteParser].write(chunk)) {\n this.pause();\n }\n }\n __name(onSocketData, "onSocketData");\n function onSocketClose() {\n const { ws } = this;\n const wasClean = ws[kSentClose] && ws[kReceivedClose];\n let code = 1005;\n let reason = "";\n const result = ws[kByteParser].closingInfo;\n if (result) {\n code = result.code ?? 1005;\n reason = result.reason;\n } else if (!ws[kSentClose]) {\n code = 1006;\n }\n ws[kReadyState] = states.CLOSED;\n fireEvent("close", ws, CloseEvent, {\n wasClean,\n code,\n reason\n });\n if (channels.close.hasSubscribers) {\n channels.close.publish({\n websocket: ws,\n code,\n reason\n });\n }\n }\n __name(onSocketClose, "onSocketClose");\n function onSocketError(error) {\n const { ws } = this;\n ws[kReadyState] = states.CLOSING;\n if (channels.socketError.hasSubscribers) {\n channels.socketError.publish(error);\n }\n this.destroy();\n }\n __name(onSocketError, "onSocketError");\n module2.exports = {\n establishWebSocketConnection\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/frame.js\nvar require_frame = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/frame.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { randomBytes } = require("crypto");\n var { maxUnsigned16Bit } = require_constants3();\n var _WebsocketFrameSend = class _WebsocketFrameSend {\n /**\n * @param {Buffer|undefined} data\n */\n constructor(data) {\n this.frameData = data;\n this.maskKey = randomBytes(4);\n }\n createFrame(opcode) {\n const bodyLength = this.frameData?.byteLength ?? 0;\n let payloadLength = bodyLength;\n let offset = 6;\n if (bodyLength > maxUnsigned16Bit) {\n offset += 8;\n payloadLength = 127;\n } else if (bodyLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n const buffer = Buffer.allocUnsafe(bodyLength + offset);\n buffer[0] = buffer[1] = 0;\n buffer[0] |= 128;\n buffer[0] = (buffer[0] & 240) + opcode;\n buffer[offset - 4] = this.maskKey[0];\n buffer[offset - 3] = this.maskKey[1];\n buffer[offset - 2] = this.maskKey[2];\n buffer[offset - 1] = this.maskKey[3];\n buffer[1] = payloadLength;\n if (payloadLength === 126) {\n buffer.writeUInt16BE(bodyLength, 2);\n } else if (payloadLength === 127) {\n buffer[2] = buffer[3] = 0;\n buffer.writeUIntBE(bodyLength, 4, 6);\n }\n buffer[1] |= 128;\n for (let i = 0; i < bodyLength; i++) {\n buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4];\n }\n return buffer;\n }\n };\n __name(_WebsocketFrameSend, "WebsocketFrameSend");\n var WebsocketFrameSend = _WebsocketFrameSend;\n module2.exports = {\n WebsocketFrameSend\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/receiver.js\nvar require_receiver = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/receiver.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { Writable } = require("stream");\n var diagnosticsChannel = require("diagnostics_channel");\n var { parserStates, opcodes, states, emptyBuffer } = require_constants3();\n var { kReadyState, kSentClose, kResponse, kReceivedClose } = require_symbols3();\n var { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require_util3();\n var { WebsocketFrameSend } = require_frame();\n var channels = {};\n channels.ping = diagnosticsChannel.channel("undici:websocket:ping");\n channels.pong = diagnosticsChannel.channel("undici:websocket:pong");\n var _buffers, _byteOffset, _state, _info, _fragments;\n var _ByteParser = class _ByteParser extends Writable {\n constructor(ws) {\n super();\n __privateAdd(this, _buffers, []);\n __privateAdd(this, _byteOffset, 0);\n __privateAdd(this, _state, parserStates.INFO);\n __privateAdd(this, _info, {});\n __privateAdd(this, _fragments, []);\n this.ws = ws;\n }\n /**\n * @param {Buffer} chunk\n * @param {() => void} callback\n */\n _write(chunk, _, callback) {\n __privateGet(this, _buffers).push(chunk);\n __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) + chunk.length);\n this.run(callback);\n }\n /**\n * Runs whenever a new chunk is received.\n * Callback is called whenever there are no more chunks buffering,\n * or not enough bytes are buffered to parse.\n */\n run(callback) {\n while (true) {\n if (__privateGet(this, _state) === parserStates.INFO) {\n if (__privateGet(this, _byteOffset) < 2) {\n return callback();\n }\n const buffer = this.consume(2);\n __privateGet(this, _info).fin = (buffer[0] & 128) !== 0;\n __privateGet(this, _info).opcode = buffer[0] & 15;\n __privateGet(this, _info).originalOpcode ??= __privateGet(this, _info).opcode;\n __privateGet(this, _info).fragmented = !__privateGet(this, _info).fin && __privateGet(this, _info).opcode !== opcodes.CONTINUATION;\n if (__privateGet(this, _info).fragmented && __privateGet(this, _info).opcode !== opcodes.BINARY && __privateGet(this, _info).opcode !== opcodes.TEXT) {\n failWebsocketConnection(this.ws, "Invalid frame type was fragmented.");\n return;\n }\n const payloadLength = buffer[1] & 127;\n if (payloadLength <= 125) {\n __privateGet(this, _info).payloadLength = payloadLength;\n __privateSet(this, _state, parserStates.READ_DATA);\n } else if (payloadLength === 126) {\n __privateSet(this, _state, parserStates.PAYLOADLENGTH_16);\n } else if (payloadLength === 127) {\n __privateSet(this, _state, parserStates.PAYLOADLENGTH_64);\n }\n if (__privateGet(this, _info).fragmented && payloadLength > 125) {\n failWebsocketConnection(this.ws, "Fragmented frame exceeded 125 bytes.");\n return;\n } else if ((__privateGet(this, _info).opcode === opcodes.PING || __privateGet(this, _info).opcode === opcodes.PONG || __privateGet(this, _info).opcode === opcodes.CLOSE) && payloadLength > 125) {\n failWebsocketConnection(this.ws, "Payload length for control frame exceeded 125 bytes.");\n return;\n } else if (__privateGet(this, _info).opcode === opcodes.CLOSE) {\n if (payloadLength === 1) {\n failWebsocketConnection(this.ws, "Received close frame with a 1-byte body.");\n return;\n }\n const body = this.consume(payloadLength);\n __privateGet(this, _info).closeInfo = this.parseCloseBody(false, body);\n if (!this.ws[kSentClose]) {\n const body2 = Buffer.allocUnsafe(2);\n body2.writeUInt16BE(__privateGet(this, _info).closeInfo.code, 0);\n const closeFrame = new WebsocketFrameSend(body2);\n this.ws[kResponse].socket.write(\n closeFrame.createFrame(opcodes.CLOSE),\n (err) => {\n if (!err) {\n this.ws[kSentClose] = true;\n }\n }\n );\n }\n this.ws[kReadyState] = states.CLOSING;\n this.ws[kReceivedClose] = true;\n this.end();\n return;\n } else if (__privateGet(this, _info).opcode === opcodes.PING) {\n const body = this.consume(payloadLength);\n if (!this.ws[kReceivedClose]) {\n const frame = new WebsocketFrameSend(body);\n this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG));\n if (channels.ping.hasSubscribers) {\n channels.ping.publish({\n payload: body\n });\n }\n }\n __privateSet(this, _state, parserStates.INFO);\n if (__privateGet(this, _byteOffset) > 0) {\n continue;\n } else {\n callback();\n return;\n }\n } else if (__privateGet(this, _info).opcode === opcodes.PONG) {\n const body = this.consume(payloadLength);\n if (channels.pong.hasSubscribers) {\n channels.pong.publish({\n payload: body\n });\n }\n if (__privateGet(this, _byteOffset) > 0) {\n continue;\n } else {\n callback();\n return;\n }\n }\n } else if (__privateGet(this, _state) === parserStates.PAYLOADLENGTH_16) {\n if (__privateGet(this, _byteOffset) < 2) {\n return callback();\n }\n const buffer = this.consume(2);\n __privateGet(this, _info).payloadLength = buffer.readUInt16BE(0);\n __privateSet(this, _state, parserStates.READ_DATA);\n } else if (__privateGet(this, _state) === parserStates.PAYLOADLENGTH_64) {\n if (__privateGet(this, _byteOffset) < 8) {\n return callback();\n }\n const buffer = this.consume(8);\n const upper = buffer.readUInt32BE(0);\n if (upper > 2 ** 31 - 1) {\n failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes.");\n return;\n }\n const lower = buffer.readUInt32BE(4);\n __privateGet(this, _info).payloadLength = (upper << 8) + lower;\n __privateSet(this, _state, parserStates.READ_DATA);\n } else if (__privateGet(this, _state) === parserStates.READ_DATA) {\n if (__privateGet(this, _byteOffset) < __privateGet(this, _info).payloadLength) {\n return callback();\n } else if (__privateGet(this, _byteOffset) >= __privateGet(this, _info).payloadLength) {\n const body = this.consume(__privateGet(this, _info).payloadLength);\n __privateGet(this, _fragments).push(body);\n if (!__privateGet(this, _info).fragmented || __privateGet(this, _info).fin && __privateGet(this, _info).opcode === opcodes.CONTINUATION) {\n const fullMessage = Buffer.concat(__privateGet(this, _fragments));\n websocketMessageReceived(this.ws, __privateGet(this, _info).originalOpcode, fullMessage);\n __privateSet(this, _info, {});\n __privateGet(this, _fragments).length = 0;\n }\n __privateSet(this, _state, parserStates.INFO);\n }\n }\n if (__privateGet(this, _byteOffset) > 0) {\n continue;\n } else {\n callback();\n break;\n }\n }\n }\n /**\n * Take n bytes from the buffered Buffers\n * @param {number} n\n * @returns {Buffer|null}\n */\n consume(n) {\n if (n > __privateGet(this, _byteOffset)) {\n return null;\n } else if (n === 0) {\n return emptyBuffer;\n }\n if (__privateGet(this, _buffers)[0].length === n) {\n __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) - __privateGet(this, _buffers)[0].length);\n return __privateGet(this, _buffers).shift();\n }\n const buffer = Buffer.allocUnsafe(n);\n let offset = 0;\n while (offset !== n) {\n const next = __privateGet(this, _buffers)[0];\n const { length } = next;\n if (length + offset === n) {\n buffer.set(__privateGet(this, _buffers).shift(), offset);\n break;\n } else if (length + offset > n) {\n buffer.set(next.subarray(0, n - offset), offset);\n __privateGet(this, _buffers)[0] = next.subarray(n - offset);\n break;\n } else {\n buffer.set(__privateGet(this, _buffers).shift(), offset);\n offset += next.length;\n }\n }\n __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) - n);\n return buffer;\n }\n parseCloseBody(onlyCode, data) {\n let code;\n if (data.length >= 2) {\n code = data.readUInt16BE(0);\n }\n if (onlyCode) {\n if (!isValidStatusCode(code)) {\n return null;\n }\n return { code };\n }\n let reason = data.subarray(2);\n if (reason[0] === 239 && reason[1] === 187 && reason[2] === 191) {\n reason = reason.subarray(3);\n }\n if (code !== void 0 && !isValidStatusCode(code)) {\n return null;\n }\n try {\n reason = new TextDecoder("utf-8", { fatal: true }).decode(reason);\n } catch {\n return null;\n }\n return { code, reason };\n }\n get closingInfo() {\n return __privateGet(this, _info).closeInfo;\n }\n };\n _buffers = new WeakMap();\n _byteOffset = new WeakMap();\n _state = new WeakMap();\n _info = new WeakMap();\n _fragments = new WeakMap();\n __name(_ByteParser, "ByteParser");\n var ByteParser = _ByteParser;\n module2.exports = {\n ByteParser\n };\n }\n});\n\n// ../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/websocket.js\nvar require_websocket = __commonJS({\n "../../node_modules/.pnpm/undici@5.23.0/node_modules/undici/lib/websocket/websocket.js"(exports2, module2) {\n "use strict";\n init_define_process();\n var { webidl } = require_webidl();\n var { DOMException } = require_constants();\n var { URLSerializer } = require_dataURL();\n var { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require_constants3();\n var {\n kWebSocketURL,\n kReadyState,\n kController,\n kBinaryType,\n kResponse,\n kSentClose,\n kByteParser\n } = require_symbols3();\n var { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require_util3();\n var { establishWebSocketConnection } = require_connection();\n var { WebsocketFrameSend } = require_frame();\n var { ByteParser } = require_receiver();\n var { kEnumerableProperty, isBlobLike } = require_util();\n var { getGlobalDispatcher: getGlobalDispatcher2 } = require_global2();\n var { types } = require("util");\n var experimentalWarned = false;\n var _events, _bufferedAmount, _protocol, _extensions, _onConnectionEstablished, onConnectionEstablished_fn;\n var _WebSocket = class _WebSocket extends EventTarget {\n /**\n * @param {string} url\n * @param {string|string[]} protocols\n */\n constructor(url, protocols = []) {\n super();\n /**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n */\n __privateAdd(this, _onConnectionEstablished);\n __privateAdd(this, _events, {\n open: null,\n error: null,\n close: null,\n message: null\n });\n __privateAdd(this, _bufferedAmount, 0);\n __privateAdd(this, _protocol, "");\n __privateAdd(this, _extensions, "");\n webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket constructor" });\n if (!experimentalWarned) {\n experimentalWarned = true;\n define_process_default.emitWarning("WebSockets are experimental, expect them to change at any time.", {\n code: "UNDICI-WS"\n });\n }\n const options = webidl.converters["DOMString or sequence or WebSocketInit"](protocols);\n url = webidl.converters.USVString(url);\n protocols = options.protocols;\n let urlRecord;\n try {\n urlRecord = new URL(url);\n } catch (e) {\n throw new DOMException(e, "SyntaxError");\n }\n if (urlRecord.protocol !== "ws:" && urlRecord.protocol !== "wss:") {\n throw new DOMException(\n `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n "SyntaxError"\n );\n }\n if (urlRecord.hash) {\n throw new DOMException("Got fragment", "SyntaxError");\n }\n if (typeof protocols === "string") {\n protocols = [protocols];\n }\n if (protocols.length !== new Set(protocols.map((p) => p.toLowerCase())).size) {\n throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError");\n }\n if (protocols.length > 0 && !protocols.every((p) => isValidSubprotocol(p))) {\n throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError");\n }\n this[kWebSocketURL] = urlRecord;\n this[kController] = establishWebSocketConnection(\n urlRecord,\n protocols,\n this,\n (response) => __privateMethod(this, _onConnectionEstablished, onConnectionEstablished_fn).call(this, response),\n options\n );\n this[kReadyState] = _WebSocket.CONNECTING;\n this[kBinaryType] = "blob";\n }\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n * @param {number|undefined} code\n * @param {string|undefined} reason\n */\n close(code = void 0, reason = void 0) {\n webidl.brandCheck(this, _WebSocket);\n if (code !== void 0) {\n code = webidl.converters["unsigned short"](code, { clamp: true });\n }\n if (reason !== void 0) {\n reason = webidl.converters.USVString(reason);\n }\n if (code !== void 0) {\n if (code !== 1e3 && (code < 3e3 || code > 4999)) {\n throw new DOMException("invalid code", "InvalidAccessError");\n }\n }\n let reasonByteLength = 0;\n if (reason !== void 0) {\n reasonByteLength = Buffer.byteLength(reason);\n if (reasonByteLength > 123) {\n throw new DOMException(\n `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n "SyntaxError"\n );\n }\n }\n if (this[kReadyState] === _WebSocket.CLOSING || this[kReadyState] === _WebSocket.CLOSED) {\n } else if (!isEstablished(this)) {\n failWebsocketConnection(this, "Connection was closed before it was established.");\n this[kReadyState] = _WebSocket.CLOSING;\n } else if (!isClosing(this)) {\n const frame = new WebsocketFrameSend();\n if (code !== void 0 && reason === void 0) {\n frame.frameData = Buffer.allocUnsafe(2);\n frame.frameData.writeUInt16BE(code, 0);\n } else if (code !== void 0 && reason !== void 0) {\n frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength);\n frame.frameData.writeUInt16BE(code, 0);\n frame.frameData.write(reason, 2, "utf-8");\n } else {\n frame.frameData = emptyBuffer;\n }\n const socket = this[kResponse].socket;\n socket.write(frame.createFrame(opcodes.CLOSE), (err) => {\n if (!err) {\n this[kSentClose] = true;\n }\n });\n this[kReadyState] = states.CLOSING;\n } else {\n this[kReadyState] = _WebSocket.CLOSING;\n }\n }\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n */\n send(data) {\n webidl.brandCheck(this, _WebSocket);\n webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket.send" });\n data = webidl.converters.WebSocketSendData(data);\n if (this[kReadyState] === _WebSocket.CONNECTING) {\n throw new DOMException("Sent before connected.", "InvalidStateError");\n }\n if (!isEstablished(this) || isClosing(this)) {\n return;\n }\n const socket = this[kResponse].socket;\n if (typeof data === "string") {\n const value = Buffer.from(data);\n const frame = new WebsocketFrameSend(value);\n const buffer = frame.createFrame(opcodes.TEXT);\n __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength);\n socket.write(buffer, () => {\n __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength);\n });\n } else if (types.isArrayBuffer(data)) {\n const value = Buffer.from(data);\n const frame = new WebsocketFrameSend(value);\n const buffer = frame.createFrame(opcodes.BINARY);\n __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength);\n socket.write(buffer, () => {\n __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength);\n });\n } else if (ArrayBuffer.isView(data)) {\n const ab = Buffer.from(data, data.byteOffset, data.byteLength);\n const frame = new WebsocketFrameSend(ab);\n const buffer = frame.createFrame(opcodes.BINARY);\n __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + ab.byteLength);\n socket.write(buffer, () => {\n __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - ab.byteLength);\n });\n } else if (isBlobLike(data)) {\n const frame = new WebsocketFrameSend();\n data.arrayBuffer().then((ab) => {\n const value = Buffer.from(ab);\n frame.frameData = value;\n const buffer = frame.createFrame(opcodes.BINARY);\n __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength);\n socket.write(buffer, () => {\n __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength);\n });\n });\n }\n }\n get readyState() {\n webidl.brandCheck(this, _WebSocket);\n return this[kReadyState];\n }\n get bufferedAmount() {\n webidl.brandCheck(this, _WebSocket);\n return __privateGet(this, _bufferedAmount);\n }\n get url() {\n webidl.brandCheck(this, _WebSocket);\n return URLSerializer(this[kWebSocketURL]);\n }\n get extensions() {\n webidl.brandCheck(this, _WebSocket);\n return __privateGet(this, _extensions);\n }\n get protocol() {\n webidl.brandCheck(this, _WebSocket);\n return __privateGet(this, _protocol);\n }\n get onopen() {\n webidl.brandCheck(this, _WebSocket);\n return __privateGet(this, _events).open;\n }\n set onopen(fn) {\n webidl.brandCheck(this, _WebSocket);\n if (__privateGet(this, _events).open) {\n this.removeEventListener("open", __privateGet(this, _events).open);\n }\n if (typeof fn === "function") {\n __privateGet(this, _events).open = fn;\n this.addEventListener("open", fn);\n } else {\n __privateGet(this, _events).open = null;\n }\n }\n get onerror() {\n webidl.brandCheck(this, _WebSocket);\n return __privateGet(this, _events).error;\n }\n set onerror(fn) {\n webidl.brandCheck(this, _WebSocket);\n if (__privateGet(this, _events).error) {\n this.removeEventListener("error", __privateGet(this, _events).error);\n }\n if (typeof fn === "function") {\n __privateGet(this, _events).error = fn;\n this.addEventListener("error", fn);\n } else {\n __privateGet(this, _events).error = null;\n }\n }\n get onclose() {\n webidl.brandCheck(this, _WebSocket);\n return __privateGet(this, _events).close;\n }\n set onclose(fn) {\n webidl.brandCheck(this, _WebSocket);\n if (__privateGet(this, _events).close) {\n this.removeEventListener("close", __privateGet(this, _events).close);\n }\n if (typeof fn === "function") {\n __privateGet(this, _events).close = fn;\n this.addEventListener("close", fn);\n } else {\n __privateGet(this, _events).close = null;\n }\n }\n get onmessage() {\n webidl.brandCheck(this, _WebSocket);\n return __privateGet(this, _events).message;\n }\n set onmessage(fn) {\n webidl.brandCheck(this, _WebSocket);\n if (__privateGet(this, _events).message) {\n this.removeEventListener("message", __privateGet(this, _events).message);\n }\n if (typeof fn === "function") {\n __privateGet(this, _events).message = fn;\n this.addEventListener("message", fn);\n } else {\n __privateGet(this, _events).message = null;\n }\n }\n get binaryType() {\n webidl.brandCheck(this, _WebSocket);\n return this[kBinaryType];\n }\n set binaryType(type) {\n webidl.brandCheck(this, _WebSocket);\n if (type !== "blob" && type !== "arraybuffer") {\n this[kBinaryType] = "blob";\n } else {\n this[kBinaryType] = type;\n }\n }\n };\n _events = new WeakMap();\n _bufferedAmount = new WeakMap();\n _protocol = new WeakMap();\n _extensions = new WeakMap();\n _onConnectionEstablished = new WeakSet();\n onConnectionEstablished_fn = /* @__PURE__ */ __name(function(response) {\n this[kResponse] = response;\n const parser = new ByteParser(this);\n parser.on("drain", /* @__PURE__ */ __name(function onParserDrain() {\n this.ws[kResponse].socket.resume();\n }, "onParserDrain"));\n response.socket.ws = this;\n this[kByteParser] = parser;\n this[kReadyState] = states.OPEN;\n const extensions = response.headersList.get("sec-websocket-extensions");\n if (extensions !== null) {\n __privateSet(this, _extensions, extensions);\n }\n const protocol = response.headersList.get("sec-websocket-protocol");\n if (protocol !== null) {\n __privateSet(this, _protocol, protocol);\n }\n fireEvent("open", this);\n }, "#onConnectionEstablished");\n __name(_WebSocket, "WebSocket");\n var WebSocket2 = _WebSocket;\n WebSocket2.CONNECTING = WebSocket2.prototype.CONNECTING = states.CONNECTING;\n WebSocket2.OPEN = WebSocket2.prototype.OPEN = states.OPEN;\n WebSocket2.CLOSING = WebSocket2.prototype.CLOSING = states.CLOSING;\n WebSocket2.CLOSED = WebSocket2.prototype.CLOSED = states.CLOSED;\n Object.defineProperties(WebSocket2.prototype, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors,\n url: kEnumerableProperty,\n readyState: kEnumerableProperty,\n bufferedAmount: kEnumerableProperty,\n onopen: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onclose: kEnumerableProperty,\n close: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n binaryType: kEnumerableProperty,\n send: kEnumerableProperty,\n extensions: kEnumerableProperty,\n protocol: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: "WebSocket",\n writable: false,\n enumerable: false,\n configurable: true\n }\n });\n Object.defineProperties(WebSocket2, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors\n });\n webidl.converters["sequence"] = webidl.sequenceConverter(\n webidl.converters.DOMString\n );\n webidl.converters["DOMString or sequence"] = function(V) {\n if (webidl.util.Type(V) === "Object" && Symbol.iterator in V) {\n return webidl.converters["sequence"](V);\n }\n return webidl.converters.DOMString(V);\n };\n webidl.converters.WebSocketInit = webidl.dictionaryConverter([\n {\n key: "protocols",\n converter: webidl.converters["DOMString or sequence"],\n get defaultValue() {\n return [];\n }\n },\n {\n key: "dispatcher",\n converter: (V) => V,\n get defaultValue() {\n return getGlobalDispatcher2();\n }\n },\n {\n key: "headers",\n converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n }\n ]);\n webidl.converters["DOMString or sequence or WebSocketInit"] = function(V) {\n if (webidl.util.Type(V) === "Object" && !(Symbol.iterator in V)) {\n return webidl.converters.WebSocketInit(V);\n }\n return { protocols: webidl.converters["DOMString or sequence"](V) };\n };\n webidl.converters.WebSocketSendData = function(V) {\n if (webidl.util.Type(V) === "Object") {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false });\n }\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V);\n }\n }\n return webidl.converters.USVString(V);\n };\n module2.exports = {\n WebSocket: WebSocket2\n };\n }\n});\n\n// src/primitives/fetch.js\nvar fetch_exports = {};\n__export(fetch_exports, {\n File: () => import_file.File,\n FormData: () => import_formdata.FormData,\n Headers: () => Headers2,\n Request: () => Request,\n Response: () => Response2,\n WebSocket: () => import_websocket.WebSocket,\n fetch: () => fetch,\n getGlobalDispatcher: () => getGlobalDispatcher,\n setGlobalDispatcher: () => setGlobalDispatcher\n});\nmodule.exports = __toCommonJS(fetch_exports);\ninit_define_process();\nvar FetchSymbols = __toESM(require_symbols());\nvar HeadersModule = __toESM(require_headers());\nvar ResponseModule = __toESM(require_response());\nvar UtilModule = __toESM(require_util2());\nvar WebIDLModule = __toESM(require_webidl());\nvar import_request = __toESM(require_request());\nvar import_fetch = __toESM(require_fetch());\nvar import_agent = __toESM(require_agent());\nvar import_formdata = __toESM(require_formdata());\nvar import_file = __toESM(require_file());\nvar import_websocket = __toESM(require_websocket());\ndefine_process_default.nextTick = setImmediate;\ndefine_process_default.emitWarning = () => {\n};\nvar _Request = class _Request extends import_request.Request {\n constructor(input, init) {\n super(input, addDuplexToInit(init));\n }\n};\n__name(_Request, "Request");\nvar Request = _Request;\nvar __entries = HeadersModule.Headers.prototype.entries;\nHeadersModule.Headers.prototype.entries = function* () {\n let sentSetCookie = false;\n for (const [key, value] of __entries.call(this)) {\n if (key === "set-cookie") {\n if (sentSetCookie) {\n continue;\n }\n sentSetCookie = true;\n const cookies = this.getSetCookie();\n yield [key, cookies.join(", ")];\n } else {\n yield [key, value];\n }\n }\n};\nHeadersModule.Headers[Symbol.iterator] = () => {\n return HeadersModule.Headers.prototype.entries();\n};\nHeadersModule.Headers.prototype.values = function* () {\n for (const [, value] of __entries.call(this)) {\n yield value;\n }\n};\nHeadersModule.Headers.prototype.getAll = function(name) {\n const _name = normalizeAndValidateHeaderName(name, "Headers.getAll");\n if (_name !== "set-cookie") {\n throw new Error(`getAll can only be used with \'set-cookie\'`);\n }\n return this.getSetCookie();\n};\nvar __error = ResponseModule.Response.error;\nResponseModule.Response.error = function(...args) {\n const response = __error.call(this, ...args);\n response[FetchSymbols.kHeaders][FetchSymbols.kGuard] = "response";\n return response;\n};\nfunction normalizeAndValidateHeaderName(potentialName, errorPrefix) {\n const normalizedName = potentialName.toLowerCase();\n if (UtilModule.isValidHeaderName(normalizedName)) {\n return normalizedName;\n }\n WebIDLModule.errors.invalidArgument({\n prefix: errorPrefix,\n value: normalizedName,\n type: "header name"\n });\n}\n__name(normalizeAndValidateHeaderName, "normalizeAndValidateHeaderName");\nvar globalDispatcher = new import_agent.default();\nfunction getGlobalDispatcher() {\n return globalDispatcher;\n}\n__name(getGlobalDispatcher, "getGlobalDispatcher");\nfunction setGlobalDispatcher(agent) {\n if (!agent || typeof agent.dispatch !== "function") {\n throw new InvalidArgumentError("Argument agent must implement Agent");\n }\n globalDispatcher = agent;\n}\n__name(setGlobalDispatcher, "setGlobalDispatcher");\nfunction addDuplexToInit(init) {\n return typeof init === "undefined" || typeof init === "object" && init.duplex === void 0 ? { duplex: "half", ...init } : init;\n}\n__name(addDuplexToInit, "addDuplexToInit");\nasync function fetch(info, init) {\n init = addDuplexToInit(init);\n const res = await import_fetch.fetch.call(getGlobalDispatcher(), info, init);\n const response = new Response2(res.body, res);\n Object.defineProperty(response, "url", { value: res.url });\n return response;\n}\n__name(fetch, "fetch");\nvar Headers2 = HeadersModule.Headers;\nvar Response2 = ResponseModule.Response;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n File,\n FormData,\n Headers,\n Request,\n Response,\n WebSocket,\n fetch,\n getGlobalDispatcher,\n setGlobalDispatcher\n});\n'; } }); var require_crypto_js_text = __commonJS({ "../primitives/dist/crypto.js.text.js"(exports2, module2) { "use strict"; module2.exports = '"use strict";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, "name", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n// src/primitives/crypto.js\nvar crypto_exports = {};\n__export(crypto_exports, {\n Crypto: () => Crypto,\n CryptoKey: () => CryptoKey,\n SubtleCrypto: () => SubtleCrypto,\n crypto: () => crypto\n});\nmodule.exports = __toCommonJS(crypto_exports);\nvar import_node_crypto = require("crypto");\nvar { Crypto, CryptoKey } = import_node_crypto.webcrypto;\nfunction SubtleCrypto() {\n if (!(this instanceof SubtleCrypto))\n return new SubtleCrypto();\n throw TypeError("Illegal constructor");\n}\n__name(SubtleCrypto, "SubtleCrypto");\nvar crypto = new Crypto();\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Crypto,\n CryptoKey,\n SubtleCrypto,\n crypto\n});\n'; } }); var require_load = __commonJS({ "../primitives/dist/load.js"(exports, module) { "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 __name = (target, value) => __defProp(target, "name", { value, configurable: true }); 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 load_exports = {}; __export(load_exports, { load: () => load }); module.exports = __toCommonJS(load_exports); var import_module = __toESM(__require("module")); var import_crypto = __toESM(__require("crypto")); var import_web = __require("stream/web"); function requireWithFakeGlobalScope(params) { const getModuleCode = `(function(module,exports,require,globalThis,${Object.keys( params.scopedContext ).join(",")}) {${params.sourceCode} })`; const module = { exports: {}, loaded: false, id: params.id }; const moduleRequire = (import_module.default.createRequire || import_module.default.createRequireFromPath)( __filename ); function throwingRequire(pathToRequire) { if (pathToRequire.startsWith("./")) { const moduleName = pathToRequire.replace(/^\.\//, ""); if (!params.cache || !params.cache.has(moduleName)) { throw new Error(`Cannot find module '${moduleName}'`); } return params.cache.get(moduleName).exports; } return moduleRequire(pathToRequire); } __name(throwingRequire, "throwingRequire"); throwingRequire.resolve = moduleRequire.resolve.bind(moduleRequire); eval(getModuleCode)( module, module.exports, throwingRequire, params.context, ...Object.values(params.scopedContext) ); return module.exports; } __name(requireWithFakeGlobalScope, "requireWithFakeGlobalScope"); function load(scopedContext = {}) { const context = {}; assign(context, { TextDecoder, TextEncoder, TextEncoderStream: import_web.TextEncoderStream, TextDecoderStream: import_web.TextDecoderStream, atob, btoa, performance }); const consoleImpl = requireWithFakeGlobalScope({ context, id: "console.js", sourceCode: require_console_js_text(), scopedContext }); assign(context, { console: consoleImpl.console }); const timersImpl = requireWithFakeGlobalScope({ context, id: "timers.js", sourceCode: require_timers_js_text(), scopedContext }); assign(context, { setTimeout: timersImpl.setTimeout, setInterval: timersImpl.setInterval }); const eventsImpl = requireWithFakeGlobalScope({ context, id: "events.js", sourceCode: require_events_js_text(), scopedContext }); assign(context, { Event, EventTarget, FetchEvent: eventsImpl.FetchEvent, // @ts-expect-error we need to add this to the type definitions maybe PromiseRejectionEvent: eventsImpl.PromiseRejectionEvent }); const streamsImpl = { ReadableStream: import_web.ReadableStream, ReadableStreamBYOBReader: import_web.ReadableStreamBYOBReader, ReadableStreamDefaultReader: import_web.ReadableStreamDefaultReader, TransformStream: import_web.TransformStream, WritableStream: import_web.WritableStream, WritableStreamDefaultWriter: import_web.WritableStreamDefaultWriter }; assign(context, streamsImpl); const abortControllerImpl = requireWithFakeGlobalScope({ context, id: "abort-controller.js", sourceCode: require_abort_controller_js_text(), scopedContext: { ...scopedContext } }); assign(context, { AbortController: abortControllerImpl.AbortController, AbortSignal: abortControllerImpl.AbortSignal, DOMException: abortControllerImpl.DOMException }); const urlImpl = requireWithFakeGlobalScope({ context, id: "url.js", sourceCode: require_url_js_text(), scopedContext: { ...scopedContext } }); assign(context, { URL, URLSearchParams, URLPattern: urlImpl.URLPattern }); const blobImpl = (() => { if (typeof scopedContext.Blob === "function") { return { Blob: scopedContext.Blob }; } if (typeof Blob === "function") { return { Blob }; } const global22 = { ...streamsImpl, ...scopedContext }; const globalGlobal = { ...global22, Blob: void 0 }; Object.setPrototypeOf(globalGlobal, globalThis); global22.global = globalGlobal; return requireWithFakeGlobalScope({ context, id: "blob.js", sourceCode: require_blob_js_text(), scopedContext: global22 }); })(); assign(context, { Blob: blobImpl.Blob }); const structuredCloneImpl = requireWithFakeGlobalScope({ id: "structured-clone.js", context, sourceCode: require_structured_clone_js_text(), scopedContext: { ...streamsImpl, ...scopedContext } }); assign(context, { structuredClone: structuredCloneImpl.structuredClone }); const fetchImpl = requireWithFakeGlobalScope({ context, id: "fetch.js", sourceCode: require_fetch_js_text(), cache: /* @__PURE__ */ new Map([ ["abort-controller", { exports: abortControllerImpl }], ["streams", { exports: streamsImpl }] ]), scopedContext: { global: { ...scopedContext }, ...scopedContext, ...urlImpl, ...abortControllerImpl, ...eventsImpl, ...streamsImpl, structuredClone: context.structuredClone } }); assign(context, { fetch: fetchImpl.fetch, File: fetchImpl.File, FormData: fetchImpl.FormData, Headers: fetchImpl.Headers, Request: fetchImpl.Request, Response: fetchImpl.Response, WebSocket: fetchImpl.WebSocket }); const cryptoImpl = getCrypto(context, scopedContext); assign(context, { crypto: cryptoImpl.crypto, Crypto: cryptoImpl.Crypto, CryptoKey: cryptoImpl.CryptoKey, SubtleCrypto: cryptoImpl.SubtleCrypto }); return context; } __name(load, "load"); function getCrypto(context, scopedContext) { if (typeof SubtleCrypto !== "undefined" || scopedContext.SubtleCrypto) { return { crypto: scopedContext.crypto || globalThis.crypto, Crypto: scopedContext.Crypto || globalThis.Crypto, CryptoKey: scopedContext.CryptoKey || globalThis.CryptoKey, SubtleCrypto: scopedContext.SubtleCrypto || globalThis.SubtleCrypto }; } else if ( // @ts-ignore import_crypto.default.webcrypto ) { const webcrypto = import_crypto.default.webcrypto; return { crypto: webcrypto, Crypto: webcrypto.constructor, CryptoKey: webcrypto.CryptoKey, SubtleCrypto: webcrypto.subtle.constructor }; } return requireWithFakeGlobalScope({ context, id: "crypto.js", sourceCode: require_crypto_js_text(), scopedContext: { ...scopedContext } }); } __name(getCrypto, "getCrypto"); function assign(context, additions) { Object.assign(context, additions); } __name(assign, "assign"); } }); var require_dist = __commonJS({ "../primitives/dist/index.js"(exports2, module2) { "use strict"; var import_load = require_load(); module2.exports = (0, import_load.load)({ WeakRef: global.WeakRef }); } }); var src_exports = {}; __export2(src_exports, { buildToFetchEvent: () => buildToFetchEvent, buildToHeaders: () => buildToHeaders, buildToNodeHandler: () => buildToNodeHandler, buildToReadableStream: () => buildToReadableStream, buildToRequest: () => buildToRequest, mergeIntoServerResponse: () => mergeIntoServerResponse, toOutgoingHeaders: () => toOutgoingHeaders, toToReadable: () => toToReadable }); module.exports = __toCommonJS2(src_exports); function buildToFetchEvent(dependencies) { return function toFetchEvent(request) { return new dependencies.FetchEvent(request); }; } function buildToHeaders({ Headers: Headers22 }) { return function toHeaders2(nodeHeaders) { const headers = new Headers22(); for (let [key, value] of Object.entries(nodeHeaders)) { const values = Array.isArray(value) ? value : [value]; for (let v of values) { if (v !== void 0) { headers.append(key, v); } } } return headers; }; } function buildToReadableStream(dependencies) { const { ReadableStream, Uint8Array: Uint8Array2 } = dependencies; return function toReadableStream(stream) { return new ReadableStream({ start(controller) { stream.on("data", (chunk) => { controller.enqueue(new Uint8Array2([...new Uint8Array2(chunk)])); }); stream.on("end", () => { controller.close(); }); stream.on("error", (err) => { controller.error(err); }); } }); }; } function buildToRequest(dependencies) { const toHeaders2 = buildToHeaders(dependencies); const toReadableStream = buildToReadableStream(dependencies); const { Request: Request2 } = dependencies; return function toRequest(request, options) { var _a, _b; const base = computeOrigin(request, options.defaultOrigin); return new Request2( String( ((_a = request.url) == null ? void 0 : _a.startsWith("//")) ? new URL(base + request.url) : new URL(request.url || "/", base) ), { method: request.method, headers: toHeaders2(request.headers), body: !["HEAD", "GET"].includes((_b = request.method) != null ? _b : "") ? toReadableStream(request) : null } ); }; } function computeOrigin({ headers }, defaultOrigin) { const authority = headers.host; if (!authority) { return defaultOrigin; } const [, port] = authority.split(":"); return `${port === "443" ? "https" : "http"}://${authority}`; } var import_primitives = __toESM2(require_dist()); function toOutgoingHeaders(headers) { const outputHeaders2 = {}; if (headers) { const _headers = new import_primitives.Headers(headers).entries(); for (const [name, value] of _headers) { outputHeaders2[name] = name === "set-cookie" ? headers.getSetCookie() : value; } } return outputHeaders2; } function mergeIntoServerResponse(headers, serverResponse) { for (const [name, value] of Object.entries(headers)) { if (value !== void 0) { serverResponse.setHeader(name, value); } } } var import_node_stream = __require("stream"); function toToReadable(webStream, options = {}) { const reader = webStream.getReader(); let closed = false; const { highWaterMark, encoding, objectMode = false, signal } = options; const readable = new import_node_stream.Readable({ objectMode, highWaterMark, encoding, // @ts-ignore signal exist only since Node@17 signal, read() { reader.read().then( (chunk) => { if (chunk.done) { readable.push(null); } else { readable.push(chunk.value); } }, (error3) => readable.destroy(error3) ); }, destroy(error3, callback) { function done() { try { callback(error3); } catch (error22) { process.nextTick(() => { throw error22; }); } } if (!closed) { reader.cancel(error3).then(done, done); return; } done(); } }); reader.closed.then( () => { closed = true; }, (error3) => { closed = true; readable.destroy(error3); } ); return readable; } function buildToNodeHandler(dependencies, options) { const toRequest = buildToRequest(dependencies); const toFetchEvent = buildToFetchEvent(dependencies); return function toNodeHandler(webHandler) { return (incomingMessage, serverResponse) => { const request = toRequest(incomingMessage, options); const maybePromise = webHandler(request, toFetchEvent(request)); if (maybePromise instanceof Promise) { maybePromise.then( (response) => toServerResponse(response, serverResponse) ); } else { toServerResponse(maybePromise, serverResponse); } }; }; } function toServerResponse(webResponse, serverResponse) { if (!webResponse) { serverResponse.end(); return; } mergeIntoServerResponse( toOutgoingHeaders(webResponse.headers), serverResponse ); serverResponse.statusCode = webResponse.status; serverResponse.statusMessage = webResponse.statusText; if (!webResponse.body) { serverResponse.end(); return; } toToReadable(webResponse.body).pipe(serverResponse); } } }); // ../../node_modules/.pnpm/ci-info@4.1.0/node_modules/ci-info/vendors.json var require_vendors = __commonJS2({ "../../node_modules/.pnpm/ci-info@4.1.0/node_modules/ci-info/vendors.json"(exports2, module2) { module2.exports = [ { name: "Agola CI", constant: "AGOLA", env: "AGOLA_GIT_REF", pr: "AGOLA_PULL_REQUEST_ID" }, { name: "Appcircle", constant: "APPCIRCLE", env: "AC_APPCIRCLE", pr: { env: "AC_GIT_PR", ne: "false" } }, { name: "AppVeyor", constant: "APPVEYOR", env: "APPVEYOR", pr: "APPVEYOR_PULL_REQUEST_NUMBER" }, { name: "AWS CodeBuild", constant: "CODEBUILD", env: "CODEBUILD_BUILD_ARN", pr: { env: "CODEBUILD_WEBHOOK_EVENT", any: [ "PULL_REQUEST_CREATED", "PULL_REQUEST_UPDATED", "PULL_REQUEST_REOPENED" ] } }, { name: "Azure Pipelines", constant: "AZURE_PIPELINES", env: "TF_BUILD", pr: { BUILD_REASON: "PullRequest" } }, { name: "Bamboo", constant: "BAMBOO", env: "bamboo_planKey" }, { name: "Bitbucket Pipelines", constant: "BITBUCKET", env: "BITBUCKET_COMMIT", pr: "BITBUCKET_PR_ID" }, { name: "Bitrise", constant: "BITRISE", env: "BITRISE_IO", pr: "BITRISE_PULL_REQUEST" }, { name: "Buddy", constant: "BUDDY", env: "BUDDY_WORKSPACE_ID", pr: "BUDDY_EXECUTION_PULL_REQUEST_ID" }, { name: "Buildkite", constant: "BUILDKITE", env: "BUILDKITE", pr: { env: "BUILDKITE_PULL_REQUEST", ne: "false" } }, { name: "CircleCI", constant: "CIRCLE", env: "CIRCLECI", pr: "CIRCLE_PULL_REQUEST" }, { name: "Cirrus CI", constant: "CIRRUS", env: "CIRRUS_CI", pr: "CIRRUS_PR" }, { name: "Codefresh", constant: "CODEFRESH", env: "CF_BUILD_ID", pr: { any: [ "CF_PULL_REQUEST_NUMBER", "CF_PULL_REQUEST_ID" ] } }, { name: "Codemagic", constant: "CODEMAGIC", env: "CM_BUILD_ID", pr: "CM_PULL_REQUEST" }, { name: "Codeship", constant: "CODESHIP", env: { CI_NAME: "codeship" } }, { name: "Drone", constant: "DRONE", env: "DRONE", pr: { DRONE_BUILD_EVENT: "pull_request" } }, { name: "dsari", constant: "DSARI", env: "DSARI" }, { name: "Earthly", constant: "EARTHLY", env: "EARTHLY_CI" }, { name: "Expo Application Services", constant: "EAS", env: "EAS_BUILD" }, { name: "Gerrit", constant: "GERRIT", env: "GERRIT_PROJECT" }, { name: "Gitea Actions", constant: "GITEA_ACTIONS", env: "GITEA_ACTIONS" }, { name: "GitHub Actions", constant: "GITHUB_ACTIONS", env: "GITHUB_ACTIONS", pr: { GITHUB_EVENT_NAME: "pull_request" } }, { name: "GitLab CI", constant: "GITLAB", env: "GITLAB_CI", pr: "CI_MERGE_REQUEST_ID" }, { name: "GoCD", constant: "GOCD", env: "GO_PIPELINE_LABEL" }, { name: "Google Cloud Build", constant: "GOOGLE_CLOUD_BUILD", env: "BUILDER_OUTPUT" }, { name: "Harness CI", constant: "HARNESS", env: "HARNESS_BUILD_ID" }, { name: "Heroku", constant: "HEROKU", env: { env: "NODE", includes: "/app/.heroku/node/bin/node" } }, { name: "Hudson", constant: "HUDSON", env: "HUDSON_URL" }, { name: "Jenkins", constant: "JENKINS", env: [ "JENKINS_URL", "BUILD_ID" ], pr: { any: [ "ghprbPullId", "CHANGE_ID" ] } }, { name: "LayerCI", constant: "LAYERCI", env: "LAYERCI", pr: "LAYERCI_PULL_REQUEST" }, { name: "Magnum CI", constant: "MAGNUM", env: "MAGNUM" }, { name: "Netlify CI", constant: "NETLIFY", env: "NETLIFY", pr: { env: "PULL_REQUEST", ne: "false" } }, { name: "Nevercode", constant: "NEVERCODE", env: "NEVERCODE", pr: { env: "NEVERCODE_PULL_REQUEST", ne: "false" } }, { name: "Prow", constant: "PROW", env: "PROW_JOB_ID" }, { name: "ReleaseHub", constant: "RELEASEHUB", env: "RELEASE_BUILD_ID" }, { name: "Render", constant: "RENDER", env: "RENDER", pr: { IS_PULL_REQUEST: "true" } }, { name: "Sail CI", constant: "SAIL", env: "SAILCI", pr: "SAIL_PULL_REQUEST_NUMBER" }, { name: "Screwdriver", constant: "SCREWDRIVER", env: "SCREWDRIVER", pr: { env: "SD_PULL_REQUEST", ne: "false" } }, { name: "Semaphore", constant: "SEMAPHORE", env: "SEMAPHORE", pr: "PULL_REQUEST_NUMBER" }, { name: "Sourcehut", constant: "SOURCEHUT", env: { CI_NAME: "sourcehut" } }, { name: "Strider CD", constant: "STRIDER", env: "STRIDER" }, { name: "TaskCluster", constant: "TASKCLUSTER", env: [ "TASK_ID", "RUN_ID" ] }, { name: "TeamCity", constant: "TEAMCITY", env: "TEAMCITY_VERSION" }, { name: "Travis CI", constant: "TRAVIS", env: "TRAVIS", pr: { env: "TRAVIS_PULL_REQUEST", ne: "false" } }, { name: "Vela", constant: "VELA", env: "VELA", pr: { VELA_PULL_REQUEST: "1" } }, { name: "Vercel", constant: "VERCEL", env: { any: [ "NOW_BUILDER", "VERCEL" ] }, pr: "VERCEL_GIT_PULL_REQUEST_ID" }, { name: "Visual Studio App Center", constant: "APPCENTER", env: "APPCENTER_BUILD_ID" }, { name: "Woodpecker", constant: "WOODPECKER", env: { CI: "woodpecker" }, pr: { CI_BUILD_EVENT: "pull_request" } }, { name: "Xcode Cloud", constant: "XCODE_CLOUD", env: "CI_XCODE_PROJECT", pr: "CI_PULL_REQUEST_NUMBER" }, { name: "Xcode Server", constant: "XCODE_SERVER", env: "XCS" } ]; } }); // ../../node_modules/.pnpm/ci-info@4.1.0/node_modules/ci-info/index.js var require_ci_info = __commonJS2({ "../../node_modules/.pnpm/ci-info@4.1.0/node_modules/ci-info/index.js"(exports2) { "use strict"; var vendors = require_vendors(); var env = process.env; Object.defineProperty(exports2, "_vendors", { value: vendors.map(function(v) { return v.constant; }) }); exports2.name = null; exports2.isPR = null; exports2.id = null; vendors.forEach(function(vendor) { const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env]; const isCI = envs.every(function(obj) { return checkEnv(obj); }); exports2[vendor.constant] = isCI; if (!isCI) { return; } exports2.name = vendor.name; exports2.isPR = checkPR(vendor); exports2.id = vendor.constant; }); exports2.isCI = !!(env.CI !== "false" && // Bypass all checks if CI env is explicitly set to 'false' (env.BUILD_ID || // Jenkins, Cloudbees env.BUILD_NUMBER || // Jenkins, TeamCity env.CI || // Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari env.CI_APP_ID || // Appflow env.CI_BUILD_ID || // Appflow env.CI_BUILD_NUMBER || // Appflow env.CI_NAME || // Codeship and others env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI env.RUN_ID || // TaskCluster, dsari exports2.name || false)); function checkEnv(obj) { if (typeof obj === "string") return !!env[obj]; if ("env" in obj) { return env[obj.env] && env[obj.env].includes(obj.includes); } if ("any" in obj) { return obj.any.some(function(k) { return !!env[k]; }); } return Object.keys(obj).every(function(k) { return env[k] === obj[k]; }); } function checkPR(vendor) { switch (typeof vendor.pr) { case "string": return !!env[vendor.pr]; case "object": if ("env" in vendor.pr) { if ("any" in vendor.pr) { return vendor.pr.any.some(function(key) { return env[vendor.pr.env] === key; }); } else { return vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne; } } else if ("any" in vendor.pr) { return vendor.pr.any.some(function(key) { return !!env[key]; }); } else { return checkEnv(vendor.pr); } default: return null; } } } }); // src/util/get-subcommand.ts function getSubcommand(cliArgs, config2) { const [subcommand, ...rest] = cliArgs; for (const k of Object.keys(config2)) { if (k !== "default" && config2[k].indexOf(subcommand) !== -1) { return { subcommand: k, subcommandOriginal: subcommand, args: rest }; } } return { subcommand: config2.default, subcommandOriginal: "default", args: cliArgs }; } var init_get_subcommand = __esm({ "src/util/get-subcommand.ts"() { "use strict"; } }); // src/util/alias/get-aliases.ts async function getAliases(client2, deploymentId, next, limit = 20) { let aliasUrl = `/v3/now/aliases?limit=${limit}`; if (next) { aliasUrl += `&until=${next}`; } const to = deploymentId ? `/now/deployments/${deploymentId}/aliases` : aliasUrl; try { const payload = await client2.fetch(to); return payload; } catch (err) { if (isAPIError(err)) { const contextName = await getScope(client2).then( (scope) => scope.contextName ); if (err.status === 404) { throw new DeploymentNotFound({ id: deploymentId, context: contextName }); } if (err.status === 403 && deploymentId) { throw new DeploymentPermissionDenied(deploymentId, contextName); } if (err.status === 400 && err.message.includes("`id`") && deploymentId) { throw new InvalidDeploymentId(deploymentId); } } throw err; } } var init_get_aliases = __esm({ "src/util/alias/get-aliases.ts"() { "use strict"; init_errors_ts(); init_errors_ts(); init_get_scope(); } }); // src/util/get-pagination-opts.ts function getPaginationOpts(opts) { const { "--next": nextTimestamp, "--limit": limit } = opts; if (typeof nextTimestamp !== void 0 && Number.isNaN(nextTimestamp)) { throw new Error("Please provide a number for option --next"); } if (typeof limit === "number" && (!Number.isInteger(limit) || limit > 100 || limit < 1)) { throw new Error( "Please provide an integer from 1 to 100 for option --limit" ); } return [nextTimestamp, limit]; } var init_get_pagination_opts = __esm({ "src/util/get-pagination-opts.ts"() { "use strict"; } }); // src/util/get-command-flags.ts function getCommandFlags(argv, excludeFlags = []) { const flags = Object.keys(argv).filter((key) => !excludeFlags.includes(key)).map( (key) => `${key}${typeof argv[key] !== "boolean" ? " " + argv[key] : ""}` ); return flags.length > 0 ? ` ${flags.join(" ")}` : ""; } var init_get_command_flags = __esm({ "src/util/get-command-flags.ts"() { "use strict"; } }); // src/util/output-format.ts function parseOutputFormat(value) { const normalized = value.toLowerCase(); if (OUTPUT_FORMATS.includes(normalized)) { return normalized; } throw new Error( `Invalid output format: "${value}". Valid formats: ${OUTPUT_FORMATS.join(", ")}` ); } function getOutputFormat(flags) { const formatFlag = flags["--format"]; const jsonFlag = flags["--json"]; if (formatFlag) { return parseOutputFormat(formatFlag); } if (jsonFlag) { return "json"; } return void 0; } function isJsonOutput(flags) { return getOutputFormat(flags) === "json"; } function validateJsonOutput(flags) { try { const jsonOutput = isJsonOutput(flags); return { valid: true, jsonOutput }; } catch (err) { return { valid: false, error: err.message }; } } var OUTPUT_FORMATS; var init_output_format = __esm({ "src/util/output-format.ts"() { "use strict"; OUTPUT_FORMATS = ["json"]; } }); // src/util/telemetry/commands/alias/list.ts var AliasListTelemetryClient; var init_list2 = __esm({ "src/util/telemetry/commands/alias/list.ts"() { "use strict"; init_telemetry(); AliasListTelemetryClient = class extends TelemetryClient { trackCliOptionLimit(limit) { if (limit) { this.trackCliOption({ option: "limit", value: String(limit) }); } } trackCliOptionNext(next) { if (next) { this.trackCliOption({ option: "next", value: this.redactedValue }); } } }; } }); // src/util/validate-ls-args.ts function validateLsArgs(options) { const { commandName, args: args2, maxArgs = 0, exitCode: exitCode2 = 1, usageString } = options; if (args2.length > maxArgs) { const usage = usageString || getCommandName(commandName); output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk30.default.cyan(usage)}`); return exitCode2; } return 0; } var import_chalk30; var init_validate_ls_args = __esm({ "src/util/validate-ls-args.ts"() { "use strict"; import_chalk30 = __toESM3(require_source(), 1); init_pkg_name(); init_output_manager(); } }); // src/commands/alias/ls.ts async function ls(client2, argv) { let parsedArguments; const flagsSpecification = getFlagsSpecification(listSubcommand.options); try { parsedArguments = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArguments; const validationResult = validateLsArgs({ commandName: "alias ls", args: args2 }); if (validationResult !== 0) { return validationResult; } const { contextName } = await getScope(client2); const telemetryClient = new AliasListTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let paginationOptions; const formatResult = validateJsonOutput(opts); if (!formatResult.valid) { output_manager_default.error(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; try { paginationOptions = getPaginationOpts(opts); const [next, limit] = paginationOptions; telemetryClient.trackCliOptionNext(next); telemetryClient.trackCliOptionLimit(limit); telemetryClient.trackCliOptionFormat(opts["--format"]); } catch (err) { output_manager_default.prettyError(err); return 1; } const lsStamp = stamp_default(); output_manager_default.spinner(`Fetching aliases under ${import_chalk31.default.bold(contextName)}`); const { aliases, pagination } = await getAliases( client2, void 0, ...paginationOptions ); if (asJson) { output_manager_default.stopSpinner(); const jsonOutput = { aliases: aliases.map((a) => ({ alias: a.alias, deploymentId: a.deploymentId, url: a.deployment?.url ?? null, createdAt: a.createdAt })), pagination }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } else { output_manager_default.log(`aliases found under ${import_chalk31.default.bold(contextName)} ${lsStamp()}`); client2.stdout.write(printAliasTable(aliases)); if (pagination.count === 20) { const flags = getCommandFlags(opts, ["_", "--next", "--format"]); output_manager_default.log( `To display the next page run ${getCommandName( `alias ls${flags} --next ${pagination.next}` )}` ); } } return 0; } function printAliasTable(aliases) { return `${table( [ ["source", "url", "age"].map((header) => import_chalk31.default.gray(header)), ...aliases.map((a) => [ // for legacy reasons, we might have situations // where the deployment was deleted and the alias // not collected appropriately, and we need to handle it a.deployment?.url ? a.deployment.url : import_chalk31.default.gray("\u2013"), a.alias, (0, import_ms2.default)(Date.now() - a.createdAt) ]) ], { align: ["l", "l", "r"], hsep: 4 } ).replace(/^/gm, " ")} `; } var import_chalk31, import_ms2; var init_ls = __esm({ "src/commands/alias/ls.ts"() { "use strict"; import_chalk31 = __toESM3(require_source(), 1); import_ms2 = __toESM3(require_ms(), 1); init_table(); init_get_aliases(); init_get_scope(); init_get_pagination_opts(); init_stamp(); init_get_command_flags(); init_pkg_name(); init_output_format(); init_list2(); init_output_manager(); init_command(); init_get_flags_specification(); init_get_args(); init_error2(); init_validate_ls_args(); } }); // src/util/alias/remove-alias-by-id.ts async function removeAliasById(client2, id) { return client2.fetch(`/now/aliases/${id}`, { method: "DELETE" }); } var init_remove_alias_by_id = __esm({ "src/util/alias/remove-alias-by-id.ts"() { "use strict"; } }); // src/util/alias/find-alias-by-alias-or-id.ts async function findAliasByAliasOrId(client2, aliasOrId) { return client2.fetch( `/now/aliases/${encodeURIComponent(getSafeAlias(aliasOrId))}` ); } function getSafeAlias(alias2) { return alias2.replace(/^https:\/\//i, "").replace(/^\.+/, "").replace(/\.+$/, "").toLowerCase(); } var init_find_alias_by_alias_or_id = __esm({ "src/util/alias/find-alias-by-alias-or-id.ts"() { "use strict"; } }); // src/util/is-valid-name.ts function isValidName(name = "") { const blacklist = ":/#?&@%+~".split(""); return !name.split("").every((c) => blacklist.includes(c)); } var init_is_valid_name = __esm({ "src/util/is-valid-name.ts"() { "use strict"; } }); // src/util/telemetry/commands/alias/remove.ts var AliasRemoveTelemetryClient; var init_remove = __esm({ "src/util/telemetry/commands/alias/remove.ts"() { "use strict"; init_telemetry(); AliasRemoveTelemetryClient = class extends TelemetryClient { trackCliArgumentAlias(alias2) { if (alias2) { this.trackCliArgument({ arg: "alias", value: this.redactedValue }); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/alias/rm.ts async function rm(client2, argv) { let parsedArguments; const flagsSpecification = getFlagsSpecification(removeSubcommand.options); try { parsedArguments = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArguments; const { contextName } = await getScope(client2); const telemetryClient = new AliasRemoveTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetryClient.trackCliFlagYes(opts["--yes"]); const [aliasOrId] = args2; telemetryClient.trackCliArgumentAlias(aliasOrId); if (args2.length !== 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk32.default.cyan( `${getCommandName("alias rm ")}` )}` ); return 1; } if (!aliasOrId) { output_manager_default.error(`${getCommandName("alias rm ")} expects one argument`); return 1; } if (!isValidName(aliasOrId)) { output_manager_default.error(`The provided argument "${aliasOrId}" is not a valid alias`); return 1; } const alias2 = await findAliasByAliasOrId(client2, aliasOrId); if (!alias2) { output_manager_default.error( `Alias not found by "${aliasOrId}" under ${import_chalk32.default.bold(contextName)}` ); output_manager_default.log(`Run ${getCommandName("alias ls")} to see your aliases.`); return 1; } const removeStamp = stamp_default(); if (!opts["--yes"] && !await confirmAliasRemove(client2, alias2)) { output_manager_default.log("Canceled"); return 0; } await removeAliasById(client2, alias2.uid); output_manager_default.success(`Alias ${import_chalk32.default.bold(alias2.alias)} removed ${removeStamp()}`); return 0; } async function confirmAliasRemove(client2, alias2) { const srcUrl = alias2.deployment ? import_chalk32.default.underline(alias2.deployment.url) : null; const tbl = table( [ [ ...srcUrl ? [srcUrl] : [], import_chalk32.default.underline(alias2.alias), import_chalk32.default.gray(`${(0, import_ms3.default)(Date.now() - alias2.createdAt)} ago`) ] ], { hsep: 4 } ); output_manager_default.log("The following alias will be removed permanently"); output_manager_default.print(` ${tbl} `); return client2.input.confirm(import_chalk32.default.red("Are you sure?"), false); } var import_chalk32, import_ms3; var init_rm = __esm({ "src/commands/alias/rm.ts"() { "use strict"; import_chalk32 = __toESM3(require_source(), 1); import_ms3 = __toESM3(require_ms(), 1); init_table(); init_get_scope(); init_remove_alias_by_id(); init_stamp(); init_find_alias_by_alias_or_id(); init_is_valid_name(); init_pkg_name(); init_remove(); init_output_manager(); init_get_args(); init_get_flags_specification(); init_error2(); init_command(); } }); // src/util/certs/issue-cert.ts async function issueCert(client2, cns) { return (0, import_async_retry2.default)( async (bail) => { try { return await client2.fetch("/v3/certs", { method: "POST", body: { domains: cns } }); } catch (err) { if (isAPIError(err) && err.code === "configuration_error") { throw err; } else if ((0, import_error_utils12.isError)(err)) { bail(err); } else { throw err; } } }, { retries: 3, minTimeout: 5e3, maxTimeout: 15e3 } ); } var import_async_retry2, import_error_utils12; var init_issue_cert = __esm({ "src/util/certs/issue-cert.ts"() { "use strict"; import_async_retry2 = __toESM3(require_dist5(), 1); init_errors_ts(); import_error_utils12 = __toESM3(require_dist2(), 1); } }); // src/util/certs/map-cert-error.ts function mapCertError(error3, cns) { const errorCode = error3.code; if (errorCode === "too_many_requests") { const retryAfter = typeof error3.retryAfterMs === "number" ? error3.retryAfterMs : 0; return new TooManyRequests("certificates", retryAfter); } if (errorCode === "not_found") { return new DomainNotFound(error3.domain); } if (errorCode === "configuration_error") { return new CertConfigurationError({ cns: cns || error3.cns || [], message: error3.message, external: error3.external, helpUrl: error3.helpUrl, type: error3.statusCode === 449 ? "http-01" : "dns-01" }); } if (errorCode === "bad_domains" || errorCode === "challenge_still_pending" || errorCode === "common_name_domain_name_mismatch" || errorCode === "conflicting_caa_record" || errorCode === "domain_not_verified" || errorCode === "invalid_cn" || errorCode === "invalid_domain" || errorCode === "rate_limited" || errorCode === "should_share_root_domain" || errorCode === "unauthorized_request_error" || errorCode === "unsupported_challenge_priority" || errorCode === "wildcard_not_allowed" || errorCode === "validation_running" || errorCode === "dns_error" || errorCode === "challenge_error" || errorCode === "txt_record_not_found") { return new CertError({ cns: cns || error3.cns || [], code: errorCode, message: error3.message, helpUrl: error3.helpUrl }); } return null; } var init_map_cert_error = __esm({ "src/util/certs/map-cert-error.ts"() { "use strict"; init_errors_ts(); } }); // src/util/certs/create-cert-for-cns.ts async function createCertForCns(client2, cns, context) { output_manager_default.spinner(`Issuing a certificate for ${import_chalk33.default.bold(cns.join(", "))}`); try { const certificate = await issueCert(client2, cns); return certificate; } catch (err) { if (isAPIError(err)) { if (err.code === "forbidden") { return new DomainPermissionDenied(err.domain, context); } const mappedError = mapCertError(err, cns); if (mappedError) { return mappedError; } } throw err; } finally { output_manager_default.stopSpinner(); } } var import_chalk33; var init_create_cert_for_cns = __esm({ "src/util/certs/create-cert-for-cns.ts"() { "use strict"; import_chalk33 = __toESM3(require_source(), 1); init_errors_ts(); init_issue_cert(); init_map_cert_error(); init_output_manager(); } }); // ../../node_modules/.pnpm/tldts@6.1.47/node_modules/tldts/dist/cjs/index.js var require_cjs7 = __commonJS2({ "../../node_modules/.pnpm/tldts@6.1.47/node_modules/tldts/dist/cjs/index.js"(exports2) { "use strict"; function shareSameDomainSuffix(hostname3, vhost) { if (hostname3.endsWith(vhost)) { return hostname3.length === vhost.length || hostname3[hostname3.length - vhost.length - 1] === "."; } return false; } function extractDomainWithSuffix(hostname3, publicSuffix) { const publicSuffixIndex = hostname3.length - publicSuffix.length - 2; const lastDotBeforeSuffixIndex = hostname3.lastIndexOf(".", publicSuffixIndex); if (lastDotBeforeSuffixIndex === -1) { return hostname3; } return hostname3.slice(lastDotBeforeSuffixIndex + 1); } function getDomain$1(suffix, hostname3, options) { if (options.validHosts !== null) { const validHosts = options.validHosts; for (const vhost of validHosts) { if ( /*@__INLINE__*/ shareSameDomainSuffix(hostname3, vhost) ) { return vhost; } } } let numberOfLeadingDots = 0; if (hostname3.startsWith(".")) { while (numberOfLeadingDots < hostname3.length && hostname3[numberOfLeadingDots] === ".") { numberOfLeadingDots += 1; } } if (suffix.length === hostname3.length - numberOfLeadingDots) { return null; } return ( /*@__INLINE__*/ extractDomainWithSuffix(hostname3, suffix) ); } function getDomainWithoutSuffix$1(domain, suffix) { return domain.slice(0, -suffix.length - 1); } function extractHostname(url3, urlIsValidHostname) { let start = 0; let end = url3.length; let hasUpper = false; if (!urlIsValidHostname) { if (url3.startsWith("data:")) { return null; } while (start < url3.length && url3.charCodeAt(start) <= 32) { start += 1; } while (end > start + 1 && url3.charCodeAt(end - 1) <= 32) { end -= 1; } if (url3.charCodeAt(start) === 47 && url3.charCodeAt(start + 1) === 47) { start += 2; } else { const indexOfProtocol = url3.indexOf(":/", start); if (indexOfProtocol !== -1) { const protocolSize = indexOfProtocol - start; const c0 = url3.charCodeAt(start); const c1 = url3.charCodeAt(start + 1); const c2 = url3.charCodeAt(start + 2); const c3 = url3.charCodeAt(start + 3); const c4 = url3.charCodeAt(start + 4); if (protocolSize === 5 && c0 === 104 && c1 === 116 && c2 === 116 && c3 === 112 && c4 === 115) ; else if (protocolSize === 4 && c0 === 104 && c1 === 116 && c2 === 116 && c3 === 112) ; else if (protocolSize === 3 && c0 === 119 && c1 === 115 && c2 === 115) ; else if (protocolSize === 2 && c0 === 119 && c1 === 115) ; else { for (let i = start; i < indexOfProtocol; i += 1) { const lowerCaseCode = url3.charCodeAt(i) | 32; if (!(lowerCaseCode >= 97 && lowerCaseCode <= 122 || // [a, z] lowerCaseCode >= 48 && lowerCaseCode <= 57 || // [0, 9] lowerCaseCode === 46 || // '.' lowerCaseCode === 45 || // '-' lowerCaseCode === 43)) { return null; } } } start = indexOfProtocol + 2; while (url3.charCodeAt(start) === 47) { start += 1; } } } let indexOfIdentifier = -1; let indexOfClosingBracket = -1; let indexOfPort = -1; for (let i = start; i < end; i += 1) { const code2 = url3.charCodeAt(i); if (code2 === 35 || // '#' code2 === 47 || // '/' code2 === 63) { end = i; break; } else if (code2 === 64) { indexOfIdentifier = i; } else if (code2 === 93) { indexOfClosingBracket = i; } else if (code2 === 58) { indexOfPort = i; } else if (code2 >= 65 && code2 <= 90) { hasUpper = true; } } if (indexOfIdentifier !== -1 && indexOfIdentifier > start && indexOfIdentifier < end) { start = indexOfIdentifier + 1; } if (url3.charCodeAt(start) === 91) { if (indexOfClosingBracket !== -1) { return url3.slice(start + 1, indexOfClosingBracket).toLowerCase(); } return null; } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) { end = indexOfPort; } } while (end > start + 1 && url3.charCodeAt(end - 1) === 46) { end -= 1; } const hostname3 = start !== 0 || end !== url3.length ? url3.slice(start, end) : url3; if (hasUpper) { return hostname3.toLowerCase(); } return hostname3; } function isProbablyIpv4(hostname3) { if (hostname3.length < 7) { return false; } if (hostname3.length > 15) { return false; } let numberOfDots = 0; for (let i = 0; i < hostname3.length; i += 1) { const code2 = hostname3.charCodeAt(i); if (code2 === 46) { numberOfDots += 1; } else if (code2 < 48 || code2 > 57) { return false; } } return numberOfDots === 3 && hostname3.charCodeAt(0) !== 46 && hostname3.charCodeAt(hostname3.length - 1) !== 46; } function isProbablyIpv6(hostname3) { if (hostname3.length < 3) { return false; } let start = hostname3.startsWith("[") ? 1 : 0; let end = hostname3.length; if (hostname3[end - 1] === "]") { end -= 1; } if (end - start > 39) { return false; } let hasColon = false; for (; start < end; start += 1) { const code2 = hostname3.charCodeAt(start); if (code2 === 58) { hasColon = true; } else if (!(code2 >= 48 && code2 <= 57 || // 0-9 code2 >= 97 && code2 <= 102 || // a-f code2 >= 65 && code2 <= 90)) { return false; } } return hasColon; } function isIp(hostname3) { return isProbablyIpv6(hostname3) || isProbablyIpv4(hostname3); } function isValidAscii(code2) { return code2 >= 97 && code2 <= 122 || code2 >= 48 && code2 <= 57 || code2 > 127; } function isValidHostname(hostname3) { if (hostname3.length > 255) { return false; } if (hostname3.length === 0) { return false; } if ( /*@__INLINE__*/ !isValidAscii(hostname3.charCodeAt(0)) && hostname3.charCodeAt(0) !== 46 && // '.' (dot) hostname3.charCodeAt(0) !== 95 ) { return false; } let lastDotIndex = -1; let lastCharCode = -1; const len = hostname3.length; for (let i = 0; i < len; i += 1) { const code2 = hostname3.charCodeAt(i); if (code2 === 46) { if ( // Check that previous label is < 63 bytes long (64 = 63 + '.') i - lastDotIndex > 64 || // Check that previous character was not already a '.' lastCharCode === 46 || // Check that the previous label does not end with a '-' (dash) lastCharCode === 45 || // Check that the previous label does not end with a '_' (underscore) lastCharCode === 95 ) { return false; } lastDotIndex = i; } else if (!/*@__INLINE__*/ (isValidAscii(code2) || code2 === 45 || code2 === 95)) { return false; } lastCharCode = code2; } return ( // Check that last label is shorter than 63 chars len - lastDotIndex - 1 <= 63 && // Check that the last character is an allowed trailing label character. // Since we already checked that the char is a valid hostname character, // we only need to check that it's different from '-'. lastCharCode !== 45 ); } function setDefaultsImpl({ allowIcannDomains = true, allowPrivateDomains = false, detectIp = true, extractHostname: extractHostname2 = true, mixedInputs = true, validHosts = null, validateHostname = true }) { return { allowIcannDomains, allowPrivateDomains, detectIp, extractHostname: extractHostname2, mixedInputs, validHosts, validateHostname }; } var DEFAULT_OPTIONS = ( /*@__INLINE__*/ setDefaultsImpl({}) ); function setDefaults(options) { if (options === void 0) { return DEFAULT_OPTIONS; } return ( /*@__INLINE__*/ setDefaultsImpl(options) ); } function getSubdomain$1(hostname3, domain) { if (domain.length === hostname3.length) { return ""; } return hostname3.slice(0, -domain.length - 1); } function getEmptyResult() { return { domain: null, domainWithoutSuffix: null, hostname: null, isIcann: null, isIp: null, isPrivate: null, publicSuffix: null, subdomain: null }; } function resetResult(result) { result.domain = null; result.domainWithoutSuffix = null; result.hostname = null; result.isIcann = null; result.isIp = null; result.isPrivate = null; result.publicSuffix = null; result.subdomain = null; } function parseImpl(url3, step, suffixLookup2, partialOptions, result) { const options = ( /*@__INLINE__*/ setDefaults(partialOptions) ); if (typeof url3 !== "string") { return result; } if (!options.extractHostname) { result.hostname = url3; } else if (options.mixedInputs) { result.hostname = extractHostname(url3, isValidHostname(url3)); } else { result.hostname = extractHostname(url3, false); } if (step === 0 || result.hostname === null) { return result; } if (options.detectIp) { result.isIp = isIp(result.hostname); if (result.isIp) { return result; } } if (options.validateHostname && options.extractHostname && !isValidHostname(result.hostname)) { result.hostname = null; return result; } suffixLookup2(result.hostname, options, result); if (step === 2 || result.publicSuffix === null) { return result; } result.domain = getDomain$1(result.publicSuffix, result.hostname, options); if (step === 3 || result.domain === null) { return result; } result.subdomain = getSubdomain$1(result.hostname, result.domain); if (step === 4) { return result; } result.domainWithoutSuffix = getDomainWithoutSuffix$1(result.domain, result.publicSuffix); return result; } function fastPathLookup(hostname3, options, out) { if (!options.allowPrivateDomains && hostname3.length > 3) { const last = hostname3.length - 1; const c3 = hostname3.charCodeAt(last); const c2 = hostname3.charCodeAt(last - 1); const c1 = hostname3.charCodeAt(last - 2); const c0 = hostname3.charCodeAt(last - 3); if (c3 === 109 && c2 === 111 && c1 === 99 && c0 === 46) { out.isIcann = true; out.isPrivate = false; out.publicSuffix = "com"; return true; } else if (c3 === 103 && c2 === 114 && c1 === 111 && c0 === 46) { out.isIcann = true; out.isPrivate = false; out.publicSuffix = "org"; return true; } else if (c3 === 117 && c2 === 100 && c1 === 101 && c0 === 46) { out.isIcann = true; out.isPrivate = false; out.publicSuffix = "edu"; return true; } else if (c3 === 118 && c2 === 111 && c1 === 103 && c0 === 46) { out.isIcann = true; out.isPrivate = false; out.publicSuffix = "gov"; return true; } else if (c3 === 116 && c2 === 101 && c1 === 110 && c0 === 46) { out.isIcann = true; out.isPrivate = false; out.publicSuffix = "net"; return true; } else if (c3 === 101 && c2 === 100 && c1 === 46) { out.isIcann = true; out.isPrivate = false; out.publicSuffix = "de"; return true; } } return false; } var exceptions = function() { const _0 = [1, {}], _1 = [0, { "city": _0 }]; const exceptions2 = [0, { "ck": [0, { "www": _0 }], "jp": [0, { "kawasaki": _1, "kitakyushu": _1, "kobe": _1, "nagoya": _1, "sapporo": _1, "sendai": _1, "yokohama": _1 }] }]; return exceptions2; }(); var rules = function() { const _2 = [1, {}], _3 = [2, {}], _4 = [1, { "gov": _2, "com": _2, "org": _2, "net": _2, "edu": _2 }], _5 = [0, { "*": _3 }], _6 = [2, { "preview": _3 }], _7 = [0, { "relay": _3 }], _8 = [2, { "staging": _3 }], _9 = [2, { "id": _3 }], _10 = [1, { "blogspot": _3 }], _11 = [1, { "gov": _2 }], _12 = [0, { "notebook": _3, "studio": _3 }], _13 = [0, { "labeling": _3, "notebook": _3, "studio": _3 }], _14 = [0, { "notebook": _3 }], _15 = [0, { "labeling": _3, "notebook": _3, "notebook-fips": _3, "studio": _3 }], _16 = [0, { "notebook": _3, "notebook-fips": _3, "studio": _3, "studio-fips": _3 }], _17 = [0, { "*": _2 }], _18 = [0, { "cloud": _3 }], _19 = [1, { "co": _3 }], _20 = [0, { "objects": _3 }], _21 = [2, { "nodes": _3 }], _22 = [0, { "my": _5 }], _23 = [0, { "s3": _3, "s3-accesspoint": _3, "s3-website": _3 }], _24 = [0, { "s3": _3, "s3-accesspoint": _3 }], _25 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _24, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3 }], _26 = [0, { "direct": _3 }], _27 = [0, { "webview-assets": _3 }], _28 = [0, { "vfs": _3, "webview-assets": _3 }], _29 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _23, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _27, "cloud9": _28 }], _30 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _24, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _27, "cloud9": _28 }], _31 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _23, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _27, "cloud9": _28 }], _32 = [0, { "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-website": _3 }], _33 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _32, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _27, "cloud9": _28 }], _34 = [0, { "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3 }], _35 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _34, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3 }], _36 = [0, { "auth": _3 }], _37 = [0, { "auth": _3, "auth-fips": _3 }], _38 = [0, { "apps": _3 }], _39 = [0, { "paas": _3 }], _40 = [2, { "eu": _3 }], _41 = [0, { "app": _3 }], _42 = [0, { "site": _3 }], _43 = [0, { "pages": _3 }], _44 = [1, { "com": _2, "edu": _2, "net": _2, "org": _2 }], _45 = [0, { "j": _3 }], _46 = [0, { "p": _3 }], _47 = [0, { "user": _3 }], _48 = [1, { "ybo": _3 }], _49 = [0, { "shop": _3 }], _50 = [0, { "cust": _3, "reservd": _3 }], _51 = [0, { "cust": _3 }], _52 = [1, { "gov": _2, "edu": _2, "mil": _2, "com": _2, "org": _2, "net": _2 }], _53 = [0, { "s3": _3 }], _54 = [1, { "edu": _2, "biz": _2, "net": _2, "org": _2, "gov": _2, "info": _2, "com": _2 }], _55 = [1, { "gov": _2, "blogspot": _3 }], _56 = [1, { "framer": _3 }], _57 = [0, { "forgot": _3 }], _58 = [0, { "cdn": _3 }], _59 = [1, { "gs": _2 }], _60 = [0, { "nes": _2 }], _61 = [1, { "k12": _2, "cc": _2, "lib": _2 }], _62 = [1, { "cc": _2, "lib": _2 }]; const rules2 = [0, { "ac": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "mil": _2, "org": _2, "drr": _3, "feedback": _3, "forms": _3 }], "ad": [1, { "nom": _2 }], "ae": [1, { "co": _2, "net": _2, "org": _2, "sch": _2, "ac": _2, "gov": _2, "mil": _2, "blogspot": _3 }], "aero": [1, { "airline": _2, "airport": _2, "accident-investigation": _2, "accident-prevention": _2, "aerobatic": _2, "aeroclub": _2, "aerodrome": _2, "agents": _2, "air-surveillance": _2, "air-traffic-control": _2, "aircraft": _2, "airtraffic": _2, "ambulance": _2, "association": _2, "author": _2, "ballooning": _2, "broker": _2, "caa": _2, "cargo": _2, "catering": _2, "certification": _2, "championship": _2, "charter": _2, "civilaviation": _2, "club": _2, "conference": _2, "consultant": _2, "consulting": _2, "control": _2, "council": _2, "crew": _2, "design": _2, "dgca": _2, "educator": _2, "emergency": _2, "engine": _2, "engineer": _2, "entertainment": _2, "equipment": _2, "exchange": _2, "express": _2, "federation": _2, "flight": _2, "freight": _2, "fuel": _2, "gliding": _2, "government": _2, "groundhandling": _2, "group": _2, "hanggliding": _2, "homebuilt": _2, "insurance": _2, "journal": _2, "journalist": _2, "leasing": _2, "logistics": _2, "magazine": _2, "maintenance": _2, "marketplace": _2, "media": _2, "microlight": _2, "modelling": _2, "navigation": _2, "parachuting": _2, "paragliding": _2, "passenger-association": _2, "pilot": _2, "press": _2, "production": _2, "recreation": _2, "repbody": _2, "res": _2, "research": _2, "rotorcraft": _2, "safety": _2, "scientist": _2, "services": _2, "show": _2, "skydiving": _2, "software": _2, "student": _2, "taxi": _2, "trader": _2, "trading": _2, "trainer": _2, "union": _2, "workinggroup": _2, "works": _2 }], "af": _4, "ag": [1, { "com": _2, "org": _2, "net": _2, "co": _2, "nom": _2 }], "ai": [1, { "off": _2, "com": _2, "net": _2, "org": _2, "uwu": _3, "framer": _3 }], "al": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "blogspot": _3 }], "am": [1, { "co": _2, "com": _2, "commune": _2, "net": _2, "org": _2, "radio": _3, "blogspot": _3 }], "ao": [1, { "ed": _2, "gv": _2, "og": _2, "co": _2, "pb": _2, "it": _2 }], "aq": _2, "ar": [1, { "bet": _2, "com": _10, "coop": _2, "edu": _2, "gob": _2, "gov": _2, "int": _2, "mil": _2, "musica": _2, "mutual": _2, "net": _2, "org": _2, "senasa": _2, "tur": _2 }], "arpa": [1, { "e164": _2, "in-addr": _2, "ip6": _2, "iris": _2, "uri": _2, "urn": _2 }], "as": _11, "asia": [1, { "cloudns": _3, "daemon": _3, "dix": _3 }], "at": [1, { "ac": [1, { "sth": _2 }], "co": _10, "gv": _2, "or": _2, "funkfeuer": [0, { "wien": _3 }], "futurecms": [0, { "*": _3, "ex": _5, "in": _5 }], "futurehosting": _3, "futuremailing": _3, "ortsinfo": [0, { "ex": _5, "kunden": _5 }], "biz": _3, "info": _3, "123webseite": _3, "priv": _3, "myspreadshop": _3, "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3 }], "au": [1, { "com": [1, { "blogspot": _3, "cloudlets": [0, { "mel": _3 }], "myspreadshop": _3 }], "net": _2, "org": _2, "edu": [1, { "act": _2, "catholic": _2, "nsw": [1, { "schools": _2 }], "nt": _2, "qld": _2, "sa": _2, "tas": _2, "vic": _2, "wa": _2 }], "gov": [1, { "qld": _2, "sa": _2, "tas": _2, "vic": _2, "wa": _2 }], "asn": _2, "id": _2, "info": _2, "conf": _2, "oz": _2, "act": _2, "nsw": _2, "nt": _2, "qld": _2, "sa": _2, "tas": _2, "vic": _2, "wa": _2 }], "aw": [1, { "com": _2 }], "ax": _2, "az": [1, { "com": _2, "net": _2, "int": _2, "gov": _2, "org": _2, "edu": _2, "info": _2, "pp": _2, "mil": _2, "name": _2, "pro": _2, "biz": _2 }], "ba": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "blogspot": _3, "rs": _3 }], "bb": [1, { "biz": _2, "co": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "net": _2, "org": _2, "store": _2, "tv": _2 }], "bd": _17, "be": [1, { "ac": _2, "cloudns": _3, "webhosting": _3, "blogspot": _3, "interhostsolutions": _18, "kuleuven": [0, { "ezproxy": _3 }], "123website": _3, "myspreadshop": _3, "transurl": _5 }], "bf": _11, "bg": [1, { "0": _2, "1": _2, "2": _2, "3": _2, "4": _2, "5": _2, "6": _2, "7": _2, "8": _2, "9": _2, "a": _2, "b": _2, "c": _2, "d": _2, "e": _2, "f": _2, "g": _2, "h": _2, "i": _2, "j": _2, "k": _2, "l": _2, "m": _2, "n": _2, "o": _2, "p": _2, "q": _2, "r": _2, "s": _2, "t": _2, "u": _2, "v": _2, "w": _2, "x": _2, "y": _2, "z": _2, "blogspot": _3, "barsy": _3 }], "bh": _4, "bi": [1, { "co": _2, "com": _2, "edu": _2, "or": _2, "org": _2 }], "biz": [1, { "activetrail": _3, "cloudns": _3, "jozi": _3, "dyndns": _3, "for-better": _3, "for-more": _3, "for-some": _3, "for-the": _3, "selfip": _3, "webhop": _3, "orx": _3, "mmafan": _3, "myftp": _3, "no-ip": _3, "dscloud": _3 }], "bj": [1, { "africa": _2, "agro": _2, "architectes": _2, "assur": _2, "avocats": _2, "co": _2, "com": _2, "eco": _2, "econo": _2, "edu": _2, "info": _2, "loisirs": _2, "money": _2, "net": _2, "org": _2, "ote": _2, "resto": _2, "restaurant": _2, "tourism": _2, "univ": _2, "blogspot": _3 }], "bm": _4, "bn": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "co": _3 }], "bo": [1, { "com": _2, "edu": _2, "gob": _2, "int": _2, "org": _2, "net": _2, "mil": _2, "tv": _2, "web": _2, "academia": _2, "agro": _2, "arte": _2, "blog": _2, "bolivia": _2, "ciencia": _2, "cooperativa": _2, "democracia": _2, "deporte": _2, "ecologia": _2, "economia": _2, "empresa": _2, "indigena": _2, "industria": _2, "info": _2, "medicina": _2, "movimiento": _2, "musica": _2, "natural": _2, "nombre": _2, "noticias": _2, "patria": _2, "politica": _2, "profesional": _2, "plurinacional": _2, "pueblo": _2, "revista": _2, "salud": _2, "tecnologia": _2, "tksat": _2, "transporte": _2, "wiki": _2 }], "br": [1, { "9guacu": _2, "abc": _2, "adm": _2, "adv": _2, "agr": _2, "aju": _2, "am": _2, "anani": _2, "aparecida": _2, "app": _2, "arq": _2, "art": _2, "ato": _2, "b": _2, "barueri": _2, "belem": _2, "bhz": _2, "bib": _2, "bio": _2, "blog": _2, "bmd": _2, "boavista": _2, "bsb": _2, "campinagrande": _2, "campinas": _2, "caxias": _2, "cim": _2, "cng": _2, "cnt": _2, "com": [1, { "blogspot": _3, "simplesite": _3 }], "contagem": _2, "coop": _2, "coz": _2, "cri": _2, "cuiaba": _2, "curitiba": _2, "def": _2, "des": _2, "det": _2, "dev": _2, "ecn": _2, "eco": _2, "edu": _2, "emp": _2, "enf": _2, "eng": _2, "esp": _2, "etc": _2, "eti": _2, "far": _2, "feira": _2, "flog": _2, "floripa": _2, "fm": _2, "fnd": _2, "fortal": _2, "fot": _2, "foz": _2, "fst": _2, "g12": _2, "geo": _2, "ggf": _2, "goiania": _2, "gov": [1, { "ac": _2, "al": _2, "am": _2, "ap": _2, "ba": _2, "ce": _2, "df": _2, "es": _2, "go": _2, "ma": _2, "mg": _2, "ms": _2, "mt": _2, "pa": _2, "pb": _2, "pe": _2, "pi": _2, "pr": _2, "rj": _2, "rn": _2, "ro": _2, "rr": _2, "rs": _2, "sc": _2, "se": _2, "sp": _2, "to": _2 }], "gru": _2, "imb": _2, "ind": _2, "inf": _2, "jab": _2, "jampa": _2, "jdf": _2, "joinville": _2, "jor": _2, "jus": _2, "leg": [1, { "ac": _3, "al": _3, "am": _3, "ap": _3, "ba": _3, "ce": _3, "df": _3, "es": _3, "go": _3, "ma": _3, "mg": _3, "ms": _3, "mt": _3, "pa": _3, "pb": _3, "pe": _3, "pi": _3, "pr": _3, "rj": _3, "rn": _3, "ro": _3, "rr": _3, "rs": _3, "sc": _3, "se": _3, "sp": _3, "to": _3 }], "lel": _2, "log": _2, "londrina": _2, "macapa": _2, "maceio": _2, "manaus": _2, "maringa": _2, "mat": _2, "med": _2, "mil": _2, "morena": _2, "mp": _2, "mus": _2, "natal": _2, "net": _2, "niteroi": _2, "nom": _17, "not": _2, "ntr": _2, "odo": _2, "ong": _2, "org": _2, "osasco": _2, "palmas": _2, "poa": _2, "ppg": _2, "pro": _2, "psc": _2, "psi": _2, "pvh": _2, "qsl": _2, "radio": _2, "rec": _2, "recife": _2, "rep": _2, "ribeirao": _2, "rio": _2, "riobranco": _2, "riopreto": _2, "salvador": _2, "sampa": _2, "santamaria": _2, "santoandre": _2, "saobernardo": _2, "saogonca": _2, "seg": _2, "sjc": _2, "slg": _2, "slz": _2, "sorocaba": _2, "srv": _2, "taxi": _2, "tc": _2, "tec": _2, "teo": _2, "the": _2, "tmp": _2, "trd": _2, "tur": _2, "tv": _2, "udi": _2, "vet": _2, "vix": _2, "vlog": _2, "wiki": _2, "zlg": _2 }], "bs": [1, { "com": _2, "net": _2, "org": _2, "edu": _2, "gov": _2, "we": _3 }], "bt": _4, "bv": _2, "bw": [1, { "co": _2, "org": _2 }], "by": [1, { "gov": _2, "mil": _2, "com": _10, "of": _2, "mediatech": _3 }], "bz": [1, { "com": _2, "net": _2, "org": _2, "edu": _2, "gov": _2, "za": _3, "mydns": _3, "gsj": _3 }], "ca": [1, { "ab": _2, "bc": _2, "mb": _2, "nb": _2, "nf": _2, "nl": _2, "ns": _2, "nt": _2, "nu": _2, "on": _2, "pe": _2, "qc": _2, "sk": _2, "yk": _2, "gc": _2, "barsy": _3, "awdev": _5, "co": _3, "blogspot": _3, "no-ip": _3, "myspreadshop": _3, "box": _3 }], "cat": _2, "cc": [1, { "cleverapps": _3, "cloudns": _3, "ftpaccess": _3, "game-server": _3, "myphotos": _3, "scrapping": _3, "twmail": _3, "csx": _3, "fantasyleague": _3, "spawn": [0, { "instances": _3 }] }], "cd": _11, "cf": _10, "cg": _2, "ch": [1, { "square7": _3, "cloudns": _3, "cloudscale": [0, { "cust": _3, "lpg": _20, "rma": _20 }], "blogspot": _3, "flow": [0, { "ae": [0, { "alp1": _3 }], "appengine": _3 }], "linkyard-cloud": _3, "gotdns": _3, "dnsking": _3, "123website": _3, "myspreadshop": _3, "firenet": [0, { "*": _3, "svc": _5 }], "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3 }], "ci": [1, { "org": _2, "or": _2, "com": _2, "co": _2, "edu": _2, "ed": _2, "ac": _2, "net": _2, "go": _2, "asso": _2, "xn--aroport-bya": _2, "a\xE9roport": _2, "int": _2, "presse": _2, "md": _2, "gouv": _2, "fin": _3 }], "ck": _17, "cl": [1, { "co": _2, "gob": _2, "gov": _2, "mil": _2, "cloudns": _3, "blogspot": _3 }], "cm": [1, { "co": _2, "com": _2, "gov": _2, "net": _2 }], "cn": [1, { "ac": _2, "com": [1, { "amazonaws": [0, { "cn-north-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _23, "s3": _3, "s3-accesspoint": _3, "s3-deprecated": _3, "s3-object-lambda": _3, "s3-website": _3 }], "cn-northwest-1": _25, "compute": _5, "airflow": [0, { "cn-north-1": _5, "cn-northwest-1": _5 }], "eb": [0, { "cn-north-1": _3, "cn-northwest-1": _3 }], "elb": _5 }], "sagemaker": [0, { "cn-north-1": _12, "cn-northwest-1": _12 }] }], "edu": _2, "gov": _2, "net": _2, "org": _2, "mil": _2, "xn--55qx5d": _2, "\u516C\u53F8": _2, "xn--io0a7i": _2, "\u7F51\u7EDC": _2, "xn--od0alg": _2, "\u7DB2\u7D61": _2, "ah": _2, "bj": _2, "cq": _2, "fj": _2, "gd": _2, "gs": _2, "gz": _2, "gx": _2, "ha": _2, "hb": _2, "he": _2, "hi": _2, "hl": _2, "hn": _2, "jl": _2, "js": _2, "jx": _2, "ln": _2, "nm": _2, "nx": _2, "qh": _2, "sc": _2, "sd": _2, "sh": [1, { "as": _3 }], "sn": _2, "sx": _2, "tj": _2, "xj": _2, "xz": _2, "yn": _2, "zj": _2, "hk": _2, "mo": _2, "tw": _2, "canva-apps": _3, "canvasite": _22, "myqnapcloud": _3, "quickconnect": _26 }], "co": [1, { "arts": _2, "com": _10, "edu": _2, "firm": _2, "gov": _2, "info": _2, "int": _2, "mil": _2, "net": _2, "nom": _2, "org": _2, "rec": _2, "web": _2, "carrd": _3, "crd": _3, "otap": _5, "leadpages": _3, "lpages": _3, "mypi": _3, "n4t": _3, "xmit": _5, "firewalledreplit": _9, "repl": _9, "supabase": _3 }], "com": [1, { "a2hosted": _3, "cpserver": _3, "adobeaemcloud": [2, { "dev": _5 }], "africa": _3, "airkitapps": _3, "airkitapps-au": _3, "aivencloud": _3, "kasserver": _3, "amazonaws": [0, { "af-south-1": _29, "ap-east-1": _30, "ap-northeast-1": _31, "ap-northeast-2": _31, "ap-northeast-3": _29, "ap-south-1": _31, "ap-south-2": _25, "ap-southeast-1": _31, "ap-southeast-2": _31, "ap-southeast-3": _25, "ap-southeast-4": _25, "ca-central-1": _33, "ca-west-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _32, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-website": _3 }], "eu-central-1": _31, "eu-central-2": _25, "eu-north-1": _30, "eu-south-1": _29, "eu-south-2": _25, "eu-west-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _23, "s3": _3, "s3-accesspoint": _3, "s3-deprecated": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _27, "cloud9": _28 }], "eu-west-2": _30, "eu-west-3": _29, "il-central-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _24, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _27, "cloud9": [0, { "vfs": _3 }] }], "me-central-1": _25, "me-south-1": _30, "sa-east-1": _29, "us-east-1": [2, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _32, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-deprecated": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _27, "cloud9": _28 }], "us-east-2": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _34, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-deprecated": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _27, "cloud9": _28 }], "us-gov-east-1": _35, "us-gov-west-1": _35, "us-west-1": _33, "us-west-2": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _32, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-deprecated": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _27, "cloud9": _28 }], "compute": _5, "compute-1": _5, "airflow": [0, { "af-south-1": _5, "ap-east-1": _5, "ap-northeast-1": _5, "ap-northeast-2": _5, "ap-northeast-3": _5, "ap-south-1": _5, "ap-south-2": _5, "ap-southeast-1": _5, "ap-southeast-2": _5, "ap-southeast-3": _5, "ap-southeast-4": _5, "ca-central-1": _5, "ca-west-1": _5, "eu-central-1": _5, "eu-central-2": _5, "eu-north-1": _5, "eu-south-1": _5, "eu-south-2": _5, "eu-west-1": _5, "eu-west-2": _5, "eu-west-3": _5, "il-central-1": _5, "me-central-1": _5, "me-south-1": _5, "sa-east-1": _5, "us-east-1": _5, "us-east-2": _5, "us-west-1": _5, "us-west-2": _5 }], "s3": _3, "s3-1": _3, "s3-ap-east-1": _3, "s3-ap-northeast-1": _3, "s3-ap-northeast-2": _3, "s3-ap-northeast-3": _3, "s3-ap-south-1": _3, "s3-ap-southeast-1": _3, "s3-ap-southeast-2": _3, "s3-ca-central-1": _3, "s3-eu-central-1": _3, "s3-eu-north-1": _3, "s3-eu-west-1": _3, "s3-eu-west-2": _3, "s3-eu-west-3": _3, "s3-external-1": _3, "s3-fips-us-gov-east-1": _3, "s3-fips-us-gov-west-1": _3, "s3-global": [0, { "accesspoint": [0, { "mrap": _3 }] }], "s3-me-south-1": _3, "s3-sa-east-1": _3, "s3-us-east-2": _3, "s3-us-gov-east-1": _3, "s3-us-gov-west-1": _3, "s3-us-west-1": _3, "s3-us-west-2": _3, "s3-website-ap-northeast-1": _3, "s3-website-ap-southeast-1": _3, "s3-website-ap-southeast-2": _3, "s3-website-eu-west-1": _3, "s3-website-sa-east-1": _3, "s3-website-us-east-1": _3, "s3-website-us-gov-west-1": _3, "s3-website-us-west-1": _3, "s3-website-us-west-2": _3, "elb": _5 }], "amazoncognito": [0, { "af-south-1": _36, "ap-east-1": _36, "ap-northeast-1": _36, "ap-northeast-2": _36, "ap-northeast-3": _36, "ap-south-1": _36, "ap-south-2": _36, "ap-southeast-1": _36, "ap-southeast-2": _36, "ap-southeast-3": _36, "ap-southeast-4": _36, "ca-central-1": _36, "ca-west-1": _36, "eu-central-1": _36, "eu-central-2": _36, "eu-north-1": _36, "eu-south-1": _36, "eu-south-2": _36, "eu-west-1": _36, "eu-west-2": _36, "eu-west-3": _36, "il-central-1": _36, "me-central-1": _36, "me-south-1": _36, "sa-east-1": _36, "us-east-1": _37, "us-east-2": _37, "us-gov-west-1": [0, { "auth-fips": _3 }], "us-west-1": _37, "us-west-2": _37 }], "amplifyapp": _3, "awsapprunner": _5, "awsapps": _3, "elasticbeanstalk": [2, { "af-south-1": _3, "ap-east-1": _3, "ap-northeast-1": _3, "ap-northeast-2": _3, "ap-northeast-3": _3, "ap-south-1": _3, "ap-southeast-1": _3, "ap-southeast-2": _3, "ap-southeast-3": _3, "ca-central-1": _3, "eu-central-1": _3, "eu-north-1": _3, "eu-south-1": _3, "eu-west-1": _3, "eu-west-2": _3, "eu-west-3": _3, "il-central-1": _3, "me-south-1": _3, "sa-east-1": _3, "us-east-1": _3, "us-east-2": _3, "us-gov-east-1": _3, "us-gov-west-1": _3, "us-west-1": _3, "us-west-2": _3 }], "awsglobalaccelerator": _3, "siiites": _3, "appspacehosted": _3, "appspaceusercontent": _3, "on-aptible": _3, "myasustor": _3, "balena-devices": _3, "betainabox": _3, "boutir": _3, "bplaced": _3, "cafjs": _3, "canva-apps": _3, "cdn77-storage": _3, "br": _3, "cn": _3, "de": _3, "eu": _3, "jpn": _3, "mex": _3, "ru": _3, "sa": _3, "uk": _3, "us": _3, "za": _3, "clever-cloud": [0, { "services": _5 }], "dnsabr": _3, "jdevcloud": _3, "wpdevcloud": _3, "cf-ipfs": _3, "cloudflare-ipfs": _3, "trycloudflare": _3, "co": _3, "builtwithdark": _3, "datadetect": [0, { "demo": _3, "instance": _3 }], "dattolocal": _3, "dattorelay": _3, "dattoweb": _3, "mydatto": _3, "ddns5": _3, "digitaloceanspaces": _5, "discordsays": _3, "discordsez": _3, "drayddns": _3, "dreamhosters": _3, "durumis": _3, "mydrobo": _3, "blogdns": _3, "cechire": _3, "dnsalias": _3, "dnsdojo": _3, "doesntexist": _3, "dontexist": _3, "doomdns": _3, "dyn-o-saur": _3, "dynalias": _3, "dyndns-at-home": _3, "dyndns-at-work": _3, "dyndns-blog": _3, "dyndns-free": _3, "dyndns-home": _3, "dyndns-ip": _3, "dyndns-mail": _3, "dyndns-office": _3, "dyndns-pics": _3, "dyndns-remote": _3, "dyndns-server": _3, "dyndns-web": _3, "dyndns-wiki": _3, "dyndns-work": _3, "est-a-la-maison": _3, "est-a-la-masion": _3, "est-le-patron": _3, "est-mon-blogueur": _3, "from-ak": _3, "from-al": _3, "from-ar": _3, "from-ca": _3, "from-ct": _3, "from-dc": _3, "from-de": _3, "from-fl": _3, "from-ga": _3, "from-hi": _3, "from-ia": _3, "from-id": _3, "from-il": _3, "from-in": _3, "from-ks": _3, "from-ky": _3, "from-ma": _3, "from-md": _3, "from-mi": _3, "from-mn": _3, "from-mo": _3, "from-ms": _3, "from-mt": _3, "from-nc": _3, "from-nd": _3, "from-ne": _3, "from-nh": _3, "from-nj": _3, "from-nm": _3, "from-nv": _3, "from-oh": _3, "from-ok": _3, "from-or": _3, "from-pa": _3, "from-pr": _3, "from-ri": _3, "from-sc": _3, "from-sd": _3, "from-tn": _3, "from-tx": _3, "from-ut": _3, "from-va": _3, "from-vt": _3, "from-wa": _3, "from-wi": _3, "from-wv": _3, "from-wy": _3, "getmyip": _3, "gotdns": _3, "hobby-site": _3, "homelinux": _3, "homeunix": _3, "iamallama": _3, "is-a-anarchist": _3, "is-a-blogger": _3, "is-a-bookkeeper": _3, "is-a-bulls-fan": _3, "is-a-caterer": _3, "is-a-chef": _3, "is-a-conservative": _3, "is-a-cpa": _3, "is-a-cubicle-slave": _3, "is-a-democrat": _3, "is-a-designer": _3, "is-a-doctor": _3, "is-a-financialadvisor": _3, "is-a-geek": _3, "is-a-green": _3, "is-a-guru": _3, "is-a-hard-worker": _3, "is-a-hunter": _3, "is-a-landscaper": _3, "is-a-lawyer": _3, "is-a-liberal": _3, "is-a-libertarian": _3, "is-a-llama": _3, "is-a-musician": _3, "is-a-nascarfan": _3, "is-a-nurse": _3, "is-a-painter": _3, "is-a-personaltrainer": _3, "is-a-photographer": _3, "is-a-player": _3, "is-a-republican": _3, "is-a-rockstar": _3, "is-a-socialist": _3, "is-a-student": _3, "is-a-teacher": _3, "is-a-techie": _3, "is-a-therapist": _3, "is-an-accountant": _3, "is-an-actor": _3, "is-an-actress": _3, "is-an-anarchist": _3, "is-an-artist": _3, "is-an-engineer": _3, "is-an-entertainer": _3, "is-certified": _3, "is-gone": _3, "is-into-anime": _3, "is-into-cars": _3, "is-into-cartoons": _3, "is-into-games": _3, "is-leet": _3, "is-not-certified": _3, "is-slick": _3, "is-uberleet": _3, "is-with-theband": _3, "isa-geek": _3, "isa-hockeynut": _3, "issmarterthanyou": _3, "likes-pie": _3, "likescandy": _3, "neat-url": _3, "saves-the-whales": _3, "selfip": _3, "sells-for-less": _3, "sells-for-u": _3, "servebbs": _3, "simple-url": _3, "space-to-rent": _3, "teaches-yoga": _3, "writesthisblog": _3, "ddnsfree": _3, "ddnsgeek": _3, "giize": _3, "gleeze": _3, "kozow": _3, "loseyourip": _3, "ooguy": _3, "theworkpc": _3, "mytuleap": _3, "tuleap-partners": _3, "encoreapi": _3, "evennode": [0, { "eu-1": _3, "eu-2": _3, "eu-3": _3, "eu-4": _3, "us-1": _3, "us-2": _3, "us-3": _3, "us-4": _3 }], "onfabrica": _3, "fastly-edge": _3, "fastly-terrarium": _3, "fastvps-server": _3, "mydobiss": _3, "firebaseapp": _3, "fldrv": _3, "forgeblocks": _3, "framercanvas": _3, "freebox-os": _3, "freeboxos": _3, "freemyip": _3, "aliases121": _3, "gentapps": _3, "gentlentapis": _3, "githubusercontent": _3, "0emm": _5, "appspot": [2, { "r": _5 }], "blogspot": _3, "codespot": _3, "googleapis": _3, "googlecode": _3, "pagespeedmobilizer": _3, "withgoogle": _3, "withyoutube": _3, "grayjayleagues": _3, "hatenablog": _3, "hatenadiary": _3, "herokuapp": _3, "herokussl": _3, "gr": _3, "smushcdn": _3, "wphostedmail": _3, "wpmucdn": _3, "pixolino": _3, "apps-1and1": _3, "live-website": _3, "dopaas": _3, "hosted-by-previder": _39, "hosteur": [0, { "rag-cloud": _3, "rag-cloud-ch": _3 }], "ik-server": [0, { "jcloud": _3, "jcloud-ver-jpc": _3 }], "jelastic": [0, { "demo": _3 }], "massivegrid": _39, "wafaicloud": [0, { "jed": _3, "ryd": _3 }], "webadorsite": _3, "joyent": [0, { "cns": _5 }], "ktistory": _3, "lpusercontent": _3, "linode": [0, { "members": _3, "nodebalancer": _5 }], "linodeobjects": _5, "linodeusercontent": [0, { "ip": _3 }], "barsycenter": _3, "barsyonline": _3, "modelscape": _3, "mwcloudnonprod": _3, "polyspace": _3, "mazeplay": _3, "miniserver": _3, "atmeta": _3, "fbsbx": _38, "meteorapp": _40, "routingthecloud": _3, "hostedpi": _3, "mythic-beasts": [0, { "caracal": _3, "customer": _3, "fentiger": _3, "lynx": _3, "ocelot": _3, "oncilla": _3, "onza": _3, "sphinx": _3, "vs": _3, "x": _3, "yali": _3 }], "nospamproxy": _18, "4u": _3, "nfshost": _3, "3utilities": _3, "blogsyte": _3, "ciscofreak": _3, "damnserver": _3, "ddnsking": _3, "ditchyourip": _3, "dnsiskinky": _3, "dynns": _3, "geekgalaxy": _3, "health-carereform": _3, "homesecuritymac": _3, "homesecuritypc": _3, "myactivedirectory": _3, "mysecuritycamera": _3, "myvnc": _3, "net-freaks": _3, "onthewifi": _3, "point2this": _3, "quicksytes": _3, "securitytactics": _3, "servebeer": _3, "servecounterstrike": _3, "serveexchange": _3, "serveftp": _3, "servegame": _3, "servehalflife": _3, "servehttp": _3, "servehumour": _3, "serveirc": _3, "servemp3": _3, "servep2p": _3, "servepics": _3, "servequake": _3, "servesarcasm": _3, "stufftoread": _3, "unusualperson": _3, "workisboring": _3, "001www": _3, "myiphost": _3, "observableusercontent": [0, { "static": _3 }], "simplesite": _3, "orsites": _3, "operaunite": _3, "customer-oci": [0, { "*": _3, "oci": _5, "ocp": _5, "ocs": _5 }], "oraclecloudapps": _5, "oraclegovcloudapps": _5, "authgear-staging": _3, "authgearapps": _3, "skygearapp": _3, "outsystemscloud": _3, "ownprovider": _3, "pgfog": _3, "pagexl": _3, "gotpantheon": _3, "paywhirl": _5, "upsunapp": _3, "platter-app": _3, "postman-echo": _3, "prgmr": [0, { "xen": _3 }], "pythonanywhere": _40, "qa2": _3, "alpha-myqnapcloud": _3, "dev-myqnapcloud": _3, "mycloudnas": _3, "mynascloud": _3, "myqnapcloud": _3, "qualifioapp": _3, "ladesk": _3, "qbuser": _3, "quipelements": _5, "rackmaze": _3, "readthedocs-hosted": _3, "rhcloud": _3, "onrender": _3, "render": _41, "180r": _3, "dojin": _3, "sakuratan": _3, "sakuraweb": _3, "x0": _3, "code": [0, { "builder": _5, "dev-builder": _5, "stg-builder": _5 }], "salesforce": [0, { "platform": [0, { "code-builder-stg": [0, { "test": [0, { "001": _5 }] }] }] }], "logoip": _3, "scrysec": _3, "firewall-gateway": _3, "myshopblocks": _3, "myshopify": _3, "shopitsite": _3, "1kapp": _3, "appchizi": _3, "applinzi": _3, "sinaapp": _3, "vipsinaapp": _3, "bounty-full": [2, { "alpha": _3, "beta": _3 }], "streamlitapp": _3, "try-snowplow": _3, "playstation-cloud": _3, "myspreadshop": _3, "w-corp-staticblitz": _3, "w-credentialless-staticblitz": _3, "w-staticblitz": _3, "stackhero-network": _3, "stdlib": [0, { "api": _3 }], "strapiapp": [2, { "media": _3 }], "streak-link": _3, "streaklinks": _3, "streakusercontent": _3, "temp-dns": _3, "dsmynas": _3, "familyds": _3, "mytabit": _3, "tb-hosting": _42, "reservd": _3, "thingdustdata": _3, "bloxcms": _3, "townnews-staging": _3, "typeform": [0, { "pro": _3 }], "hk": _3, "it": _3, "vultrobjects": _5, "wafflecell": _3, "hotelwithflight": _3, "reserve-online": _3, "cprapid": _3, "pleskns": _3, "remotewd": _3, "wiardweb": _43, "wixsite": _3, "wixstudio": _3, "messwithdns": _3, "woltlab-demo": _3, "wpenginepowered": [2, { "js": _3 }], "xnbay": [2, { "u2": _3, "u2-local": _3 }], "yolasite": _3 }], "coop": _2, "cr": [1, { "ac": _2, "co": _2, "ed": _2, "fi": _2, "go": _2, "or": _2, "sa": _2 }], "cu": [1, { "com": _2, "edu": _2, "gob": _2, "gov": _2, "inf": _2, "nat": _2, "net": _2, "org": _2 }], "cv": [1, { "com": _2, "edu": _2, "int": _2, "nome": _2, "org": _2, "blogspot": _3 }], "cw": _44, "cx": [1, { "gov": _2, "cloudns": _3, "ath": _3, "info": _3, "assessments": _3, "calculators": _3, "funnels": _3, "paynow": _3, "quizzes": _3, "researched": _3, "tests": _3 }], "cy": [1, { "ac": _2, "biz": _2, "com": [1, { "blogspot": _3, "scaleforce": _45 }], "ekloges": _2, "gov": _2, "ltd": _2, "mil": _2, "net": _2, "org": _2, "press": _2, "pro": _2, "tm": _2 }], "cz": [1, { "contentproxy9": [0, { "rsc": _3 }], "realm": _3, "e4": _3, "blogspot": _3, "co": _3, "metacentrum": [0, { "cloud": _5, "custom": _3 }], "muni": [0, { "cloud": [0, { "flt": _3, "usr": _3 }] }] }], "de": [1, { "bplaced": _3, "square7": _3, "com": _3, "cosidns": [0, { "dyn": _3 }], "dnsupdater": _3, "dynamisches-dns": _3, "internet-dns": _3, "l-o-g-i-n": _3, "ddnss": [2, { "dyn": _3, "dyndns": _3 }], "dyn-ip24": _3, "dyndns1": _3, "home-webserver": [2, { "dyn": _3 }], "myhome-server": _3, "dnshome": _3, "fuettertdasnetz": _3, "isteingeek": _3, "istmein": _3, "lebtimnetz": _3, "leitungsen": _3, "traeumtgerade": _3, "frusky": _5, "goip": _3, "blogspot": _3, "xn--gnstigbestellen-zvb": _3, "g\xFCnstigbestellen": _3, "xn--gnstigliefern-wob": _3, "g\xFCnstigliefern": _3, "hs-heilbronn": [0, { "it": _43 }], "dyn-berlin": _3, "in-berlin": _3, "in-brb": _3, "in-butter": _3, "in-dsl": _3, "in-vpn": _3, "iservschule": _3, "mein-iserv": _3, "schulplattform": _3, "schulserver": _3, "test-iserv": _3, "keymachine": _3, "git-repos": _3, "lcube-server": _3, "svn-repos": _3, "barsy": _3, "123webseite": _3, "logoip": _3, "firewall-gateway": _3, "my-gateway": _3, "my-router": _3, "spdns": _3, "speedpartner": [0, { "customer": _3 }], "myspreadshop": _3, "taifun-dns": _3, "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3, "dd-dns": _3, "dray-dns": _3, "draydns": _3, "dyn-vpn": _3, "dynvpn": _3, "mein-vigor": _3, "my-vigor": _3, "my-wan": _3, "syno-ds": _3, "synology-diskstation": _3, "synology-ds": _3, "uberspace": _5, "virtual-user": _3, "virtualuser": _3, "community-pro": _3, "diskussionsbereich": _3 }], "dj": _2, "dk": [1, { "biz": _3, "co": _3, "firm": _3, "reg": _3, "store": _3, "blogspot": _3, "123hjemmeside": _3, "myspreadshop": _3 }], "dm": _4, "do": [1, { "art": _2, "com": _2, "edu": _2, "gob": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "sld": _2, "web": _2 }], "dz": [1, { "art": _2, "asso": _2, "com": _2, "edu": _2, "gov": _2, "org": _2, "net": _2, "pol": _2, "soc": _2, "tm": _2 }], "ec": [1, { "com": _2, "info": _2, "net": _2, "fin": _2, "k12": _2, "med": _2, "pro": _2, "org": _2, "edu": _2, "gov": _2, "gob": _2, "mil": _2, "base": _3, "official": _3 }], "edu": [1, { "rit": [0, { "git-pages": _3 }] }], "ee": [1, { "edu": _2, "gov": _2, "riik": _2, "lib": _2, "med": _2, "com": _10, "pri": _2, "aip": _2, "org": _2, "fie": _2 }], "eg": [1, { "com": _10, "edu": _2, "eun": _2, "gov": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "sci": _2 }], "er": _17, "es": [1, { "com": _10, "nom": _2, "org": _2, "gob": _2, "edu": _2, "123miweb": _3, "myspreadshop": _3 }], "et": [1, { "com": _2, "gov": _2, "org": _2, "edu": _2, "biz": _2, "name": _2, "info": _2, "net": _2 }], "eu": [1, { "airkitapps": _3, "mycd": _3, "cloudns": _3, "dogado": [0, { "jelastic": _3 }], "barsy": _3, "spdns": _3, "transurl": _5, "diskstation": _3 }], "fi": [1, { "aland": _2, "dy": _3, "blogspot": _3, "xn--hkkinen-5wa": _3, "h\xE4kkinen": _3, "iki": _3, "cloudplatform": [0, { "fi": _3 }], "datacenter": [0, { "demo": _3, "paas": _3 }], "kapsi": _3, "123kotisivu": _3, "myspreadshop": _3 }], "fj": [1, { "ac": _2, "biz": _2, "com": _2, "gov": _2, "info": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "pro": _2 }], "fk": _17, "fm": [1, { "com": _2, "edu": _2, "net": _2, "org": _2, "radio": _3, "user": _5 }], "fo": _2, "fr": [1, { "asso": _2, "com": _2, "gouv": _2, "nom": _2, "prd": _2, "tm": _2, "avoues": _2, "cci": _2, "greta": _2, "huissier-justice": _2, "en-root": _3, "fbx-os": _3, "fbxos": _3, "freebox-os": _3, "freeboxos": _3, "blogspot": _3, "goupile": _3, "123siteweb": _3, "on-web": _3, "chirurgiens-dentistes-en-france": _3, "dedibox": _3, "aeroport": _3, "avocat": _3, "chambagri": _3, "chirurgiens-dentistes": _3, "experts-comptables": _3, "medecin": _3, "notaires": _3, "pharmacien": _3, "port": _3, "veterinaire": _3, "myspreadshop": _3, "ynh": _3 }], "ga": _2, "gb": _2, "gd": [1, { "edu": _2, "gov": _2 }], "ge": [1, { "com": _2, "edu": _2, "gov": _2, "org": _2, "mil": _2, "net": _2, "pvt": _2 }], "gf": _2, "gg": [1, { "co": _2, "net": _2, "org": _2, "kaas": _3, "stackit": _3, "panel": [2, { "daemon": _3 }] }], "gh": [1, { "com": _2, "edu": _2, "gov": _2, "org": _2, "mil": _2 }], "gi": [1, { "com": _2, "ltd": _2, "gov": _2, "mod": _2, "edu": _2, "org": _2 }], "gl": [1, { "co": _2, "com": _2, "edu": _2, "net": _2, "org": _2, "biz": _3 }], "gm": _2, "gn": [1, { "ac": _2, "com": _2, "edu": _2, "gov": _2, "org": _2, "net": _2 }], "gov": _2, "gp": [1, { "com": _2, "net": _2, "mobi": _2, "edu": _2, "org": _2, "asso": _2 }], "gq": _2, "gr": [1, { "com": _2, "edu": _2, "net": _2, "org": _2, "gov": _2, "blogspot": _3, "barsy": _3, "simplesite": _3 }], "gs": _2, "gt": [1, { "com": _2, "edu": _2, "gob": _2, "ind": _2, "mil": _2, "net": _2, "org": _2 }], "gu": [1, { "com": _2, "edu": _2, "gov": _2, "guam": _2, "info": _2, "net": _2, "org": _2, "web": _2 }], "gw": _2, "gy": [1, { "co": _2, "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2 }], "hk": [1, { "com": _2, "edu": _2, "gov": _2, "idv": _2, "net": _2, "org": _2, "xn--55qx5d": _2, "\u516C\u53F8": _2, "xn--wcvs22d": _2, "\u6559\u80B2": _2, "xn--lcvr32d": _2, "\u654E\u80B2": _2, "xn--mxtq1m": _2, "\u653F\u5E9C": _2, "xn--gmqw5a": _2, "\u500B\u4EBA": _2, "xn--ciqpn": _2, "\u4E2A\u4EBA": _2, "xn--gmq050i": _2, "\u7B87\u4EBA": _2, "xn--zf0avx": _2, "\u7DB2\u7EDC": _2, "xn--io0a7i": _2, "\u7F51\u7EDC": _2, "xn--mk0axi": _2, "\u7EC4\u7E54": _2, "xn--od0alg": _2, "\u7DB2\u7D61": _2, "xn--od0aq3b": _2, "\u7F51\u7D61": _2, "xn--tn0ag": _2, "\u7EC4\u7EC7": _2, "xn--uc0atv": _2, "\u7D44\u7E54": _2, "xn--uc0ay4a": _2, "\u7D44\u7EC7": _2, "blogspot": _3, "secaas": _3, "inc": _3, "ltd": _3 }], "hm": _2, "hn": [1, { "com": _2, "edu": _2, "org": _2, "net": _2, "mil": _2, "gob": _2 }], "hr": [1, { "iz": _2, "from": _2, "name": _2, "com": _2, "brendly": _49, "blogspot": _3, "free": _3 }], "ht": [1, { "com": _2, "shop": _2, "firm": _2, "info": _2, "adult": _2, "net": _2, "pro": _2, "org": _2, "med": _2, "art": _2, "coop": _2, "pol": _2, "asso": _2, "edu": _2, "rel": _2, "gouv": _2, "perso": _2, "rt": _3 }], "hu": [1, { "2000": _2, "co": _2, "info": _2, "org": _2, "priv": _2, "sport": _2, "tm": _2, "agrar": _2, "bolt": _2, "casino": _2, "city": _2, "erotica": _2, "erotika": _2, "film": _2, "forum": _2, "games": _2, "hotel": _2, "ingatlan": _2, "jogasz": _2, "konyvelo": _2, "lakas": _2, "media": _2, "news": _2, "reklam": _2, "sex": _2, "shop": _2, "suli": _2, "szex": _2, "tozsde": _2, "utazas": _2, "video": _2, "blogspot": _3 }], "id": [1, { "ac": _2, "biz": _2, "co": _10, "desa": _2, "go": _2, "mil": _2, "my": [1, { "rss": _3 }], "net": _2, "or": _2, "ponpes": _2, "sch": _2, "web": _2, "forte": _3 }], "ie": [1, { "gov": _2, "blogspot": _3, "myspreadshop": _3 }], "il": [1, { "ac": _2, "co": [1, { "blogspot": _3, "ravpage": _3, "mytabit": _3, "tabitorder": _3 }], "gov": _2, "idf": _2, "k12": _2, "muni": _2, "net": _2, "org": _2 }], "xn--4dbrk0ce": [1, { "xn--4dbgdty6c": _2, "xn--5dbhl8d": _2, "xn--8dbq2a": _2, "xn--hebda8b": _2 }], "\u05D9\u05E9\u05E8\u05D0\u05DC": [1, { "\u05D0\u05E7\u05D3\u05DE\u05D9\u05D4": _2, "\u05D9\u05E9\u05D5\u05D1": _2, "\u05E6\u05D4\u05DC": _2, "\u05DE\u05DE\u05E9\u05DC": _2 }], "im": [1, { "ac": _2, "co": [1, { "ltd": _2, "plc": _2 }], "com": _2, "net": _2, "org": _2, "tt": _2, "tv": _2 }], "in": [1, { "5g": _2, "6g": _2, "ac": _2, "ai": _2, "am": _2, "bihar": _2, "biz": _2, "business": _2, "ca": _2, "cn": _2, "co": _2, "com": _2, "coop": _2, "cs": _2, "delhi": _2, "dr": _2, "edu": _2, "er": _2, "firm": _2, "gen": _2, "gov": _2, "gujarat": _2, "ind": _2, "info": _2, "int": _2, "internet": _2, "io": _2, "me": _2, "mil": _2, "net": _2, "nic": _2, "org": _2, "pg": _2, "post": _2, "pro": _2, "res": _2, "travel": _2, "tv": _2, "uk": _2, "up": _2, "us": _2, "cloudns": _3, "blogspot": _3, "barsy": _3, "web": _3, "supabase": _3 }], "info": [1, { "cloudns": _3, "dynamic-dns": _3, "barrel-of-knowledge": _3, "barrell-of-knowledge": _3, "dyndns": _3, "for-our": _3, "groks-the": _3, "groks-this": _3, "here-for-more": _3, "knowsitall": _3, "selfip": _3, "webhop": _3, "barsy": _3, "mayfirst": _3, "dvrcam": _3, "ilovecollege": _3, "no-ip": _3, "forumz": _3, "nsupdate": _3, "dnsupdate": _3, "v-info": _3 }], "int": [1, { "eu": _2 }], "io": [1, { "2038": _3, "com": _2, "on-acorn": _5, "apigee": _3, "b-data": _3, "banzaicloud": [0, { "app": _3, "backyards": _5 }], "beagleboard": _3, "bitbucket": _3, "bluebite": _3, "boxfuse": _3, "brave": [0, { "s": _5 }], "browsersafetymark": _3, "bigv": [0, { "uk0": _3 }], "cleverapps": _3, "dappnode": [0, { "dyndns": _3 }], "darklang": _3, "definima": _3, "dedyn": _3, "drud": _3, "fh-muenster": _3, "shw": _3, "forgerock": [0, { "id": _3 }], "github": _3, "gitlab": _3, "lolipop": _3, "hasura-app": _3, "hostyhosting": _3, "hypernode": _3, "moonscale": _5, "beebyte": _39, "beebyteapp": [0, { "sekd1": _3 }], "jele": _3, "webthings": _3, "loginline": _3, "barsy": _3, "azurecontainer": _5, "ngrok": [2, { "ap": _3, "au": _3, "eu": _3, "in": _3, "jp": _3, "sa": _3, "us": _3 }], "nodeart": [0, { "stage": _3 }], "pantheonsite": _3, "dyn53": _3, "pstmn": [2, { "mock": _3 }], "protonet": _3, "qcx": [2, { "sys": _5 }], "qoto": _3, "vaporcloud": _3, "myrdbx": _3, "rb-hosting": _42, "on-k3s": _5, "on-rio": _5, "readthedocs": _3, "resindevice": _3, "resinstaging": [0, { "devices": _3 }], "hzc": _3, "sandcats": _3, "scrypted": [0, { "client": _3 }], "shiftedit": _3, "mo-siemens": _3, "lair": _38, "stolos": _5, "spacekit": _3, "musician": _3, "utwente": _3, "s5y": _5, "edugit": _3, "telebit": _3, "thingdust": [0, { "dev": _50, "disrec": _50, "prod": _51, "testing": _50 }], "tickets": _3, "upli": _3, "webflow": _3, "webflowtest": _3, "editorx": _3, "wixstudio": _3, "basicserver": _3, "virtualserver": _3 }], "iq": _52, "ir": [1, { "ac": _2, "co": _2, "gov": _2, "id": _2, "net": _2, "org": _2, "sch": _2, "xn--mgba3a4f16a": _2, "\u0627\u06CC\u0631\u0627\u0646": _2, "xn--mgba3a4fra": _2, "\u0627\u064A\u0631\u0627\u0646": _2 }], "is": [1, { "net": _2, "com": _2, "edu": _2, "gov": _2, "org": _2, "int": _2, "blogspot": _3 }], "it": [1, { "gov": _2, "edu": _2, "abr": _2, "abruzzo": _2, "aosta-valley": _2, "aostavalley": _2, "bas": _2, "basilicata": _2, "cal": _2, "calabria": _2, "cam": _2, "campania": _2, "emilia-romagna": _2, "emiliaromagna": _2, "emr": _2, "friuli-v-giulia": _2, "friuli-ve-giulia": _2, "friuli-vegiulia": _2, "friuli-venezia-giulia": _2, "friuli-veneziagiulia": _2, "friuli-vgiulia": _2, "friuliv-giulia": _2, "friulive-giulia": _2, "friulivegiulia": _2, "friulivenezia-giulia": _2, "friuliveneziagiulia": _2, "friulivgiulia": _2, "fvg": _2, "laz": _2, "lazio": _2, "lig": _2, "liguria": _2, "lom": _2, "lombardia": _2, "lombardy": _2, "lucania": _2, "mar": _2, "marche": _2, "mol": _2, "molise": _2, "piedmont": _2, "piemonte": _2, "pmn": _2, "pug": _2, "puglia": _2, "sar": _2, "sardegna": _2, "sardinia": _2, "sic": _2, "sicilia": _2, "sicily": _2, "taa": _2, "tos": _2, "toscana": _2, "trentin-sud-tirol": _2, "xn--trentin-sd-tirol-rzb": _2, "trentin-s\xFCd-tirol": _2, "trentin-sudtirol": _2, "xn--trentin-sdtirol-7vb": _2, "trentin-s\xFCdtirol": _2, "trentin-sued-tirol": _2, "trentin-suedtirol": _2, "trentino-a-adige": _2, "trentino-aadige": _2, "trentino-alto-adige": _2, "trentino-altoadige": _2, "trentino-s-tirol": _2, "trentino-stirol": _2, "trentino-sud-tirol": _2, "xn--trentino-sd-tirol-c3b": _2, "trentino-s\xFCd-tirol": _2, "trentino-sudtirol": _2, "xn--trentino-sdtirol-szb": _2, "trentino-s\xFCdtirol": _2, "trentino-sued-tirol": _2, "trentino-suedtirol": _2, "trentino": _2, "trentinoa-adige": _2, "trentinoaadige": _2, "trentinoalto-adige": _2, "trentinoaltoadige": _2, "trentinos-tirol": _2, "trentinostirol": _2, "trentinosud-tirol": _2, "xn--trentinosd-tirol-rzb": _2, "trentinos\xFCd-tirol": _2, "trentinosudtirol": _2, "xn--trentinosdtirol-7vb": _2, "trentinos\xFCdtirol": _2, "trentinosued-tirol": _2, "trentinosuedtirol": _2, "trentinsud-tirol": _2, "xn--trentinsd-tirol-6vb": _2, "trentins\xFCd-tirol": _2, "trentinsudtirol": _2, "xn--trentinsdtirol-nsb": _2, "trentins\xFCdtirol": _2, "trentinsued-tirol": _2, "trentinsuedtirol": _2, "tuscany": _2, "umb": _2, "umbria": _2, "val-d-aosta": _2, "val-daosta": _2, "vald-aosta": _2, "valdaosta": _2, "valle-aosta": _2, "valle-d-aosta": _2, "valle-daosta": _2, "valleaosta": _2, "valled-aosta": _2, "valledaosta": _2, "vallee-aoste": _2, "xn--valle-aoste-ebb": _2, "vall\xE9e-aoste": _2, "vallee-d-aoste": _2, "xn--valle-d-aoste-ehb": _2, "vall\xE9e-d-aoste": _2, "valleeaoste": _2, "xn--valleaoste-e7a": _2, "vall\xE9eaoste": _2, "valleedaoste": _2, "xn--valledaoste-ebb": _2, "vall\xE9edaoste": _2, "vao": _2, "vda": _2, "ven": _2, "veneto": _2, "ag": _2, "agrigento": _2, "al": _2, "alessandria": _2, "alto-adige": _2, "altoadige": _2, "an": _2, "ancona": _2, "andria-barletta-trani": _2, "andria-trani-barletta": _2, "andriabarlettatrani": _2, "andriatranibarletta": _2, "ao": _2, "aosta": _2, "aoste": _2, "ap": _2, "aq": _2, "aquila": _2, "ar": _2, "arezzo": _2, "ascoli-piceno": _2, "ascolipiceno": _2, "asti": _2, "at": _2, "av": _2, "avellino": _2, "ba": _2, "balsan-sudtirol": _2, "xn--balsan-sdtirol-nsb": _2, "balsan-s\xFCdtirol": _2, "balsan-suedtirol": _2, "balsan": _2, "bari": _2, "barletta-trani-andria": _2, "barlettatraniandria": _2, "belluno": _2, "benevento": _2, "bergamo": _2, "bg": _2, "bi": _2, "biella": _2, "bl": _2, "bn": _2, "bo": _2, "bologna": _2, "bolzano-altoadige": _2, "bolzano": _2, "bozen-sudtirol": _2, "xn--bozen-sdtirol-2ob": _2, "bozen-s\xFCdtirol": _2, "bozen-suedtirol": _2, "bozen": _2, "br": _2, "brescia": _2, "brindisi": _2, "bs": _2, "bt": _2, "bulsan-sudtirol": _2, "xn--bulsan-sdtirol-nsb": _2, "bulsan-s\xFCdtirol": _2, "bulsan-suedtirol": _2, "bulsan": _2, "bz": _2, "ca": _2, "cagliari": _2, "caltanissetta": _2, "campidano-medio": _2, "campidanomedio": _2, "campobasso": _2, "carbonia-iglesias": _2, "carboniaiglesias": _2, "carrara-massa": _2, "carraramassa": _2, "caserta": _2, "catania": _2, "catanzaro": _2, "cb": _2, "ce": _2, "cesena-forli": _2, "xn--cesena-forl-mcb": _2, "cesena-forl\xEC": _2, "cesenaforli": _2, "xn--cesenaforl-i8a": _2, "cesenaforl\xEC": _2, "ch": _2, "chieti": _2, "ci": _2, "cl": _2, "cn": _2, "co": _2, "como": _2, "cosenza": _2, "cr": _2, "cremona": _2, "crotone": _2, "cs": _2, "ct": _2, "cuneo": _2, "cz": _2, "dell-ogliastra": _2, "dellogliastra": _2, "en": _2, "enna": _2, "fc": _2, "fe": _2, "fermo": _2, "ferrara": _2, "fg": _2, "fi": _2, "firenze": _2, "florence": _2, "fm": _2, "foggia": _2, "forli-cesena": _2, "xn--forl-cesena-fcb": _2, "forl\xEC-cesena": _2, "forlicesena": _2, "xn--forlcesena-c8a": _2, "forl\xECcesena": _2, "fr": _2, "frosinone": _2, "ge": _2, "genoa": _2, "genova": _2, "go": _2, "gorizia": _2, "gr": _2, "grosseto": _2, "iglesias-carbonia": _2, "iglesiascarbonia": _2, "im": _2, "imperia": _2, "is": _2, "isernia": _2, "kr": _2, "la-spezia": _2, "laquila": _2, "laspezia": _2, "latina": _2, "lc": _2, "le": _2, "lecce": _2, "lecco": _2, "li": _2, "livorno": _2, "lo": _2, "lodi": _2, "lt": _2, "lu": _2, "lucca": _2, "macerata": _2, "mantova": _2, "massa-carrara": _2, "massacarrara": _2, "matera": _2, "mb": _2, "mc": _2, "me": _2, "medio-campidano": _2, "mediocampidano": _2, "messina": _2, "mi": _2, "milan": _2, "milano": _2, "mn": _2, "mo": _2, "modena": _2, "monza-brianza": _2, "monza-e-della-brianza": _2, "monza": _2, "monzabrianza": _2, "monzaebrianza": _2, "monzaedellabrianza": _2, "ms": _2, "mt": _2, "na": _2, "naples": _2, "napoli": _2, "no": _2, "novara": _2, "nu": _2, "nuoro": _2, "og": _2, "ogliastra": _2, "olbia-tempio": _2, "olbiatempio": _2, "or": _2, "oristano": _2, "ot": _2, "pa": _2, "padova": _2, "padua": _2, "palermo": _2, "parma": _2, "pavia": _2, "pc": _2, "pd": _2, "pe": _2, "perugia": _2, "pesaro-urbino": _2, "pesarourbino": _2, "pescara": _2, "pg": _2, "pi": _2, "piacenza": _2, "pisa": _2, "pistoia": _2, "pn": _2, "po": _2, "pordenone": _2, "potenza": _2, "pr": _2, "prato": _2, "pt": _2, "pu": _2, "pv": _2, "pz": _2, "ra": _2, "ragusa": _2, "ravenna": _2, "rc": _2, "re": _2, "reggio-calabria": _2, "reggio-emilia": _2, "reggiocalabria": _2, "reggioemilia": _2, "rg": _2, "ri": _2, "rieti": _2, "rimini": _2, "rm": _2, "rn": _2, "ro": _2, "roma": _2, "rome": _2, "rovigo": _2, "sa": _2, "salerno": _2, "sassari": _2, "savona": _2, "si": _2, "siena": _2, "siracusa": _2, "so": _2, "sondrio": _2, "sp": _2, "sr": _2, "ss": _2, "suedtirol": _2, "xn--sdtirol-n2a": _2, "s\xFCdtirol": _2, "sv": _2, "ta": _2, "taranto": _2, "te": _2, "tempio-olbia": _2, "tempioolbia": _2, "teramo": _2, "terni": _2, "tn": _2, "to": _2, "torino": _2, "tp": _2, "tr": _2, "trani-andria-barletta": _2, "trani-barletta-andria": _2, "traniandriabarletta": _2, "tranibarlettaandria": _2, "trapani": _2, "trento": _2, "treviso": _2, "trieste": _2, "ts": _2, "turin": _2, "tv": _2, "ud": _2, "udine": _2, "urbino-pesaro": _2, "urbinopesaro": _2, "va": _2, "varese": _2, "vb": _2, "vc": _2, "ve": _2, "venezia": _2, "venice": _2, "verbania": _2, "vercelli": _2, "verona": _2, "vi": _2, "vibo-valentia": _2, "vibovalentia": _2, "vicenza": _2, "viterbo": _2, "vr": _2, "vs": _2, "vt": _2, "vv": _2, "12chars": _3, "blogspot": _3, "ibxos": _3, "iliadboxos": _3, "neen": [0, { "jc": _3 }], "123homepage": _3, "16-b": _3, "32-b": _3, "64-b": _3, "myspreadshop": _3, "syncloud": _3 }], "je": [1, { "co": _2, "net": _2, "org": _2, "of": _3 }], "jm": _17, "jo": [1, { "com": _2, "org": _2, "net": _2, "edu": _2, "sch": _2, "gov": _2, "mil": _2, "name": _2 }], "jobs": _2, "jp": [1, { "ac": _2, "ad": _2, "co": _2, "ed": _2, "go": _2, "gr": _2, "lg": _2, "ne": [1, { "aseinet": _47, "gehirn": _3, "ivory": _3, "mail-box": _3, "mints": _3, "mokuren": _3, "opal": _3, "sakura": _3, "sumomo": _3, "topaz": _3 }], "or": _2, "aichi": [1, { "aisai": _2, "ama": _2, "anjo": _2, "asuke": _2, "chiryu": _2, "chita": _2, "fuso": _2, "gamagori": _2, "handa": _2, "hazu": _2, "hekinan": _2, "higashiura": _2, "ichinomiya": _2, "inazawa": _2, "inuyama": _2, "isshiki": _2, "iwakura": _2, "kanie": _2, "kariya": _2, "kasugai": _2, "kira": _2, "kiyosu": _2, "komaki": _2, "konan": _2, "kota": _2, "mihama": _2, "miyoshi": _2, "nishio": _2, "nisshin": _2, "obu": _2, "oguchi": _2, "oharu": _2, "okazaki": _2, "owariasahi": _2, "seto": _2, "shikatsu": _2, "shinshiro": _2, "shitara": _2, "tahara": _2, "takahama": _2, "tobishima": _2, "toei": _2, "togo": _2, "tokai": _2, "tokoname": _2, "toyoake": _2, "toyohashi": _2, "toyokawa": _2, "toyone": _2, "toyota": _2, "tsushima": _2, "yatomi": _2 }], "akita": [1, { "akita": _2, "daisen": _2, "fujisato": _2, "gojome": _2, "hachirogata": _2, "happou": _2, "higashinaruse": _2, "honjo": _2, "honjyo": _2, "ikawa": _2, "kamikoani": _2, "kamioka": _2, "katagami": _2, "kazuno": _2, "kitaakita": _2, "kosaka": _2, "kyowa": _2, "misato": _2, "mitane": _2, "moriyoshi": _2, "nikaho": _2, "noshiro": _2, "odate": _2, "oga": _2, "ogata": _2, "semboku": _2, "yokote": _2, "yurihonjo": _2 }], "aomori": [1, { "aomori": _2, "gonohe": _2, "hachinohe": _2, "hashikami": _2, "hiranai": _2, "hirosaki": _2, "itayanagi": _2, "kuroishi": _2, "misawa": _2, "mutsu": _2, "nakadomari": _2, "noheji": _2, "oirase": _2, "owani": _2, "rokunohe": _2, "sannohe": _2, "shichinohe": _2, "shingo": _2, "takko": _2, "towada": _2, "tsugaru": _2, "tsuruta": _2 }], "chiba": [1, { "abiko": _2, "asahi": _2, "chonan": _2, "chosei": _2, "choshi": _2, "chuo": _2, "funabashi": _2, "futtsu": _2, "hanamigawa": _2, "ichihara": _2, "ichikawa": _2, "ichinomiya": _2, "inzai": _2, "isumi": _2, "kamagaya": _2, "kamogawa": _2, "kashiwa": _2, "katori": _2, "katsuura": _2, "kimitsu": _2, "kisarazu": _2, "kozaki": _2, "kujukuri": _2, "kyonan": _2, "matsudo": _2, "midori": _2, "mihama": _2, "minamiboso": _2, "mobara": _2, "mutsuzawa": _2, "nagara": _2, "nagareyama": _2, "narashino": _2, "narita": _2, "noda": _2, "oamishirasato": _2, "omigawa": _2, "onjuku": _2, "otaki": _2, "sakae": _2, "sakura": _2, "shimofusa": _2, "shirako": _2, "shiroi": _2, "shisui": _2, "sodegaura": _2, "sosa": _2, "tako": _2, "tateyama": _2, "togane": _2, "tohnosho": _2, "tomisato": _2, "urayasu": _2, "yachimata": _2, "yachiyo": _2, "yokaichiba": _2, "yokoshibahikari": _2, "yotsukaido": _2 }], "ehime": [1, { "ainan": _2, "honai": _2, "ikata": _2, "imabari": _2, "iyo": _2, "kamijima": _2, "kihoku": _2, "kumakogen": _2, "masaki": _2, "matsuno": _2, "matsuyama": _2, "namikata": _2, "niihama": _2, "ozu": _2, "saijo": _2, "seiyo": _2, "shikokuchuo": _2, "tobe": _2, "toon": _2, "uchiko": _2, "uwajima": _2, "yawatahama": _2 }], "fukui": [1, { "echizen": _2, "eiheiji": _2, "fukui": _2, "ikeda": _2, "katsuyama": _2, "mihama": _2, "minamiechizen": _2, "obama": _2, "ohi": _2, "ono": _2, "sabae": _2, "sakai": _2, "takahama": _2, "tsuruga": _2, "wakasa": _2 }], "fukuoka": [1, { "ashiya": _2, "buzen": _2, "chikugo": _2, "chikuho": _2, "chikujo": _2, "chikushino": _2, "chikuzen": _2, "chuo": _2, "dazaifu": _2, "fukuchi": _2, "hakata": _2, "higashi": _2, "hirokawa": _2, "hisayama": _2, "iizuka": _2, "inatsuki": _2, "kaho": _2, "kasuga": _2, "kasuya": _2, "kawara": _2, "keisen": _2, "koga": _2, "kurate": _2, "kurogi": _2, "kurume": _2, "minami": _2, "miyako": _2, "miyama": _2, "miyawaka": _2, "mizumaki": _2, "munakata": _2, "nakagawa": _2, "nakama": _2, "nishi": _2, "nogata": _2, "ogori": _2, "okagaki": _2, "okawa": _2, "oki": _2, "omuta": _2, "onga": _2, "onojo": _2, "oto": _2, "saigawa": _2, "sasaguri": _2, "shingu": _2, "shinyoshitomi": _2, "shonai": _2, "soeda": _2, "sue": _2, "tachiarai": _2, "tagawa": _2, "takata": _2, "toho": _2, "toyotsu": _2, "tsuiki": _2, "ukiha": _2, "umi": _2, "usui": _2, "yamada": _2, "yame": _2, "yanagawa": _2, "yukuhashi": _2 }], "fukushima": [1, { "aizubange": _2, "aizumisato": _2, "aizuwakamatsu": _2, "asakawa": _2, "bandai": _2, "date": _2, "fukushima": _2, "furudono": _2, "futaba": _2, "hanawa": _2, "higashi": _2, "hirata": _2, "hirono": _2, "iitate": _2, "inawashiro": _2, "ishikawa": _2, "iwaki": _2, "izumizaki": _2, "kagamiishi": _2, "kaneyama": _2, "kawamata": _2, "kitakata": _2, "kitashiobara": _2, "koori": _2, "koriyama": _2, "kunimi": _2, "miharu": _2, "mishima": _2, "namie": _2, "nango": _2, "nishiaizu": _2, "nishigo": _2, "okuma": _2, "omotego": _2, "ono": _2, "otama": _2, "samegawa": _2, "shimogo": _2, "shirakawa": _2, "showa": _2, "soma": _2, "sukagawa": _2, "taishin": _2, "tamakawa": _2, "tanagura": _2, "tenei": _2, "yabuki": _2, "yamato": _2, "yamatsuri": _2, "yanaizu": _2, "yugawa": _2 }], "gifu": [1, { "anpachi": _2, "ena": _2, "gifu": _2, "ginan": _2, "godo": _2, "gujo": _2, "hashima": _2, "hichiso": _2, "hida": _2, "higashishirakawa": _2, "ibigawa": _2, "ikeda": _2, "kakamigahara": _2, "kani": _2, "kasahara": _2, "kasamatsu": _2, "kawaue": _2, "kitagata": _2, "mino": _2, "minokamo": _2, "mitake": _2, "mizunami": _2, "motosu": _2, "nakatsugawa": _2, "ogaki": _2, "sakahogi": _2, "seki": _2, "sekigahara": _2, "shirakawa": _2, "tajimi": _2, "takayama": _2, "tarui": _2, "toki": _2, "tomika": _2, "wanouchi": _2, "yamagata": _2, "yaotsu": _2, "yoro": _2 }], "gunma": [1, { "annaka": _2, "chiyoda": _2, "fujioka": _2, "higashiagatsuma": _2, "isesaki": _2, "itakura": _2, "kanna": _2, "kanra": _2, "katashina": _2, "kawaba": _2, "kiryu": _2, "kusatsu": _2, "maebashi": _2, "meiwa": _2, "midori": _2, "minakami": _2, "naganohara": _2, "nakanojo": _2, "nanmoku": _2, "numata": _2, "oizumi": _2, "ora": _2, "ota": _2, "shibukawa": _2, "shimonita": _2, "shinto": _2, "showa": _2, "takasaki": _2, "takayama": _2, "tamamura": _2, "tatebayashi": _2, "tomioka": _2, "tsukiyono": _2, "tsumagoi": _2, "ueno": _2, "yoshioka": _2 }], "hiroshima": [1, { "asaminami": _2, "daiwa": _2, "etajima": _2, "fuchu": _2, "fukuyama": _2, "hatsukaichi": _2, "higashihiroshima": _2, "hongo": _2, "jinsekikogen": _2, "kaita": _2, "kui": _2, "kumano": _2, "kure": _2, "mihara": _2, "miyoshi": _2, "naka": _2, "onomichi": _2, "osakikamijima": _2, "otake": _2, "saka": _2, "sera": _2, "seranishi": _2, "shinichi": _2, "shobara": _2, "takehara": _2 }], "hokkaido": [1, { "abashiri": _2, "abira": _2, "aibetsu": _2, "akabira": _2, "akkeshi": _2, "asahikawa": _2, "ashibetsu": _2, "ashoro": _2, "assabu": _2, "atsuma": _2, "bibai": _2, "biei": _2, "bifuka": _2, "bihoro": _2, "biratori": _2, "chippubetsu": _2, "chitose": _2, "date": _2, "ebetsu": _2, "embetsu": _2, "eniwa": _2, "erimo": _2, "esan": _2, "esashi": _2, "fukagawa": _2, "fukushima": _2, "furano": _2, "furubira": _2, "haboro": _2, "hakodate": _2, "hamatonbetsu": _2, "hidaka": _2, "higashikagura": _2, "higashikawa": _2, "hiroo": _2, "hokuryu": _2, "hokuto": _2, "honbetsu": _2, "horokanai": _2, "horonobe": _2, "ikeda": _2, "imakane": _2, "ishikari": _2, "iwamizawa": _2, "iwanai": _2, "kamifurano": _2, "kamikawa": _2, "kamishihoro": _2, "kamisunagawa": _2, "kamoenai": _2, "kayabe": _2, "kembuchi": _2, "kikonai": _2, "kimobetsu": _2, "kitahiroshima": _2, "kitami": _2, "kiyosato": _2, "koshimizu": _2, "kunneppu": _2, "kuriyama": _2, "kuromatsunai": _2, "kushiro": _2, "kutchan": _2, "kyowa": _2, "mashike": _2, "matsumae": _2, "mikasa": _2, "minamifurano": _2, "mombetsu": _2, "moseushi": _2, "mukawa": _2, "muroran": _2, "naie": _2, "nakagawa": _2, "nakasatsunai": _2, "nakatombetsu": _2, "nanae": _2, "nanporo": _2, "nayoro": _2, "nemuro": _2, "niikappu": _2, "niki": _2, "nishiokoppe": _2, "noboribetsu": _2, "numata": _2, "obihiro": _2, "obira": _2, "oketo": _2, "okoppe": _2, "otaru": _2, "otobe": _2, "otofuke": _2, "otoineppu": _2, "oumu": _2, "ozora": _2, "pippu": _2, "rankoshi": _2, "rebun": _2, "rikubetsu": _2, "rishiri": _2, "rishirifuji": _2, "saroma": _2, "sarufutsu": _2, "shakotan": _2, "shari": _2, "shibecha": _2, "shibetsu": _2, "shikabe": _2, "shikaoi": _2, "shimamaki": _2, "shimizu": _2, "shimokawa": _2, "shinshinotsu": _2, "shintoku": _2, "shiranuka": _2, "shiraoi": _2, "shiriuchi": _2, "sobetsu": _2, "sunagawa": _2, "taiki": _2, "takasu": _2, "takikawa": _2, "takinoue": _2, "teshikaga": _2, "tobetsu": _2, "tohma": _2, "tomakomai": _2, "tomari": _2, "toya": _2, "toyako": _2, "toyotomi": _2, "toyoura": _2, "tsubetsu": _2, "tsukigata": _2, "urakawa": _2, "urausu": _2, "uryu": _2, "utashinai": _2, "wakkanai": _2, "wassamu": _2, "yakumo": _2, "yoichi": _2 }], "hyogo": [1, { "aioi": _2, "akashi": _2, "ako": _2, "amagasaki": _2, "aogaki": _2, "asago": _2, "ashiya": _2, "awaji": _2, "fukusaki": _2, "goshiki": _2, "harima": _2, "himeji": _2, "ichikawa": _2, "inagawa": _2, "itami": _2, "kakogawa": _2, "kamigori": _2, "kamikawa": _2, "kasai": _2, "kasuga": _2, "kawanishi": _2, "miki": _2, "minamiawaji": _2, "nishinomiya": _2, "nishiwaki": _2, "ono": _2, "sanda": _2, "sannan": _2, "sasayama": _2, "sayo": _2, "shingu": _2, "shinonsen": _2, "shiso": _2, "sumoto": _2, "taishi": _2, "taka": _2, "takarazuka": _2, "takasago": _2, "takino": _2, "tamba": _2, "tatsuno": _2, "toyooka": _2, "yabu": _2, "yashiro": _2, "yoka": _2, "yokawa": _2 }], "ibaraki": [1, { "ami": _2, "asahi": _2, "bando": _2, "chikusei": _2, "daigo": _2, "fujishiro": _2, "hitachi": _2, "hitachinaka": _2, "hitachiomiya": _2, "hitachiota": _2, "ibaraki": _2, "ina": _2, "inashiki": _2, "itako": _2, "iwama": _2, "joso": _2, "kamisu": _2, "kasama": _2, "kashima": _2, "kasumigaura": _2, "koga": _2, "miho": _2, "mito": _2, "moriya": _2, "naka": _2, "namegata": _2, "oarai": _2, "ogawa": _2, "omitama": _2, "ryugasaki": _2, "sakai": _2, "sakuragawa": _2, "shimodate": _2, "shimotsuma": _2, "shirosato": _2, "sowa": _2, "suifu": _2, "takahagi": _2, "tamatsukuri": _2, "tokai": _2, "tomobe": _2, "tone": _2, "toride": _2, "tsuchiura": _2, "tsukuba": _2, "uchihara": _2, "ushiku": _2, "yachiyo": _2, "yamagata": _2, "yawara": _2, "yuki": _2 }], "ishikawa": [1, { "anamizu": _2, "hakui": _2, "hakusan": _2, "kaga": _2, "kahoku": _2, "kanazawa": _2, "kawakita": _2, "komatsu": _2, "nakanoto": _2, "nanao": _2, "nomi": _2, "nonoichi": _2, "noto": _2, "shika": _2, "suzu": _2, "tsubata": _2, "tsurugi": _2, "uchinada": _2, "wajima": _2 }], "iwate": [1, { "fudai": _2, "fujisawa": _2, "hanamaki": _2, "hiraizumi": _2, "hirono": _2, "ichinohe": _2, "ichinoseki": _2, "iwaizumi": _2, "iwate": _2, "joboji": _2, "kamaishi": _2, "kanegasaki": _2, "karumai": _2, "kawai": _2, "kitakami": _2, "kuji": _2, "kunohe": _2, "kuzumaki": _2, "miyako": _2, "mizusawa": _2, "morioka": _2, "ninohe": _2, "noda": _2, "ofunato": _2, "oshu": _2, "otsuchi": _2, "rikuzentakata": _2, "shiwa": _2, "shizukuishi": _2, "sumita": _2, "tanohata": _2, "tono": _2, "yahaba": _2, "yamada": _2 }], "kagawa": [1, { "ayagawa": _2, "higashikagawa": _2, "kanonji": _2, "kotohira": _2, "manno": _2, "marugame": _2, "mitoyo": _2, "naoshima": _2, "sanuki": _2, "tadotsu": _2, "takamatsu": _2, "tonosho": _2, "uchinomi": _2, "utazu": _2, "zentsuji": _2 }], "kagoshima": [1, { "akune": _2, "amami": _2, "hioki": _2, "isa": _2, "isen": _2, "izumi": _2, "kagoshima": _2, "kanoya": _2, "kawanabe": _2, "kinko": _2, "kouyama": _2, "makurazaki": _2, "matsumoto": _2, "minamitane": _2, "nakatane": _2, "nishinoomote": _2, "satsumasendai": _2, "soo": _2, "tarumizu": _2, "yusui": _2 }], "kanagawa": [1, { "aikawa": _2, "atsugi": _2, "ayase": _2, "chigasaki": _2, "ebina": _2, "fujisawa": _2, "hadano": _2, "hakone": _2, "hiratsuka": _2, "isehara": _2, "kaisei": _2, "kamakura": _2, "kiyokawa": _2, "matsuda": _2, "minamiashigara": _2, "miura": _2, "nakai": _2, "ninomiya": _2, "odawara": _2, "oi": _2, "oiso": _2, "sagamihara": _2, "samukawa": _2, "tsukui": _2, "yamakita": _2, "yamato": _2, "yokosuka": _2, "yugawara": _2, "zama": _2, "zushi": _2 }], "kochi": [1, { "aki": _2, "geisei": _2, "hidaka": _2, "higashitsuno": _2, "ino": _2, "kagami": _2, "kami": _2, "kitagawa": _2, "kochi": _2, "mihara": _2, "motoyama": _2, "muroto": _2, "nahari": _2, "nakamura": _2, "nankoku": _2, "nishitosa": _2, "niyodogawa": _2, "ochi": _2, "okawa": _2, "otoyo": _2, "otsuki": _2, "sakawa": _2, "sukumo": _2, "susaki": _2, "tosa": _2, "tosashimizu": _2, "toyo": _2, "tsuno": _2, "umaji": _2, "yasuda": _2, "yusuhara": _2 }], "kumamoto": [1, { "amakusa": _2, "arao": _2, "aso": _2, "choyo": _2, "gyokuto": _2, "kamiamakusa": _2, "kikuchi": _2, "kumamoto": _2, "mashiki": _2, "mifune": _2, "minamata": _2, "minamioguni": _2, "nagasu": _2, "nishihara": _2, "oguni": _2, "ozu": _2, "sumoto": _2, "takamori": _2, "uki": _2, "uto": _2, "yamaga": _2, "yamato": _2, "yatsushiro": _2 }], "kyoto": [1, { "ayabe": _2, "fukuchiyama": _2, "higashiyama": _2, "ide": _2, "ine": _2, "joyo": _2, "kameoka": _2, "kamo": _2, "kita": _2, "kizu": _2, "kumiyama": _2, "kyotamba": _2, "kyotanabe": _2, "kyotango": _2, "maizuru": _2, "minami": _2, "minamiyamashiro": _2, "miyazu": _2, "muko": _2, "nagaokakyo": _2, "nakagyo": _2, "nantan": _2, "oyamazaki": _2, "sakyo": _2, "seika": _2, "tanabe": _2, "uji": _2, "ujitawara": _2, "wazuka": _2, "yamashina": _2, "yawata": _2 }], "mie": [1, { "asahi": _2, "inabe": _2, "ise": _2, "kameyama": _2, "kawagoe": _2, "kiho": _2, "kisosaki": _2, "kiwa": _2, "komono": _2, "kumano": _2, "kuwana": _2, "matsusaka": _2, "meiwa": _2, "mihama": _2, "minamiise": _2, "misugi": _2, "miyama": _2, "nabari": _2, "shima": _2, "suzuka": _2, "tado": _2, "taiki": _2, "taki": _2, "tamaki": _2, "toba": _2, "tsu": _2, "udono": _2, "ureshino": _2, "watarai": _2, "yokkaichi": _2 }], "miyagi": [1, { "furukawa": _2, "higashimatsushima": _2, "ishinomaki": _2, "iwanuma": _2, "kakuda": _2, "kami": _2, "kawasaki": _2, "marumori": _2, "matsushima": _2, "minamisanriku": _2, "misato": _2, "murata": _2, "natori": _2, "ogawara": _2, "ohira": _2, "onagawa": _2, "osaki": _2, "rifu": _2, "semine": _2, "shibata": _2, "shichikashuku": _2, "shikama": _2, "shiogama": _2, "shiroishi": _2, "tagajo": _2, "taiwa": _2, "tome": _2, "tomiya": _2, "wakuya": _2, "watari": _2, "yamamoto": _2, "zao": _2 }], "miyazaki": [1, { "aya": _2, "ebino": _2, "gokase": _2, "hyuga": _2, "kadogawa": _2, "kawaminami": _2, "kijo": _2, "kitagawa": _2, "kitakata": _2, "kitaura": _2, "kobayashi": _2, "kunitomi": _2, "kushima": _2, "mimata": _2, "miyakonojo": _2, "miyazaki": _2, "morotsuka": _2, "nichinan": _2, "nishimera": _2, "nobeoka": _2, "saito": _2, "shiiba": _2, "shintomi": _2, "takaharu": _2, "takanabe": _2, "takazaki": _2, "tsuno": _2 }], "nagano": [1, { "achi": _2, "agematsu": _2, "anan": _2, "aoki": _2, "asahi": _2, "azumino": _2, "chikuhoku": _2, "chikuma": _2, "chino": _2, "fujimi": _2, "hakuba": _2, "hara": _2, "hiraya": _2, "iida": _2, "iijima": _2, "iiyama": _2, "iizuna": _2, "ikeda": _2, "ikusaka": _2, "ina": _2, "karuizawa": _2, "kawakami": _2, "kiso": _2, "kisofukushima": _2, "kitaaiki": _2, "komagane": _2, "komoro": _2, "matsukawa": _2, "matsumoto": _2, "miasa": _2, "minamiaiki": _2, "minamimaki": _2, "minamiminowa": _2, "minowa": _2, "miyada": _2, "miyota": _2, "mochizuki": _2, "nagano": _2, "nagawa": _2, "nagiso": _2, "nakagawa": _2, "nakano": _2, "nozawaonsen": _2, "obuse": _2, "ogawa": _2, "okaya": _2, "omachi": _2, "omi": _2, "ookuwa": _2, "ooshika": _2, "otaki": _2, "otari": _2, "sakae": _2, "sakaki": _2, "saku": _2, "sakuho": _2, "shimosuwa": _2, "shinanomachi": _2, "shiojiri": _2, "suwa": _2, "suzaka": _2, "takagi": _2, "takamori": _2, "takayama": _2, "tateshina": _2, "tatsuno": _2, "togakushi": _2, "togura": _2, "tomi": _2, "ueda": _2, "wada": _2, "yamagata": _2, "yamanouchi": _2, "yasaka": _2, "yasuoka": _2 }], "nagasaki": [1, { "chijiwa": _2, "futsu": _2, "goto": _2, "hasami": _2, "hirado": _2, "iki": _2, "isahaya": _2, "kawatana": _2, "kuchinotsu": _2, "matsuura": _2, "nagasaki": _2, "obama": _2, "omura": _2, "oseto": _2, "saikai": _2, "sasebo": _2, "seihi": _2, "shimabara": _2, "shinkamigoto": _2, "togitsu": _2, "tsushima": _2, "unzen": _2 }], "nara": [1, { "ando": _2, "gose": _2, "heguri": _2, "higashiyoshino": _2, "ikaruga": _2, "ikoma": _2, "kamikitayama": _2, "kanmaki": _2, "kashiba": _2, "kashihara": _2, "katsuragi": _2, "kawai": _2, "kawakami": _2, "kawanishi": _2, "koryo": _2, "kurotaki": _2, "mitsue": _2, "miyake": _2, "nara": _2, "nosegawa": _2, "oji": _2, "ouda": _2, "oyodo": _2, "sakurai": _2, "sango": _2, "shimoichi": _2, "shimokitayama": _2, "shinjo": _2, "soni": _2, "takatori": _2, "tawaramoto": _2, "tenkawa": _2, "tenri": _2, "uda": _2, "yamatokoriyama": _2, "yamatotakada": _2, "yamazoe": _2, "yoshino": _2 }], "niigata": [1, { "aga": _2, "agano": _2, "gosen": _2, "itoigawa": _2, "izumozaki": _2, "joetsu": _2, "kamo": _2, "kariwa": _2, "kashiwazaki": _2, "minamiuonuma": _2, "mitsuke": _2, "muika": _2, "murakami": _2, "myoko": _2, "nagaoka": _2, "niigata": _2, "ojiya": _2, "omi": _2, "sado": _2, "sanjo": _2, "seiro": _2, "seirou": _2, "sekikawa": _2, "shibata": _2, "tagami": _2, "tainai": _2, "tochio": _2, "tokamachi": _2, "tsubame": _2, "tsunan": _2, "uonuma": _2, "yahiko": _2, "yoita": _2, "yuzawa": _2 }], "oita": [1, { "beppu": _2, "bungoono": _2, "bungotakada": _2, "hasama": _2, "hiji": _2, "himeshima": _2, "hita": _2, "kamitsue": _2, "kokonoe": _2, "kuju": _2, "kunisaki": _2, "kusu": _2, "oita": _2, "saiki": _2, "taketa": _2, "tsukumi": _2, "usa": _2, "usuki": _2, "yufu": _2 }], "okayama": [1, { "akaiwa": _2, "asakuchi": _2, "bizen": _2, "hayashima": _2, "ibara": _2, "kagamino": _2, "kasaoka": _2, "kibichuo": _2, "kumenan": _2, "kurashiki": _2, "maniwa": _2, "misaki": _2, "nagi": _2, "niimi": _2, "nishiawakura": _2, "okayama": _2, "satosho": _2, "setouchi": _2, "shinjo": _2, "shoo": _2, "soja": _2, "takahashi": _2, "tamano": _2, "tsuyama": _2, "wake": _2, "yakage": _2 }], "okinawa": [1, { "aguni": _2, "ginowan": _2, "ginoza": _2, "gushikami": _2, "haebaru": _2, "higashi": _2, "hirara": _2, "iheya": _2, "ishigaki": _2, "ishikawa": _2, "itoman": _2, "izena": _2, "kadena": _2, "kin": _2, "kitadaito": _2, "kitanakagusuku": _2, "kumejima": _2, "kunigami": _2, "minamidaito": _2, "motobu": _2, "nago": _2, "naha": _2, "nakagusuku": _2, "nakijin": _2, "nanjo": _2, "nishihara": _2, "ogimi": _2, "okinawa": _2, "onna": _2, "shimoji": _2, "taketomi": _2, "tarama": _2, "tokashiki": _2, "tomigusuku": _2, "tonaki": _2, "urasoe": _2, "uruma": _2, "yaese": _2, "yomitan": _2, "yonabaru": _2, "yonaguni": _2, "zamami": _2 }], "osaka": [1, { "abeno": _2, "chihayaakasaka": _2, "chuo": _2, "daito": _2, "fujiidera": _2, "habikino": _2, "hannan": _2, "higashiosaka": _2, "higashisumiyoshi": _2, "higashiyodogawa": _2, "hirakata": _2, "ibaraki": _2, "ikeda": _2, "izumi": _2, "izumiotsu": _2, "izumisano": _2, "kadoma": _2, "kaizuka": _2, "kanan": _2, "kashiwara": _2, "katano": _2, "kawachinagano": _2, "kishiwada": _2, "kita": _2, "kumatori": _2, "matsubara": _2, "minato": _2, "minoh": _2, "misaki": _2, "moriguchi": _2, "neyagawa": _2, "nishi": _2, "nose": _2, "osakasayama": _2, "sakai": _2, "sayama": _2, "sennan": _2, "settsu": _2, "shijonawate": _2, "shimamoto": _2, "suita": _2, "tadaoka": _2, "taishi": _2, "tajiri": _2, "takaishi": _2, "takatsuki": _2, "tondabayashi": _2, "toyonaka": _2, "toyono": _2, "yao": _2 }], "saga": [1, { "ariake": _2, "arita": _2, "fukudomi": _2, "genkai": _2, "hamatama": _2, "hizen": _2, "imari": _2, "kamimine": _2, "kanzaki": _2, "karatsu": _2, "kashima": _2, "kitagata": _2, "kitahata": _2, "kiyama": _2, "kouhoku": _2, "kyuragi": _2, "nishiarita": _2, "ogi": _2, "omachi": _2, "ouchi": _2, "saga": _2, "shiroishi": _2, "taku": _2, "tara": _2, "tosu": _2, "yoshinogari": _2 }], "saitama": [1, { "arakawa": _2, "asaka": _2, "chichibu": _2, "fujimi": _2, "fujimino": _2, "fukaya": _2, "hanno": _2, "hanyu": _2, "hasuda": _2, "hatogaya": _2, "hatoyama": _2, "hidaka": _2, "higashichichibu": _2, "higashimatsuyama": _2, "honjo": _2, "ina": _2, "iruma": _2, "iwatsuki": _2, "kamiizumi": _2, "kamikawa": _2, "kamisato": _2, "kasukabe": _2, "kawagoe": _2, "kawaguchi": _2, "kawajima": _2, "kazo": _2, "kitamoto": _2, "koshigaya": _2, "kounosu": _2, "kuki": _2, "kumagaya": _2, "matsubushi": _2, "minano": _2, "misato": _2, "miyashiro": _2, "miyoshi": _2, "moroyama": _2, "nagatoro": _2, "namegawa": _2, "niiza": _2, "ogano": _2, "ogawa": _2, "ogose": _2, "okegawa": _2, "omiya": _2, "otaki": _2, "ranzan": _2, "ryokami": _2, "saitama": _2, "sakado": _2, "satte": _2, "sayama": _2, "shiki": _2, "shiraoka": _2, "soka": _2, "sugito": _2, "toda": _2, "tokigawa": _2, "tokorozawa": _2, "tsurugashima": _2, "urawa": _2, "warabi": _2, "yashio": _2, "yokoze": _2, "yono": _2, "yorii": _2, "yoshida": _2, "yoshikawa": _2, "yoshimi": _2 }], "shiga": [1, { "aisho": _2, "gamo": _2, "higashiomi": _2, "hikone": _2, "koka": _2, "konan": _2, "kosei": _2, "koto": _2, "kusatsu": _2, "maibara": _2, "moriyama": _2, "nagahama": _2, "nishiazai": _2, "notogawa": _2, "omihachiman": _2, "otsu": _2, "ritto": _2, "ryuoh": _2, "takashima": _2, "takatsuki": _2, "torahime": _2, "toyosato": _2, "yasu": _2 }], "shimane": [1, { "akagi": _2, "ama": _2, "gotsu": _2, "hamada": _2, "higashiizumo": _2, "hikawa": _2, "hikimi": _2, "izumo": _2, "kakinoki": _2, "masuda": _2, "matsue": _2, "misato": _2, "nishinoshima": _2, "ohda": _2, "okinoshima": _2, "okuizumo": _2, "shimane": _2, "tamayu": _2, "tsuwano": _2, "unnan": _2, "yakumo": _2, "yasugi": _2, "yatsuka": _2 }], "shizuoka": [1, { "arai": _2, "atami": _2, "fuji": _2, "fujieda": _2, "fujikawa": _2, "fujinomiya": _2, "fukuroi": _2, "gotemba": _2, "haibara": _2, "hamamatsu": _2, "higashiizu": _2, "ito": _2, "iwata": _2, "izu": _2, "izunokuni": _2, "kakegawa": _2, "kannami": _2, "kawanehon": _2, "kawazu": _2, "kikugawa": _2, "kosai": _2, "makinohara": _2, "matsuzaki": _2, "minamiizu": _2, "mishima": _2, "morimachi": _2, "nishiizu": _2, "numazu": _2, "omaezaki": _2, "shimada": _2, "shimizu": _2, "shimoda": _2, "shizuoka": _2, "susono": _2, "yaizu": _2, "yoshida": _2 }], "tochigi": [1, { "ashikaga": _2, "bato": _2, "haga": _2, "ichikai": _2, "iwafune": _2, "kaminokawa": _2, "kanuma": _2, "karasuyama": _2, "kuroiso": _2, "mashiko": _2, "mibu": _2, "moka": _2, "motegi": _2, "nasu": _2, "nasushiobara": _2, "nikko": _2, "nishikata": _2, "nogi": _2, "ohira": _2, "ohtawara": _2, "oyama": _2, "sakura": _2, "sano": _2, "shimotsuke": _2, "shioya": _2, "takanezawa": _2, "tochigi": _2, "tsuga": _2, "ujiie": _2, "utsunomiya": _2, "yaita": _2 }], "tokushima": [1, { "aizumi": _2, "anan": _2, "ichiba": _2, "itano": _2, "kainan": _2, "komatsushima": _2, "matsushige": _2, "mima": _2, "minami": _2, "miyoshi": _2, "mugi": _2, "nakagawa": _2, "naruto": _2, "sanagochi": _2, "shishikui": _2, "tokushima": _2, "wajiki": _2 }], "tokyo": [1, { "adachi": _2, "akiruno": _2, "akishima": _2, "aogashima": _2, "arakawa": _2, "bunkyo": _2, "chiyoda": _2, "chofu": _2, "chuo": _2, "edogawa": _2, "fuchu": _2, "fussa": _2, "hachijo": _2, "hachioji": _2, "hamura": _2, "higashikurume": _2, "higashimurayama": _2, "higashiyamato": _2, "hino": _2, "hinode": _2, "hinohara": _2, "inagi": _2, "itabashi": _2, "katsushika": _2, "kita": _2, "kiyose": _2, "kodaira": _2, "koganei": _2, "kokubunji": _2, "komae": _2, "koto": _2, "kouzushima": _2, "kunitachi": _2, "machida": _2, "meguro": _2, "minato": _2, "mitaka": _2, "mizuho": _2, "musashimurayama": _2, "musashino": _2, "nakano": _2, "nerima": _2, "ogasawara": _2, "okutama": _2, "ome": _2, "oshima": _2, "ota": _2, "setagaya": _2, "shibuya": _2, "shinagawa": _2, "shinjuku": _2, "suginami": _2, "sumida": _2, "tachikawa": _2, "taito": _2, "tama": _2, "toshima": _2 }], "tottori": [1, { "chizu": _2, "hino": _2, "kawahara": _2, "koge": _2, "kotoura": _2, "misasa": _2, "nanbu": _2, "nichinan": _2, "sakaiminato": _2, "tottori": _2, "wakasa": _2, "yazu": _2, "yonago": _2 }], "toyama": [1, { "asahi": _2, "fuchu": _2, "fukumitsu": _2, "funahashi": _2, "himi": _2, "imizu": _2, "inami": _2, "johana": _2, "kamiichi": _2, "kurobe": _2, "nakaniikawa": _2, "namerikawa": _2, "nanto": _2, "nyuzen": _2, "oyabe": _2, "taira": _2, "takaoka": _2, "tateyama": _2, "toga": _2, "tonami": _2, "toyama": _2, "unazuki": _2, "uozu": _2, "yamada": _2 }], "wakayama": [1, { "arida": _2, "aridagawa": _2, "gobo": _2, "hashimoto": _2, "hidaka": _2, "hirogawa": _2, "inami": _2, "iwade": _2, "kainan": _2, "kamitonda": _2, "katsuragi": _2, "kimino": _2, "kinokawa": _2, "kitayama": _2, "koya": _2, "koza": _2, "kozagawa": _2, "kudoyama": _2, "kushimoto": _2, "mihama": _2, "misato": _2, "nachikatsuura": _2, "shingu": _2, "shirahama": _2, "taiji": _2, "tanabe": _2, "wakayama": _2, "yuasa": _2, "yura": _2 }], "yamagata": [1, { "asahi": _2, "funagata": _2, "higashine": _2, "iide": _2, "kahoku": _2, "kaminoyama": _2, "kaneyama": _2, "kawanishi": _2, "mamurogawa": _2, "mikawa": _2, "murayama": _2, "nagai": _2, "nakayama": _2, "nanyo": _2, "nishikawa": _2, "obanazawa": _2, "oe": _2, "oguni": _2, "ohkura": _2, "oishida": _2, "sagae": _2, "sakata": _2, "sakegawa": _2, "shinjo": _2, "shirataka": _2, "shonai": _2, "takahata": _2, "tendo": _2, "tozawa": _2, "tsuruoka": _2, "yamagata": _2, "yamanobe": _2, "yonezawa": _2, "yuza": _2 }], "yamaguchi": [1, { "abu": _2, "hagi": _2, "hikari": _2, "hofu": _2, "iwakuni": _2, "kudamatsu": _2, "mitou": _2, "nagato": _2, "oshima": _2, "shimonoseki": _2, "shunan": _2, "tabuse": _2, "tokuyama": _2, "toyota": _2, "ube": _2, "yuu": _2 }], "yamanashi": [1, { "chuo": _2, "doshi": _2, "fuefuki": _2, "fujikawa": _2, "fujikawaguchiko": _2, "fujiyoshida": _2, "hayakawa": _2, "hokuto": _2, "ichikawamisato": _2, "kai": _2, "kofu": _2, "koshu": _2, "kosuge": _2, "minami-alps": _2, "minobu": _2, "nakamichi": _2, "nanbu": _2, "narusawa": _2, "nirasaki": _2, "nishikatsura": _2, "oshino": _2, "otsuki": _2, "showa": _2, "tabayama": _2, "tsuru": _2, "uenohara": _2, "yamanakako": _2, "yamanashi": _2 }], "xn--4pvxs": _2, "\u6803\u6728": _2, "xn--vgu402c": _2, "\u611B\u77E5": _2, "xn--c3s14m": _2, "\u611B\u5A9B": _2, "xn--f6qx53a": _2, "\u5175\u5EAB": _2, "xn--8pvr4u": _2, "\u718A\u672C": _2, "xn--uist22h": _2, "\u8328\u57CE": _2, "xn--djrs72d6uy": _2, "\u5317\u6D77\u9053": _2, "xn--mkru45i": _2, "\u5343\u8449": _2, "xn--0trq7p7nn": _2, "\u548C\u6B4C\u5C71": _2, "xn--8ltr62k": _2, "\u9577\u5D0E": _2, "xn--2m4a15e": _2, "\u9577\u91CE": _2, "xn--efvn9s": _2, "\u65B0\u6F5F": _2, "xn--32vp30h": _2, "\u9752\u68EE": _2, "xn--4it797k": _2, "\u9759\u5CA1": _2, "xn--1lqs71d": _2, "\u6771\u4EAC": _2, "xn--5rtp49c": _2, "\u77F3\u5DDD": _2, "xn--5js045d": _2, "\u57FC\u7389": _2, "xn--ehqz56n": _2, "\u4E09\u91CD": _2, "xn--1lqs03n": _2, "\u4EAC\u90FD": _2, "xn--qqqt11m": _2, "\u4F50\u8CC0": _2, "xn--kbrq7o": _2, "\u5927\u5206": _2, "xn--pssu33l": _2, "\u5927\u962A": _2, "xn--ntsq17g": _2, "\u5948\u826F": _2, "xn--uisz3g": _2, "\u5BAE\u57CE": _2, "xn--6btw5a": _2, "\u5BAE\u5D0E": _2, "xn--1ctwo": _2, "\u5BCC\u5C71": _2, "xn--6orx2r": _2, "\u5C71\u53E3": _2, "xn--rht61e": _2, "\u5C71\u5F62": _2, "xn--rht27z": _2, "\u5C71\u68A8": _2, "xn--djty4k": _2, "\u5CA9\u624B": _2, "xn--nit225k": _2, "\u5C90\u961C": _2, "xn--rht3d": _2, "\u5CA1\u5C71": _2, "xn--klty5x": _2, "\u5CF6\u6839": _2, "xn--kltx9a": _2, "\u5E83\u5CF6": _2, "xn--kltp7d": _2, "\u5FB3\u5CF6": _2, "xn--uuwu58a": _2, "\u6C96\u7E04": _2, "xn--zbx025d": _2, "\u6ECB\u8CC0": _2, "xn--ntso0iqx3a": _2, "\u795E\u5948\u5DDD": _2, "xn--elqq16h": _2, "\u798F\u4E95": _2, "xn--4it168d": _2, "\u798F\u5CA1": _2, "xn--klt787d": _2, "\u798F\u5CF6": _2, "xn--rny31h": _2, "\u79CB\u7530": _2, "xn--7t0a264c": _2, "\u7FA4\u99AC": _2, "xn--5rtq34k": _2, "\u9999\u5DDD": _2, "xn--k7yn95e": _2, "\u9AD8\u77E5": _2, "xn--tor131o": _2, "\u9CE5\u53D6": _2, "xn--d5qv7z876c": _2, "\u9E7F\u5150\u5CF6": _2, "kawasaki": _17, "kitakyushu": _17, "kobe": _17, "nagoya": _17, "sapporo": _17, "sendai": _17, "yokohama": _17, "buyshop": _3, "fashionstore": _3, "handcrafted": _3, "kawaiishop": _3, "supersale": _3, "theshop": _3, "0am": _3, "0g0": _3, "0j0": _3, "0t0": _3, "mydns": _3, "pgw": _3, "wjg": _3, "usercontent": _3, "angry": _3, "babyblue": _3, "babymilk": _3, "backdrop": _3, "bambina": _3, "bitter": _3, "blush": _3, "boo": _3, "boy": _3, "boyfriend": _3, "but": _3, "candypop": _3, "capoo": _3, "catfood": _3, "cheap": _3, "chicappa": _3, "chillout": _3, "chips": _3, "chowder": _3, "chu": _3, "ciao": _3, "cocotte": _3, "coolblog": _3, "cranky": _3, "cutegirl": _3, "daa": _3, "deca": _3, "deci": _3, "digick": _3, "egoism": _3, "fakefur": _3, "fem": _3, "flier": _3, "floppy": _3, "fool": _3, "frenchkiss": _3, "girlfriend": _3, "girly": _3, "gloomy": _3, "gonna": _3, "greater": _3, "hacca": _3, "heavy": _3, "her": _3, "hiho": _3, "hippy": _3, "holy": _3, "hungry": _3, "icurus": _3, "itigo": _3, "jellybean": _3, "kikirara": _3, "kill": _3, "kilo": _3, "kuron": _3, "littlestar": _3, "lolipopmc": _3, "lolitapunk": _3, "lomo": _3, "lovepop": _3, "lovesick": _3, "main": _3, "mods": _3, "mond": _3, "mongolian": _3, "moo": _3, "namaste": _3, "nikita": _3, "nobushi": _3, "noor": _3, "oops": _3, "parallel": _3, "parasite": _3, "pecori": _3, "peewee": _3, "penne": _3, "pepper": _3, "perma": _3, "pigboat": _3, "pinoko": _3, "punyu": _3, "pupu": _3, "pussycat": _3, "pya": _3, "raindrop": _3, "readymade": _3, "sadist": _3, "schoolbus": _3, "secret": _3, "staba": _3, "stripper": _3, "sub": _3, "sunnyday": _3, "thick": _3, "tonkotsu": _3, "under": _3, "upper": _3, "velvet": _3, "verse": _3, "versus": _3, "vivian": _3, "watson": _3, "weblike": _3, "whitesnow": _3, "zombie": _3, "blogspot": _3, "hateblo": _3, "hatenablog": _3, "hatenadiary": _3, "2-d": _3, "bona": _3, "crap": _3, "daynight": _3, "eek": _3, "flop": _3, "halfmoon": _3, "jeez": _3, "matrix": _3, "mimoza": _3, "netgamers": _3, "nyanta": _3, "o0o0": _3, "rdy": _3, "rgr": _3, "rulez": _3, "sakurastorage": [0, { "isk01": _53, "isk02": _53 }], "saloon": _3, "sblo": _3, "skr": _3, "tank": _3, "uh-oh": _3, "undo": _3, "webaccel": [0, { "rs": _3, "user": _3 }], "websozai": _3, "xii": _3 }], "ke": [1, { "ac": _2, "co": _10, "go": _2, "info": _2, "me": _2, "mobi": _2, "ne": _2, "or": _2, "sc": _2 }], "kg": [1, { "org": _2, "net": _2, "com": _2, "edu": _2, "gov": _2, "mil": _2, "us": _3 }], "kh": _17, "ki": _54, "km": [1, { "org": _2, "nom": _2, "gov": _2, "prd": _2, "tm": _2, "edu": _2, "mil": _2, "ass": _2, "com": _2, "coop": _2, "asso": _2, "presse": _2, "medecin": _2, "notaires": _2, "pharmaciens": _2, "veterinaire": _2, "gouv": _2 }], "kn": [1, { "net": _2, "org": _2, "edu": _2, "gov": _2 }], "kp": [1, { "com": _2, "edu": _2, "gov": _2, "org": _2, "rep": _2, "tra": _2 }], "kr": [1, { "ac": _2, "co": _2, "es": _2, "go": _2, "hs": _2, "kg": _2, "mil": _2, "ms": _2, "ne": _2, "or": _2, "pe": _2, "re": _2, "sc": _2, "busan": _2, "chungbuk": _2, "chungnam": _2, "daegu": _2, "daejeon": _2, "gangwon": _2, "gwangju": _2, "gyeongbuk": _2, "gyeonggi": _2, "gyeongnam": _2, "incheon": _2, "jeju": _2, "jeonbuk": _2, "jeonnam": _2, "seoul": _2, "ulsan": _2, "blogspot": _3 }], "kw": [1, { "com": _2, "edu": _2, "emb": _2, "gov": _2, "ind": _2, "net": _2, "org": _2 }], "ky": _44, "kz": [1, { "org": _2, "edu": _2, "net": _2, "gov": _2, "mil": _2, "com": _2, "jcloud": _3 }], "la": [1, { "int": _2, "net": _2, "info": _2, "edu": _2, "gov": _2, "per": _2, "com": _2, "org": _2, "bnr": _3 }], "lb": _4, "lc": [1, { "com": _2, "net": _2, "co": _2, "org": _2, "edu": _2, "gov": _2, "oy": _3 }], "li": [1, { "blogspot": _3, "caa": _3 }], "lk": [1, { "gov": _2, "sch": _2, "net": _2, "int": _2, "com": _2, "org": _2, "edu": _2, "ngo": _2, "soc": _2, "web": _2, "ltd": _2, "assn": _2, "grp": _2, "hotel": _2, "ac": _2 }], "lr": _4, "ls": [1, { "ac": _2, "biz": _2, "co": _2, "edu": _2, "gov": _2, "info": _2, "net": _2, "org": _2, "sc": _2 }], "lt": _55, "lu": [1, { "blogspot": _3, "123website": _3 }], "lv": [1, { "com": _2, "edu": _2, "gov": _2, "org": _2, "mil": _2, "id": _2, "net": _2, "asn": _2, "conf": _2 }], "ly": [1, { "com": _2, "net": _2, "gov": _2, "plc": _2, "edu": _2, "sch": _2, "med": _2, "org": _2, "id": _2 }], "ma": [1, { "co": _2, "net": _2, "gov": _2, "org": _2, "ac": _2, "press": _2 }], "mc": [1, { "tm": _2, "asso": _2 }], "md": [1, { "blogspot": _3, "ir": _3 }], "me": [1, { "co": _2, "net": _2, "org": _2, "edu": _2, "ac": _2, "gov": _2, "its": _2, "priv": _2, "c66": _3, "craft": _3, "daplie": [2, { "localhost": _3 }], "edgestack": _3, "filegear": _3, "glitch": _3, "filegear-sg": _3, "lohmus": _3, "barsy": _3, "mcdir": _3, "mcpe": _3, "brasilia": _3, "ddns": _3, "dnsfor": _3, "hopto": _3, "loginto": _3, "noip": _3, "webhop": _3, "soundcast": _3, "tcp4": _3, "vp4": _3, "diskstation": _3, "dscloud": _3, "i234": _3, "myds": _3, "synology": _3, "transip": _42, "yombo": _3, "nohost": _3 }], "mg": [1, { "org": _2, "nom": _2, "gov": _2, "prd": _2, "tm": _2, "edu": _2, "mil": _2, "com": _2, "co": _2 }], "mh": _2, "mil": _2, "mk": [1, { "com": _2, "org": _2, "net": _2, "edu": _2, "gov": _2, "inf": _2, "name": _2, "blogspot": _3 }], "ml": [1, { "com": _2, "edu": _2, "gouv": _2, "gov": _2, "net": _2, "org": _2, "presse": _2 }], "mm": _17, "mn": [1, { "gov": _2, "edu": _2, "org": _2, "nyc": _3 }], "mo": _4, "mobi": [1, { "barsy": _3, "dscloud": _3 }], "mp": [1, { "ju": _3 }], "mq": _2, "mr": _55, "ms": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "lab": _3, "minisite": _3 }], "mt": [1, { "com": _10, "edu": _2, "net": _2, "org": _2 }], "mu": [1, { "com": _2, "net": _2, "org": _2, "gov": _2, "ac": _2, "co": _2, "or": _2 }], "museum": _2, "mv": [1, { "aero": _2, "biz": _2, "com": _2, "coop": _2, "edu": _2, "gov": _2, "info": _2, "int": _2, "mil": _2, "museum": _2, "name": _2, "net": _2, "org": _2, "pro": _2 }], "mw": [1, { "ac": _2, "biz": _2, "co": _2, "com": _2, "coop": _2, "edu": _2, "gov": _2, "int": _2, "museum": _2, "net": _2, "org": _2 }], "mx": [1, { "com": _2, "org": _2, "gob": _2, "edu": _2, "net": _2, "blogspot": _3 }], "my": [1, { "biz": _2, "com": _2, "edu": _2, "gov": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "blogspot": _3 }], "mz": [1, { "ac": _2, "adv": _2, "co": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2 }], "na": [1, { "info": _2, "pro": _2, "name": _2, "school": _2, "or": _2, "dr": _2, "us": _2, "mx": _2, "ca": _2, "in": _2, "cc": _2, "tv": _2, "ws": _2, "mobi": _2, "co": _2, "com": _2, "org": _2 }], "name": [1, { "her": _57, "his": _57 }], "nc": [1, { "asso": _2, "nom": _2 }], "ne": _2, "net": [1, { "adobeaemcloud": _3, "adobeio-static": _3, "adobeioruntime": _3, "akadns": _3, "akamai": _3, "akamai-staging": _3, "akamaiedge": _3, "akamaiedge-staging": _3, "akamaihd": _3, "akamaihd-staging": _3, "akamaiorigin": _3, "akamaiorigin-staging": _3, "akamaized": _3, "akamaized-staging": _3, "edgekey": _3, "edgekey-staging": _3, "edgesuite": _3, "edgesuite-staging": _3, "alwaysdata": _3, "myamaze": _3, "cloudfront": _3, "appudo": _3, "atlassian-dev": [0, { "prod": _58 }], "myfritz": _3, "onavstack": _3, "shopselect": _3, "blackbaudcdn": _3, "boomla": _3, "bplaced": _3, "square7": _3, "cdn77": [0, { "r": _3 }], "cdn77-ssl": _3, "gb": _3, "hu": _3, "jp": _3, "se": _3, "uk": _3, "clickrising": _3, "dns-cloud": _3, "dns-dynamic": _3, "cloudaccess": _3, "cloudflare": [2, { "cdn": _3 }], "cloudflareanycast": _58, "cloudflarecn": _58, "cloudflareglobal": _58, "ctfcloud": _3, "feste-ip": _3, "knx-server": _3, "static-access": _3, "cryptonomic": _5, "dattolocal": _3, "mydatto": _3, "debian": _3, "definima": _3, "at-band-camp": _3, "blogdns": _3, "broke-it": _3, "buyshouses": _3, "dnsalias": _3, "dnsdojo": _3, "does-it": _3, "dontexist": _3, "dynalias": _3, "dynathome": _3, "endofinternet": _3, "from-az": _3, "from-co": _3, "from-la": _3, "from-ny": _3, "gets-it": _3, "ham-radio-op": _3, "homeftp": _3, "homeip": _3, "homelinux": _3, "homeunix": _3, "in-the-band": _3, "is-a-chef": _3, "is-a-geek": _3, "isa-geek": _3, "kicks-ass": _3, "office-on-the": _3, "podzone": _3, "scrapper-site": _3, "selfip": _3, "sells-it": _3, "servebbs": _3, "serveftp": _3, "thruhere": _3, "webhop": _3, "casacam": _3, "dynu": _3, "dynv6": _3, "twmail": _3, "ru": _3, "channelsdvr": [2, { "u": _3 }], "fastly": [0, { "freetls": _3, "map": _3, "prod": [0, { "a": _3, "global": _3 }], "ssl": [0, { "a": _3, "b": _3, "global": _3 }] }], "fastlylb": [2, { "map": _3 }], "edgeapp": _3, "keyword-on": _3, "live-on": _3, "server-on": _3, "cdn-edges": _3, "localcert": _3, "localhostcert": _3, "heteml": _3, "cloudfunctions": _3, "iobb": _3, "moonscale": _3, "in-dsl": _3, "in-vpn": _3, "apps-1and1": _3, "ipifony": _3, "cloudjiffy": [2, { "fra1-de": _3, "west1-us": _3 }], "elastx": [0, { "jls-sto1": _3, "jls-sto2": _3, "jls-sto3": _3 }], "massivegrid": [0, { "paas": [0, { "fr-1": _3, "lon-1": _3, "lon-2": _3, "ny-1": _3, "ny-2": _3, "sg-1": _3 }] }], "saveincloud": [0, { "jelastic": _3, "nordeste-idc": _3 }], "scaleforce": _45, "kinghost": _3, "uni5": _3, "krellian": _3, "ggff": _3, "barsy": _3, "memset": _3, "azure-api": _3, "azure-mobile": _3, "azureedge": _3, "azurefd": _3, "azurestaticapps": [2, { "1": _3, "2": _3, "3": _3, "4": _3, "5": _3, "6": _3, "7": _3, "centralus": _3, "eastasia": _3, "eastus2": _3, "westeurope": _3, "westus2": _3 }], "azurewebsites": _3, "cloudapp": _3, "trafficmanager": _3, "windows": [0, { "core": [0, { "blob": _3 }], "servicebus": _3 }], "mynetname": [0, { "sn": _3 }], "routingthecloud": _3, "bounceme": _3, "ddns": _3, "eating-organic": _3, "mydissent": _3, "myeffect": _3, "mymediapc": _3, "mypsx": _3, "mysecuritycamera": _3, "nhlfan": _3, "no-ip": _3, "pgafan": _3, "privatizehealthinsurance": _3, "redirectme": _3, "serveblog": _3, "serveminecraft": _3, "sytes": _3, "dnsup": _3, "hicam": _3, "now-dns": _3, "ownip": _3, "vpndns": _3, "cloudycluster": _3, "ovh": [0, { "hosting": _5, "webpaas": _5 }], "rackmaze": _3, "myradweb": _3, "in": _3, "squares": _3, "schokokeks": _3, "firewall-gateway": _3, "seidat": _3, "senseering": _3, "siteleaf": _3, "mafelo": _3, "myspreadshop": _3, "vps-host": [2, { "jelastic": [0, { "atl": _3, "njs": _3, "ric": _3 }] }], "srcf": [0, { "soc": _3, "user": _3 }], "supabase": _3, "dsmynas": _3, "familyds": _3, "tailscale": [0, { "beta": _3 }], "ts": [2, { "c": _5 }], "torproject": [2, { "pages": _3 }], "vusercontent": _3, "reserve-online": _3, "hrsn": [0, { "t": _3 }], "community-pro": _3, "meinforum": _3, "yandexcloud": [2, { "storage": _3, "website": _3 }], "za": _3 }], "nf": [1, { "com": _2, "net": _2, "per": _2, "rec": _2, "web": _2, "arts": _2, "firm": _2, "info": _2, "other": _2, "store": _2 }], "ng": [1, { "com": _10, "edu": _2, "gov": _2, "i": _2, "mil": _2, "mobi": _2, "name": _2, "net": _2, "org": _2, "sch": _2, "biz": [2, { "co": _3, "dl": _3, "go": _3, "lg": _3, "on": _3 }], "col": _3, "firm": _3, "gen": _3, "ltd": _3, "ngo": _3, "plc": _3 }], "ni": [1, { "ac": _2, "biz": _2, "co": _2, "com": _2, "edu": _2, "gob": _2, "in": _2, "info": _2, "int": _2, "mil": _2, "net": _2, "nom": _2, "org": _2, "web": _2 }], "nl": [1, { "co": _3, "hosting-cluster": _3, "blogspot": _3, "gov": _3, "khplay": _3, "123website": _3, "myspreadshop": _3, "transurl": _5, "cistron": _3, "demon": _3 }], "no": [1, { "fhs": _2, "vgs": _2, "fylkesbibl": _2, "folkebibl": _2, "museum": _2, "idrett": _2, "priv": _2, "mil": _2, "stat": _2, "dep": _2, "kommune": _2, "herad": _2, "aa": _59, "ah": _59, "bu": _59, "fm": _59, "hl": _59, "hm": _59, "jan-mayen": _59, "mr": _59, "nl": _59, "nt": _59, "of": _59, "ol": _59, "oslo": _59, "rl": _59, "sf": _59, "st": _59, "svalbard": _59, "tm": _59, "tr": _59, "va": _59, "vf": _59, "akrehamn": _2, "xn--krehamn-dxa": _2, "\xE5krehamn": _2, "algard": _2, "xn--lgrd-poac": _2, "\xE5lg\xE5rd": _2, "arna": _2, "brumunddal": _2, "bryne": _2, "bronnoysund": _2, "xn--brnnysund-m8ac": _2, "br\xF8nn\xF8ysund": _2, "drobak": _2, "xn--drbak-wua": _2, "dr\xF8bak": _2, "egersund": _2, "fetsund": _2, "floro": _2, "xn--flor-jra": _2, "flor\xF8": _2, "fredrikstad": _2, "hokksund": _2, "honefoss": _2, "xn--hnefoss-q1a": _2, "h\xF8nefoss": _2, "jessheim": _2, "jorpeland": _2, "xn--jrpeland-54a": _2, "j\xF8rpeland": _2, "kirkenes": _2, "kopervik": _2, "krokstadelva": _2, "langevag": _2, "xn--langevg-jxa": _2, "langev\xE5g": _2, "leirvik": _2, "mjondalen": _2, "xn--mjndalen-64a": _2, "mj\xF8ndalen": _2, "mo-i-rana": _2, "mosjoen": _2, "xn--mosjen-eya": _2, "mosj\xF8en": _2, "nesoddtangen": _2, "orkanger": _2, "osoyro": _2, "xn--osyro-wua": _2, "os\xF8yro": _2, "raholt": _2, "xn--rholt-mra": _2, "r\xE5holt": _2, "sandnessjoen": _2, "xn--sandnessjen-ogb": _2, "sandnessj\xF8en": _2, "skedsmokorset": _2, "slattum": _2, "spjelkavik": _2, "stathelle": _2, "stavern": _2, "stjordalshalsen": _2, "xn--stjrdalshalsen-sqb": _2, "stj\xF8rdalshalsen": _2, "tananger": _2, "tranby": _2, "vossevangen": _2, "afjord": _2, "xn--fjord-lra": _2, "\xE5fjord": _2, "agdenes": _2, "al": _2, "xn--l-1fa": _2, "\xE5l": _2, "alesund": _2, "xn--lesund-hua": _2, "\xE5lesund": _2, "alstahaug": _2, "alta": _2, "xn--lt-liac": _2, "\xE1lt\xE1": _2, "alaheadju": _2, "xn--laheadju-7ya": _2, "\xE1laheadju": _2, "alvdal": _2, "amli": _2, "xn--mli-tla": _2, "\xE5mli": _2, "amot": _2, "xn--mot-tla": _2, "\xE5mot": _2, "andebu": _2, "andoy": _2, "xn--andy-ira": _2, "and\xF8y": _2, "andasuolo": _2, "ardal": _2, "xn--rdal-poa": _2, "\xE5rdal": _2, "aremark": _2, "arendal": _2, "xn--s-1fa": _2, "\xE5s": _2, "aseral": _2, "xn--seral-lra": _2, "\xE5seral": _2, "asker": _2, "askim": _2, "askvoll": _2, "askoy": _2, "xn--asky-ira": _2, "ask\xF8y": _2, "asnes": _2, "xn--snes-poa": _2, "\xE5snes": _2, "audnedaln": _2, "aukra": _2, "aure": _2, "aurland": _2, "aurskog-holand": _2, "xn--aurskog-hland-jnb": _2, "aurskog-h\xF8land": _2, "austevoll": _2, "austrheim": _2, "averoy": _2, "xn--avery-yua": _2, "aver\xF8y": _2, "balestrand": _2, "ballangen": _2, "balat": _2, "xn--blt-elab": _2, "b\xE1l\xE1t": _2, "balsfjord": _2, "bahccavuotna": _2, "xn--bhccavuotna-k7a": _2, "b\xE1hccavuotna": _2, "bamble": _2, "bardu": _2, "beardu": _2, "beiarn": _2, "bajddar": _2, "xn--bjddar-pta": _2, "b\xE1jddar": _2, "baidar": _2, "xn--bidr-5nac": _2, "b\xE1id\xE1r": _2, "berg": _2, "bergen": _2, "berlevag": _2, "xn--berlevg-jxa": _2, "berlev\xE5g": _2, "bearalvahki": _2, "xn--bearalvhki-y4a": _2, "bearalv\xE1hki": _2, "bindal": _2, "birkenes": _2, "bjarkoy": _2, "xn--bjarky-fya": _2, "bjark\xF8y": _2, "bjerkreim": _2, "bjugn": _2, "bodo": _2, "xn--bod-2na": _2, "bod\xF8": _2, "badaddja": _2, "xn--bdddj-mrabd": _2, "b\xE5d\xE5ddj\xE5": _2, "budejju": _2, "bokn": _2, "bremanger": _2, "bronnoy": _2, "xn--brnny-wuac": _2, "br\xF8nn\xF8y": _2, "bygland": _2, "bykle": _2, "barum": _2, "xn--brum-voa": _2, "b\xE6rum": _2, "telemark": [0, { "bo": _2, "xn--b-5ga": _2, "b\xF8": _2 }], "nordland": [0, { "bo": _2, "xn--b-5ga": _2, "b\xF8": _2, "heroy": _2, "xn--hery-ira": _2, "her\xF8y": _2 }], "bievat": _2, "xn--bievt-0qa": _2, "biev\xE1t": _2, "bomlo": _2, "xn--bmlo-gra": _2, "b\xF8mlo": _2, "batsfjord": _2, "xn--btsfjord-9za": _2, "b\xE5tsfjord": _2, "bahcavuotna": _2, "xn--bhcavuotna-s4a": _2, "b\xE1hcavuotna": _2, "dovre": _2, "drammen": _2, "drangedal": _2, "dyroy": _2, "xn--dyry-ira": _2, "dyr\xF8y": _2, "donna": _2, "xn--dnna-gra": _2, "d\xF8nna": _2, "eid": _2, "eidfjord": _2, "eidsberg": _2, "eidskog": _2, "eidsvoll": _2, "eigersund": _2, "elverum": _2, "enebakk": _2, "engerdal": _2, "etne": _2, "etnedal": _2, "evenes": _2, "evenassi": _2, "xn--eveni-0qa01ga": _2, "even\xE1\u0161\u0161i": _2, "evje-og-hornnes": _2, "farsund": _2, "fauske": _2, "fuossko": _2, "fuoisku": _2, "fedje": _2, "fet": _2, "finnoy": _2, "xn--finny-yua": _2, "finn\xF8y": _2, "fitjar": _2, "fjaler": _2, "fjell": _2, "flakstad": _2, "flatanger": _2, "flekkefjord": _2, "flesberg": _2, "flora": _2, "fla": _2, "xn--fl-zia": _2, "fl\xE5": _2, "folldal": _2, "forsand": _2, "fosnes": _2, "frei": _2, "frogn": _2, "froland": _2, "frosta": _2, "frana": _2, "xn--frna-woa": _2, "fr\xE6na": _2, "froya": _2, "xn--frya-hra": _2, "fr\xF8ya": _2, "fusa": _2, "fyresdal": _2, "forde": _2, "xn--frde-gra": _2, "f\xF8rde": _2, "gamvik": _2, "gangaviika": _2, "xn--ggaviika-8ya47h": _2, "g\xE1\u014Bgaviika": _2, "gaular": _2, "gausdal": _2, "gildeskal": _2, "xn--gildeskl-g0a": _2, "gildesk\xE5l": _2, "giske": _2, "gjemnes": _2, "gjerdrum": _2, "gjerstad": _2, "gjesdal": _2, "gjovik": _2, "xn--gjvik-wua": _2, "gj\xF8vik": _2, "gloppen": _2, "gol": _2, "gran": _2, "grane": _2, "granvin": _2, "gratangen": _2, "grimstad": _2, "grong": _2, "kraanghke": _2, "xn--kranghke-b0a": _2, "kr\xE5anghke": _2, "grue": _2, "gulen": _2, "hadsel": _2, "halden": _2, "halsa": _2, "hamar": _2, "hamaroy": _2, "habmer": _2, "xn--hbmer-xqa": _2, "h\xE1bmer": _2, "hapmir": _2, "xn--hpmir-xqa": _2, "h\xE1pmir": _2, "hammerfest": _2, "hammarfeasta": _2, "xn--hmmrfeasta-s4ac": _2, "h\xE1mm\xE1rfeasta": _2, "haram": _2, "hareid": _2, "harstad": _2, "hasvik": _2, "aknoluokta": _2, "xn--koluokta-7ya57h": _2, "\xE1k\u014Boluokta": _2, "hattfjelldal": _2, "aarborte": _2, "haugesund": _2, "hemne": _2, "hemnes": _2, "hemsedal": _2, "more-og-romsdal": [0, { "heroy": _2, "sande": _2 }], "xn--mre-og-romsdal-qqb": [0, { "xn--hery-ira": _2, "sande": _2 }], "m\xF8re-og-romsdal": [0, { "her\xF8y": _2, "sande": _2 }], "hitra": _2, "hjartdal": _2, "hjelmeland": _2, "hobol": _2, "xn--hobl-ira": _2, "hob\xF8l": _2, "hof": _2, "hol": _2, "hole": _2, "holmestrand": _2, "holtalen": _2, "xn--holtlen-hxa": _2, "holt\xE5len": _2, "hornindal": _2, "horten": _2, "hurdal": _2, "hurum": _2, "hvaler": _2, "hyllestad": _2, "hagebostad": _2, "xn--hgebostad-g3a": _2, "h\xE6gebostad": _2, "hoyanger": _2, "xn--hyanger-q1a": _2, "h\xF8yanger": _2, "hoylandet": _2, "xn--hylandet-54a": _2, "h\xF8ylandet": _2, "ha": _2, "xn--h-2fa": _2, "h\xE5": _2, "ibestad": _2, "inderoy": _2, "xn--indery-fya": _2, "inder\xF8y": _2, "iveland": _2, "jevnaker": _2, "jondal": _2, "jolster": _2, "xn--jlster-bya": _2, "j\xF8lster": _2, "karasjok": _2, "karasjohka": _2, "xn--krjohka-hwab49j": _2, "k\xE1r\xE1\u0161johka": _2, "karlsoy": _2, "galsa": _2, "xn--gls-elac": _2, "g\xE1ls\xE1": _2, "karmoy": _2, "xn--karmy-yua": _2, "karm\xF8y": _2, "kautokeino": _2, "guovdageaidnu": _2, "klepp": _2, "klabu": _2, "xn--klbu-woa": _2, "kl\xE6bu": _2, "kongsberg": _2, "kongsvinger": _2, "kragero": _2, "xn--krager-gya": _2, "krager\xF8": _2, "kristiansand": _2, "kristiansund": _2, "krodsherad": _2, "xn--krdsherad-m8a": _2, "kr\xF8dsherad": _2, "kvalsund": _2, "rahkkeravju": _2, "xn--rhkkervju-01af": _2, "r\xE1hkker\xE1vju": _2, "kvam": _2, "kvinesdal": _2, "kvinnherad": _2, "kviteseid": _2, "kvitsoy": _2, "xn--kvitsy-fya": _2, "kvits\xF8y": _2, "kvafjord": _2, "xn--kvfjord-nxa": _2, "kv\xE6fjord": _2, "giehtavuoatna": _2, "kvanangen": _2, "xn--kvnangen-k0a": _2, "kv\xE6nangen": _2, "navuotna": _2, "xn--nvuotna-hwa": _2, "n\xE1vuotna": _2, "kafjord": _2, "xn--kfjord-iua": _2, "k\xE5fjord": _2, "gaivuotna": _2, "xn--givuotna-8ya": _2, "g\xE1ivuotna": _2, "larvik": _2, "lavangen": _2, "lavagis": _2, "loabat": _2, "xn--loabt-0qa": _2, "loab\xE1t": _2, "lebesby": _2, "davvesiida": _2, "leikanger": _2, "leirfjord": _2, "leka": _2, "leksvik": _2, "lenvik": _2, "leangaviika": _2, "xn--leagaviika-52b": _2, "lea\u014Bgaviika": _2, "lesja": _2, "levanger": _2, "lier": _2, "lierne": _2, "lillehammer": _2, "lillesand": _2, "lindesnes": _2, "lindas": _2, "xn--linds-pra": _2, "lind\xE5s": _2, "lom": _2, "loppa": _2, "lahppi": _2, "xn--lhppi-xqa": _2, "l\xE1hppi": _2, "lund": _2, "lunner": _2, "luroy": _2, "xn--lury-ira": _2, "lur\xF8y": _2, "luster": _2, "lyngdal": _2, "lyngen": _2, "ivgu": _2, "lardal": _2, "lerdal": _2, "xn--lrdal-sra": _2, "l\xE6rdal": _2, "lodingen": _2, "xn--ldingen-q1a": _2, "l\xF8dingen": _2, "lorenskog": _2, "xn--lrenskog-54a": _2, "l\xF8renskog": _2, "loten": _2, "xn--lten-gra": _2, "l\xF8ten": _2, "malvik": _2, "masoy": _2, "xn--msy-ula0h": _2, "m\xE5s\xF8y": _2, "muosat": _2, "xn--muost-0qa": _2, "muos\xE1t": _2, "mandal": _2, "marker": _2, "marnardal": _2, "masfjorden": _2, "meland": _2, "meldal": _2, "melhus": _2, "meloy": _2, "xn--mely-ira": _2, "mel\xF8y": _2, "meraker": _2, "xn--merker-kua": _2, "mer\xE5ker": _2, "moareke": _2, "xn--moreke-jua": _2, "mo\xE5reke": _2, "midsund": _2, "midtre-gauldal": _2, "modalen": _2, "modum": _2, "molde": _2, "moskenes": _2, "moss": _2, "mosvik": _2, "malselv": _2, "xn--mlselv-iua": _2, "m\xE5lselv": _2, "malatvuopmi": _2, "xn--mlatvuopmi-s4a": _2, "m\xE1latvuopmi": _2, "namdalseid": _2, "aejrie": _2, "namsos": _2, "namsskogan": _2, "naamesjevuemie": _2, "xn--nmesjevuemie-tcba": _2, "n\xE5\xE5mesjevuemie": _2, "laakesvuemie": _2, "nannestad": _2, "narvik": _2, "narviika": _2, "naustdal": _2, "nedre-eiker": _2, "akershus": _60, "buskerud": _60, "nesna": _2, "nesodden": _2, "nesseby": _2, "unjarga": _2, "xn--unjrga-rta": _2, "unj\xE1rga": _2, "nesset": _2, "nissedal": _2, "nittedal": _2, "nord-aurdal": _2, "nord-fron": _2, "nord-odal": _2, "norddal": _2, "nordkapp": _2, "davvenjarga": _2, "xn--davvenjrga-y4a": _2, "davvenj\xE1rga": _2, "nordre-land": _2, "nordreisa": _2, "raisa": _2, "xn--risa-5na": _2, "r\xE1isa": _2, "nore-og-uvdal": _2, "notodden": _2, "naroy": _2, "xn--nry-yla5g": _2, "n\xE6r\xF8y": _2, "notteroy": _2, "xn--nttery-byae": _2, "n\xF8tter\xF8y": _2, "odda": _2, "oksnes": _2, "xn--ksnes-uua": _2, "\xF8ksnes": _2, "oppdal": _2, "oppegard": _2, "xn--oppegrd-ixa": _2, "oppeg\xE5rd": _2, "orkdal": _2, "orland": _2, "xn--rland-uua": _2, "\xF8rland": _2, "orskog": _2, "xn--rskog-uua": _2, "\xF8rskog": _2, "orsta": _2, "xn--rsta-fra": _2, "\xF8rsta": _2, "hedmark": [0, { "os": _2, "valer": _2, "xn--vler-qoa": _2, "v\xE5ler": _2 }], "hordaland": [0, { "os": _2 }], "osen": _2, "osteroy": _2, "xn--ostery-fya": _2, "oster\xF8y": _2, "ostre-toten": _2, "xn--stre-toten-zcb": _2, "\xF8stre-toten": _2, "overhalla": _2, "ovre-eiker": _2, "xn--vre-eiker-k8a": _2, "\xF8vre-eiker": _2, "oyer": _2, "xn--yer-zna": _2, "\xF8yer": _2, "oygarden": _2, "xn--ygarden-p1a": _2, "\xF8ygarden": _2, "oystre-slidre": _2, "xn--ystre-slidre-ujb": _2, "\xF8ystre-slidre": _2, "porsanger": _2, "porsangu": _2, "xn--porsgu-sta26f": _2, "pors\xE1\u014Bgu": _2, "porsgrunn": _2, "radoy": _2, "xn--rady-ira": _2, "rad\xF8y": _2, "rakkestad": _2, "rana": _2, "ruovat": _2, "randaberg": _2, "rauma": _2, "rendalen": _2, "rennebu": _2, "rennesoy": _2, "xn--rennesy-v1a": _2, "rennes\xF8y": _2, "rindal": _2, "ringebu": _2, "ringerike": _2, "ringsaker": _2, "rissa": _2, "risor": _2, "xn--risr-ira": _2, "ris\xF8r": _2, "roan": _2, "rollag": _2, "rygge": _2, "ralingen": _2, "xn--rlingen-mxa": _2, "r\xE6lingen": _2, "rodoy": _2, "xn--rdy-0nab": _2, "r\xF8d\xF8y": _2, "romskog": _2, "xn--rmskog-bya": _2, "r\xF8mskog": _2, "roros": _2, "xn--rros-gra": _2, "r\xF8ros": _2, "rost": _2, "xn--rst-0na": _2, "r\xF8st": _2, "royken": _2, "xn--ryken-vua": _2, "r\xF8yken": _2, "royrvik": _2, "xn--ryrvik-bya": _2, "r\xF8yrvik": _2, "rade": _2, "xn--rde-ula": _2, "r\xE5de": _2, "salangen": _2, "siellak": _2, "saltdal": _2, "salat": _2, "xn--slt-elab": _2, "s\xE1l\xE1t": _2, "xn--slat-5na": _2, "s\xE1lat": _2, "samnanger": _2, "vestfold": [0, { "sande": _2 }], "sandefjord": _2, "sandnes": _2, "sandoy": _2, "xn--sandy-yua": _2, "sand\xF8y": _2, "sarpsborg": _2, "sauda": _2, "sauherad": _2, "sel": _2, "selbu": _2, "selje": _2, "seljord": _2, "sigdal": _2, "siljan": _2, "sirdal": _2, "skaun": _2, "skedsmo": _2, "ski": _2, "skien": _2, "skiptvet": _2, "skjervoy": _2, "xn--skjervy-v1a": _2, "skjerv\xF8y": _2, "skierva": _2, "xn--skierv-uta": _2, "skierv\xE1": _2, "skjak": _2, "xn--skjk-soa": _2, "skj\xE5k": _2, "skodje": _2, "skanland": _2, "xn--sknland-fxa": _2, "sk\xE5nland": _2, "skanit": _2, "xn--sknit-yqa": _2, "sk\xE1nit": _2, "smola": _2, "xn--smla-hra": _2, "sm\xF8la": _2, "snillfjord": _2, "snasa": _2, "xn--snsa-roa": _2, "sn\xE5sa": _2, "snoasa": _2, "snaase": _2, "xn--snase-nra": _2, "sn\xE5ase": _2, "sogndal": _2, "sokndal": _2, "sola": _2, "solund": _2, "songdalen": _2, "sortland": _2, "spydeberg": _2, "stange": _2, "stavanger": _2, "steigen": _2, "steinkjer": _2, "stjordal": _2, "xn--stjrdal-s1a": _2, "stj\xF8rdal": _2, "stokke": _2, "stor-elvdal": _2, "stord": _2, "stordal": _2, "storfjord": _2, "omasvuotna": _2, "strand": _2, "stranda": _2, "stryn": _2, "sula": _2, "suldal": _2, "sund": _2, "sunndal": _2, "surnadal": _2, "sveio": _2, "svelvik": _2, "sykkylven": _2, "sogne": _2, "xn--sgne-gra": _2, "s\xF8gne": _2, "somna": _2, "xn--smna-gra": _2, "s\xF8mna": _2, "sondre-land": _2, "xn--sndre-land-0cb": _2, "s\xF8ndre-land": _2, "sor-aurdal": _2, "xn--sr-aurdal-l8a": _2, "s\xF8r-aurdal": _2, "sor-fron": _2, "xn--sr-fron-q1a": _2, "s\xF8r-fron": _2, "sor-odal": _2, "xn--sr-odal-q1a": _2, "s\xF8r-odal": _2, "sor-varanger": _2, "xn--sr-varanger-ggb": _2, "s\xF8r-varanger": _2, "matta-varjjat": _2, "xn--mtta-vrjjat-k7af": _2, "m\xE1tta-v\xE1rjjat": _2, "sorfold": _2, "xn--srfold-bya": _2, "s\xF8rfold": _2, "sorreisa": _2, "xn--srreisa-q1a": _2, "s\xF8rreisa": _2, "sorum": _2, "xn--srum-gra": _2, "s\xF8rum": _2, "tana": _2, "deatnu": _2, "time": _2, "tingvoll": _2, "tinn": _2, "tjeldsund": _2, "dielddanuorri": _2, "tjome": _2, "xn--tjme-hra": _2, "tj\xF8me": _2, "tokke": _2, "tolga": _2, "torsken": _2, "tranoy": _2, "xn--trany-yua": _2, "tran\xF8y": _2, "tromso": _2, "xn--troms-zua": _2, "troms\xF8": _2, "tromsa": _2, "romsa": _2, "trondheim": _2, "troandin": _2, "trysil": _2, "trana": _2, "xn--trna-woa": _2, "tr\xE6na": _2, "trogstad": _2, "xn--trgstad-r1a": _2, "tr\xF8gstad": _2, "tvedestrand": _2, "tydal": _2, "tynset": _2, "tysfjord": _2, "divtasvuodna": _2, "divttasvuotna": _2, "tysnes": _2, "tysvar": _2, "xn--tysvr-vra": _2, "tysv\xE6r": _2, "tonsberg": _2, "xn--tnsberg-q1a": _2, "t\xF8nsberg": _2, "ullensaker": _2, "ullensvang": _2, "ulvik": _2, "utsira": _2, "vadso": _2, "xn--vads-jra": _2, "vads\xF8": _2, "cahcesuolo": _2, "xn--hcesuolo-7ya35b": _2, "\u010D\xE1hcesuolo": _2, "vaksdal": _2, "valle": _2, "vang": _2, "vanylven": _2, "vardo": _2, "xn--vard-jra": _2, "vard\xF8": _2, "varggat": _2, "xn--vrggt-xqad": _2, "v\xE1rgg\xE1t": _2, "vefsn": _2, "vaapste": _2, "vega": _2, "vegarshei": _2, "xn--vegrshei-c0a": _2, "veg\xE5rshei": _2, "vennesla": _2, "verdal": _2, "verran": _2, "vestby": _2, "vestnes": _2, "vestre-slidre": _2, "vestre-toten": _2, "vestvagoy": _2, "xn--vestvgy-ixa6o": _2, "vestv\xE5g\xF8y": _2, "vevelstad": _2, "vik": _2, "vikna": _2, "vindafjord": _2, "volda": _2, "voss": _2, "varoy": _2, "xn--vry-yla5g": _2, "v\xE6r\xF8y": _2, "vagan": _2, "xn--vgan-qoa": _2, "v\xE5gan": _2, "voagat": _2, "vagsoy": _2, "xn--vgsy-qoa0j": _2, "v\xE5gs\xF8y": _2, "vaga": _2, "xn--vg-yiab": _2, "v\xE5g\xE5": _2, "ostfold": [0, { "valer": _2 }], "xn--stfold-9xa": [0, { "xn--vler-qoa": _2 }], "\xF8stfold": [0, { "v\xE5ler": _2 }], "co": _3, "blogspot": _3, "123hjemmeside": _3, "myspreadshop": _3 }], "np": _17, "nr": _54, "nu": [1, { "merseine": _3, "mine": _3, "shacknet": _3, "enterprisecloud": _3 }], "nz": [1, { "ac": _2, "co": _10, "cri": _2, "geek": _2, "gen": _2, "govt": _2, "health": _2, "iwi": _2, "kiwi": _2, "maori": _2, "mil": _2, "xn--mori-qsa": _2, "m\u0101ori": _2, "net": _2, "org": _2, "parliament": _2, "school": _2, "cloudns": _3 }], "om": [1, { "co": _2, "com": _2, "edu": _2, "gov": _2, "med": _2, "museum": _2, "net": _2, "org": _2, "pro": _2 }], "onion": _2, "org": [1, { "altervista": _3, "pimienta": _3, "poivron": _3, "potager": _3, "sweetpepper": _3, "cdn77": [0, { "c": _3, "rsc": _3 }], "cdn77-secure": [0, { "origin": [0, { "ssl": _3 }] }], "ae": _3, "certmgr": _3, "cloudns": _3, "ddnss": _3, "duckdns": _3, "tunk": _3, "blogdns": _3, "blogsite": _3, "boldlygoingnowhere": _3, "dnsalias": _3, "dnsdojo": _3, "doesntexist": _3, "dontexist": _3, "doomdns": _3, "dvrdns": _3, "dynalias": _3, "dyndns": [2, { "go": _3, "home": _3 }], "endofinternet": _3, "endoftheinternet": _3, "from-me": _3, "game-host": _3, "gotdns": _3, "hobby-site": _3, "homedns": _3, "homeftp": _3, "homelinux": _3, "homeunix": _3, "is-a-bruinsfan": _3, "is-a-candidate": _3, "is-a-celticsfan": _3, "is-a-chef": _3, "is-a-geek": _3, "is-a-knight": _3, "is-a-linux-user": _3, "is-a-patsfan": _3, "is-a-soxfan": _3, "is-found": _3, "is-lost": _3, "is-saved": _3, "is-very-bad": _3, "is-very-evil": _3, "is-very-good": _3, "is-very-nice": _3, "is-very-sweet": _3, "isa-geek": _3, "kicks-ass": _3, "misconfused": _3, "podzone": _3, "readmyblog": _3, "selfip": _3, "sellsyourhome": _3, "servebbs": _3, "serveftp": _3, "servegame": _3, "stuff-4-sale": _3, "webhop": _3, "accesscam": _3, "camdvr": _3, "freeddns": _3, "mywire": _3, "webredirect": _3, "twmail": _3, "eu": [2, { "al": _3, "asso": _3, "at": _3, "au": _3, "be": _3, "bg": _3, "ca": _3, "cd": _3, "ch": _3, "cn": _3, "cy": _3, "cz": _3, "de": _3, "dk": _3, "edu": _3, "ee": _3, "es": _3, "fi": _3, "fr": _3, "gr": _3, "hr": _3, "hu": _3, "ie": _3, "il": _3, "in": _3, "int": _3, "is": _3, "it": _3, "jp": _3, "kr": _3, "lt": _3, "lu": _3, "lv": _3, "me": _3, "mk": _3, "mt": _3, "my": _3, "net": _3, "ng": _3, "nl": _3, "no": _3, "nz": _3, "paris": _3, "pl": _3, "pt": _3, "q-a": _3, "ro": _3, "ru": _3, "se": _3, "si": _3, "sk": _3, "tr": _3, "uk": _3, "us": _3 }], "fedorainfracloud": _3, "fedorapeople": _3, "fedoraproject": [0, { "cloud": _3, "os": _41, "stg": [0, { "os": _41 }] }], "freedesktop": _3, "hatenadiary": _3, "hepforge": _3, "in-dsl": _3, "in-vpn": _3, "js": _3, "barsy": _3, "mayfirst": _3, "routingthecloud": _3, "bmoattachments": _3, "cable-modem": _3, "collegefan": _3, "couchpotatofries": _3, "hopto": _3, "mlbfan": _3, "myftp": _3, "mysecuritycamera": _3, "nflfan": _3, "no-ip": _3, "read-books": _3, "ufcfan": _3, "zapto": _3, "dynserv": _3, "now-dns": _3, "is-local": _3, "httpbin": _3, "pubtls": _3, "jpn": _3, "my-firewall": _3, "myfirewall": _3, "spdns": _3, "small-web": _3, "dsmynas": _3, "familyds": _3, "teckids": _53, "tuxfamily": _3, "diskstation": _3, "hk": _3, "us": _3, "toolforge": _3, "wmcloud": _3, "wmflabs": _3, "za": _3 }], "pa": [1, { "ac": _2, "gob": _2, "com": _2, "org": _2, "sld": _2, "edu": _2, "net": _2, "ing": _2, "abo": _2, "med": _2, "nom": _2 }], "pe": [1, { "edu": _2, "gob": _2, "nom": _2, "mil": _2, "org": _2, "com": _2, "net": _2, "blogspot": _3 }], "pf": [1, { "com": _2, "org": _2, "edu": _2 }], "pg": _17, "ph": [1, { "com": _2, "net": _2, "org": _2, "gov": _2, "edu": _2, "ngo": _2, "mil": _2, "i": _2, "cloudns": _3 }], "pk": [1, { "ac": _2, "biz": _2, "com": _2, "edu": _2, "fam": _2, "gkp": _2, "gob": _2, "gog": _2, "gok": _2, "gon": _2, "gop": _2, "gos": _2, "gov": _2, "net": _2, "org": _2, "web": _2 }], "pl": [1, { "com": _2, "net": _2, "org": _2, "aid": _2, "agro": _2, "atm": _2, "auto": _2, "biz": _2, "edu": _2, "gmina": _2, "gsm": _2, "info": _2, "mail": _2, "miasta": _2, "media": _2, "mil": _2, "nieruchomosci": _2, "nom": _2, "pc": _2, "powiat": _2, "priv": _2, "realestate": _2, "rel": _2, "sex": _2, "shop": _2, "sklep": _2, "sos": _2, "szkola": _2, "targi": _2, "tm": _2, "tourism": _2, "travel": _2, "turystyka": _2, "gov": [1, { "ap": _2, "griw": _2, "ic": _2, "is": _2, "kmpsp": _2, "konsulat": _2, "kppsp": _2, "kwp": _2, "kwpsp": _2, "mup": _2, "mw": _2, "oia": _2, "oirm": _2, "oke": _2, "oow": _2, "oschr": _2, "oum": _2, "pa": _2, "pinb": _2, "piw": _2, "po": _2, "pr": _2, "psp": _2, "psse": _2, "pup": _2, "rzgw": _2, "sa": _2, "sdn": _2, "sko": _2, "so": _2, "sr": _2, "starostwo": _2, "ug": _2, "ugim": _2, "um": _2, "umig": _2, "upow": _2, "uppo": _2, "us": _2, "uw": _2, "uzs": _2, "wif": _2, "wiih": _2, "winb": _2, "wios": _2, "witd": _2, "wiw": _2, "wkz": _2, "wsa": _2, "wskr": _2, "wsse": _2, "wuoz": _2, "wzmiuw": _2, "zp": _2, "zpisdn": _2 }], "augustow": _2, "babia-gora": _2, "bedzin": _2, "beskidy": _2, "bialowieza": _2, "bialystok": _2, "bielawa": _2, "bieszczady": _2, "boleslawiec": _2, "bydgoszcz": _2, "bytom": _2, "cieszyn": _2, "czeladz": _2, "czest": _2, "dlugoleka": _2, "elblag": _2, "elk": _2, "glogow": _2, "gniezno": _2, "gorlice": _2, "grajewo": _2, "ilawa": _2, "jaworzno": _2, "jelenia-gora": _2, "jgora": _2, "kalisz": _2, "kazimierz-dolny": _2, "karpacz": _2, "kartuzy": _2, "kaszuby": _2, "katowice": _2, "kepno": _2, "ketrzyn": _2, "klodzko": _2, "kobierzyce": _2, "kolobrzeg": _2, "konin": _2, "konskowola": _2, "kutno": _2, "lapy": _2, "lebork": _2, "legnica": _2, "lezajsk": _2, "limanowa": _2, "lomza": _2, "lowicz": _2, "lubin": _2, "lukow": _2, "malbork": _2, "malopolska": _2, "mazowsze": _2, "mazury": _2, "mielec": _2, "mielno": _2, "mragowo": _2, "naklo": _2, "nowaruda": _2, "nysa": _2, "olawa": _2, "olecko": _2, "olkusz": _2, "olsztyn": _2, "opoczno": _2, "opole": _2, "ostroda": _2, "ostroleka": _2, "ostrowiec": _2, "ostrowwlkp": _2, "pila": _2, "pisz": _2, "podhale": _2, "podlasie": _2, "polkowice": _2, "pomorze": _2, "pomorskie": _2, "prochowice": _2, "pruszkow": _2, "przeworsk": _2, "pulawy": _2, "radom": _2, "rawa-maz": _2, "rybnik": _2, "rzeszow": _2, "sanok": _2, "sejny": _2, "slask": _2, "slupsk": _2, "sosnowiec": _2, "stalowa-wola": _2, "skoczow": _2, "starachowice": _2, "stargard": _2, "suwalki": _2, "swidnica": _2, "swiebodzin": _2, "swinoujscie": _2, "szczecin": _2, "szczytno": _2, "tarnobrzeg": _2, "tgory": _2, "turek": _2, "tychy": _2, "ustka": _2, "walbrzych": _2, "warmia": _2, "warszawa": _2, "waw": _2, "wegrow": _2, "wielun": _2, "wlocl": _2, "wloclawek": _2, "wodzislaw": _2, "wolomin": _2, "wroclaw": _2, "zachpomor": _2, "zagan": _2, "zarow": _2, "zgora": _2, "zgorzelec": _2, "art": _3, "gliwice": _3, "krakow": _3, "poznan": _3, "wroc": _3, "zakopane": _3, "beep": _3, "ecommerce-shop": _3, "cfolks": _3, "dfirma": _3, "dkonto": _3, "you2": _3, "shoparena": _3, "homesklep": _3, "sdscloud": _3, "unicloud": _3, "krasnik": _3, "leczna": _3, "lubartow": _3, "lublin": _3, "poniatowa": _3, "swidnik": _3, "co": _3, "torun": _3, "simplesite": _3, "myspreadshop": _3, "gda": _3, "gdansk": _3, "gdynia": _3, "med": _3, "sopot": _3, "bielsko": _3 }], "pm": [1, { "own": _3, "name": _3 }], "pn": [1, { "gov": _2, "co": _2, "org": _2, "edu": _2, "net": _2 }], "post": _2, "pr": [1, { "com": _2, "net": _2, "org": _2, "gov": _2, "edu": _2, "isla": _2, "pro": _2, "biz": _2, "info": _2, "name": _2, "est": _2, "prof": _2, "ac": _2 }], "pro": [1, { "aaa": _2, "aca": _2, "acct": _2, "avocat": _2, "bar": _2, "cpa": _2, "eng": _2, "jur": _2, "law": _2, "med": _2, "recht": _2, "12chars": _3, "cloudns": _3, "dnstrace": [0, { "bci": _3 }], "barsy": _3, "ngrok": _3 }], "ps": [1, { "edu": _2, "gov": _2, "sec": _2, "plo": _2, "com": _2, "org": _2, "net": _2 }], "pt": [1, { "net": _2, "gov": _2, "org": _2, "edu": _2, "int": _2, "publ": _2, "com": _2, "nome": _2, "blogspot": _3, "123paginaweb": _3 }], "pw": [1, { "co": _2, "ne": _2, "or": _2, "ed": _2, "go": _2, "belau": _2, "cloudns": _3, "x443": _3 }], "py": [1, { "com": _2, "coop": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2 }], "qa": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "sch": _2, "blogspot": _3 }], "re": [1, { "asso": _2, "com": _2, "nom": _2, "blogspot": _3, "can": _3 }], "ro": [1, { "arts": _2, "com": _2, "firm": _2, "info": _2, "nom": _2, "nt": _2, "org": _2, "rec": _2, "store": _2, "tm": _2, "www": _2, "co": _3, "shop": _3, "blogspot": _3, "barsy": _3 }], "rs": [1, { "ac": _2, "co": _2, "edu": _2, "gov": _2, "in": _2, "org": _2, "brendly": _49, "blogspot": _3, "ua": _3, "barsy": _3, "ox": _3 }], "ru": [1, { "ac": _3, "edu": _3, "gov": _3, "int": _3, "mil": _3, "test": _3, "eurodir": _3, "adygeya": _3, "bashkiria": _3, "bir": _3, "cbg": _3, "com": _3, "dagestan": _3, "grozny": _3, "kalmykia": _3, "kustanai": _3, "marine": _3, "mordovia": _3, "msk": _3, "mytis": _3, "nalchik": _3, "nov": _3, "pyatigorsk": _3, "spb": _3, "vladikavkaz": _3, "vladimir": _3, "blogspot": _3, "na4u": _3, "mircloud": _3, "myjino": [2, { "hosting": _5, "landing": _5, "spectrum": _5, "vps": _5 }], "cldmail": [0, { "hb": _3 }], "mcdir": [2, { "vps": _3 }], "mcpre": _3, "net": _3, "org": _3, "pp": _3, "lk3": _3, "ras": _3 }], "rw": [1, { "ac": _2, "co": _2, "coop": _2, "gov": _2, "mil": _2, "net": _2, "org": _2 }], "sa": [1, { "com": _2, "net": _2, "org": _2, "gov": _2, "med": _2, "pub": _2, "edu": _2, "sch": _2 }], "sb": _4, "sc": _4, "sd": [1, { "com": _2, "net": _2, "org": _2, "edu": _2, "med": _2, "tv": _2, "gov": _2, "info": _2 }], "se": [1, { "a": _2, "ac": _2, "b": _2, "bd": _2, "brand": _2, "c": _2, "d": _2, "e": _2, "f": _2, "fh": _2, "fhsk": _2, "fhv": _2, "g": _2, "h": _2, "i": _2, "k": _2, "komforb": _2, "kommunalforbund": _2, "komvux": _2, "l": _2, "lanbib": _2, "m": _2, "n": _2, "naturbruksgymn": _2, "o": _2, "org": _2, "p": _2, "parti": _2, "pp": _2, "press": _2, "r": _2, "s": _2, "t": _2, "tm": _2, "u": _2, "w": _2, "x": _2, "y": _2, "z": _2, "com": _3, "blogspot": _3, "conf": _3, "iopsys": _3, "123minsida": _3, "itcouldbewor": _3, "myspreadshop": _3 }], "sg": [1, { "com": _2, "net": _2, "org": _2, "gov": _2, "edu": _2, "per": _2, "blogspot": _3, "enscaled": _3 }], "sh": [1, { "com": _2, "net": _2, "gov": _2, "org": _2, "mil": _2, "hashbang": _3, "platform": [0, { "ent": _3, "eu": _3, "us": _3 }], "now": _3 }], "si": [1, { "f5": _3, "gitapp": _3, "gitpage": _3, "blogspot": _3 }], "sj": _2, "sk": _10, "sl": _4, "sm": _2, "sn": [1, { "art": _2, "com": _2, "edu": _2, "gouv": _2, "org": _2, "perso": _2, "univ": _2, "blogspot": _3 }], "so": [1, { "com": _2, "edu": _2, "gov": _2, "me": _2, "net": _2, "org": _2, "surveys": _3 }], "sr": _2, "ss": [1, { "biz": _2, "com": _2, "edu": _2, "gov": _2, "me": _2, "net": _2, "org": _2, "sch": _2 }], "st": [1, { "co": _2, "com": _2, "consulado": _2, "edu": _2, "embaixada": _2, "mil": _2, "net": _2, "org": _2, "principe": _2, "saotome": _2, "store": _2, "helioho": _3, "kirara": _3, "noho": _3 }], "su": [1, { "abkhazia": _3, "adygeya": _3, "aktyubinsk": _3, "arkhangelsk": _3, "armenia": _3, "ashgabad": _3, "azerbaijan": _3, "balashov": _3, "bashkiria": _3, "bryansk": _3, "bukhara": _3, "chimkent": _3, "dagestan": _3, "east-kazakhstan": _3, "exnet": _3, "georgia": _3, "grozny": _3, "ivanovo": _3, "jambyl": _3, "kalmykia": _3, "kaluga": _3, "karacol": _3, "karaganda": _3, "karelia": _3, "khakassia": _3, "krasnodar": _3, "kurgan": _3, "kustanai": _3, "lenug": _3, "mangyshlak": _3, "mordovia": _3, "msk": _3, "murmansk": _3, "nalchik": _3, "navoi": _3, "north-kazakhstan": _3, "nov": _3, "obninsk": _3, "penza": _3, "pokrovsk": _3, "sochi": _3, "spb": _3, "tashkent": _3, "termez": _3, "togliatti": _3, "troitsk": _3, "tselinograd": _3, "tula": _3, "tuva": _3, "vladikavkaz": _3, "vladimir": _3, "vologda": _3 }], "sv": [1, { "com": _2, "edu": _2, "gob": _2, "org": _2, "red": _2 }], "sx": _11, "sy": _52, "sz": [1, { "co": _2, "ac": _2, "org": _2 }], "tc": _2, "td": _10, "tel": _2, "tf": [1, { "sch": _3 }], "tg": _2, "th": [1, { "ac": _2, "co": _2, "go": _2, "in": _2, "mi": _2, "net": _2, "or": _2, "online": _3, "shop": _3 }], "tj": [1, { "ac": _2, "biz": _2, "co": _2, "com": _2, "edu": _2, "go": _2, "gov": _2, "int": _2, "mil": _2, "name": _2, "net": _2, "nic": _2, "org": _2, "test": _2, "web": _2 }], "tk": _2, "tl": _11, "tm": [1, { "com": _2, "co": _2, "org": _2, "net": _2, "nom": _2, "gov": _2, "mil": _2, "edu": _2 }], "tn": [1, { "com": _2, "ens": _2, "fin": _2, "gov": _2, "ind": _2, "info": _2, "intl": _2, "mincom": _2, "nat": _2, "net": _2, "org": _2, "perso": _2, "tourism": _2, "orangecloud": _3 }], "to": [1, { "611": _3, "com": _2, "gov": _2, "net": _2, "org": _2, "edu": _2, "mil": _2, "oya": _3, "x0": _3, "quickconnect": _26, "vpnplus": _3 }], "tr": [1, { "av": _2, "bbs": _2, "bel": _2, "biz": _2, "com": _10, "dr": _2, "edu": _2, "gen": _2, "gov": _2, "info": _2, "mil": _2, "k12": _2, "kep": _2, "name": _2, "net": _2, "org": _2, "pol": _2, "tel": _2, "tsk": _2, "tv": _2, "web": _2, "nc": _11 }], "tt": [1, { "co": _2, "com": _2, "org": _2, "net": _2, "biz": _2, "info": _2, "pro": _2, "int": _2, "coop": _2, "jobs": _2, "mobi": _2, "travel": _2, "museum": _2, "aero": _2, "name": _2, "gov": _2, "edu": _2 }], "tv": [1, { "better-than": _3, "dyndns": _3, "on-the-web": _3, "worse-than": _3, "from": _3, "sakura": _3 }], "tw": [1, { "edu": _2, "gov": _2, "mil": _2, "com": [1, { "mymailer": _3 }], "net": _2, "org": _2, "idv": _2, "game": _2, "ebiz": _2, "club": _2, "xn--zf0ao64a": _2, "\u7DB2\u8DEF": _2, "xn--uc0atv": _2, "\u7D44\u7E54": _2, "xn--czrw28b": _2, "\u5546\u696D": _2, "url": _3, "mydns": _3, "blogspot": _3 }], "tz": [1, { "ac": _2, "co": _2, "go": _2, "hotel": _2, "info": _2, "me": _2, "mil": _2, "mobi": _2, "ne": _2, "or": _2, "sc": _2, "tv": _2 }], "ua": [1, { "com": _2, "edu": _2, "gov": _2, "in": _2, "net": _2, "org": _2, "cherkassy": _2, "cherkasy": _2, "chernigov": _2, "chernihiv": _2, "chernivtsi": _2, "chernovtsy": _2, "ck": _2, "cn": _2, "cr": _2, "crimea": _2, "cv": _2, "dn": _2, "dnepropetrovsk": _2, "dnipropetrovsk": _2, "donetsk": _2, "dp": _2, "if": _2, "ivano-frankivsk": _2, "kh": _2, "kharkiv": _2, "kharkov": _2, "kherson": _2, "khmelnitskiy": _2, "khmelnytskyi": _2, "kiev": _2, "kirovograd": _2, "km": _2, "kr": _2, "kropyvnytskyi": _2, "krym": _2, "ks": _2, "kv": _2, "kyiv": _2, "lg": _2, "lt": _2, "lugansk": _2, "luhansk": _2, "lutsk": _2, "lv": _2, "lviv": _2, "mk": _2, "mykolaiv": _2, "nikolaev": _2, "od": _2, "odesa": _2, "odessa": _2, "pl": _2, "poltava": _2, "rivne": _2, "rovno": _2, "rv": _2, "sb": _2, "sebastopol": _2, "sevastopol": _2, "sm": _2, "sumy": _2, "te": _2, "ternopil": _2, "uz": _2, "uzhgorod": _2, "uzhhorod": _2, "vinnica": _2, "vinnytsia": _2, "vn": _2, "volyn": _2, "yalta": _2, "zakarpattia": _2, "zaporizhzhe": _2, "zaporizhzhia": _2, "zhitomir": _2, "zhytomyr": _2, "zp": _2, "zt": _2, "cc": _3, "inf": _3, "ltd": _3, "cx": _3, "ie": _3, "biz": _3, "co": _3, "pp": _3, "v": _3 }], "ug": [1, { "co": _2, "or": _2, "ac": _2, "sc": _2, "go": _2, "ne": _2, "com": _2, "org": _2, "blogspot": _3 }], "uk": [1, { "ac": _2, "co": [1, { "bytemark": [0, { "dh": _3, "vm": _3 }], "blogspot": _3, "layershift": _45, "barsy": _3, "barsyonline": _3, "retrosnub": _51, "nh-serv": _3, "no-ip": _3, "adimo": _3, "myspreadshop": _3 }], "gov": [1, { "api": _3, "campaign": _3, "service": _3 }], "ltd": _2, "me": _2, "net": _2, "nhs": _2, "org": [1, { "glug": _3, "lug": _3, "lugs": _3, "affinitylottery": _3, "raffleentry": _3, "weeklylottery": _3 }], "plc": _2, "police": _2, "sch": _17, "conn": _3, "copro": _3, "hosp": _3, "independent-commission": _3, "independent-inquest": _3, "independent-inquiry": _3, "independent-panel": _3, "independent-review": _3, "public-inquiry": _3, "royal-commission": _3, "pymnt": _3, "barsy": _3, "nimsite": _3, "oraclegovcloudapps": _5 }], "us": [1, { "dni": _2, "fed": _2, "isa": _2, "kids": _2, "nsn": _2, "ak": _61, "al": _61, "ar": _61, "as": _61, "az": _61, "ca": _61, "co": _61, "ct": _61, "dc": _61, "de": [1, { "cc": _2, "lib": _3 }], "fl": _61, "ga": _61, "gu": _61, "hi": _62, "ia": _61, "id": _61, "il": _61, "in": _61, "ks": _61, "ky": _61, "la": _61, "ma": [1, { "k12": [1, { "pvt": _2, "chtr": _2, "paroch": _2 }], "cc": _2, "lib": _2 }], "md": _61, "me": _61, "mi": [1, { "k12": _2, "cc": _2, "lib": _2, "ann-arbor": _2, "cog": _2, "dst": _2, "eaton": _2, "gen": _2, "mus": _2, "tec": _2, "washtenaw": _2 }], "mn": _61, "mo": _61, "ms": _61, "mt": _61, "nc": _61, "nd": _62, "ne": _61, "nh": _61, "nj": _61, "nm": _61, "nv": _61, "ny": _61, "oh": _61, "ok": _61, "or": _61, "pa": _61, "pr": _61, "ri": _62, "sc": _61, "sd": _62, "tn": _61, "tx": _61, "ut": _61, "vi": _61, "vt": _61, "va": _61, "wa": _61, "wi": _61, "wv": [1, { "cc": _2 }], "wy": _61, "cloudns": _3, "drud": _3, "is-by": _3, "land-4-sale": _3, "stuff-4-sale": _3, "heliohost": _3, "enscaled": [0, { "phx": _3 }], "mircloud": _3, "ngo": _3, "golffan": _3, "noip": _3, "pointto": _3, "freeddns": _3, "srv": [2, { "gh": _3, "gl": _3 }], "platterp": _3, "servername": _3 }], "uy": [1, { "com": _10, "edu": _2, "gub": _2, "mil": _2, "net": _2, "org": _2 }], "uz": [1, { "co": _2, "com": _2, "net": _2, "org": _2 }], "va": _2, "vc": [1, { "com": _2, "net": _2, "org": _2, "gov": _2, "mil": _2, "edu": _2, "gv": [2, { "d": _3 }], "0e": _3, "mydns": _3 }], "ve": [1, { "arts": _2, "bib": _2, "co": _2, "com": _2, "e12": _2, "edu": _2, "firm": _2, "gob": _2, "gov": _2, "info": _2, "int": _2, "mil": _2, "net": _2, "nom": _2, "org": _2, "rar": _2, "rec": _2, "store": _2, "tec": _2, "web": _2 }], "vg": _2, "vi": [1, { "co": _2, "com": _2, "k12": _2, "net": _2, "org": _2 }], "vn": [1, { "ac": _2, "ai": _2, "biz": _2, "com": _2, "edu": _2, "gov": _2, "health": _2, "id": _2, "info": _2, "int": _2, "io": _2, "name": _2, "net": _2, "org": _2, "pro": _2, "angiang": _2, "bacgiang": _2, "backan": _2, "baclieu": _2, "bacninh": _2, "baria-vungtau": _2, "bentre": _2, "binhdinh": _2, "binhduong": _2, "binhphuoc": _2, "binhthuan": _2, "camau": _2, "cantho": _2, "caobang": _2, "daklak": _2, "daknong": _2, "danang": _2, "dienbien": _2, "dongnai": _2, "dongthap": _2, "gialai": _2, "hagiang": _2, "haiduong": _2, "haiphong": _2, "hanam": _2, "hanoi": _2, "hatinh": _2, "haugiang": _2, "hoabinh": _2, "hungyen": _2, "khanhhoa": _2, "kiengiang": _2, "kontum": _2, "laichau": _2, "lamdong": _2, "langson": _2, "laocai": _2, "longan": _2, "namdinh": _2, "nghean": _2, "ninhbinh": _2, "ninhthuan": _2, "phutho": _2, "phuyen": _2, "quangbinh": _2, "quangnam": _2, "quangngai": _2, "quangninh": _2, "quangtri": _2, "soctrang": _2, "sonla": _2, "tayninh": _2, "thaibinh": _2, "thainguyen": _2, "thanhhoa": _2, "thanhphohochiminh": _2, "thuathienhue": _2, "tiengiang": _2, "travinh": _2, "tuyenquang": _2, "vinhlong": _2, "vinhphuc": _2, "yenbai": _2, "blogspot": _3 }], "vu": _44, "wf": [1, { "biz": _3, "sch": _3 }], "ws": [1, { "com": _2, "net": _2, "org": _2, "gov": _2, "edu": _2, "advisor": _5, "cloud66": _3, "dyndns": _3, "mypets": _3 }], "yt": [1, { "org": _3 }], "xn--mgbaam7a8h": _2, "\u0627\u0645\u0627\u0631\u0627\u062A": _2, "xn--y9a3aq": _2, "\u0570\u0561\u0575": _2, "xn--54b7fta0cc": _2, "\u09AC\u09BE\u0982\u09B2\u09BE": _2, "xn--90ae": _2, "\u0431\u0433": _2, "xn--mgbcpq6gpa1a": _2, "\u0627\u0644\u0628\u062D\u0631\u064A\u0646": _2, "xn--90ais": _2, "\u0431\u0435\u043B": _2, "xn--fiqs8s": _2, "\u4E2D\u56FD": _2, "xn--fiqz9s": _2, "\u4E2D\u570B": _2, "xn--lgbbat1ad8j": _2, "\u0627\u0644\u062C\u0632\u0627\u0626\u0631": _2, "xn--wgbh1c": _2, "\u0645\u0635\u0631": _2, "xn--e1a4c": _2, "\u0435\u044E": _2, "xn--qxa6a": _2, "\u03B5\u03C5": _2, "xn--mgbah1a3hjkrd": _2, "\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627": _2, "xn--node": _2, "\u10D2\u10D4": _2, "xn--qxam": _2, "\u03B5\u03BB": _2, "xn--j6w193g": [1, { "xn--55qx5d": _2, "xn--wcvs22d": _2, "xn--mxtq1m": _2, "xn--gmqw5a": _2, "xn--od0alg": _2, "xn--uc0atv": _2 }], "\u9999\u6E2F": [1, { "\u516C\u53F8": _2, "\u6559\u80B2": _2, "\u653F\u5E9C": _2, "\u500B\u4EBA": _2, "\u7DB2\u7D61": _2, "\u7D44\u7E54": _2 }], "xn--2scrj9c": _2, "\u0CAD\u0CBE\u0CB0\u0CA4": _2, "xn--3hcrj9c": _2, "\u0B2D\u0B3E\u0B30\u0B24": _2, "xn--45br5cyl": _2, "\u09AD\u09BE\u09F0\u09A4": _2, "xn--h2breg3eve": _2, "\u092D\u093E\u0930\u0924\u092E\u094D": _2, "xn--h2brj9c8c": _2, "\u092D\u093E\u0930\u094B\u0924": _2, "xn--mgbgu82a": _2, "\u0680\u0627\u0631\u062A": _2, "xn--rvc1e0am3e": _2, "\u0D2D\u0D3E\u0D30\u0D24\u0D02": _2, "xn--h2brj9c": _2, "\u092D\u093E\u0930\u0924": _2, "xn--mgbbh1a": _2, "\u0628\u0627\u0631\u062A": _2, "xn--mgbbh1a71e": _2, "\u0628\u06BE\u0627\u0631\u062A": _2, "xn--fpcrj9c3d": _2, "\u0C2D\u0C3E\u0C30\u0C24\u0C4D": _2, "xn--gecrj9c": _2, "\u0AAD\u0ABE\u0AB0\u0AA4": _2, "xn--s9brj9c": _2, "\u0A2D\u0A3E\u0A30\u0A24": _2, "xn--45brj9c": _2, "\u09AD\u09BE\u09B0\u09A4": _2, "xn--xkc2dl3a5ee0h": _2, "\u0B87\u0BA8\u0BCD\u0BA4\u0BBF\u0BAF\u0BBE": _2, "xn--mgba3a4f16a": _2, "\u0627\u06CC\u0631\u0627\u0646": _2, "xn--mgba3a4fra": _2, "\u0627\u064A\u0631\u0627\u0646": _2, "xn--mgbtx2b": _2, "\u0639\u0631\u0627\u0642": _2, "xn--mgbayh7gpa": _2, "\u0627\u0644\u0627\u0631\u062F\u0646": _2, "xn--3e0b707e": _2, "\uD55C\uAD6D": _2, "xn--80ao21a": _2, "\u049B\u0430\u0437": _2, "xn--q7ce6a": _2, "\u0EA5\u0EB2\u0EA7": _2, "xn--fzc2c9e2c": _2, "\u0DBD\u0D82\u0D9A\u0DCF": _2, "xn--xkc2al3hye2a": _2, "\u0B87\u0BB2\u0B99\u0BCD\u0B95\u0BC8": _2, "xn--mgbc0a9azcg": _2, "\u0627\u0644\u0645\u063A\u0631\u0628": _2, "xn--d1alf": _2, "\u043C\u043A\u0434": _2, "xn--l1acc": _2, "\u043C\u043E\u043D": _2, "xn--mix891f": _2, "\u6FB3\u9580": _2, "xn--mix082f": _2, "\u6FB3\u95E8": _2, "xn--mgbx4cd0ab": _2, "\u0645\u0644\u064A\u0633\u064A\u0627": _2, "xn--mgb9awbf": _2, "\u0639\u0645\u0627\u0646": _2, "xn--mgbai9azgqp6j": _2, "\u067E\u0627\u06A9\u0633\u062A\u0627\u0646": _2, "xn--mgbai9a5eva00b": _2, "\u067E\u0627\u0643\u0633\u062A\u0627\u0646": _2, "xn--ygbi2ammx": _2, "\u0641\u0644\u0633\u0637\u064A\u0646": _2, "xn--90a3ac": [1, { "xn--o1ac": _2, "xn--c1avg": _2, "xn--90azh": _2, "xn--d1at": _2, "xn--o1ach": _2, "xn--80au": _2 }], "\u0441\u0440\u0431": [1, { "\u043F\u0440": _2, "\u043E\u0440\u0433": _2, "\u043E\u0431\u0440": _2, "\u043E\u0434": _2, "\u0443\u043F\u0440": _2, "\u0430\u043A": _2 }], "xn--p1ai": _2, "\u0440\u0444": _2, "xn--wgbl6a": _2, "\u0642\u0637\u0631": _2, "xn--mgberp4a5d4ar": _2, "\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629": _2, "xn--mgberp4a5d4a87g": _2, "\u0627\u0644\u0633\u0639\u0648\u062F\u06CC\u0629": _2, "xn--mgbqly7c0a67fbc": _2, "\u0627\u0644\u0633\u0639\u0648\u062F\u06CC\u06C3": _2, "xn--mgbqly7cvafr": _2, "\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0647": _2, "xn--mgbpl2fh": _2, "\u0633\u0648\u062F\u0627\u0646": _2, "xn--yfro4i67o": _2, "\u65B0\u52A0\u5761": _2, "xn--clchc0ea0b2g2a9gcd": _2, "\u0B9A\u0BBF\u0B99\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0BC2\u0BB0\u0BCD": _2, "xn--ogbpf8fl": _2, "\u0633\u0648\u0631\u064A\u0629": _2, "xn--mgbtf8fl": _2, "\u0633\u0648\u0631\u064A\u0627": _2, "xn--o3cw4h": [1, { "xn--12c1fe0br": _2, "xn--12co0c3b4eva": _2, "xn--h3cuzk1di": _2, "xn--o3cyx2a": _2, "xn--m3ch0j3a": _2, "xn--12cfi8ixb8l": _2 }], "\u0E44\u0E17\u0E22": [1, { "\u0E28\u0E36\u0E01\u0E29\u0E32": _2, "\u0E18\u0E38\u0E23\u0E01\u0E34\u0E08": _2, "\u0E23\u0E31\u0E10\u0E1A\u0E32\u0E25": _2, "\u0E17\u0E2B\u0E32\u0E23": _2, "\u0E40\u0E19\u0E47\u0E15": _2, "\u0E2D\u0E07\u0E04\u0E4C\u0E01\u0E23": _2 }], "xn--pgbs0dh": _2, "\u062A\u0648\u0646\u0633": _2, "xn--kpry57d": _2, "\u53F0\u7063": _2, "xn--kprw13d": _2, "\u53F0\u6E7E": _2, "xn--nnx388a": _2, "\u81FA\u7063": _2, "xn--j1amh": _2, "\u0443\u043A\u0440": _2, "xn--mgb2ddes": _2, "\u0627\u0644\u064A\u0645\u0646": _2, "xxx": _2, "ye": _52, "za": [0, { "ac": _2, "agric": _2, "alt": _2, "co": _10, "edu": _2, "gov": _2, "grondar": _2, "law": _2, "mil": _2, "net": _2, "ngo": _2, "nic": _2, "nis": _2, "nom": _2, "org": _2, "school": _2, "tm": _2, "web": _2 }], "zm": [1, { "ac": _2, "biz": _2, "co": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "mil": _2, "net": _2, "org": _2, "sch": _2 }], "zw": [1, { "ac": _2, "co": _2, "gov": _2, "mil": _2, "org": _2 }], "aaa": _2, "aarp": _2, "abb": _2, "abbott": _2, "abbvie": _2, "abc": _2, "able": _2, "abogado": _2, "abudhabi": _2, "academy": [1, { "official": _3 }], "accenture": _2, "accountant": _2, "accountants": _2, "aco": _2, "actor": _2, "ads": _2, "adult": _2, "aeg": _2, "aetna": _2, "afl": _2, "africa": _2, "agakhan": _2, "agency": _2, "aig": _2, "airbus": _2, "airforce": _2, "airtel": _2, "akdn": _2, "alibaba": _2, "alipay": _2, "allfinanz": _2, "allstate": _2, "ally": _2, "alsace": _2, "alstom": _2, "amazon": _2, "americanexpress": _2, "americanfamily": _2, "amex": _2, "amfam": _2, "amica": _2, "amsterdam": _2, "analytics": _2, "android": _2, "anquan": _2, "anz": _2, "aol": _2, "apartments": _2, "app": [1, { "adaptable": _3, "beget": _5, "clerk": _3, "clerkstage": _3, "wnext": _3, "csb": _6, "platform0": _3, "deta": _3, "ondigitalocean": _3, "easypanel": _3, "encr": _3, "evervault": _7, "expo": _8, "edgecompute": _3, "flutterflow": _3, "framer": _3, "hosted": _5, "run": _5, "web": _3, "hasura": _3, "loginline": _3, "messerli": _3, "netfy": _3, "netlify": _3, "ngrok": _3, "ngrok-free": _3, "developer": _5, "noop": _3, "northflank": _5, "upsun": _5, "replit": _9, "nyat": _3, "snowflake": [0, { "*": _3, "privatelink": _5 }], "streamlit": _3, "storipress": _3, "telebit": _3, "typedream": _3, "vercel": _3, "bookonline": _3, "wdh": _6, "zeabur": _3 }], "apple": _2, "aquarelle": _2, "arab": _2, "aramco": _2, "archi": _2, "army": _2, "art": _2, "arte": _2, "asda": _2, "associates": _2, "athleta": _2, "attorney": _2, "auction": _2, "audi": _2, "audible": _2, "audio": _2, "auspost": _2, "author": _2, "auto": _2, "autos": _2, "aws": [1, { "sagemaker": [0, { "ap-northeast-1": _13, "ap-northeast-2": _13, "ap-south-1": _13, "ap-southeast-1": _13, "ap-southeast-2": _13, "ca-central-1": _15, "eu-central-1": _13, "eu-west-1": _13, "eu-west-2": _13, "us-east-1": _15, "us-east-2": _15, "us-west-2": _15, "af-south-1": _12, "ap-east-1": _12, "ap-northeast-3": _12, "ap-south-2": _14, "ap-southeast-3": _12, "ap-southeast-4": _14, "ca-west-1": [0, { "notebook": _3, "notebook-fips": _3 }], "eu-central-2": _14, "eu-north-1": _12, "eu-south-1": _12, "eu-south-2": _12, "eu-west-3": _12, "il-central-1": _12, "me-central-1": _12, "me-south-1": _12, "sa-east-1": _12, "us-gov-east-1": _16, "us-gov-west-1": _16, "us-west-1": [0, { "notebook": _3, "notebook-fips": _3, "studio": _3 }], "experiments": _5 }], "repost": [0, { "private": _5 }] }], "axa": _2, "azure": _2, "baby": _2, "baidu": _2, "banamex": _2, "band": _2, "bank": _2, "bar": _2, "barcelona": _2, "barclaycard": _2, "barclays": _2, "barefoot": _2, "bargains": _2, "baseball": _2, "basketball": [1, { "aus": _3, "nz": _3 }], "bauhaus": _2, "bayern": _2, "bbc": _2, "bbt": _2, "bbva": _2, "bcg": _2, "bcn": _2, "beats": _2, "beauty": _2, "beer": _2, "bentley": _2, "berlin": _2, "best": _2, "bestbuy": _2, "bet": _2, "bharti": _2, "bible": _2, "bid": _2, "bike": _2, "bing": _2, "bingo": _2, "bio": _2, "black": _2, "blackfriday": _2, "blockbuster": _2, "blog": _2, "bloomberg": _2, "blue": _2, "bms": _2, "bmw": _2, "bnpparibas": _2, "boats": _2, "boehringer": _2, "bofa": _2, "bom": _2, "bond": _2, "boo": _2, "book": _2, "booking": _2, "bosch": _2, "bostik": _2, "boston": _2, "bot": _2, "boutique": _2, "box": _2, "bradesco": _2, "bridgestone": _2, "broadway": _2, "broker": _2, "brother": _2, "brussels": _2, "build": [1, { "v0": _3 }], "builders": [1, { "cloudsite": _3 }], "business": _19, "buy": _2, "buzz": _2, "bzh": _2, "cab": _2, "cafe": _2, "cal": _2, "call": _2, "calvinklein": _2, "cam": _2, "camera": _2, "camp": [1, { "emf": [0, { "at": _3 }] }], "canon": _2, "capetown": _2, "capital": _2, "capitalone": _2, "car": _2, "caravan": _2, "cards": _2, "care": _2, "career": _2, "careers": _2, "cars": _2, "casa": [1, { "nabu": [0, { "ui": _3 }] }], "case": _2, "cash": _2, "casino": _2, "catering": _2, "catholic": _2, "cba": _2, "cbn": _2, "cbre": _2, "center": _2, "ceo": _2, "cern": _2, "cfa": _2, "cfd": _2, "chanel": _2, "channel": _2, "charity": _2, "chase": _2, "chat": _2, "cheap": _2, "chintai": _2, "christmas": _2, "chrome": _2, "church": _2, "cipriani": _2, "circle": _2, "cisco": _2, "citadel": _2, "citi": _2, "citic": _2, "city": _2, "claims": _2, "cleaning": _2, "click": _2, "clinic": _2, "clinique": _2, "clothing": _2, "cloud": [1, { "banzai": _5, "elementor": _3, "encoway": [0, { "eu": _3 }], "statics": _5, "ravendb": _3, "axarnet": [0, { "es-1": _3 }], "diadem": _3, "jelastic": [0, { "vip": _3 }], "jele": _3, "jenv-aruba": [0, { "aruba": [0, { "eur": [0, { "it1": _3 }] }], "it1": _3 }], "keliweb": [2, { "cs": _3 }], "oxa": [2, { "tn": _3, "uk": _3 }], "primetel": [2, { "uk": _3 }], "reclaim": [0, { "ca": _3, "uk": _3, "us": _3 }], "trendhosting": [0, { "ch": _3, "de": _3 }], "jotelulu": _3, "kuleuven": _3, "linkyard": _3, "magentosite": _5, "matlab": _3, "observablehq": _3, "perspecta": _3, "vapor": _3, "on-rancher": _5, "scw": [0, { "baremetal": [0, { "fr-par-1": _3, "fr-par-2": _3, "nl-ams-1": _3 }], "fr-par": [0, { "cockpit": _3, "fnc": [2, { "functions": _3 }], "k8s": _21, "s3": _3, "s3-website": _3, "whm": _3 }], "instances": [0, { "priv": _3, "pub": _3 }], "k8s": _3, "nl-ams": [0, { "cockpit": _3, "k8s": _21, "s3": _3, "s3-website": _3, "whm": _3 }], "pl-waw": [0, { "cockpit": _3, "k8s": _21, "s3": _3, "s3-website": _3 }], "scalebook": _3, "smartlabeling": _3 }], "servebolt": _3, "onstackit": [0, { "runs": _3 }], "sensiosite": _5, "trafficplex": _3, "unison-services": _3, "urown": _3, "voorloper": _3, "zap": _3 }], "club": [1, { "cloudns": _3, "jele": _3, "barsy": _3 }], "clubmed": _2, "coach": _2, "codes": [1, { "owo": _5 }], "coffee": _2, "college": _2, "cologne": _2, "commbank": _2, "community": [1, { "nog": _3, "ravendb": _3, "myforum": _3 }], "company": _2, "compare": _2, "computer": _2, "comsec": _2, "condos": _2, "construction": _2, "consulting": _2, "contact": _2, "contractors": _2, "cooking": _2, "cool": [1, { "elementor": _3, "de": _3 }], "corsica": _2, "country": _2, "coupon": _2, "coupons": _2, "courses": _2, "cpa": _2, "credit": _2, "creditcard": _2, "creditunion": _2, "cricket": _2, "crown": _2, "crs": _2, "cruise": _2, "cruises": _2, "cuisinella": _2, "cymru": _2, "cyou": _2, "dabur": _2, "dad": _2, "dance": _2, "data": _2, "date": _2, "dating": _2, "datsun": _2, "day": _2, "dclk": _2, "dds": _2, "deal": _2, "dealer": _2, "deals": _2, "degree": _2, "delivery": _2, "dell": _2, "deloitte": _2, "delta": _2, "democrat": _2, "dental": _2, "dentist": _2, "desi": _2, "design": [1, { "graphic": _3, "bss": _3 }], "dev": [1, { "12chars": _3, "panel": _3, "lcl": _5, "lclstage": _5, "stg": _5, "stgstage": _5, "pages": _3, "r2": _3, "workers": _3, "curv": _3, "deno": _3, "deno-staging": _3, "deta": _3, "evervault": _7, "fly": _3, "githubpreview": _3, "gateway": _5, "is-a-good": _3, "is-a": _3, "iserv": _3, "runcontainers": _3, "localcert": [0, { "user": _5 }], "loginline": _3, "barsy": _3, "mediatech": _3, "modx": _3, "ngrok": _3, "ngrok-free": _3, "is-a-fullstack": _3, "is-cool": _3, "is-not-a": _3, "localplayer": _3, "xmit": _3, "platter-app": _3, "replit": [2, { "archer": _3, "bones": _3, "canary": _3, "global": _3, "hacker": _3, "id": _3, "janeway": _3, "kim": _3, "kira": _3, "kirk": _3, "odo": _3, "paris": _3, "picard": _3, "pike": _3, "prerelease": _3, "reed": _3, "riker": _3, "sisko": _3, "spock": _3, "staging": _3, "sulu": _3, "tarpit": _3, "teams": _3, "tucker": _3, "wesley": _3, "worf": _3 }], "crm": [0, { "d": _5, "w": _5, "wa": _5, "wb": _5, "wc": _5, "wd": _5, "we": _5, "wf": _5 }], "vercel": _3, "webhare": _5, "hrsn": [2, { "t": _3 }] }], "dhl": _2, "diamonds": _2, "diet": _2, "digital": [1, { "cloudapps": [2, { "london": _3 }] }], "direct": [1, { "libp2p": _3 }], "directory": _2, "discount": _2, "discover": _2, "dish": _2, "diy": _2, "dnp": _2, "docs": _2, "doctor": _2, "dog": _2, "domains": _2, "dot": _2, "download": _2, "drive": _2, "dtv": _2, "dubai": _2, "dunlop": _2, "dupont": _2, "durban": _2, "dvag": _2, "dvr": _2, "earth": _2, "eat": _2, "eco": _2, "edeka": _2, "education": _19, "email": [1, { "crisp": [0, { "on": _3 }], "tawk": _46, "tawkto": _46 }], "emerck": _2, "energy": _2, "engineer": _2, "engineering": _2, "enterprises": _2, "epson": _2, "equipment": _2, "ericsson": _2, "erni": _2, "esq": _2, "estate": [1, { "compute": _5 }], "eurovision": _2, "eus": [1, { "party": _47 }], "events": [1, { "koobin": _3, "co": _3 }], "exchange": _2, "expert": _2, "exposed": _2, "express": _2, "extraspace": _2, "fage": _2, "fail": _2, "fairwinds": _2, "faith": _48, "family": _2, "fan": _2, "fans": _2, "farm": [1, { "storj": _3 }], "farmers": _2, "fashion": _2, "fast": _2, "fedex": _2, "feedback": _2, "ferrari": _2, "ferrero": _2, "fidelity": _2, "fido": _2, "film": _2, "final": _2, "finance": _2, "financial": _19, "fire": _2, "firestone": _2, "firmdale": _2, "fish": _2, "fishing": _2, "fit": _2, "fitness": _2, "flickr": _2, "flights": _2, "flir": _2, "florist": _2, "flowers": _2, "fly": _2, "foo": _2, "food": _2, "football": _2, "ford": _2, "forex": _2, "forsale": _2, "forum": _2, "foundation": _2, "fox": _2, "free": _2, "fresenius": _2, "frl": _2, "frogans": _2, "frontier": _2, "ftr": _2, "fujitsu": _2, "fun": _2, "fund": _2, "furniture": _2, "futbol": _2, "fyi": _2, "gal": _2, "gallery": _2, "gallo": _2, "gallup": _2, "game": _2, "games": [1, { "pley": _3, "sheezy": _3 }], "gap": _2, "garden": _2, "gay": [1, { "pages": _3 }], "gbiz": _2, "gdn": [1, { "cnpy": _3 }], "gea": _2, "gent": _2, "genting": _2, "george": _2, "ggee": _2, "gift": _2, "gifts": _2, "gives": _2, "giving": _2, "glass": _2, "gle": _2, "global": _2, "globo": _2, "gmail": _2, "gmbh": _2, "gmo": _2, "gmx": _2, "godaddy": _2, "gold": _2, "goldpoint": _2, "golf": _2, "goo": _2, "goodyear": _2, "goog": [1, { "cloud": _3, "translate": _3, "usercontent": _5 }], "google": _2, "gop": _2, "got": _2, "grainger": _2, "graphics": _2, "gratis": _2, "green": _2, "gripe": _2, "grocery": _2, "group": [1, { "discourse": _3 }], "gucci": _2, "guge": _2, "guide": _2, "guitars": _2, "guru": _2, "hair": _2, "hamburg": _2, "hangout": _2, "haus": _2, "hbo": _2, "hdfc": _2, "hdfcbank": _2, "health": [1, { "hra": _3 }], "healthcare": _2, "help": _2, "helsinki": _2, "here": _2, "hermes": _2, "hiphop": _2, "hisamitsu": _2, "hitachi": _2, "hiv": _2, "hkt": _2, "hockey": _2, "holdings": _2, "holiday": _2, "homedepot": _2, "homegoods": _2, "homes": _2, "homesense": _2, "honda": _2, "horse": _2, "hospital": _2, "host": [1, { "cloudaccess": _3, "freesite": _3, "easypanel": _3, "fastvps": _3, "myfast": _3, "tempurl": _3, "wpmudev": _3, "jele": _3, "mircloud": _3, "wp2": _3, "half": _3 }], "hosting": [1, { "opencraft": _3 }], "hot": _2, "hotels": _2, "hotmail": _2, "house": _2, "how": _2, "hsbc": _2, "hughes": _2, "hyatt": _2, "hyundai": _2, "ibm": _2, "icbc": _2, "ice": _2, "icu": _2, "ieee": _2, "ifm": _2, "ikano": _2, "imamat": _2, "imdb": _2, "immo": _2, "immobilien": _2, "inc": _2, "industries": _2, "infiniti": _2, "ing": _2, "ink": _2, "institute": _2, "insurance": _2, "insure": _2, "international": _2, "intuit": _2, "investments": _2, "ipiranga": _2, "irish": _2, "ismaili": _2, "ist": _2, "istanbul": _2, "itau": _2, "itv": _2, "jaguar": _2, "java": _2, "jcb": _2, "jeep": _2, "jetzt": _2, "jewelry": _2, "jio": _2, "jll": _2, "jmp": _2, "jnj": _2, "joburg": _2, "jot": _2, "joy": _2, "jpmorgan": _2, "jprs": _2, "juegos": _2, "juniper": _2, "kaufen": _2, "kddi": _2, "kerryhotels": _2, "kerrylogistics": _2, "kerryproperties": _2, "kfh": _2, "kia": _2, "kids": _2, "kim": _2, "kindle": _2, "kitchen": _2, "kiwi": _2, "koeln": _2, "komatsu": _2, "kosher": _2, "kpmg": _2, "kpn": _2, "krd": [1, { "co": _3, "edu": _3 }], "kred": _2, "kuokgroup": _2, "kyoto": _2, "lacaixa": _2, "lamborghini": _2, "lamer": _2, "lancaster": _2, "land": _2, "landrover": _2, "lanxess": _2, "lasalle": _2, "lat": _2, "latino": _2, "latrobe": _2, "law": _2, "lawyer": _2, "lds": _2, "lease": _2, "leclerc": _2, "lefrak": _2, "legal": _2, "lego": _2, "lexus": _2, "lgbt": _2, "lidl": _2, "life": _2, "lifeinsurance": _2, "lifestyle": _2, "lighting": _2, "like": _2, "lilly": _2, "limited": _2, "limo": _2, "lincoln": _2, "link": [1, { "myfritz": _3, "cyon": _3, "dweb": _5, "nftstorage": [0, { "ipfs": _3 }], "mypep": _3 }], "lipsy": _2, "live": [1, { "aem": _3, "hlx": _3, "ewp": _5 }], "living": _2, "llc": _2, "llp": _2, "loan": _2, "loans": _2, "locker": _2, "locus": _2, "lol": [1, { "omg": _3 }], "london": _2, "lotte": _2, "lotto": _2, "love": _2, "lpl": _2, "lplfinancial": _2, "ltd": _2, "ltda": _2, "lundbeck": _2, "luxe": _2, "luxury": _2, "madrid": _2, "maif": _2, "maison": _2, "makeup": _2, "man": _2, "management": [1, { "router": _3 }], "mango": _2, "map": _2, "market": _2, "marketing": _2, "markets": _2, "marriott": _2, "marshalls": _2, "mattel": _2, "mba": _2, "mckinsey": _2, "med": _2, "media": _56, "meet": _2, "melbourne": _2, "meme": _2, "memorial": _2, "men": _2, "menu": [1, { "barsy": _3, "barsyonline": _3 }], "merck": _2, "merckmsd": _2, "miami": _2, "microsoft": _2, "mini": _2, "mint": _2, "mit": _2, "mitsubishi": _2, "mlb": _2, "mls": _2, "mma": _2, "mobile": _2, "moda": _2, "moe": _2, "moi": _2, "mom": [1, { "ind": _3 }], "monash": _2, "money": _2, "monster": _2, "mormon": _2, "mortgage": _2, "moscow": _2, "moto": _2, "motorcycles": _2, "mov": _2, "movie": _2, "msd": _2, "mtn": _2, "mtr": _2, "music": _2, "nab": _2, "nagoya": _2, "navy": _2, "nba": _2, "nec": _2, "netbank": _2, "netflix": _2, "network": [1, { "alces": _5, "co": _3, "arvo": _3, "azimuth": _3, "tlon": _3 }], "neustar": _2, "new": _2, "news": [1, { "noticeable": _3 }], "next": _2, "nextdirect": _2, "nexus": _2, "nfl": _2, "ngo": _2, "nhk": _2, "nico": _2, "nike": _2, "nikon": _2, "ninja": _2, "nissan": _2, "nissay": _2, "nokia": _2, "norton": _2, "now": _2, "nowruz": _2, "nowtv": _2, "nra": _2, "nrw": _2, "ntt": _2, "nyc": _2, "obi": _2, "observer": _2, "office": _2, "okinawa": _2, "olayan": _2, "olayangroup": _2, "ollo": _2, "omega": _2, "one": [1, { "onred": _8, "kin": _5, "service": _3, "homelink": _3 }], "ong": [1, { "obl": _3 }], "onl": _2, "online": [1, { "eero": _3, "eero-stage": _3, "websitebuilder": _3, "barsy": _3 }], "ooo": _2, "open": _2, "oracle": _2, "orange": [1, { "tech": _3 }], "organic": _2, "origins": _2, "osaka": _2, "otsuka": _2, "ott": _2, "ovh": [1, { "nerdpol": _3 }], "page": [1, { "aem": _3, "hlx": _3, "hlx3": _3, "translated": _3, "codeberg": _3, "prvcy": _3, "rocky": _3, "pdns": _3, "plesk": _3 }], "panasonic": _2, "paris": _2, "pars": _2, "partners": _2, "parts": _2, "party": _48, "pay": _2, "pccw": _2, "pet": _2, "pfizer": _2, "pharmacy": _2, "phd": _2, "philips": _2, "phone": _2, "photo": _2, "photography": _2, "photos": _56, "physio": _2, "pics": _2, "pictet": _2, "pictures": [1, { "1337": _3 }], "pid": _2, "pin": _2, "ping": _2, "pink": _2, "pioneer": _2, "pizza": [1, { "ngrok": _3 }], "place": _19, "play": _2, "playstation": _2, "plumbing": _2, "plus": _2, "pnc": _2, "pohl": _2, "poker": _2, "politie": _2, "porn": _2, "pramerica": _2, "praxi": _2, "press": _2, "prime": _2, "prod": _2, "productions": _2, "prof": _2, "progressive": _2, "promo": _2, "properties": _2, "property": _2, "protection": _2, "pru": _2, "prudential": _2, "pub": [1, { "id": _5, "kin": _5, "barsy": _3 }], "pwc": _2, "qpon": _2, "quebec": _2, "quest": _2, "racing": _2, "radio": _2, "read": _2, "realestate": _2, "realtor": _2, "realty": _2, "recipes": _2, "red": _2, "redstone": _2, "redumbrella": _2, "rehab": _2, "reise": _2, "reisen": _2, "reit": _2, "reliance": _2, "ren": _2, "rent": _2, "rentals": _2, "repair": _2, "report": _2, "republican": _2, "rest": _2, "restaurant": _2, "review": _48, "reviews": _2, "rexroth": _2, "rich": _2, "richardli": _2, "ricoh": _2, "ril": _2, "rio": _2, "rip": [1, { "clan": _3 }], "rocks": [1, { "myddns": _3, "stackit": _3, "lima-city": _3, "webspace": _3 }], "rodeo": _2, "rogers": _2, "room": _2, "rsvp": _2, "rugby": _2, "ruhr": _2, "run": [1, { "hs": _3, "development": _3, "ravendb": _3, "servers": _3, "build": _5, "code": _5, "database": _5, "migration": _5, "onporter": _3, "repl": _3, "stackit": _3, "val": [0, { "express": _3, "web": _3 }], "wix": _3 }], "rwe": _2, "ryukyu": _2, "saarland": _2, "safe": _2, "safety": _2, "sakura": _2, "sale": _2, "salon": _2, "samsclub": _2, "samsung": _2, "sandvik": _2, "sandvikcoromant": _2, "sanofi": _2, "sap": _2, "sarl": _2, "sas": _2, "save": _2, "saxo": _2, "sbi": _2, "sbs": _2, "scb": _2, "schaeffler": _2, "schmidt": _2, "scholarships": _2, "school": _2, "schule": _2, "schwarz": _2, "science": _48, "scot": [1, { "gov": [2, { "service": _3 }] }], "search": _2, "seat": _2, "secure": _2, "security": _2, "seek": _2, "select": _2, "sener": _2, "services": [1, { "loginline": _3 }], "seven": _2, "sew": _2, "sex": _2, "sexy": _2, "sfr": _2, "shangrila": _2, "sharp": _2, "shell": _2, "shia": _2, "shiksha": _2, "shoes": _2, "shop": [1, { "base": _3, "hoplix": _3, "barsy": _3, "barsyonline": _3 }], "shopping": _2, "shouji": _2, "show": _2, "silk": _2, "sina": _2, "singles": _2, "site": [1, { "canva": _22, "cloudera": _5, "convex": _3, "cyon": _3, "fnwk": _3, "folionetwork": _3, "fastvps": _3, "jele": _3, "jouwweb": _3, "lelux": _3, "loginline": _3, "barsy": _3, "notion": _3, "omniwe": _3, "opensocial": _3, "madethis": _3, "platformsh": _5, "tst": _5, "byen": _3, "srht": _3, "novecore": _3, "wpsquared": _3 }], "ski": _2, "skin": _2, "sky": _2, "skype": _2, "sling": _2, "smart": _2, "smile": _2, "sncf": _2, "soccer": _2, "social": _2, "softbank": _2, "software": _2, "sohu": _2, "solar": _2, "solutions": [1, { "diher": _3 }], "song": _2, "sony": _2, "soy": _2, "spa": _2, "space": [1, { "myfast": _3, "heiyu": _3, "app-ionos": _3, "uber": _3, "xs4all": _3 }], "sport": _2, "spot": _2, "srl": _2, "stada": _2, "staples": _2, "star": _2, "statebank": _2, "statefarm": _2, "stc": _2, "stcgroup": _2, "stockholm": _2, "storage": _2, "store": [1, { "barsy": _3, "sellfy": _3, "shopware": _3, "storebase": _3 }], "stream": _2, "studio": _2, "study": _2, "style": _2, "sucks": _2, "supplies": _2, "supply": _2, "support": [1, { "barsy": _3 }], "surf": _2, "surgery": _2, "suzuki": _2, "swatch": _2, "swiss": _2, "sydney": _2, "systems": [1, { "knightpoint": _3 }], "tab": _2, "taipei": _2, "talk": _2, "taobao": _2, "target": _2, "tatamotors": _2, "tatar": _2, "tattoo": _2, "tax": _2, "taxi": _2, "tci": _2, "tdk": _2, "team": [1, { "discourse": _3, "jelastic": _3 }], "tech": [1, { "cleverapps": _3 }], "technology": _19, "temasek": _2, "tennis": _2, "teva": _2, "thd": _2, "theater": _2, "theatre": _2, "tiaa": _2, "tickets": _2, "tienda": _2, "tips": _2, "tires": _2, "tirol": _2, "tjmaxx": _2, "tjx": _2, "tkmaxx": _2, "tmall": _2, "today": [1, { "prequalifyme": _3 }], "tokyo": _2, "tools": _2, "top": [1, { "now-dns": _3, "ntdll": _3, "wadl": _5 }], "toray": _2, "toshiba": _2, "total": _2, "tours": _2, "town": _2, "toyota": _2, "toys": _2, "trade": _48, "trading": _2, "training": _2, "travel": _2, "travelers": _2, "travelersinsurance": _2, "trust": _2, "trv": _2, "tube": _2, "tui": _2, "tunes": _2, "tushu": _2, "tvs": _2, "ubank": _2, "ubs": _2, "unicom": _2, "university": _2, "uno": _2, "uol": _2, "ups": _2, "vacations": _2, "vana": _2, "vanguard": _2, "vegas": _2, "ventures": _2, "verisign": _2, "versicherung": _2, "vet": _2, "viajes": _2, "video": _2, "vig": _2, "viking": _2, "villas": _2, "vin": _2, "vip": _2, "virgin": _2, "visa": _2, "vision": _2, "viva": _2, "vivo": _2, "vlaanderen": _2, "vodka": [1, { "aaa": _3 }], "volvo": _2, "vote": _2, "voting": _2, "voto": _2, "voyage": _2, "wales": _2, "walmart": _2, "walter": _2, "wang": _2, "wanggou": _2, "watch": _2, "watches": _2, "weather": _2, "weatherchannel": _2, "webcam": _2, "weber": _2, "website": _56, "wed": _2, "wedding": _2, "weibo": _2, "weir": _2, "whoswho": _2, "wien": _2, "wiki": _56, "williamhill": _2, "win": _2, "windows": _2, "wine": _2, "winners": _2, "wme": _2, "wolterskluwer": _2, "woodside": _2, "work": [1, { "corpnet": _3 }], "works": _2, "world": _2, "wow": _2, "wtc": _2, "wtf": _2, "xbox": _2, "xerox": _2, "xihuan": _2, "xin": _2, "xn--11b4c3d": _2, "\u0915\u0949\u092E": _2, "xn--1ck2e1b": _2, "\u30BB\u30FC\u30EB": _2, "xn--1qqw23a": _2, "\u4F5B\u5C71": _2, "xn--30rr7y": _2, "\u6148\u5584": _2, "xn--3bst00m": _2, "\u96C6\u56E2": _2, "xn--3ds443g": _2, "\u5728\u7EBF": _2, "xn--3pxu8k": _2, "\u70B9\u770B": _2, "xn--42c2d9a": _2, "\u0E04\u0E2D\u0E21": _2, "xn--45q11c": _2, "\u516B\u5366": _2, "xn--4gbrim": _2, "\u0645\u0648\u0642\u0639": _2, "xn--55qw42g": _2, "\u516C\u76CA": _2, "xn--55qx5d": _2, "\u516C\u53F8": _2, "xn--5su34j936bgsg": _2, "\u9999\u683C\u91CC\u62C9": _2, "xn--5tzm5g": _2, "\u7F51\u7AD9": _2, "xn--6frz82g": _2, "\u79FB\u52A8": _2, "xn--6qq986b3xl": _2, "\u6211\u7231\u4F60": _2, "xn--80adxhks": _2, "\u043C\u043E\u0441\u043A\u0432\u0430": _2, "xn--80aqecdr1a": _2, "\u043A\u0430\u0442\u043E\u043B\u0438\u043A": _2, "xn--80asehdb": _2, "\u043E\u043D\u043B\u0430\u0439\u043D": _2, "xn--80aswg": _2, "\u0441\u0430\u0439\u0442": _2, "xn--8y0a063a": _2, "\u8054\u901A": _2, "xn--9dbq2a": _2, "\u05E7\u05D5\u05DD": _2, "xn--9et52u": _2, "\u65F6\u5C1A": _2, "xn--9krt00a": _2, "\u5FAE\u535A": _2, "xn--b4w605ferd": _2, "\u6DE1\u9A6C\u9521": _2, "xn--bck1b9a5dre4c": _2, "\u30D5\u30A1\u30C3\u30B7\u30E7\u30F3": _2, "xn--c1avg": _2, "\u043E\u0440\u0433": _2, "xn--c2br7g": _2, "\u0928\u0947\u091F": _2, "xn--cck2b3b": _2, "\u30B9\u30C8\u30A2": _2, "xn--cckwcxetd": _2, "\u30A2\u30DE\u30BE\u30F3": _2, "xn--cg4bki": _2, "\uC0BC\uC131": _2, "xn--czr694b": _2, "\u5546\u6807": _2, "xn--czrs0t": _2, "\u5546\u5E97": _2, "xn--czru2d": _2, "\u5546\u57CE": _2, "xn--d1acj3b": _2, "\u0434\u0435\u0442\u0438": _2, "xn--eckvdtc9d": _2, "\u30DD\u30A4\u30F3\u30C8": _2, "xn--efvy88h": _2, "\u65B0\u95FB": _2, "xn--fct429k": _2, "\u5BB6\u96FB": _2, "xn--fhbei": _2, "\u0643\u0648\u0645": _2, "xn--fiq228c5hs": _2, "\u4E2D\u6587\u7F51": _2, "xn--fiq64b": _2, "\u4E2D\u4FE1": _2, "xn--fjq720a": _2, "\u5A31\u4E50": _2, "xn--flw351e": _2, "\u8C37\u6B4C": _2, "xn--fzys8d69uvgm": _2, "\u96FB\u8A0A\u76C8\u79D1": _2, "xn--g2xx48c": _2, "\u8D2D\u7269": _2, "xn--gckr3f0f": _2, "\u30AF\u30E9\u30A6\u30C9": _2, "xn--gk3at1e": _2, "\u901A\u8CA9": _2, "xn--hxt814e": _2, "\u7F51\u5E97": _2, "xn--i1b6b1a6a2e": _2, "\u0938\u0902\u0917\u0920\u0928": _2, "xn--imr513n": _2, "\u9910\u5385": _2, "xn--io0a7i": _2, "\u7F51\u7EDC": _2, "xn--j1aef": _2, "\u043A\u043E\u043C": _2, "xn--jlq480n2rg": _2, "\u4E9A\u9A6C\u900A": _2, "xn--jvr189m": _2, "\u98DF\u54C1": _2, "xn--kcrx77d1x4a": _2, "\u98DE\u5229\u6D66": _2, "xn--kput3i": _2, "\u624B\u673A": _2, "xn--mgba3a3ejt": _2, "\u0627\u0631\u0627\u0645\u0643\u0648": _2, "xn--mgba7c0bbn0a": _2, "\u0627\u0644\u0639\u0644\u064A\u0627\u0646": _2, "xn--mgbab2bd": _2, "\u0628\u0627\u0632\u0627\u0631": _2, "xn--mgbca7dzdo": _2, "\u0627\u0628\u0648\u0638\u0628\u064A": _2, "xn--mgbi4ecexp": _2, "\u0643\u0627\u062B\u0648\u0644\u064A\u0643": _2, "xn--mgbt3dhd": _2, "\u0647\u0645\u0631\u0627\u0647": _2, "xn--mk1bu44c": _2, "\uB2F7\uCEF4": _2, "xn--mxtq1m": _2, "\u653F\u5E9C": _2, "xn--ngbc5azd": _2, "\u0634\u0628\u0643\u0629": _2, "xn--ngbe9e0a": _2, "\u0628\u064A\u062A\u0643": _2, "xn--ngbrx": _2, "\u0639\u0631\u0628": _2, "xn--nqv7f": _2, "\u673A\u6784": _2, "xn--nqv7fs00ema": _2, "\u7EC4\u7EC7\u673A\u6784": _2, "xn--nyqy26a": _2, "\u5065\u5EB7": _2, "xn--otu796d": _2, "\u62DB\u8058": _2, "xn--p1acf": [1, { "xn--90amc": _3, "xn--j1aef": _3, "xn--j1ael8b": _3, "xn--h1ahn": _3, "xn--j1adp": _3, "xn--c1avg": _3, "xn--80aaa0cvac": _3, "xn--h1aliz": _3, "xn--90a1af": _3, "xn--41a": _3 }], "\u0440\u0443\u0441": [1, { "\u0431\u0438\u0437": _3, "\u043A\u043E\u043C": _3, "\u043A\u0440\u044B\u043C": _3, "\u043C\u0438\u0440": _3, "\u043C\u0441\u043A": _3, "\u043E\u0440\u0433": _3, "\u0441\u0430\u043C\u0430\u0440\u0430": _3, "\u0441\u043E\u0447\u0438": _3, "\u0441\u043F\u0431": _3, "\u044F": _3 }], "xn--pssy2u": _2, "\u5927\u62FF": _2, "xn--q9jyb4c": _2, "\u307F\u3093\u306A": _2, "xn--qcka1pmc": _2, "\u30B0\u30FC\u30B0\u30EB": _2, "xn--rhqv96g": _2, "\u4E16\u754C": _2, "xn--rovu88b": _2, "\u66F8\u7C4D": _2, "xn--ses554g": _2, "\u7F51\u5740": _2, "xn--t60b56a": _2, "\uB2F7\uB137": _2, "xn--tckwe": _2, "\u30B3\u30E0": _2, "xn--tiq49xqyj": _2, "\u5929\u4E3B\u6559": _2, "xn--unup4y": _2, "\u6E38\u620F": _2, "xn--vermgensberater-ctb": _2, "verm\xF6gensberater": _2, "xn--vermgensberatung-pwb": _2, "verm\xF6gensberatung": _2, "xn--vhquv": _2, "\u4F01\u4E1A": _2, "xn--vuq861b": _2, "\u4FE1\u606F": _2, "xn--w4r85el8fhu5dnra": _2, "\u5609\u91CC\u5927\u9152\u5E97": _2, "xn--w4rs40l": _2, "\u5609\u91CC": _2, "xn--xhq521b": _2, "\u5E7F\u4E1C": _2, "xn--zfr164b": _2, "\u653F\u52A1": _2, "xyz": [1, { "telebit": _5 }], "yachts": _2, "yahoo": _2, "yamaxun": _2, "yandex": _2, "yodobashi": _2, "yoga": _2, "yokohama": _2, "you": _2, "youtube": _2, "yun": _2, "zappos": _2, "zara": _2, "zero": _2, "zip": _2, "zone": [1, { "cloud66": _3, "hs": _3, "triton": _5, "stackit": _3, "lima": _3 }], "zuerich": _2 }]; return rules2; }(); function lookupInTrie(parts, trie, index, allowedMask) { let result = null; let node = trie; while (node !== void 0) { if ((node[0] & allowedMask) !== 0) { result = { index: index + 1, isIcann: node[0] === 1, isPrivate: node[0] === 2 }; } if (index === -1) { break; } const succ = node[1]; node = Object.prototype.hasOwnProperty.call(succ, parts[index]) ? succ[parts[index]] : succ["*"]; index -= 1; } return result; } function suffixLookup(hostname3, options, out) { var _a; if (fastPathLookup(hostname3, options, out)) { return; } const hostnameParts = hostname3.split("."); const allowedMask = (options.allowPrivateDomains ? 2 : 0) | (options.allowIcannDomains ? 1 : 0); const exceptionMatch = lookupInTrie(hostnameParts, exceptions, hostnameParts.length - 1, allowedMask); if (exceptionMatch !== null) { out.isIcann = exceptionMatch.isIcann; out.isPrivate = exceptionMatch.isPrivate; out.publicSuffix = hostnameParts.slice(exceptionMatch.index + 1).join("."); return; } const rulesMatch = lookupInTrie(hostnameParts, rules, hostnameParts.length - 1, allowedMask); if (rulesMatch !== null) { out.isIcann = rulesMatch.isIcann; out.isPrivate = rulesMatch.isPrivate; out.publicSuffix = hostnameParts.slice(rulesMatch.index).join("."); return; } out.isIcann = false; out.isPrivate = false; out.publicSuffix = (_a = hostnameParts[hostnameParts.length - 1]) !== null && _a !== void 0 ? _a : null; } var RESULT = getEmptyResult(); function parse11(url3, options = {}) { return parseImpl(url3, 5, suffixLookup, options, getEmptyResult()); } function getHostname(url3, options = {}) { resetResult(RESULT); return parseImpl(url3, 0, suffixLookup, options, RESULT).hostname; } function getPublicSuffix(url3, options = {}) { resetResult(RESULT); return parseImpl(url3, 2, suffixLookup, options, RESULT).publicSuffix; } function getDomain2(url3, options = {}) { resetResult(RESULT); return parseImpl(url3, 3, suffixLookup, options, RESULT).domain; } function getSubdomain2(url3, options = {}) { resetResult(RESULT); return parseImpl(url3, 4, suffixLookup, options, RESULT).subdomain; } function getDomainWithoutSuffix(url3, options = {}) { resetResult(RESULT); return parseImpl(url3, 5, suffixLookup, options, RESULT).domainWithoutSuffix; } exports2.getDomain = getDomain2; exports2.getDomainWithoutSuffix = getDomainWithoutSuffix; exports2.getHostname = getHostname; exports2.getPublicSuffix = getPublicSuffix; exports2.getSubdomain = getSubdomain2; exports2.parse = parse11; } }); // src/util/alias/is-wildcard-alias.ts function isWildcardAlias(alias2) { return alias2.startsWith("*."); } var init_is_wildcard_alias = __esm({ "src/util/alias/is-wildcard-alias.ts"() { "use strict"; } }); // src/util/alias/extract-domain.ts function extractDomain(alias2) { return isWildcardAlias(alias2) ? alias2.slice(2) : alias2; } var init_extract_domain = __esm({ "src/util/alias/extract-domain.ts"() { "use strict"; init_is_wildcard_alias(); } }); // src/util/certs/get-wildcard-cns-for-alias.ts function getWildcardCNSForAlias(alias2) { if (isWildcardAlias(alias2)) { return [extractDomain(alias2), alias2]; } const parsedDomain = (0, import_tldts.parse)(alias2); const { domain, subdomain } = parsedDomain; if (!domain) { throw new InvalidDomain(alias2); } const secondLevel = subdomain && subdomain.includes(".") ? subdomain.split(".").slice(1).join(".") : null; const root = secondLevel ? `${secondLevel}.${domain}` : domain; return [root, `*.${root}`]; } var import_tldts; var init_get_wildcard_cns_for_alias = __esm({ "src/util/certs/get-wildcard-cns-for-alias.ts"() { "use strict"; import_tldts = __toESM3(require_cjs7(), 1); init_errors_ts(); init_is_wildcard_alias(); init_extract_domain(); } }); // src/util/output/join-words.ts function joinWords(words = []) { if (words.length === 0) { return ""; } if (words.length === 1) { return words[0]; } const last = words[words.length - 1]; const rest = words.slice(0, words.length - 1); return `${rest.join(", ")} and ${last}`; } var init_join_words = __esm({ "src/util/output/join-words.ts"() { "use strict"; } }); // src/util/certs/create-cert-for-alias.ts async function createCertificateForAlias(client2, context, alias2, shouldBeWildcard) { output_manager_default.spinner(`Generating a certificate\u2026`); const cns = shouldBeWildcard ? getWildcardCNSForAlias(alias2) : [alias2]; const certStamp = stamp_default(); const cert = await createCertForCns(client2, cns, context); if (cert instanceof NowError) { output_manager_default.stopSpinner(); return cert; } output_manager_default.log( `Certificate for ${joinWords(cert.cns)} (${cert.uid}) created ${certStamp()}` ); return cert; } var init_create_cert_for_alias = __esm({ "src/util/certs/create-cert-for-alias.ts"() { "use strict"; init_now_error(); init_create_cert_for_cns(); init_get_wildcard_cns_for_alias(); init_join_words(); init_stamp(); init_output_manager(); } }); // src/util/alias/create-alias.ts async function createAlias(client2, contextName, deployment, alias2, externalDomain) { output_manager_default.spinner(`Creating alias`); const result = await performCreateAlias( client2, contextName, deployment, alias2 ); output_manager_default.stopSpinner(); if (result instanceof CertMissing) { const cert = await createCertificateForAlias( client2, contextName, alias2, !externalDomain ); if (cert instanceof Error) { return cert; } output_manager_default.spinner(`Creating alias`); const secondTry = await performCreateAlias( client2, contextName, deployment, alias2 ); output_manager_default.stopSpinner(); return secondTry; } return result; } async function performCreateAlias(client2, contextName, deployment, alias2) { try { return await client2.fetch( `/now/deployments/${deployment.id}/aliases`, { method: "POST", body: { alias: alias2 } } ); } catch (err) { if (isAPIError(err)) { if (err.code === "cert_missing" || err.code === "cert_expired") { return new CertMissing(alias2); } if (err.status === 409) { return { uid: err.uid, alias: err.alias }; } if (err.code === "deployment_not_found" || err.code === "not_found") { return new DeploymentNotFound({ context: contextName, id: deployment.id }); } if (err.code === "gone") { return new DeploymentFailedAliasImpossible(); } if (err.code === "invalid_alias") { return new InvalidAlias(alias2); } if (err.code === "deployment_not_ready") { return new DeploymentNotReady({ url: deployment.url }); } if (err.status === 403) { if (err.code === "alias_in_use") { return new AliasInUse(alias2); } if (err.code === "forbidden") { return new DomainPermissionDenied(alias2, contextName); } } } throw err; } } var init_create_alias = __esm({ "src/util/alias/create-alias.ts"() { "use strict"; init_errors_ts(); init_create_cert_for_alias(); init_output_manager(); } }); // src/util/domains/is-domain-external.ts function isDomainExternal(domain) { return domain.serviceType !== "zeit.world"; } var init_is_domain_external = __esm({ "src/util/domains/is-domain-external.ts"() { "use strict"; } }); // src/util/domains/add-domain.ts async function addDomain(client2, domain, contextName) { output_manager_default.spinner(`Adding domain ${domain} under ${import_chalk34.default.bold(contextName)}`); const addedDomain = await performAddRequest(client2, domain); return addedDomain; } async function performAddRequest(client2, domainName) { return (0, import_async_retry3.default)( async () => { try { const { domain } = await client2.fetch("/v4/domains", { body: { name: domainName }, method: "POST" }); return domain; } catch (err) { if (isAPIError(err)) { if (err.code === "invalid_name") { return new InvalidDomain(domainName); } if (err.code === "domain_already_exists") { return new DomainAlreadyExists(domainName); } } throw err; } }, { retries: 5, maxTimeout: 8e3 } ); } var import_chalk34, import_async_retry3; var init_add_domain = __esm({ "src/util/domains/add-domain.ts"() { "use strict"; import_chalk34 = __toESM3(require_source(), 1); import_async_retry3 = __toESM3(require_dist5(), 1); init_errors_ts(); init_output_manager(); } }); // src/util/domains/get-domain-by-name.ts async function getDomainByName(client2, contextName, domainName, options = {}) { if (!options.ignoreWait) { output_manager_default.spinner( `Fetching domain ${domainName} under ${import_chalk35.default.bold(contextName)}` ); } try { const { domain } = await client2.fetch( `/v4/domains/${encodeURIComponent(domainName)}` ); return domain; } catch (err) { if (isAPIError(err)) { if (err.status === 404) { return new DomainNotFound(domainName, contextName); } if (err.status === 403) { return new DomainPermissionDenied(domainName, contextName); } } throw err; } } var import_chalk35; var init_get_domain_by_name = __esm({ "src/util/domains/get-domain-by-name.ts"() { "use strict"; import_chalk35 = __toESM3(require_source(), 1); init_errors_ts(); init_output_manager(); } }); // src/util/domains/maybe-get-domain-by-name.ts async function maybeGetDomainByName(client2, contextName, domainName) { const maybeDomain = await getDomainByName(client2, contextName, domainName); if (maybeDomain instanceof DomainPermissionDenied) { return maybeDomain; } return maybeDomain instanceof DomainNotFound ? null : maybeDomain; } var init_maybe_get_domain_by_name = __esm({ "src/util/domains/maybe-get-domain-by-name.ts"() { "use strict"; init_errors_ts(); init_get_domain_by_name(); } }); // src/util/domains/get-domain-price.ts async function getDomainPrice(client2, name) { try { return await client2.fetch(`/v1/registrar/domains/${name}/price`); } catch (err) { if (isAPIError(err)) { if (err.code === "tld_not_supported") { return new UnsupportedTLD(name); } if (err.status < 500) { return err; } } throw err; } } var init_get_domain_price = __esm({ "src/util/domains/get-domain-price.ts"() { "use strict"; init_errors_ts(); } }); // src/util/domains/get-domain-status.ts async function getDomainStatus(client2, domain) { return client2.fetch( `/v1/registrar/domains/${encodeURIComponent(domain)}/availability` ); } var init_get_domain_status = __esm({ "src/util/domains/get-domain-status.ts"() { "use strict"; } }); // src/util/domains/get-order.ts async function getOrder(client2, orderId) { const { team } = await getScope(client2); const teamParam = team ? `?teamId=${team.slug}` : ""; try { return await client2.fetch( `/v1/registrar/orders/${orderId}${teamParam}` ); } catch (err) { if (isAPIError(err)) { if (err.code === "not_found") { return null; } if (err.status < 500) { return err; } } throw err; } } var pollForOrder; var init_get_order = __esm({ "src/util/domains/get-order.ts"() { "use strict"; init_errors_ts(); init_sleep(); init_get_scope(); pollForOrder = async (client2, orderId, timeoutMs = 1e4) => { const intervalMs = 500; const startTime = Date.now(); while (Date.now() - startTime < timeoutMs) { const order = await getOrder(client2, orderId); if (order !== null && (order.status === "completed" || order.status === "failed")) { return order; } await sleep(intervalMs); } return null; }; } }); // src/util/domains/get-domain.ts async function getDomain(client2, contextName, domainName) { output_manager_default.spinner( `Fetching domain ${domainName} under ${import_chalk36.default.bold(contextName)}` ); try { const { domain } = await client2.fetch( `/v5/domains/${domainName}` ); return domain; } catch (err) { if (isAPIError(err) && err.status < 500) { return err; } throw err; } } var import_chalk36; var init_get_domain = __esm({ "src/util/domains/get-domain.ts"() { "use strict"; import_chalk36 = __toESM3(require_source(), 1); init_errors_ts(); init_output_manager(); } }); // src/util/domains/purchase-domain.ts async function purchaseDomain(client2, name, expectedPrice, years, autoRenew = true, contactInformation) { const { team, contextName } = await getScope(client2); const teamParam = team ? `?teamId=${team.slug}` : ""; try { const { orderId } = await client2.fetch( `/v1/registrar/domains/${name}/buy${teamParam}`, { body: { expectedPrice, autoRenew, years, contactInformation }, method: "POST" } ); const order = await pollForOrder(client2, orderId); if (order === null) { return new UnexpectedDomainPurchaseError(name); } if (order.status === "completed") { const domain = order.domains.find((domain2) => domain2.domainName === name); if (domain?.status === "completed") { const domain2 = await getDomain(client2, contextName, name); if (domain2 instanceof APIError) { throw domain2; } return domain2; } } if (order.error?.code === "payment_failed") { return new DomainPaymentError(); } return new UnexpectedDomainPurchaseError(name); } catch (err) { if (isAPIError(err)) { if (err.code === "invalid_domain") { return new InvalidDomain(name); } if (err.code === "domain_not_available") { return new DomainNotAvailable(name); } if (err.code === "internal_server_error") { return new UnexpectedDomainPurchaseError(name); } if (err.code === "tld_not_supported") { return new UnsupportedTLD(name); } if (err.code === "additional_contact_info_required") { return new TLDNotSupportedViaCLI(name); } } throw err; } } var init_purchase_domain = __esm({ "src/util/domains/purchase-domain.ts"() { "use strict"; init_errors_ts(); init_get_order(); init_get_domain(); init_get_scope(); } }); // src/util/domains/collect-contact-information.ts async function collectContactInformation(client2) { output_manager_default.log(""); output_manager_default.log("Please provide contact information for domain registration:"); const firstName = await client2.input.text({ message: "First name:", validate: (val) => val.length > 0 || "First name is required" }); const lastName = await client2.input.text({ message: "Last name:", validate: (val) => val.length > 0 || "Last name is required" }); const email2 = await client2.input.text({ message: "Email:", validate: (val) => { if (val.length === 0) return "Email is required"; if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val)) return "Invalid email format"; return true; } }); const phone = await client2.input.text({ message: "Phone (include country code, e.g., +15551234567):", validate: (val) => { if (val.length === 0) return "Phone is required"; if (!/^\+\d{10,15}$/.test(val)) return "Phone must start with + and contain 10-15 digits"; return true; } }); const address1 = await client2.input.text({ message: "Address:", validate: (val) => val.length > 0 || "Address is required" }); const city = await client2.input.text({ message: "City:", validate: (val) => val.length > 0 || "City is required" }); const state = await client2.input.text({ message: "State/Province:", validate: (val) => val.length > 0 || "State/Province is required" }); const zip = await client2.input.text({ message: "Postal/ZIP code:", validate: (val) => val.length > 0 || "Postal/ZIP code is required" }); const country = await client2.input.text({ message: "Country code (2 letters, e.g., US):", validate: (val) => { if (val.length === 0) return "Country code is required"; if (!/^[A-Z]{2}$/i.test(val)) return "Country code must be 2 letters"; return true; } }); const companyName = await client2.input.text({ message: "Company name (optional):" }); return { firstName, lastName, email: email2, phone, address1, city, state, zip, country: country.toUpperCase(), companyName: companyName || void 0 }; } var init_collect_contact_information = __esm({ "src/util/domains/collect-contact-information.ts"() { "use strict"; init_output_manager(); } }); // src/util/domains/purchase-domain-if-available.ts async function purchaseDomainIfAvailable(client2, domain, contextName) { output_manager_default.spinner(`Checking status of ${import_chalk37.default.bold(domain)}`); const buyDomainStamp = stamp_default(); const { available } = await getDomainStatus(client2, domain); if (available) { if (!isTTY) { return new DomainNotFound(domain); } output_manager_default.debug(`Domain ${domain} is available to be purchased`); const domainPrice = await getDomainPrice(client2, domain).finally(() => { output_manager_default.stopSpinner(); }); if (domainPrice instanceof UnsupportedTLD) { return domainPrice; } if (domainPrice instanceof Error) { throw domainPrice; } const { purchasePrice, years } = domainPrice; if (purchasePrice === null) { output_manager_default.error( `The domain ${param(domain)} is ${import_chalk37.default.underline( "unavailable" )}! ${buyDomainStamp()}` ); return new DomainNotAvailable(domain); } output_manager_default.log( `Domain not found, but you can buy it under ${import_chalk37.default.bold( contextName )}! ${buyDomainStamp()}` ); if (!await client2.input.confirm( `Buy ${import_chalk37.default.underline(domain)} for ${import_chalk37.default.bold( `$${purchasePrice}` )} (${(0, import_pluralize2.default)("yr", years, true)})?`, false )) { output_manager_default.print(eraseLines(1)); return new UserAborted(); } output_manager_default.print(eraseLines(1)); const contactInformation = await collectContactInformation(client2); const result = await purchaseDomain( client2, domain, purchasePrice, years, true, contactInformation ); if (result instanceof Error) { return result; } return true; } output_manager_default.debug(`Domain ${domain} is not available to be purchased`); return false; } var import_chalk37, import_pluralize2, isTTY; var init_purchase_domain_if_available = __esm({ "src/util/domains/purchase-domain-if-available.ts"() { "use strict"; import_chalk37 = __toESM3(require_source(), 1); import_pluralize2 = __toESM3(require_pluralize(), 1); init_erase_lines(); init_get_domain_price(); init_get_domain_status(); init_purchase_domain(); init_stamp(); init_errors_ts(); init_output_manager(); init_param(); init_collect_contact_information(); isTTY = process.stdout.isTTY; } }); // src/util/domains/setup-domain.ts async function setupDomain(client2, alias2, contextName) { const aliasDomain = extractDomain(alias2); output_manager_default.debug(`Trying to fetch domain ${aliasDomain} by name`); const info = await maybeGetDomainByName(client2, contextName, aliasDomain); if (info instanceof DomainPermissionDenied) { return info; } if (info) { const { name: domain2 } = info; output_manager_default.debug(`Domain ${domain2} found for the given context`); return info; } output_manager_default.debug( `The domain ${aliasDomain} was not found, trying to purchase it` ); const purchased = await purchaseDomainIfAvailable( client2, aliasDomain, contextName ); if (purchased instanceof NowError) { return purchased; } if (!purchased) { output_manager_default.debug( `Domain ${aliasDomain} is not available to be purchased. Trying to add it` ); const parsedDomain = (0, import_tldts2.parse)(aliasDomain); if (!parsedDomain.domain) { return new InvalidDomain(alias2); } const { domain: domain2 } = parsedDomain; output_manager_default.debug(`Adding ${domain2}`); const addResult = await addDomain(client2, domain2, contextName); if (addResult instanceof NowError) { return addResult; } output_manager_default.debug( `Domain ${domain2} successfully added and automatically verified` ); return addResult; } output_manager_default.debug(`The domain ${aliasDomain} was successfully purchased`); const purchasedDomain = await maybeGetDomainByName( client2, contextName, aliasDomain ); const { name: domain } = purchasedDomain; output_manager_default.debug( `Domain ${domain} was purchased and it is automatically verified` ); return maybeGetDomainByName(client2, contextName, domain); } var import_tldts2; var init_setup_domain = __esm({ "src/util/domains/setup-domain.ts"() { "use strict"; import_tldts2 = __toESM3(require_cjs7(), 1); init_now_error(); init_errors_ts(); init_add_domain(); init_maybe_get_domain_by_name(); init_purchase_domain_if_available(); init_extract_domain(); init_output_manager(); } }); // src/util/alias/assign-alias.ts async function assignAlias(client2, deployment, alias2, contextName) { let externalDomain = false; if (alias2.indexOf(".") !== -1 && !alias2.endsWith(".now.sh") && !alias2.endsWith(".vercel.app")) { const result = await setupDomain(client2, alias2, contextName); if (result instanceof Error) { return result; } externalDomain = isDomainExternal(result); } const record = await createAlias( client2, contextName, deployment, alias2, externalDomain ); return record; } var init_assign_alias = __esm({ "src/util/alias/assign-alias.ts"() { "use strict"; init_create_alias(); init_is_domain_external(); init_setup_domain(); } }); // src/util/to-host.ts function toHost(url3) { return url3.replace(/^(?:.*?\/\/)?([^/]+).*/, "$1"); } var init_to_host = __esm({ "src/util/to-host.ts"() { "use strict"; } }); // src/util/get-deployment.ts async function getDeployment(client2, contextName, hostOrId) { if (hostOrId.includes(".")) { hostOrId = toHost(hostOrId); } try { return await client2.fetch( `/v13/deployments/${encodeURIComponent(hostOrId)}` ); } catch (err) { if (isAPIError(err)) { if (err.status === 404) { throw new DeploymentNotFound({ id: hostOrId, context: contextName }); } if (err.status === 403) { throw new DeploymentPermissionDenied(hostOrId, contextName); } if (err.status === 400 && err.message.includes("`id`")) { throw new InvalidDeploymentId(hostOrId); } const certError = mapCertError(err); if (certError) { throw certError; } } throw err; } } var init_get_deployment = __esm({ "src/util/get-deployment.ts"() { "use strict"; init_errors_ts(); init_map_cert_error(); init_to_host(); } }); // src/util/deploy/get-deployments-by-appname.ts async function fetchDeploymentsByAppName(client2, appName) { const { deployments } = await client2.fetch( `/v3/now/deployments?app=${encodeURIComponent(appName)}` ); return deployments; } var init_get_deployments_by_appname = __esm({ "src/util/deploy/get-deployments-by-appname.ts"() { "use strict"; } }); // src/util/alias/get-deployment-by-alias.ts import path4 from "path"; async function getAppLastDeployment(client2, appName, user, contextName) { output_manager_default.debug(`Looking for deployments matching app ${appName}`); const deployments = await fetchDeploymentsByAppName(client2, appName); const deploymentItem = deployments.sort((a, b) => b.created - a.created).filter((dep) => dep.state === "READY" && dep.creator.uid === user.id)[0]; if (deploymentItem) { return await getDeployment(client2, contextName, deploymentItem.uid); } return null; } async function getDeploymentForAlias(client2, args2, localConfigPath, user, contextName, localConfig) { output_manager_default.spinner(`Fetching deployment to alias in ${import_chalk38.default.bold(contextName)}`); if (args2.length === 2) { const [deploymentId] = args2; try { return await getDeployment(client2, contextName, deploymentId); } finally { output_manager_default.stopSpinner(); } } const appName = localConfig?.name || path4.basename(path4.resolve(process.cwd(), localConfigPath || "")); if (!appName) { return null; } try { return await getAppLastDeployment(client2, appName, user, contextName); } finally { output_manager_default.stopSpinner(); } } var import_chalk38; var init_get_deployment_by_alias = __esm({ "src/util/alias/get-deployment-by-alias.ts"() { "use strict"; import_chalk38 = __toESM3(require_source(), 1); init_get_deployments_by_appname(); init_get_deployment(); init_output_manager(); } }); // src/util/format-dns-table.ts function formatDNSTable(rows) { return table([HEADER, ...rows], { hsep: 8 }); } var import_chalk39, HEADER; var init_format_dns_table = __esm({ "src/util/format-dns-table.ts"() { "use strict"; init_table(); import_chalk39 = __toESM3(require_source(), 1); HEADER = ["name", "type", "value"].map((v) => (0, import_chalk39.gray)(v)); } }); // src/util/certs/handle-cert-error.ts function handleCertError(error3) { if (error3 instanceof TooManyRequests) { output_manager_default.error( `Too many requests detected for ${error3.meta.api} API. Try again in ${(0, import_ms4.default)( error3.meta.retryAfterMs, { long: true } )}.` ); return 1; } if (error3 instanceof CertError) { output_manager_default.error(error3.message); if (error3.meta.helpUrl) { output_manager_default.print(` Read more: ${error3.meta.helpUrl} `); } return 1; } if (error3 instanceof DomainNotFound) { output_manager_default.error(error3.message); return 1; } if (error3 instanceof CertConfigurationError) { const { external, cns } = error3.meta; output_manager_default.error( `We couldn't verify the propagation of the DNS settings for ${error3.meta.cns.map((cn) => import_chalk40.default.underline(cn)).join(", ")}` ); if (external) { output_manager_default.print( ` The propagation may take a few minutes, but please verify your settings: ` ); output_manager_default.print( `${formatDNSTable( cns.map((cn) => { const parsed = (0, import_tldts3.parse)(cn); return parsed.subdomain ? [parsed.subdomain, "ALIAS", "alias.vercel.com"] : ["", "ALIAS", "alias.vercel.com"]; }) )} ` ); output_manager_default.log( `Alternatively, you can issue a certificate solving DNS challenges manually after running:` ); output_manager_default.print( ` ${getCommandName(`certs issue --challenge-only `)} ` ); output_manager_default.print( " Read more: https://err.sh/vercel/dns-configuration-error\n" ); } else { output_manager_default.print( ` We configured them for you, but the propagation may take a few minutes. Please try again later. ` ); output_manager_default.print( " Read more: https://err.sh/vercel/dns-configuration-error\n\n" ); } return 1; } return error3; } var import_ms4, import_tldts3, import_chalk40; var init_handle_cert_error = __esm({ "src/util/certs/handle-cert-error.ts"() { "use strict"; import_ms4 = __toESM3(require_ms(), 1); import_tldts3 = __toESM3(require_cjs7(), 1); import_chalk40 = __toESM3(require_source(), 1); init_errors_ts(); init_format_dns_table(); init_pkg_name(); init_output_manager(); } }); // src/util/telemetry/commands/alias/set.ts var AliasSetTelemetryClient; var init_set = __esm({ "src/util/telemetry/commands/alias/set.ts"() { "use strict"; init_telemetry(); AliasSetTelemetryClient = class extends TelemetryClient { trackCliFlagDebug(flag) { if (flag) { this.trackCliFlag("debug"); } } trackCliOptionLocalConfig(localConfig) { if (localConfig) { this.trackCliOption({ option: "local-config", value: this.redactedValue }); } } trackCliArgumentDeployment(deploymentUrl) { if (deploymentUrl) { this.trackCliArgument({ arg: "deployment-url", value: this.redactedValue }); } } trackCliArgumentAlias(customDomain) { if (customDomain) { this.trackCliArgument({ arg: "custom-domain", value: this.redactedValue }); } } }; } }); // src/commands/alias/set.ts async function set(client2, argv) { let parsedArguments; const flagsSpecification = getFlagsSpecification(listSubcommand.options); try { parsedArguments = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArguments; const setStamp = stamp_default(); const { localConfig } = client2; const telemetryClient = new AliasSetTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetryClient.trackCliFlagDebug(opts["--debug"]); telemetryClient.trackCliOptionLocalConfig(opts["--local-config"]); const { contextName, user } = await getScope(client2); if (args2.length > 2) { output_manager_default.error( `${getCommandName( "alias " )} accepts at most two arguments` ); return 1; } if (args2.length >= 1 && !isValidName(args2[0])) { output_manager_default.error( `The provided argument "${args2[0]}" is not a valid deployment` ); return 1; } if (args2.length >= 2 && !isValidName(args2[1])) { output_manager_default.error(`The provided argument "${args2[1]}" is not a valid domain`); return 1; } if (args2.length === 0) { output_manager_default.error( `To ship to production, optionally configure your domains (${link_default( "https://vercel.link/domain-configuration" )}) and run ${getCommandName("--prod")}.` ); return 1; } if (args2.length === 1) { const [aliasTarget2] = args2; telemetryClient.trackCliArgumentAlias(aliasTarget2); const deployment2 = handleCertError( await getDeploymentForAlias( client2, args2, opts["--local-config"], user, contextName, localConfig ) ); if (deployment2 === 1) { return deployment2; } if (deployment2 instanceof Error) { output_manager_default.error(deployment2.message); return 1; } if (!deployment2) { output_manager_default.error( `Couldn't find a deployment to alias. Please provide one as an argument.` ); return 1; } const targets = getTargetsForAlias(args2, localConfig); if (targets instanceof Error) { output_manager_default.prettyError(targets); return 1; } for (const target of targets) { output_manager_default.log(`Assigning alias ${target} to deployment ${deployment2.url}`); const record2 = await assignAlias(client2, deployment2, target, contextName); const handleResult2 = handleSetupDomainError( handleCreateAliasError(record2) ); if (handleResult2 === 1) { return 1; } output_manager_default.success( `${import_chalk41.default.bold( `${isWildcardAlias(target) ? "" : "https://"}${handleResult2.alias}` )} now points to https://${deployment2.url} ${setStamp()}` ); } return 0; } const [deploymentIdOrHost, aliasTarget] = args2; telemetryClient.trackCliArgumentDeployment(deploymentIdOrHost); telemetryClient.trackCliArgumentAlias(aliasTarget); const deployment = handleCertError( await getDeployment(client2, contextName, deploymentIdOrHost) ); if (deployment === 1) { return deployment; } if (deployment === null) { output_manager_default.error( `Couldn't find a deployment to alias. Please provide one as an argument.` ); return 1; } output_manager_default.log(`Assigning alias ${aliasTarget} to deployment ${deployment.url}`); const isWildcard = isWildcardAlias(aliasTarget); const record = await assignAlias( client2, deployment, aliasTarget, contextName ); const handleResult = handleSetupDomainError(handleCreateAliasError(record)); if (handleResult === 1) { return 1; } const prefix = isWildcard ? "" : "https://"; output_manager_default.success( `${import_chalk41.default.bold(`${prefix}${handleResult.alias}`)} now points to https://${deployment.url} ${setStamp()}` ); return 0; } function handleSetupDomainError(error3) { if (error3 instanceof DomainPermissionDenied) { output_manager_default.error( `You don't have permissions over domain ${import_chalk41.default.underline( error3.meta.domain )} under ${import_chalk41.default.bold(error3.meta.context)}.` ); return 1; } if (error3 instanceof UserAborted) { output_manager_default.error("User canceled."); return 1; } if (error3 instanceof DomainNotFound) { output_manager_default.error("You should buy the domain before aliasing."); return 1; } if (error3 instanceof UnsupportedTLD) { output_manager_default.error( `The TLD for domain name ${error3.meta.domain} is not supported.` ); return 1; } if (error3 instanceof InvalidDomain) { output_manager_default.error( `The domain ${error3.meta.domain} used for the alias is not valid.` ); return 1; } if (error3 instanceof DomainNotAvailable) { output_manager_default.error( `The domain ${error3.meta.domain} is not available to be purchased.` ); return 1; } if (error3 instanceof UnexpectedDomainPurchaseError) { output_manager_default.error("There was an unexpected error while purchasing the domain."); return 1; } if (error3 instanceof DomainAlreadyExists) { output_manager_default.error( `The domain ${error3.meta.domain} exists for a different account.` ); return 1; } if (error3 instanceof DomainPurchasePending) { output_manager_default.error( `The domain ${error3.meta.domain} is processing and will be available once the order is completed.` ); output_manager_default.print( " An email will be sent upon completion so you can alias to your new domain.\n" ); return 1; } if (error3 instanceof SourceNotFound) { output_manager_default.error( `You can't purchase the domain you're aliasing to since you have no valid payment method.` ); output_manager_default.print(" Please add a valid payment method and retry.\n"); return 1; } if (error3 instanceof DomainPaymentError) { output_manager_default.error( `You can't purchase the domain you're aliasing to since your card was declined.` ); output_manager_default.print(" Please add a valid payment method and retry.\n"); return 1; } if (error3 instanceof TLDNotSupportedViaCLI) { output_manager_default.error( `The TLD for domain name ${error3.meta.domain} is not supported via the CLI. Use the REST API or the dashboard to purchase.` ); return 1; } return error3; } function handleCreateAliasError(errorOrResult) { const error3 = handleCertError(errorOrResult); if (error3 === 1) { return error3; } if (error3 instanceof AliasInUse) { output_manager_default.error( `The alias ${import_chalk41.default.dim( error3.meta.alias )} is a deployment URL or it's in use by a different team.` ); return 1; } if (error3 instanceof DeploymentNotFound) { output_manager_default.error( `Failed to find deployment ${import_chalk41.default.dim(error3.meta.id)} under ${import_chalk41.default.bold( error3.meta.context )}` ); return 1; } if (error3 instanceof InvalidAlias) { output_manager_default.error( "Invalid alias. Please confirm that the alias you provided is a valid hostname. Note: For `vercel.app`, only sub and sub-sub domains are supported." ); return 1; } if (error3 instanceof DeploymentPermissionDenied) { output_manager_default.error( `No permission to access deployment ${import_chalk41.default.dim( error3.meta.id )} under ${import_chalk41.default.bold(error3.meta.context)}` ); return 1; } if (error3 instanceof CertMissing) { output_manager_default.error( `There is no certificate for the domain ${error3.meta.domain} and it could not be created.` ); output_manager_default.log( `Please generate a new certificate manually with ${getCommandName( `certs issue ${error3.meta.domain}` )}` ); return 1; } if (error3 instanceof InvalidDomain) { output_manager_default.error( `The domain ${error3.meta.domain} used for the alias is not valid.` ); return 1; } if (error3 instanceof DomainPermissionDenied || error3 instanceof DeploymentFailedAliasImpossible || error3 instanceof InvalidDeploymentId) { output_manager_default.error(error3.message); return 1; } if (error3 instanceof DeploymentNotReady) { output_manager_default.error(error3.message); return 1; } return error3; } function getTargetsForAlias(args2, { alias: alias2 } = {}) { if (args2.length) { return [args2[args2.length - 1]].map((target) => target.indexOf(".") !== -1 ? toHost(target) : target).filter((x) => !!x && typeof x === "string"); } if (!alias2) { return new NoAliasInConfig(); } if (typeof alias2 !== "string" && !Array.isArray(alias2)) { return new InvalidAliasInConfig(alias2); } return typeof alias2 === "string" ? [alias2] : alias2; } var import_chalk41; var init_set2 = __esm({ "src/commands/alias/set.ts"() { "use strict"; import_chalk41 = __toESM3(require_source(), 1); init_errors_ts(); init_assign_alias(); init_get_deployment(); init_get_deployment_by_alias(); init_get_scope(); init_stamp(); init_is_valid_name(); init_handle_cert_error(); init_is_wildcard_alias(); init_link(); init_pkg_name(); init_to_host(); init_set(); init_output_manager(); init_get_args(); init_get_flags_specification(); init_error2(); init_command(); } }); // src/util/telemetry/commands/alias/index.ts var AliasTelemetryClient; var init_alias = __esm({ "src/util/telemetry/commands/alias/index.ts"() { "use strict"; init_telemetry(); AliasTelemetryClient = class extends TelemetryClient { trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } trackCliSubcommandSet(actual) { this.trackCliSubcommand({ subcommand: "set", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "rm", value: actual }); } }; } }); // src/commands/alias/index.ts var alias_exports = {}; __export3(alias_exports, { default: () => alias }); async function alias(client2) { const telemetry2 = new AliasTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments; const flagsSpecification = getFlagsSpecification(aliasCommand.options); try { parsedArguments = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const { subcommand, args: args2, subcommandOriginal } = getSubcommand( parsedArguments.args.slice(1), COMMAND_CONFIG ); const needHelp = parsedArguments.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("alias"); output_manager_default.print(help(aliasCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: aliasCommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "ls": if (needHelp) { telemetry2.trackCliFlagHelp("alias", subcommandOriginal); printHelp(listSubcommand); return 2; } telemetry2.trackCliSubcommandList(subcommandOriginal); return ls(client2, args2); case "rm": if (needHelp) { telemetry2.trackCliFlagHelp("alias", subcommandOriginal); printHelp(removeSubcommand); return 2; } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return rm(client2, args2); case "set": if (needHelp) { telemetry2.trackCliFlagHelp("alias", subcommandOriginal); printHelp(setSubcommand); return 2; } telemetry2.trackCliSubcommandSet(subcommandOriginal); return set(client2, args2); default: if (needHelp) { telemetry2.trackCliFlagHelp("alias", subcommandOriginal); printHelp(setSubcommand); return 2; } telemetry2.trackCliSubcommandSet(subcommandOriginal); return set(client2, args2); } } var COMMAND_CONFIG; var init_alias2 = __esm({ "src/commands/alias/index.ts"() { "use strict"; init_error2(); init_get_args(); init_get_subcommand(); init_help(); init_ls(); init_rm(); init_set2(); init_command(); init_get_flags_specification(); init_alias(); init_output_manager(); init_commands(); COMMAND_CONFIG = { ls: getCommandAliases(listSubcommand), rm: getCommandAliases(removeSubcommand), set: getCommandAliases(setSubcommand) }; } }); // src/util/telemetry/commands/api/index.ts var ApiTelemetryClient; var init_api = __esm({ "src/util/telemetry/commands/api/index.ts"() { "use strict"; init_telemetry(); ApiTelemetryClient = class extends TelemetryClient { trackCliArgumentEndpoint(endpoint) { if (endpoint) { const normalized = this.normalizeEndpoint(endpoint); this.trackCliArgument({ arg: "endpoint", value: normalized }); } } trackCliOptionMethod(method) { if (method) { const validMethods = ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD"]; const upperMethod = method.toUpperCase(); const value = validMethods.includes(upperMethod) ? upperMethod : this.redactedValue; this.trackCliOption({ option: "method", value }); } } trackCliOptionField(fields) { if (fields && fields.length > 0) { this.trackCliOption({ option: "field", value: this.redactedArgumentsLength(fields) }); } } trackCliOptionRawField(fields) { if (fields && fields.length > 0) { this.trackCliOption({ option: "raw-field", value: this.redactedArgumentsLength(fields) }); } } trackCliOptionHeader(headers) { if (headers && headers.length > 0) { this.trackCliOption({ option: "header", value: this.redactedArgumentsLength(headers) }); } } trackCliOptionInput(input) { if (input) { const value = input === "-" ? "stdin" : "file"; this.trackCliOption({ option: "input", value }); } } trackCliFlagPaginate(value) { if (value) { this.trackCliFlag("paginate"); } } trackCliFlagInclude(value) { if (value) { this.trackCliFlag("include"); } } trackCliFlagSilent(value) { if (value) { this.trackCliFlag("silent"); } } trackCliFlagVerbose(value) { if (value) { this.trackCliFlag("verbose"); } } trackCliFlagRaw(value) { if (value) { this.trackCliFlag("raw"); } } trackCliFlagRefresh(value) { if (value) { this.trackCliFlag("refresh"); } } trackCliOptionGenerate(format8) { if (format8) { const validFormats = ["curl"]; const value = validFormats.includes(format8) ? format8 : this.redactedValue; this.trackCliOption({ option: "generate", value }); } } trackCliFlagDangerouslySkipPermissions(value) { if (value) { this.trackCliFlag("dangerously-skip-permissions"); } } trackCliSubcommandList() { this.trackCliSubcommand({ subcommand: "list", value: "list" }); } trackCliOptionFormat(format8) { if (format8) { const validFormats = ["table", "json"]; const value = validFormats.includes(format8) ? format8 : this.redactedValue; this.trackCliOption({ option: "format", value }); } } /** * Normalize endpoint by replacing IDs with placeholders for privacy */ normalizeEndpoint(endpoint) { return endpoint.replace(/\/dpl_[a-zA-Z0-9]+/g, "/:deploymentId").replace(/\/prj_[a-zA-Z0-9]+/g, "/:projectId").replace(/\/team_[a-zA-Z0-9]+/g, "/:teamId").replace(/\/[a-f0-9]{24}/g, "/:id").replace(/\/[a-f0-9-]{36}/g, "/:uuid"); } }; } }); // src/commands/api/request-builder.ts import { readFile as readFile5 } from "fs/promises"; import { resolve as resolve4 } from "path"; async function buildRequest(endpoint, flags) { const headers = {}; let body; const customHeaders = flags["--header"] || []; for (const header of customHeaders) { const colonIndex = header.indexOf(":"); if (colonIndex > 0) { const key = header.substring(0, colonIndex).trim(); const value = header.substring(colonIndex + 1).trim(); headers[key] = value; } } const fields = flags["--field"] || []; const rawFields = flags["--raw-field"] || []; if (fields.length > 0 || rawFields.length > 0) { body = {}; for (const field of fields) { const { key, value } = await parseField(field, true); body[key] = value; } for (const field of rawFields) { const { key, value } = await parseField(field, false); body[key] = value; } } if (flags["--input"]) { const inputPath = flags["--input"]; if (inputPath === "-") { body = await readStdin(); } else { body = await readFile5(resolve4(inputPath), "utf-8"); } if (typeof body === "string") { try { body = JSON.parse(body); } catch { } } } let method = flags["--method"]?.toUpperCase() || "GET"; if (!flags["--method"] && body) { method = "POST"; } return { url: endpoint, method, headers, body }; } async function parseField(field, typed) { const eqIndex = field.indexOf("="); if (eqIndex === -1) { throw new Error(`Invalid field format: ${field}. Expected key=value`); } const key = field.substring(0, eqIndex); let value = field.substring(eqIndex + 1); if (typed && typeof value === "string") { if (value.startsWith("@")) { const filePath = value.substring(1); if (filePath === "-") { value = await readStdin(); } else { value = await readFile5(resolve4(filePath), "utf-8"); } if (typeof value === "string") { try { value = JSON.parse(value); } catch { } } } else if (value === "true") { value = true; } else if (value === "false") { value = false; } else if (value === "null") { value = null; } else if (/^-?\d+$/.test(value)) { value = parseInt(value, 10); } else if (/^-?\d*\.\d+$/.test(value)) { value = parseFloat(value); } } return { key, value }; } async function readStdin() { const chunks = []; for await (const chunk of process.stdin) { chunks.push(chunk); } return Buffer.concat(chunks).toString("utf-8"); } function formatOutput(data, options) { if (options.raw) { if (typeof data === "string") { return data; } return JSON.stringify(data); } return JSON.stringify(data, null, 2); } function generateCurlCommand(config2, baseUrl) { const parts = ["curl"]; if (config2.method !== "GET") { parts.push(`-X ${config2.method}`); } parts.push(`-H 'Authorization: Bearer '`); for (const [key, value] of Object.entries(config2.headers)) { parts.push(`-H '${key}: ${escapeShellArg(value)}'`); } if (config2.body) { const bodyStr = typeof config2.body === "string" ? config2.body : JSON.stringify(config2.body); parts.push(`-H 'Content-Type: application/json'`); parts.push(`-d '${escapeShellArg(bodyStr)}'`); } const fullUrl = `${baseUrl}${config2.url}`; parts.push(`'${fullUrl}'`); return parts.join(" \\\n "); } function escapeShellArg(str) { return str.replace(/'/g, "'\\''"); } var init_request_builder = __esm({ "src/commands/api/request-builder.ts"() { "use strict"; } }); // src/commands/api/constants.ts var API_BASE_URL, OPENAPI_URL, CACHE_FILE, CACHE_TTL_MS; var init_constants2 = __esm({ "src/commands/api/constants.ts"() { "use strict"; API_BASE_URL = "https://api.vercel.com"; OPENAPI_URL = "https://openapi.vercel.sh/"; CACHE_FILE = "openapi-spec.json"; CACHE_TTL_MS = 24 * 60 * 60 * 1e3; } }); // src/commands/api/openapi-cache.ts import { join as join9 } from "path"; import { readFile as readFile6, writeFile as writeFile4, mkdir as mkdir2 } from "fs/promises"; var OpenApiCache; var init_openapi_cache = __esm({ "src/commands/api/openapi-cache.ts"() { "use strict"; init_global_path(); init_output_manager(); init_constants2(); OpenApiCache = class { constructor() { this.spec = null; this.cachePath = join9(global_path_default(), CACHE_FILE); } /** * Check if the spec has been loaded */ get isLoaded() { return this.spec !== null; } /** * Load the OpenAPI spec, using cache if available and fresh. * Returns true if successful, false otherwise. */ async load(forceRefresh = false) { if (!forceRefresh) { const cached = await this.readCache(); if (cached && !this.isExpired(cached.fetchedAt)) { output_manager_default.debug("Using cached OpenAPI spec"); this.spec = cached.spec; return true; } } try { output_manager_default.debug("Fetching OpenAPI spec from " + OPENAPI_URL); this.spec = await this.fetchSpec(); await this.saveCache(this.spec); return true; } catch (err) { output_manager_default.debug(`Failed to fetch OpenAPI spec: ${err}`); const stale = await this.readCache(); if (stale) { output_manager_default.debug("Using stale cached OpenAPI spec"); this.spec = stale.spec; return true; } return false; } } /** * Load the OpenAPI spec with spinner UI. * Returns true if successful, false otherwise. */ async loadWithSpinner(forceRefresh = false) { output_manager_default.spinner( forceRefresh ? "Refreshing API endpoints..." : "Loading API endpoints..." ); const success = await this.load(forceRefresh); output_manager_default.stopSpinner(); return success; } /** * Get all available endpoints from the loaded spec, sorted by path then method. * Throws if spec hasn't been loaded yet. */ getEndpoints() { this.ensureLoaded(); const endpoints = this.extractEndpoints(); return this.sortEndpoints(endpoints); } /** * Extract body fields from a requestBody schema. * Throws if spec hasn't been loaded yet. */ getBodyFields(endpoint) { this.ensureLoaded(); if (!endpoint.requestBody?.content) return []; const jsonContent = endpoint.requestBody.content["application/json"]; if (!jsonContent?.schema) return []; const schema = this.resolveSchemaRef(jsonContent.schema); if (!schema?.properties) return []; const requiredFields = new Set(schema.required || []); const fields = []; for (const [name, propSchema] of Object.entries(schema.properties)) { const resolvedProp = this.resolveSchemaRef(propSchema); fields.push({ name, required: requiredFields.has(name), description: resolvedProp?.description || propSchema.description, type: resolvedProp?.type || propSchema.type, enumValues: resolvedProp?.enum || propSchema.enum }); } fields.sort((a, b) => { if (a.required !== b.required) { return a.required ? -1 : 1; } return a.name.localeCompare(b.name); }); return fields; } // ───────────────────────────────────────────────────────────────────────────── // Private methods // ───────────────────────────────────────────────────────────────────────────── /** * Ensure the spec is loaded before accessing it */ ensureLoaded() { if (!this.spec) { throw new Error( "OpenAPI spec not loaded. Call load() or loadWithSpinner() first." ); } } /** * Read cached spec from disk */ async readCache() { try { const content = await readFile6(this.cachePath, "utf-8"); return JSON.parse(content); } catch { return null; } } /** * Save spec to disk cache */ async saveCache(spec) { const cached = { fetchedAt: Date.now(), spec }; const dir = join9(this.cachePath, ".."); await mkdir2(dir, { recursive: true }); await writeFile4(this.cachePath, JSON.stringify(cached)); output_manager_default.debug("Saved OpenAPI spec to cache"); } /** * Fetch OpenAPI spec from remote */ async fetchSpec() { const response = await fetch(OPENAPI_URL); if (!response.ok) { throw new Error(`Failed to fetch OpenAPI spec: ${response.status}`); } return await response.json(); } /** * Check if cached spec is expired */ isExpired(fetchedAt) { return Date.now() - fetchedAt > CACHE_TTL_MS; } /** * Sort endpoints by path, then by method */ sortEndpoints(endpoints) { return endpoints.sort((a, b) => { const pathCompare = a.path.localeCompare(b.path); if (pathCompare !== 0) return pathCompare; return a.method.localeCompare(b.method); }); } /** * Extract all available endpoints from the spec */ extractEndpoints() { const endpoints = []; for (const [path11, pathItem] of Object.entries(this.spec.paths)) { const methods = ["get", "post", "put", "patch", "delete"]; for (const method of methods) { const operation = pathItem[method]; if (operation) { const pathParams = pathItem.parameters || []; const opParams = operation.parameters || []; const allParams = [...pathParams, ...opParams]; endpoints.push({ path: path11, method: method.toUpperCase(), summary: operation.summary || pathItem.summary || "", description: operation.description || pathItem.description || "", operationId: operation.operationId || "", tags: operation.tags || [], parameters: allParams, requestBody: operation.requestBody }); } } } return endpoints; } /** * Resolve a $ref to its actual schema */ resolveSchemaRef(schema) { if (!schema) return void 0; if (schema.$ref) { const match = schema.$ref.match(/^#\/components\/schemas\/(.+)$/); if (match && this.spec.components?.schemas) { const resolved = this.spec.components.schemas[match[1]]; return this.resolveSchemaRef(resolved); } return void 0; } if (schema.allOf && schema.allOf.length > 0) { const merged = { type: "object", properties: {}, required: [] }; for (const subSchema of schema.allOf) { const resolved = this.resolveSchemaRef(subSchema); if (resolved) { if (resolved.properties) { merged.properties = { ...merged.properties, ...resolved.properties }; } if (resolved.required) { merged.required = [ ...merged.required || [], ...resolved.required ]; } } } return merged; } return schema; } }; } }); // src/commands/api/format-utils.ts function colorizeMethod(method) { switch (method) { case "GET": return import_chalk42.default.cyan(method); case "POST": return import_chalk42.default.green(method); case "PUT": return import_chalk42.default.yellow(method); case "PATCH": return import_chalk42.default.blue(method); case "DELETE": return import_chalk42.default.red(method); default: return method; } } function colorizeMethodPadded(method, width = 7) { const colored = colorizeMethod(method); const padding2 = " ".repeat(Math.max(0, width - method.length)); return colored + padding2; } function formatPathParam(paramName) { return import_chalk42.default.cyan(`{${paramName}}`); } function formatTypeHint(type) { return import_chalk42.default.dim(`[${type}]`); } function formatDescription(description) { if (!description) return ""; return import_chalk42.default.gray(` (${description})`); } var import_chalk42; var init_format_utils = __esm({ "src/commands/api/format-utils.ts"() { "use strict"; import_chalk42 = __toESM3(require_source(), 1); } }); // src/commands/api/index.ts var api_exports = {}; __export3(api_exports, { default: () => api }); async function api(client2) { const telemetryClient = new ApiTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpec = getFlagsSpecification(apiCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpec, { permissive: true }); } catch (err) { printError(err); return 1; } const { args: args2, flags } = parsedArgs; const needHelp = flags["--help"]; const firstArg = args2[1]; if (firstArg === "ls" || firstArg === "list") { const lsFlagsSpec = getFlagsSpecification(listSubcommand2.options); let lsParsedArgs; try { lsParsedArgs = parseArguments(client2.argv.slice(2), lsFlagsSpec); } catch (err) { printError(err); return 1; } const lsFlags = lsParsedArgs.flags; if (lsFlags["--help"]) { telemetryClient.trackCliFlagHelp("api", firstArg); output_manager_default.print( help(listSubcommand2, { parent: apiCommand, columns: client2.stderr.columns }) ); return 2; } telemetryClient.trackCliSubcommandList(); if (lsFlags["--refresh"]) telemetryClient.trackCliFlagRefresh(true); if (lsFlags["--format"]) telemetryClient.trackCliOptionFormat(lsFlags["--format"]); return listEndpoints( client2, lsFlags["--refresh"] ?? false, lsFlags["--format"] ?? "table" ); } if (needHelp) { telemetryClient.trackCliFlagHelp("api"); output_manager_default.print(help(apiCommand, { columns: client2.stderr.columns })); return 2; } if (flags["--dangerously-skip-permissions"]) { client2.dangerouslySkipPermissions = true; } let endpoint = firstArg; let selectedMethod; let selectedBodyFields = []; if (!endpoint) { if (client2.stdin.isTTY) { const selected = await promptEndpointSelection( client2, flags["--refresh"] ?? false ); if (!selected) { return 1; } endpoint = selected.finalUrl; selectedMethod = selected.method; selectedBodyFields = selected.bodyFields; } else { output_manager_default.error("Endpoint is required. Usage: vercel api "); return 1; } } if (!endpoint.startsWith("/")) { output_manager_default.error("Endpoint must start with /"); return 1; } try { const resolvedUrl = new URL(endpoint, API_BASE_URL); if (resolvedUrl.origin !== API_BASE_URL) { output_manager_default.error( "Invalid endpoint: must be a Vercel API path, not an external URL" ); return 1; } } catch { output_manager_default.error("Invalid endpoint URL format"); return 1; } telemetryClient.trackCliArgumentEndpoint(endpoint); telemetryClient.trackCliOptionMethod(flags["--method"]); telemetryClient.trackCliOptionHeader(flags["--header"]); telemetryClient.trackCliOptionInput(flags["--input"]); if (flags["--paginate"]) telemetryClient.trackCliFlagPaginate(true); if (flags["--include"]) telemetryClient.trackCliFlagInclude(true); if (flags["--silent"]) telemetryClient.trackCliFlagSilent(true); if (flags["--verbose"]) telemetryClient.trackCliFlagVerbose(true); if (flags["--raw"]) telemetryClient.trackCliFlagRaw(true); if (flags["--refresh"]) telemetryClient.trackCliFlagRefresh(true); if (flags["--generate"]) telemetryClient.trackCliOptionGenerate(flags["--generate"]); if (flags["--dangerously-skip-permissions"]) telemetryClient.trackCliFlagDangerouslySkipPermissions(true); const finalFlags = { ...flags }; if (selectedMethod && !flags["--method"]) { finalFlags["--method"] = selectedMethod; } if (selectedBodyFields.length > 0) { const existingFields = finalFlags["--field"] || []; finalFlags["--field"] = [...existingFields, ...selectedBodyFields]; } if (flags["--generate"] === "curl") { try { const requestConfig = await buildRequest(endpoint, finalFlags); const curlCmd = generateCurlCommand( requestConfig, "https://api.vercel.com" ); output_manager_default.log(""); output_manager_default.log("Replace with your auth token:"); output_manager_default.log(""); client2.stdout.write(curlCmd + "\n"); return 0; } catch (err) { printError(err); return 1; } } return executeApiRequest(client2, endpoint, finalFlags); } async function executeApiRequest(client2, endpoint, flags) { let requestConfig; try { requestConfig = await buildRequest(endpoint, flags); } catch (err) { printError(err); return 1; } if (flags["--verbose"]) { output_manager_default.debug(`Request: ${requestConfig.method} ${requestConfig.url}`); if (Object.keys(requestConfig.headers).length > 0) { output_manager_default.debug(`Headers: ${JSON.stringify(requestConfig.headers)}`); } if (requestConfig.body) { output_manager_default.debug( `Body: ${typeof requestConfig.body === "string" ? requestConfig.body : JSON.stringify(requestConfig.body)}` ); } } if (flags["--paginate"]) { return executePaginatedRequest(client2, requestConfig, flags); } return executeSingleRequest(client2, requestConfig, flags); } async function executeSingleRequest(client2, config2, flags) { try { const confirmed = await client2.confirmMutatingOperation( config2.url, config2.method ); if (!confirmed) { return 1; } const response = await client2.fetch(config2.url, { method: config2.method, body: config2.body, headers: config2.headers, json: false // Get raw response }); return handleResponse(client2, response, flags); } catch (err) { output_manager_default.prettyError(err); return 1; } } async function executePaginatedRequest(client2, config2, flags) { const results = []; try { const confirmed = await client2.confirmMutatingOperation( config2.url, config2.method ); if (!confirmed) { return 1; } for await (const page of client2.fetchPaginated( config2.url, { method: config2.method, body: config2.body, headers: config2.headers } )) { const data = extractPaginatedData(page); results.push(...data); } return outputResults(client2, results, flags); } catch (err) { output_manager_default.prettyError(err); return 1; } } function extractPaginatedData(page) { for (const [key, value] of Object.entries(page)) { if (key !== "pagination" && Array.isArray(value)) { return value; } } const { pagination, ...rest } = page; return [rest]; } async function handleResponse(client2, response, flags) { if (flags["--include"]) { outputHeaders(client2, response); } if (flags["--silent"]) { return response.ok ? 0 : 1; } const contentType2 = response.headers.get("content-type") || ""; if (contentType2.includes("application/json")) { const json = await response.json(); if (flags["--verbose"]) { output_manager_default.debug( `Response status: ${response.status} ${response.statusText}` ); } return outputResults(client2, json, flags); } const text = await response.text(); client2.stdout.write(text); return response.ok ? 0 : 1; } function outputHeaders(client2, response) { client2.stdout.write(`HTTP ${response.status} ${response.statusText} `); response.headers.forEach((value, key) => { client2.stdout.write(`${key}: ${value} `); }); client2.stdout.write("\n"); } function outputResults(client2, data, flags) { const formatted = formatOutput(data, { raw: flags["--raw"] }); client2.stdout.write(formatted + "\n"); return 0; } async function promptEndpointSelection(client2, forceRefresh) { try { const openApi = new OpenApiCache(); const success = await openApi.loadWithSpinner(forceRefresh); if (!success) { output_manager_default.error("Could not load API specification for endpoint selection"); return null; } const endpoints = openApi.getEndpoints(); const selectedEndpoint = await promptForEndpoint(client2, endpoints); const bodyFieldsSpec = openApi.getBodyFields(selectedEndpoint); const { finalUrl, bodyFields } = await promptForParameters( client2, selectedEndpoint.path, selectedEndpoint.parameters, bodyFieldsSpec ); return { path: selectedEndpoint.path, method: selectedEndpoint.method, finalUrl, bodyFields }; } catch (err) { output_manager_default.stopSpinner(); output_manager_default.debug(`Endpoint selection failed: ${err}`); return null; } } async function promptForEndpoint(client2, endpoints) { const allChoices = endpoints.map((ep) => ({ name: `${colorizeMethodPadded(ep.method)} ${ep.path}`, value: ep, // Show full description if available, otherwise show summary description: ep.description || ep.summary || void 0, // Include summary in searchable metadata summary: ep.summary, tags: ep.tags })); const total = allChoices.length; return client2.input.search({ message: `Search for an API endpoint (${total} available):`, source: async (term) => { if (!term) { return allChoices; } const lowerTerm = term.toLowerCase(); return allChoices.filter((choice) => { const searchableText = [ choice.name, choice.summary || "", choice.description || "", ...choice.tags || [] ].join(" ").toLowerCase(); return searchableText.includes(lowerTerm); }); } }); } async function listEndpoints(client2, forceRefresh, format8) { const openApi = new OpenApiCache(); const success = await openApi.loadWithSpinner(forceRefresh); if (!success) { output_manager_default.error("Could not load API specification"); return 1; } const endpoints = openApi.getEndpoints(); if (format8 === "json") { return outputEndpointsAsJson(client2, endpoints); } return outputEndpointsAsTable(endpoints); } function outputEndpointsAsJson(client2, endpoints) { const jsonOutput = endpoints.map((ep) => ({ method: ep.method, path: ep.path, summary: ep.summary || null, description: ep.description || null, operationId: ep.operationId || null, tags: ep.tags })); client2.stdout.write(JSON.stringify(jsonOutput, null, 2) + "\n"); return 0; } function groupEndpointsByPath(endpoints) { const grouped = /* @__PURE__ */ new Map(); for (const ep of endpoints) { const existing = grouped.get(ep.path) || []; existing.push({ method: ep.method, summary: ep.summary }); grouped.set(ep.path, existing); } const methodOrder = ["GET", "POST", "PUT", "PATCH", "DELETE"]; for (const [path11, methods] of grouped) { methods.sort( (a, b) => methodOrder.indexOf(a.method) - methodOrder.indexOf(b.method) ); grouped.set(path11, methods); } return grouped; } function outputEndpointsAsTable(endpoints) { const grouped = groupEndpointsByPath(endpoints); const methodWidth = 7; output_manager_default.log(""); for (const [path11, methods] of grouped) { output_manager_default.log(import_chalk43.default.bold(path11)); for (const { method, summary } of methods) { const coloredMethod = colorizeMethod(method); const paddedMethod = method.padEnd(methodWidth); const methodDisplay = coloredMethod + paddedMethod.slice(method.length); output_manager_default.log(` ${methodDisplay} ${import_chalk43.default.gray(summary || "")}`); } output_manager_default.log(""); } output_manager_default.log( `${import_chalk43.default.bold(grouped.size.toString())} routes, ${import_chalk43.default.bold(endpoints.length.toString())} endpoints` ); return 0; } function createRequiredValidator(fieldName) { return (input) => { if (!input.trim()) { return `${fieldName} is required`; } return true; }; } function buildQueryString(params2) { return Object.entries(params2).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join("&"); } async function promptForParameters(client2, path11, parameters, bodyFieldsSpec) { const globalParams = /* @__PURE__ */ new Set(["teamId", "slug"]); const pathParams = parameters.filter((p) => p.in === "path"); const requiredQueryParams = parameters.filter( (p) => p.in === "query" && p.required && !globalParams.has(p.name) ); const optionalQueryParams = parameters.filter( (p) => p.in === "query" && !p.required && !globalParams.has(p.name) ); const requiredBodyFields = bodyFieldsSpec.filter((f) => f.required); const optionalBodyFields = bodyFieldsSpec.filter((f) => !f.required); let finalPath = path11; for (const param2 of pathParams) { const value = await client2.input.text({ message: `Enter value for ${formatPathParam(param2.name)}${formatDescription(param2.description)}:`, validate: createRequiredValidator(param2.name) }); finalPath = finalPath.replace(`{${param2.name}}`, encodeURIComponent(value)); } const queryValues = {}; for (const param2 of requiredQueryParams) { queryValues[param2.name] = await client2.input.text({ message: `Enter value for ${import_chalk43.default.cyan(param2.name)}${formatDescription(param2.description)}:`, validate: createRequiredValidator(param2.name) }); } if (optionalQueryParams.length > 0) { const selectedOptionalParams = await client2.input.checkbox({ message: "Select optional query parameters to include:", pageSize: 20, choices: optionalQueryParams.map((p) => ({ name: `${import_chalk43.default.cyan(p.name)}${formatDescription(p.description)}`, value: p.name })) }); for (const paramName of selectedOptionalParams) { const param2 = optionalQueryParams.find((p) => p.name === paramName); queryValues[param2.name] = await client2.input.text({ message: `Enter value for ${import_chalk43.default.cyan(param2.name)}${formatDescription(param2.description)}:`, validate: createRequiredValidator(param2.name) }); } } const bodyFieldValues = []; for (const field of requiredBodyFields) { const value = await promptForBodyField(client2, field, true); bodyFieldValues.push(`${field.name}=${value}`); } if (optionalBodyFields.length > 0) { const selectedOptionalFields = await client2.input.checkbox({ message: "Select optional body fields to include:", pageSize: 20, choices: optionalBodyFields.map((f) => ({ name: `${import_chalk43.default.cyan(f.name)}${f.type ? ` ${formatTypeHint(f.type)}` : ""}${formatDescription(f.description)}`, value: f.name })) }); for (const fieldName of selectedOptionalFields) { const field = optionalBodyFields.find((f) => f.name === fieldName); const value = await promptForBodyField(client2, field, true); bodyFieldValues.push(`${field.name}=${value}`); } } const queryString = buildQueryString(queryValues); if (queryString) { finalPath += `?${queryString}`; } return { finalUrl: finalPath, bodyFields: bodyFieldValues }; } async function promptForBodyField(client2, field, required) { const description = formatDescription(field.description); const optionalHint = required ? "" : import_chalk43.default.dim(" (optional)"); if (field.enumValues && field.enumValues.length > 0) { const choices = field.enumValues.map((v) => ({ name: String(v), value: String(v) })); if (!required) { choices.unshift({ name: import_chalk43.default.dim("(skip)"), value: "" }); } return client2.input.select({ message: `Select value for ${import_chalk43.default.cyan(field.name)}${optionalHint}${description}:`, choices }); } const typeHint = field.type ? ` ${formatTypeHint(field.type)}` : ""; return client2.input.text({ message: `Enter value for ${import_chalk43.default.cyan(field.name)}${optionalHint}${typeHint}${description}:`, validate: required ? createRequiredValidator(field.name) : void 0 }); } var import_chalk43; var init_api2 = __esm({ "src/commands/api/index.ts"() { "use strict"; import_chalk43 = __toESM3(require_source(), 1); init_get_args(); init_get_flags_specification(); init_error2(); init_help(); init_command2(); init_api(); init_request_builder(); init_openapi_cache(); init_constants2(); init_format_utils(); init_output_manager(); } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_date/index.js var require_is_date = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_date/index.js"(exports2, module2) { function isDate(argument) { return argument instanceof Date; } module2.exports = isDate; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/parse/index.js var require_parse7 = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/parse/index.js"(exports2, module2) { var isDate = require_is_date(); var MILLISECONDS_IN_HOUR = 36e5; var MILLISECONDS_IN_MINUTE = 6e4; var DEFAULT_ADDITIONAL_DIGITS = 2; var parseTokenDateTimeDelimeter = /[T ]/; var parseTokenPlainTime = /:/; var parseTokenYY = /^(\d{2})$/; var parseTokensYYY = [ /^([+-]\d{2})$/, // 0 additional digits /^([+-]\d{3})$/, // 1 additional digit /^([+-]\d{4})$/ // 2 additional digits ]; var parseTokenYYYY = /^(\d{4})/; var parseTokensYYYYY = [ /^([+-]\d{4})/, // 0 additional digits /^([+-]\d{5})/, // 1 additional digit /^([+-]\d{6})/ // 2 additional digits ]; var parseTokenMM = /^-(\d{2})$/; var parseTokenDDD = /^-?(\d{3})$/; var parseTokenMMDD = /^-?(\d{2})-?(\d{2})$/; var parseTokenWww = /^-?W(\d{2})$/; var parseTokenWwwD = /^-?W(\d{2})-?(\d{1})$/; var parseTokenHH = /^(\d{2}([.,]\d*)?)$/; var parseTokenHHMM = /^(\d{2}):?(\d{2}([.,]\d*)?)$/; var parseTokenHHMMSS = /^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/; var parseTokenTimezone = /([Z+-].*)$/; var parseTokenTimezoneZ = /^(Z)$/; var parseTokenTimezoneHH = /^([+-])(\d{2})$/; var parseTokenTimezoneHHMM = /^([+-])(\d{2}):?(\d{2})$/; function parse11(argument, dirtyOptions) { if (isDate(argument)) { return new Date(argument.getTime()); } else if (typeof argument !== "string") { return new Date(argument); } var options = dirtyOptions || {}; var additionalDigits = options.additionalDigits; if (additionalDigits == null) { additionalDigits = DEFAULT_ADDITIONAL_DIGITS; } else { additionalDigits = Number(additionalDigits); } var dateStrings = splitDateString(argument); var parseYearResult = parseYear(dateStrings.date, additionalDigits); var year = parseYearResult.year; var restDateString = parseYearResult.restDateString; var date = parseDate(restDateString, year); if (date) { var timestamp = date.getTime(); var time = 0; var offset; if (dateStrings.time) { time = parseTime(dateStrings.time); } if (dateStrings.timezone) { offset = parseTimezone(dateStrings.timezone); } else { offset = new Date(timestamp + time).getTimezoneOffset(); offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset(); } return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE); } else { return new Date(argument); } } function splitDateString(dateString) { var dateStrings = {}; var array = dateString.split(parseTokenDateTimeDelimeter); var timeString; if (parseTokenPlainTime.test(array[0])) { dateStrings.date = null; timeString = array[0]; } else { dateStrings.date = array[0]; timeString = array[1]; } if (timeString) { var token = parseTokenTimezone.exec(timeString); if (token) { dateStrings.time = timeString.replace(token[1], ""); dateStrings.timezone = token[1]; } else { dateStrings.time = timeString; } } return dateStrings; } function parseYear(dateString, additionalDigits) { var parseTokenYYY = parseTokensYYY[additionalDigits]; var parseTokenYYYYY = parseTokensYYYYY[additionalDigits]; var token; token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString); if (token) { var yearString = token[1]; return { year: parseInt(yearString, 10), restDateString: dateString.slice(yearString.length) }; } token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString); if (token) { var centuryString = token[1]; return { year: parseInt(centuryString, 10) * 100, restDateString: dateString.slice(centuryString.length) }; } return { year: null }; } function parseDate(dateString, year) { if (year === null) { return null; } var token; var date; var month; var week; if (dateString.length === 0) { date = /* @__PURE__ */ new Date(0); date.setUTCFullYear(year); return date; } token = parseTokenMM.exec(dateString); if (token) { date = /* @__PURE__ */ new Date(0); month = parseInt(token[1], 10) - 1; date.setUTCFullYear(year, month); return date; } token = parseTokenDDD.exec(dateString); if (token) { date = /* @__PURE__ */ new Date(0); var dayOfYear = parseInt(token[1], 10); date.setUTCFullYear(year, 0, dayOfYear); return date; } token = parseTokenMMDD.exec(dateString); if (token) { date = /* @__PURE__ */ new Date(0); month = parseInt(token[1], 10) - 1; var day = parseInt(token[2], 10); date.setUTCFullYear(year, month, day); return date; } token = parseTokenWww.exec(dateString); if (token) { week = parseInt(token[1], 10) - 1; return dayOfISOYear(year, week); } token = parseTokenWwwD.exec(dateString); if (token) { week = parseInt(token[1], 10) - 1; var dayOfWeek = parseInt(token[2], 10) - 1; return dayOfISOYear(year, week, dayOfWeek); } return null; } function parseTime(timeString) { var token; var hours; var minutes; token = parseTokenHH.exec(timeString); if (token) { hours = parseFloat(token[1].replace(",", ".")); return hours % 24 * MILLISECONDS_IN_HOUR; } token = parseTokenHHMM.exec(timeString); if (token) { hours = parseInt(token[1], 10); minutes = parseFloat(token[2].replace(",", ".")); return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE; } token = parseTokenHHMMSS.exec(timeString); if (token) { hours = parseInt(token[1], 10); minutes = parseInt(token[2], 10); var seconds = parseFloat(token[3].replace(",", ".")); return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1e3; } return null; } function parseTimezone(timezoneString) { var token; var absoluteOffset; token = parseTokenTimezoneZ.exec(timezoneString); if (token) { return 0; } token = parseTokenTimezoneHH.exec(timezoneString); if (token) { absoluteOffset = parseInt(token[2], 10) * 60; return token[1] === "+" ? -absoluteOffset : absoluteOffset; } token = parseTokenTimezoneHHMM.exec(timezoneString); if (token) { absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10); return token[1] === "+" ? -absoluteOffset : absoluteOffset; } return 0; } function dayOfISOYear(isoYear, week, day) { week = week || 0; day = day || 0; var date = /* @__PURE__ */ new Date(0); date.setUTCFullYear(isoYear, 0, 4); var fourthOfJanuaryDay = date.getUTCDay() || 7; var diff = week * 7 + day + 1 - fourthOfJanuaryDay; date.setUTCDate(date.getUTCDate() + diff); return date; } module2.exports = parse11; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_year/index.js var require_start_of_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_year/index.js"(exports2, module2) { var parse11 = require_parse7(); function startOfYear(dirtyDate) { var cleanDate = parse11(dirtyDate); var date = /* @__PURE__ */ new Date(0); date.setFullYear(cleanDate.getFullYear(), 0, 1); date.setHours(0, 0, 0, 0); return date; } module2.exports = startOfYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_day/index.js var require_start_of_day = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_day/index.js"(exports2, module2) { var parse11 = require_parse7(); function startOfDay(dirtyDate) { var date = parse11(dirtyDate); date.setHours(0, 0, 0, 0); return date; } module2.exports = startOfDay; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_days/index.js var require_difference_in_calendar_days = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_days/index.js"(exports2, module2) { var startOfDay = require_start_of_day(); var MILLISECONDS_IN_MINUTE = 6e4; var MILLISECONDS_IN_DAY = 864e5; function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) { var startOfDayLeft = startOfDay(dirtyDateLeft); var startOfDayRight = startOfDay(dirtyDateRight); var timestampLeft = startOfDayLeft.getTime() - startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; var timestampRight = startOfDayRight.getTime() - startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY); } module2.exports = differenceInCalendarDays; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_day_of_year/index.js var require_get_day_of_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_day_of_year/index.js"(exports2, module2) { var parse11 = require_parse7(); var startOfYear = require_start_of_year(); var differenceInCalendarDays = require_difference_in_calendar_days(); function getDayOfYear(dirtyDate) { var date = parse11(dirtyDate); var diff = differenceInCalendarDays(date, startOfYear(date)); var dayOfYear = diff + 1; return dayOfYear; } module2.exports = getDayOfYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_week/index.js var require_start_of_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_week/index.js"(exports2, module2) { var parse11 = require_parse7(); function startOfWeek(dirtyDate, dirtyOptions) { var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0; var date = parse11(dirtyDate); var day = date.getDay(); var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; date.setDate(date.getDate() - diff); date.setHours(0, 0, 0, 0); return date; } module2.exports = startOfWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_iso_week/index.js var require_start_of_iso_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_iso_week/index.js"(exports2, module2) { var startOfWeek = require_start_of_week(); function startOfISOWeek(dirtyDate) { return startOfWeek(dirtyDate, { weekStartsOn: 1 }); } module2.exports = startOfISOWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_year/index.js var require_get_iso_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_year/index.js"(exports2, module2) { var parse11 = require_parse7(); var startOfISOWeek = require_start_of_iso_week(); function getISOYear(dirtyDate) { var date = parse11(dirtyDate); var year = date.getFullYear(); var fourthOfJanuaryOfNextYear = /* @__PURE__ */ new Date(0); fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear); var fourthOfJanuaryOfThisYear = /* @__PURE__ */ new Date(0); fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear); if (date.getTime() >= startOfNextYear.getTime()) { return year + 1; } else if (date.getTime() >= startOfThisYear.getTime()) { return year; } else { return year - 1; } } module2.exports = getISOYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_iso_year/index.js var require_start_of_iso_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_iso_year/index.js"(exports2, module2) { var getISOYear = require_get_iso_year(); var startOfISOWeek = require_start_of_iso_week(); function startOfISOYear(dirtyDate) { var year = getISOYear(dirtyDate); var fourthOfJanuary = /* @__PURE__ */ new Date(0); fourthOfJanuary.setFullYear(year, 0, 4); fourthOfJanuary.setHours(0, 0, 0, 0); var date = startOfISOWeek(fourthOfJanuary); return date; } module2.exports = startOfISOYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_week/index.js var require_get_iso_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_week/index.js"(exports2, module2) { var parse11 = require_parse7(); var startOfISOWeek = require_start_of_iso_week(); var startOfISOYear = require_start_of_iso_year(); var MILLISECONDS_IN_WEEK = 6048e5; function getISOWeek(dirtyDate) { var date = parse11(dirtyDate); var diff = startOfISOWeek(date).getTime() - startOfISOYear(date).getTime(); return Math.round(diff / MILLISECONDS_IN_WEEK) + 1; } module2.exports = getISOWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_valid/index.js var require_is_valid = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_valid/index.js"(exports2, module2) { var isDate = require_is_date(); function isValid(dirtyDate) { if (isDate(dirtyDate)) { return !isNaN(dirtyDate); } else { throw new TypeError(toString.call(dirtyDate) + " is not an instance of Date"); } } module2.exports = isValid; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js var require_build_distance_in_words_locale = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js"(exports2, module2) { function buildDistanceInWordsLocale() { var distanceInWordsLocale = { lessThanXSeconds: { one: "less than a second", other: "less than {{count}} seconds" }, xSeconds: { one: "1 second", other: "{{count}} seconds" }, halfAMinute: "half a minute", lessThanXMinutes: { one: "less than a minute", other: "less than {{count}} minutes" }, xMinutes: { one: "1 minute", other: "{{count}} minutes" }, aboutXHours: { one: "about 1 hour", other: "about {{count}} hours" }, xHours: { one: "1 hour", other: "{{count}} hours" }, xDays: { one: "1 day", other: "{{count}} days" }, aboutXMonths: { one: "about 1 month", other: "about {{count}} months" }, xMonths: { one: "1 month", other: "{{count}} months" }, aboutXYears: { one: "about 1 year", other: "about {{count}} years" }, xYears: { one: "1 year", other: "{{count}} years" }, overXYears: { one: "over 1 year", other: "over {{count}} years" }, almostXYears: { one: "almost 1 year", other: "almost {{count}} years" } }; function localize(token, count, options) { options = options || {}; var result; if (typeof distanceInWordsLocale[token] === "string") { result = distanceInWordsLocale[token]; } else if (count === 1) { result = distanceInWordsLocale[token].one; } else { result = distanceInWordsLocale[token].other.replace("{{count}}", count); } if (options.addSuffix) { if (options.comparison > 0) { return "in " + result; } else { return result + " ago"; } } return result; } return { localize }; } module2.exports = buildDistanceInWordsLocale; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js var require_build_formatting_tokens_reg_exp = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js"(exports2, module2) { var commonFormatterKeys = [ "M", "MM", "Q", "D", "DD", "DDD", "DDDD", "d", "E", "W", "WW", "YY", "YYYY", "GG", "GGGG", "H", "HH", "h", "hh", "m", "mm", "s", "ss", "S", "SS", "SSS", "Z", "ZZ", "X", "x" ]; function buildFormattingTokensRegExp(formatters) { var formatterKeys = []; for (var key in formatters) { if (formatters.hasOwnProperty(key)) { formatterKeys.push(key); } } var formattingTokens = commonFormatterKeys.concat(formatterKeys).sort().reverse(); var formattingTokensRegExp = new RegExp( "(\\[[^\\[]*\\])|(\\\\)?(" + formattingTokens.join("|") + "|.)", "g" ); return formattingTokensRegExp; } module2.exports = buildFormattingTokensRegExp; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/build_format_locale/index.js var require_build_format_locale = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/build_format_locale/index.js"(exports2, module2) { var buildFormattingTokensRegExp = require_build_formatting_tokens_reg_exp(); function buildFormatLocale() { var months3char = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var monthsFull = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var weekdays2char = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]; var weekdays3char = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; var weekdaysFull = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; var meridiemUppercase = ["AM", "PM"]; var meridiemLowercase = ["am", "pm"]; var meridiemFull = ["a.m.", "p.m."]; var formatters = { // Month: Jan, Feb, ..., Dec "MMM": function(date) { return months3char[date.getMonth()]; }, // Month: January, February, ..., December "MMMM": function(date) { return monthsFull[date.getMonth()]; }, // Day of week: Su, Mo, ..., Sa "dd": function(date) { return weekdays2char[date.getDay()]; }, // Day of week: Sun, Mon, ..., Sat "ddd": function(date) { return weekdays3char[date.getDay()]; }, // Day of week: Sunday, Monday, ..., Saturday "dddd": function(date) { return weekdaysFull[date.getDay()]; }, // AM, PM "A": function(date) { return date.getHours() / 12 >= 1 ? meridiemUppercase[1] : meridiemUppercase[0]; }, // am, pm "a": function(date) { return date.getHours() / 12 >= 1 ? meridiemLowercase[1] : meridiemLowercase[0]; }, // a.m., p.m. "aa": function(date) { return date.getHours() / 12 >= 1 ? meridiemFull[1] : meridiemFull[0]; } }; var ordinalFormatters = ["M", "D", "DDD", "d", "Q", "W"]; ordinalFormatters.forEach(function(formatterToken) { formatters[formatterToken + "o"] = function(date, formatters2) { return ordinal(formatters2[formatterToken](date)); }; }); return { formatters, formattingTokensRegExp: buildFormattingTokensRegExp(formatters) }; } function ordinal(number) { var rem100 = number % 100; if (rem100 > 20 || rem100 < 10) { switch (rem100 % 10) { case 1: return number + "st"; case 2: return number + "nd"; case 3: return number + "rd"; } } return number + "th"; } module2.exports = buildFormatLocale; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/index.js var require_en = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/index.js"(exports2, module2) { var buildDistanceInWordsLocale = require_build_distance_in_words_locale(); var buildFormatLocale = require_build_format_locale(); module2.exports = { distanceInWords: buildDistanceInWordsLocale(), format: buildFormatLocale() }; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/format/index.js var require_format2 = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/format/index.js"(exports2, module2) { var getDayOfYear = require_get_day_of_year(); var getISOWeek = require_get_iso_week(); var getISOYear = require_get_iso_year(); var parse11 = require_parse7(); var isValid = require_is_valid(); var enLocale = require_en(); function format8(dirtyDate, dirtyFormatStr, dirtyOptions) { var formatStr = dirtyFormatStr ? String(dirtyFormatStr) : "YYYY-MM-DDTHH:mm:ss.SSSZ"; var options = dirtyOptions || {}; var locale = options.locale; var localeFormatters = enLocale.format.formatters; var formattingTokensRegExp = enLocale.format.formattingTokensRegExp; if (locale && locale.format && locale.format.formatters) { localeFormatters = locale.format.formatters; if (locale.format.formattingTokensRegExp) { formattingTokensRegExp = locale.format.formattingTokensRegExp; } } var date = parse11(dirtyDate); if (!isValid(date)) { return "Invalid Date"; } var formatFn = buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp); return formatFn(date); } var formatters = { // Month: 1, 2, ..., 12 "M": function(date) { return date.getMonth() + 1; }, // Month: 01, 02, ..., 12 "MM": function(date) { return addLeadingZeros(date.getMonth() + 1, 2); }, // Quarter: 1, 2, 3, 4 "Q": function(date) { return Math.ceil((date.getMonth() + 1) / 3); }, // Day of month: 1, 2, ..., 31 "D": function(date) { return date.getDate(); }, // Day of month: 01, 02, ..., 31 "DD": function(date) { return addLeadingZeros(date.getDate(), 2); }, // Day of year: 1, 2, ..., 366 "DDD": function(date) { return getDayOfYear(date); }, // Day of year: 001, 002, ..., 366 "DDDD": function(date) { return addLeadingZeros(getDayOfYear(date), 3); }, // Day of week: 0, 1, ..., 6 "d": function(date) { return date.getDay(); }, // Day of ISO week: 1, 2, ..., 7 "E": function(date) { return date.getDay() || 7; }, // ISO week: 1, 2, ..., 53 "W": function(date) { return getISOWeek(date); }, // ISO week: 01, 02, ..., 53 "WW": function(date) { return addLeadingZeros(getISOWeek(date), 2); }, // Year: 00, 01, ..., 99 "YY": function(date) { return addLeadingZeros(date.getFullYear(), 4).substr(2); }, // Year: 1900, 1901, ..., 2099 "YYYY": function(date) { return addLeadingZeros(date.getFullYear(), 4); }, // ISO week-numbering year: 00, 01, ..., 99 "GG": function(date) { return String(getISOYear(date)).substr(2); }, // ISO week-numbering year: 1900, 1901, ..., 2099 "GGGG": function(date) { return getISOYear(date); }, // Hour: 0, 1, ... 23 "H": function(date) { return date.getHours(); }, // Hour: 00, 01, ..., 23 "HH": function(date) { return addLeadingZeros(date.getHours(), 2); }, // Hour: 1, 2, ..., 12 "h": function(date) { var hours = date.getHours(); if (hours === 0) { return 12; } else if (hours > 12) { return hours % 12; } else { return hours; } }, // Hour: 01, 02, ..., 12 "hh": function(date) { return addLeadingZeros(formatters["h"](date), 2); }, // Minute: 0, 1, ..., 59 "m": function(date) { return date.getMinutes(); }, // Minute: 00, 01, ..., 59 "mm": function(date) { return addLeadingZeros(date.getMinutes(), 2); }, // Second: 0, 1, ..., 59 "s": function(date) { return date.getSeconds(); }, // Second: 00, 01, ..., 59 "ss": function(date) { return addLeadingZeros(date.getSeconds(), 2); }, // 1/10 of second: 0, 1, ..., 9 "S": function(date) { return Math.floor(date.getMilliseconds() / 100); }, // 1/100 of second: 00, 01, ..., 99 "SS": function(date) { return addLeadingZeros(Math.floor(date.getMilliseconds() / 10), 2); }, // Millisecond: 000, 001, ..., 999 "SSS": function(date) { return addLeadingZeros(date.getMilliseconds(), 3); }, // Timezone: -01:00, +00:00, ... +12:00 "Z": function(date) { return formatTimezone(date.getTimezoneOffset(), ":"); }, // Timezone: -0100, +0000, ... +1200 "ZZ": function(date) { return formatTimezone(date.getTimezoneOffset()); }, // Seconds timestamp: 512969520 "X": function(date) { return Math.floor(date.getTime() / 1e3); }, // Milliseconds timestamp: 512969520900 "x": function(date) { return date.getTime(); } }; function buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp) { var array = formatStr.match(formattingTokensRegExp); var length = array.length; var i; var formatter; for (i = 0; i < length; i++) { formatter = localeFormatters[array[i]] || formatters[array[i]]; if (formatter) { array[i] = formatter; } else { array[i] = removeFormattingTokens(array[i]); } } return function(date) { var output2 = ""; for (var i2 = 0; i2 < length; i2++) { if (array[i2] instanceof Function) { output2 += array[i2](date, formatters); } else { output2 += array[i2]; } } return output2; }; } function removeFormattingTokens(input) { if (input.match(/\[[\s\S]/)) { return input.replace(/^\[|]$/g, ""); } return input.replace(/\\/g, ""); } function formatTimezone(offset, delimeter) { delimeter = delimeter || ""; var sign = offset > 0 ? "-" : "+"; var absOffset = Math.abs(offset); var hours = Math.floor(absOffset / 60); var minutes = absOffset % 60; return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2); } function addLeadingZeros(number, targetLength) { var output2 = Math.abs(number).toString(); while (output2.length < targetLength) { output2 = "0" + output2; } return output2; } module2.exports = format8; } }); // src/util/format-date.ts function formatDate(dateStrOrNumber) { if (!dateStrOrNumber) { return import_chalk44.default.gray("-"); } const date = new Date(dateStrOrNumber); const diff = date.getTime() - Date.now(); return diff < 0 ? `${(0, import_format2.default)(date, "DD MMMM YYYY HH:mm:ss")} ${import_chalk44.default.gray( `[${(0, import_ms5.default)(-diff)} ago]` )}` : `${(0, import_format2.default)(date, "DD MMMM YYYY HH:mm:ss")} ${import_chalk44.default.gray( `[in ${(0, import_ms5.default)(diff)}]` )}`; } function formatDateWithoutTime(dateStrOrNumber) { if (!dateStrOrNumber) { return import_chalk44.default.gray("-"); } const date = new Date(dateStrOrNumber); const diff = date.getTime() - Date.now(); return diff < 0 ? `${(0, import_format2.default)(date, "MMM DD YYYY")} ${import_chalk44.default.gray(`[${(0, import_ms5.default)(-diff)} ago]`)}` : `${(0, import_format2.default)(date, "MMM DD YYYY")} ${import_chalk44.default.gray(`[in ${(0, import_ms5.default)(diff)}]`)}`; } var import_ms5, import_chalk44, import_format2; var init_format_date = __esm({ "src/util/format-date.ts"() { "use strict"; import_ms5 = __toESM3(require_ms(), 1); import_chalk44 = __toESM3(require_source(), 1); import_format2 = __toESM3(require_format2(), 1); } }); // src/util/bisect/normalize-url.ts function hasScheme(url3) { return url3.startsWith("http://") || url3.startsWith("https://"); } function normalizeURL(url3) { return hasScheme(url3) ? url3 : `https://${url3}`; } var init_normalize_url = __esm({ "src/util/bisect/normalize-url.ts"() { "use strict"; } }); // src/util/telemetry/commands/bisect/index.ts var BisectTelemetryClient; var init_bisect = __esm({ "src/util/telemetry/commands/bisect/index.ts"() { "use strict"; init_telemetry(); BisectTelemetryClient = class extends TelemetryClient { trackCliOptionGood(good) { if (good) { this.trackCliOption({ option: "good", value: this.redactedValue }); } } trackCliOptionBad(bad) { if (bad) { this.trackCliOption({ option: "bad", value: this.redactedValue }); } } trackCliOptionPath(path11) { if (path11) { this.trackCliOption({ option: "path", value: this.redactedValue }); } } trackCliOptionRun(run2) { if (run2) { this.trackCliOption({ option: "run", value: this.redactedValue }); } } trackCliFlagOpen(open10) { if (open10) { this.trackCliFlag("open"); } } }; } }); // src/commands/bisect/index.ts var bisect_exports = {}; __export3(bisect_exports, { default: () => bisect }); import { resolve as resolve5 } from "path"; import { URLSearchParams as URLSearchParams4, parse as parse6 } from "url"; async function bisect(client2) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(bisectCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } const telemetry2 = new BisectTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("bisect"); output_manager_default.print(help(bisectCommand, { columns: client2.stderr.columns })); return 2; } telemetry2.trackCliOptionGood(parsedArgs.flags["--good"]); telemetry2.trackCliOptionBad(parsedArgs.flags["--bad"]); telemetry2.trackCliOptionPath(parsedArgs.flags["--path"]); telemetry2.trackCliOptionRun(parsedArgs.flags["--run"]); telemetry2.trackCliFlagOpen(parsedArgs.flags["--open"]); const scope = await getScope(client2); const { contextName } = scope; let bad = parsedArgs.flags["--bad"] || await client2.input.text({ message: `Specify a URL where the bug occurs:`, validate: (val) => val ? true : "A URL must be provided" }); let good = parsedArgs.flags["--good"] || await client2.input.text({ message: `Specify a URL where the bug does not occur:`, validate: (val) => val ? true : "A URL must be provided" }); let subpath = parsedArgs.flags["--path"] || ""; let run2 = parsedArgs.flags["--run"] || ""; const openEnabled = parsedArgs.flags["--open"] || false; if (run2) { run2 = resolve5(run2); } bad = normalizeURL(bad); let parsed = parse6(bad); if (!parsed.hostname) { output_manager_default.error("Invalid input: no hostname provided"); return 1; } bad = parsed.hostname; if (typeof parsed.path === "string" && parsed.path !== "/") { if (subpath && subpath !== parsed.path) { output_manager_default.note( `Ignoring subpath ${import_chalk45.default.bold( parsed.path )} in favor of \`--path\` argument ${import_chalk45.default.bold(subpath)}` ); } else { subpath = parsed.path; } } good = normalizeURL(good); parsed = parse6(good); if (!parsed.hostname) { output_manager_default.error("Invalid input: no hostname provided"); return 1; } good = parsed.hostname; if (typeof parsed.path === "string" && parsed.path !== "/" && subpath && subpath !== parsed.path) { output_manager_default.note( `Ignoring subpath ${import_chalk45.default.bold( parsed.path )} which does not match ${import_chalk45.default.bold(subpath)}` ); } if (!subpath) { subpath = await client2.input.text({ message: `Specify the URL subpath where the bug occurs:`, validate: (val) => val ? true : "A subpath must be provided" }); } output_manager_default.spinner("Retrieving deployments\u2026"); const badDeployment = await getDeployment(client2, contextName, bad).catch( (err) => err ); if (badDeployment) { if (badDeployment instanceof Error) { badDeployment.message += ` when requesting bad deployment "${normalizeURL( bad )}"`; output_manager_default.prettyError(badDeployment); return 1; } bad = badDeployment.url; } else { output_manager_default.error(`Failed to retrieve ${import_chalk45.default.bold("bad")} Deployment: ${bad}`); return 1; } const goodDeployment = await getDeployment(client2, contextName, good).catch( (err) => err ); if (goodDeployment) { if (goodDeployment instanceof Error) { goodDeployment.message += ` when requesting good deployment "${normalizeURL( good )}"`; output_manager_default.prettyError(goodDeployment); return 1; } good = goodDeployment.url; } else { output_manager_default.error( `Failed to retrieve ${import_chalk45.default.bold("good")} Deployment: ${good}` ); return 1; } const { projectId } = badDeployment; if (projectId !== goodDeployment.projectId) { output_manager_default.error(`Good and Bad deployments must be from the same Project`); return 1; } if (badDeployment.url === goodDeployment.url) { output_manager_default.error(`Good and Bad deployments must be different`); return 1; } if (badDeployment.createdAt < goodDeployment.createdAt) { output_manager_default.error(`Good deployment must be older than the Bad deployment`); return 1; } if (badDeployment.target !== goodDeployment.target) { output_manager_default.error( `Bad deployment target "${badDeployment.target || "preview"}" does not match good deployment target "${goodDeployment.target || "preview"}"` ); return 1; } let deployments = []; const query = new URLSearchParams4(); query.set("projectId", projectId); if (badDeployment.target) { query.set("target", badDeployment.target); } query.set("state", "READY"); query.set("until", String(badDeployment.createdAt + 1)); for await (const chunk of client2.fetchPaginated( `/v6/deployments?${query}`, { accountId: badDeployment.ownerId } )) { let newDeployments = chunk.deployments; let hasGood = false; for (let i = 0; i < newDeployments.length; i++) { if (newDeployments[i].url === good) { newDeployments = newDeployments.slice(0, i); hasGood = true; break; } } deployments = deployments.concat(newDeployments); if (hasGood) break; } if (!deployments.length) { output_manager_default.error( "Cannot bisect because this project does not have any deployments" ); return 1; } let lastBad = deployments.shift(); while (deployments.length > 0) { output_manager_default.print("\n"); const middleIndex = Math.floor(deployments.length / 2); const deployment = deployments[middleIndex]; const rem = (0, import_pluralize3.default)("deployment", deployments.length, true); const steps = Math.floor(Math.log2(deployments.length)); const pSteps = (0, import_pluralize3.default)("step", steps, true); output_manager_default.log( import_chalk45.default.magenta( `${import_chalk45.default.bold( "Bisecting:" )} ${rem} left to test after this (roughly ${pSteps})` ), import_chalk45.default.magenta ); const testUrl = `https://${deployment.url}${subpath}`; output_manager_default.log(`${import_chalk45.default.bold("Deployment URL:")} ${link_default(testUrl)}`); output_manager_default.log(`${import_chalk45.default.bold("Date:")} ${formatDate(deployment.createdAt)}`); const commit2 = getCommit(deployment); if (commit2) { const shortSha = commit2.sha.substring(0, 7); const firstLine = commit2.message?.split("\n")[0]; output_manager_default.log(`${import_chalk45.default.bold("Commit:")} [${shortSha}] ${firstLine}`); } let action; if (run2) { const proc = await (0, import_execa2.default)(run2, [testUrl], { stdio: "inherit", reject: false, env: { ...process.env, HOST: deployment.url, URL: testUrl } }); if (proc instanceof Error && typeof proc.exitCode !== "number") { output_manager_default.prettyError(proc); return 1; } const { exitCode: exitCode2 } = proc; let color; if (exitCode2 === 0) { color = import_chalk45.default.green; action = "good"; } else if (exitCode2 === 125) { action = "skip"; color = import_chalk45.default.grey; } else { action = "bad"; color = import_chalk45.default.red; } output_manager_default.log( `Run script returned exit code ${import_chalk45.default.bold(String(exitCode2))}: ${color( action )}` ); } else { if (openEnabled) { await (0, import_open2.default)(testUrl); } action = await client2.input.expand({ message: "Select an action:", choices: [ { key: "g", name: "Good", value: "good" }, { key: "b", name: "Bad", value: "bad" }, { key: "s", name: "Skip", value: "skip" } ] }); } if (action === "good") { deployments = deployments.slice(0, middleIndex); } else if (action === "bad") { lastBad = deployment; deployments = deployments.slice(middleIndex + 1); } else if (action === "skip") { deployments.splice(middleIndex, 1); } } output_manager_default.print("\n"); const result = [ import_chalk45.default.bold( `The first bad deployment is: ${link_default(`https://${lastBad.url}`)}` ), "", ` ${import_chalk45.default.bold("Date:")} ${formatDate(lastBad.createdAt)}` ]; const commit = getCommit(lastBad); if (commit) { const shortSha = commit.sha.substring(0, 7); const firstLine = commit.message?.split("\n")[0]; result.push(` ${import_chalk45.default.bold("Commit:")} [${shortSha}] ${firstLine}`); } result.push(`${import_chalk45.default.bold("Inspect:")} ${link_default(lastBad.inspectorUrl)}`); output_manager_default.print(box(result.join("\n"))); output_manager_default.print("\n"); return 0; } function getCommit(deployment) { const sha = deployment.meta?.githubCommitSha || deployment.meta?.gitlabCommitSha || deployment.meta?.bitbucketCommitSha; if (!sha) return null; const message2 = deployment.meta?.githubCommitMessage || deployment.meta?.gitlabCommitMessage || deployment.meta?.bitbucketCommitMessage; return { sha, message: message2 }; } var import_open2, import_execa2, import_pluralize3, import_chalk45; var init_bisect2 = __esm({ "src/commands/bisect/index.ts"() { "use strict"; import_open2 = __toESM3(require_open(), 1); import_execa2 = __toESM3(require_execa(), 1); import_pluralize3 = __toESM3(require_pluralize(), 1); import_chalk45 = __toESM3(require_source(), 1); init_box(); init_format_date(); init_link(); init_get_args(); init_normalize_url(); init_get_scope(); init_get_deployment(); init_help(); init_command3(); init_get_flags_specification(); init_error2(); init_output_manager(); init_bisect(); } }); // src/util/get-invalid-subcommand.ts function getInvalidSubcommand(config2) { return `Please specify a valid subcommand: ${Object.keys(config2).join( " | " )}`; } var init_get_invalid_subcommand = __esm({ "src/util/get-invalid-subcommand.ts"() { "use strict"; } }); // src/util/telemetry/commands/blob/list.ts var BlobListTelemetryClient; var init_list3 = __esm({ "src/util/telemetry/commands/blob/list.ts"() { "use strict"; init_telemetry(); BlobListTelemetryClient = class extends TelemetryClient { trackCliOptionLimit(limit) { if (limit) { this.trackCliOption({ option: "limit", value: String(limit) }); } } trackCliOptionCursor(cursor) { if (cursor) { this.trackCliOption({ option: "cursor", value: cursor }); } } trackCliOptionPrefix(prefix) { if (prefix) { this.trackCliOption({ option: "prefix", value: this.redactedValue }); } } trackCliOptionMode(mode) { if (mode) { this.trackCliOption({ option: "mode", value: mode }); } } }; } }); // src/commands/blob/list.ts import * as blob from "@vercel/blob"; function isMode(mode) { return mode === "folded" || mode === "expanded"; } async function list3(client2, argv, rwToken) { const telemetryClient = new BlobListTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const flagsSpecification = getFlagsSpecification(listSubcommand12.options); let parsedArgs; try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags } = parsedArgs; const validationResult = validateLsArgs({ commandName: "blob list", args: args2 }); if (validationResult !== 0) { return validationResult; } const { "--limit": limit, "--cursor": cursor, "--prefix": prefix, "--mode": modeFlag } = flags; telemetryClient.trackCliOptionLimit(limit); telemetryClient.trackCliOptionCursor(cursor); telemetryClient.trackCliOptionPrefix(prefix); telemetryClient.trackCliOptionMode(modeFlag); const mode = modeFlag ?? "expanded"; if (!isMode(mode)) { output_manager_default.error( `Invalid mode: ${mode} has to be either 'folded' or 'expanded'` ); return 1; } let list10; try { output_manager_default.debug("Fetching blobs"); output_manager_default.spinner("Fetching blobs"); list10 = await blob.list({ token: rwToken, limit: limit ?? 10, cursor, mode, prefix }); } catch (err) { printError(err); return 1; } output_manager_default.stopSpinner(); const headers = ["Uploaded At", "Size", "Pathname", "URL"]; const urls = []; const tablePrint = table( [ headers.map((header) => import_chalk46.default.dim(header)), ...list10.blobs.map((blob5) => { urls.push(blob5.url); const uploadedAt = (0, import_ms6.default)(Date.now() - new Date(blob5.uploadedAt).getTime()); return [uploadedAt, String(blob5.size), blob5.pathname, blob5.url]; }) ], { hsep: 5 } ).replace(/^/gm, " "); if (list10.blobs.length > 0) { output_manager_default.print(` ${tablePrint} `); } else { output_manager_default.log("No blobs in this store"); } if (list10.cursor) { const nextFlags = getCommandFlags(flags, ["_", "--cursor"]); output_manager_default.log( `To display the next page run ${getCommandName( `blob list${nextFlags} --cursor ${list10.cursor}` )}` ); } return 0; } var import_chalk46, import_ms6; var init_list4 = __esm({ "src/commands/blob/list.ts"() { "use strict"; init_output_manager(); init_table(); import_chalk46 = __toESM3(require_source(), 1); import_ms6 = __toESM3(require_ms(), 1); init_get_command_flags(); init_get_args(); init_get_flags_specification(); init_command43(); init_pkg_name(); init_list3(); init_error2(); init_validate_ls_args(); } }); // src/util/telemetry/commands/blob/index.ts var BlobTelemetryClient; var init_blob = __esm({ "src/util/telemetry/commands/blob/index.ts"() { "use strict"; init_telemetry(); BlobTelemetryClient = class extends TelemetryClient { trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } trackCliSubcommandPut(actual) { this.trackCliSubcommand({ subcommand: "put", value: actual }); } trackCliSubcommandDel(actual) { this.trackCliSubcommand({ subcommand: "del", value: actual }); } trackCliSubcommandCopy(actual) { this.trackCliSubcommand({ subcommand: "copy", value: actual }); } trackCliSubcommandStore(actual) { this.trackCliSubcommand({ subcommand: "store", value: actual }); } trackCliOptionRwToken() { this.trackCliOption({ option: "--rw-token", value: this.redactedValue }); } }; } }); // src/util/telemetry/commands/blob/put.ts var BlobPutTelemetryClient; var init_put = __esm({ "src/util/telemetry/commands/blob/put.ts"() { "use strict"; init_telemetry(); BlobPutTelemetryClient = class extends TelemetryClient { trackCliArgumentPathToFile(pathToFile) { if (pathToFile) { this.trackCliArgument({ arg: "pathToFile", value: this.redactedValue }); } } trackCliInputSourceStdin() { this.trackCliArgument({ arg: "pathToFile", value: "__vercel_stdin__" }); } trackCliFlagAddRandomSuffix(addRandomSuffix) { if (addRandomSuffix) { this.trackCliFlag("add-random-suffix"); } } trackCliOptionPathname(pathname) { if (pathname) { this.trackCliOption({ option: "pathname", value: this.redactedValue }); } } trackCliFlagMultipart(multipart) { if (multipart) { this.trackCliFlag("multipart"); } } trackCliOptionContentType(contentType2) { if (contentType2) { this.trackCliOption({ option: "content-type", value: contentType2 }); } } trackCliOptionCacheControlMaxAge(cacheControlMaxAge) { if (cacheControlMaxAge) { this.trackCliOption({ option: "cache-control-max-age", value: String(cacheControlMaxAge) }); } } trackCliFlagForce(force) { if (force) { this.trackCliFlag("force"); } } }; } }); // src/commands/blob/put.ts import * as blob2 from "@vercel/blob"; import { statSync } from "fs"; import { open as open4 } from "fs/promises"; import { basename as basename4 } from "path"; async function put2(client2, argv, rwToken) { const telemetryClient = new BlobPutTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const flagsSpecification = getFlagsSpecification(putSubcommand.options); let parsedArgs; try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { flags, args: [filePath] } = parsedArgs; const { "--add-random-suffix": addRandomSuffix, "--pathname": pathnameFlag, "--multipart": multipart, "--content-type": contentType2, "--cache-control-max-age": cacheControlMaxAge, "--force": force } = flags; if (filePath) { telemetryClient.trackCliArgumentPathToFile(filePath); } telemetryClient.trackCliFlagAddRandomSuffix(addRandomSuffix); telemetryClient.trackCliOptionPathname(pathnameFlag); telemetryClient.trackCliFlagMultipart(multipart); telemetryClient.trackCliOptionContentType(contentType2); telemetryClient.trackCliOptionCacheControlMaxAge(cacheControlMaxAge); telemetryClient.trackCliFlagForce(force); let putBody; let pathname; if (!filePath) { if (client2.stdin.isTTY) { output_manager_default.error( `Missing input. Usage: ${import_chalk47.default.cyan( `${getCommandName("blob put ")}` )} or pipe data: ${import_chalk47.default.cyan("cat file.txt | vercel blob put --pathname ")}` ); return 1; } if (!pathnameFlag) { output_manager_default.error( `Missing pathname. When reading from stdin, you must specify --pathname. Usage: ${import_chalk47.default.cyan( "cat file.txt | vercel blob put --pathname " )}` ); return 1; } putBody = process.stdin; pathname = pathnameFlag; telemetryClient.trackCliInputSourceStdin(); } else { try { const stats = statSync(filePath); const isFile2 = stats.isFile(); if (isFile2) { const file = await open4(filePath, "r"); putBody = file.createReadStream(); pathname = pathnameFlag ?? basename4(filePath); } else { output_manager_default.error("Path to upload is not a file"); return 1; } } catch (err) { output_manager_default.debug(`Error reading file: ${err}`); if ((0, import_error_utils13.isErrnoException)(err)) { output_manager_default.error(`File doesn't exist at '${filePath}'`); return 1; } output_manager_default.error("Error while reading file"); return 1; } } if (!pathname || !putBody) { output_manager_default.error( `Missing pathname or input. Usage: ${import_chalk47.default.cyan( `${getCommandName("blob put ")}` )} or ${import_chalk47.default.cyan( `cat file.txt | ${getCommandName("blob put --pathname ")}` )}` ); return 1; } let result; try { output_manager_default.debug("Uploading blob"); output_manager_default.spinner("Uploading blob"); result = await blob2.put(pathname, putBody, { token: rwToken, access: "public", addRandomSuffix: addRandomSuffix ?? false, multipart: multipart ?? true, contentType: contentType2, cacheControlMaxAge, allowOverwrite: force ?? false }); } catch (err) { printError(err); return 1; } output_manager_default.stopSpinner(); output_manager_default.success(result.url); return 0; } var import_error_utils13, import_chalk47; var init_put2 = __esm({ "src/commands/blob/put.ts"() { "use strict"; init_output_manager(); init_get_args(); init_get_flags_specification(); init_command43(); import_error_utils13 = __toESM3(require_dist2(), 1); init_pkg_name(); import_chalk47 = __toESM3(require_source(), 1); init_put(); init_error2(); } }); // src/util/telemetry/commands/blob/del.ts var BlobDelTelemetryClient; var init_del = __esm({ "src/util/telemetry/commands/blob/del.ts"() { "use strict"; init_telemetry(); BlobDelTelemetryClient = class extends TelemetryClient { trackCliArgumentUrlsOrPathnames(urlsOrPathnames) { if (urlsOrPathnames) { this.trackCliArgument({ arg: "urlsOrPathnames", value: this.redactedValue }); } } }; } }); // src/commands/blob/del.ts import * as blob3 from "@vercel/blob"; async function del2(client2, argv, rwToken) { const telemetryClient = new BlobDelTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const flagsSpecification = getFlagsSpecification(delSubcommand.options); let parsedArgs; try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } if (!parsedArgs.args.length) { printError( `Missing required arguments: ${getCommandName("blob del urlOrPathname")}` ); return 1; } const { args: args2 } = parsedArgs; telemetryClient.trackCliArgumentUrlsOrPathnames(args2[0]); try { output_manager_default.debug("Deleting blob"); output_manager_default.spinner("Deleting blob"); await blob3.del(args2, { token: rwToken }); } catch (err) { output_manager_default.error(`Error deleting blob: ${err}`); return 1; } output_manager_default.stopSpinner(); output_manager_default.success("Blob deleted"); return 0; } var init_del2 = __esm({ "src/commands/blob/del.ts"() { "use strict"; init_output_manager(); init_get_args(); init_get_flags_specification(); init_command43(); init_del(); init_error2(); init_pkg_name(); } }); // src/util/telemetry/commands/blob/copy.ts var BlobCopyTelemetryClient; var init_copy = __esm({ "src/util/telemetry/commands/blob/copy.ts"() { "use strict"; init_telemetry(); BlobCopyTelemetryClient = class extends TelemetryClient { trackCliArgumentFromUrlOrPathname(value) { if (value) { this.trackCliArgument({ arg: "fromUrlOrPathname", value: this.redactedValue }); } } trackCliArgumentToPathname(value) { if (value) { this.trackCliArgument({ arg: "toPathname", value: this.redactedValue }); } } trackCliFlagAddRandomSuffix(value) { if (value) { this.trackCliFlag("add-random-suffix"); } } trackCliOptionContentType(value) { if (value) { this.trackCliOption({ option: "content-type", value }); } } trackCliOptionCacheControlMaxAge(value) { if (value) { this.trackCliOption({ option: "cache-control-max-age", value: String(value) }); } } }; } }); // src/commands/blob/copy.ts import * as blob4 from "@vercel/blob"; async function copy2(client2, argv, rwToken) { const telemetryClient = new BlobCopyTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const flagsSpecification = getFlagsSpecification(copySubcommand.options); let parsedArgs; try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } if (!parsedArgs.args || parsedArgs.args.length < 2) { printError( `Missing required arguments: ${getCommandName( "blob copy fromUrlOrPathname toPathname" )}` ); return 1; } const { args: [fromUrl, toPathname], flags: { "--add-random-suffix": addRandomSuffix, "--content-type": contentType2, "--cache-control-max-age": cacheControlMaxAge } } = parsedArgs; telemetryClient.trackCliArgumentFromUrlOrPathname(fromUrl); telemetryClient.trackCliArgumentToPathname(toPathname); telemetryClient.trackCliFlagAddRandomSuffix(addRandomSuffix); telemetryClient.trackCliOptionContentType(contentType2); telemetryClient.trackCliOptionCacheControlMaxAge(cacheControlMaxAge); let result; try { output_manager_default.debug("Copying blob"); output_manager_default.spinner("Copying blob"); result = await blob4.copy(fromUrl, toPathname, { token: rwToken, access: "public", addRandomSuffix: addRandomSuffix ?? false, contentType: contentType2, cacheControlMaxAge }); } catch (err) { printError(err); return 1; } output_manager_default.stopSpinner(); output_manager_default.success(result.url); return 0; } var init_copy2 = __esm({ "src/commands/blob/copy.ts"() { "use strict"; init_error2(); init_output_manager(); init_get_args(); init_get_flags_specification(); init_command43(); init_copy(); init_pkg_name(); } }); // src/util/integration-resource/connect-resource-to-project.ts async function connectResourceToProject(client2, projectId, storeId, environments, accountId) { return client2.fetch(`/v1/storage/stores/${storeId}/connections`, { json: true, method: "POST", body: { envVarEnvironments: environments, projectId, type: "integration" }, accountId }); } var init_connect_resource_to_project = __esm({ "src/util/integration-resource/connect-resource-to-project.ts"() { "use strict"; } }); // src/util/telemetry/commands/blob/store-add.ts var BlobAddStoreTelemetryClient; var init_store_add = __esm({ "src/util/telemetry/commands/blob/store-add.ts"() { "use strict"; init_telemetry(); BlobAddStoreTelemetryClient = class extends TelemetryClient { trackCliArgumentName(value) { if (value) { this.trackCliArgument({ arg: "name", value: this.redactedValue }); } } trackCliOptionRegion(value) { if (value) { this.trackCliOption({ option: "region", value: this.redactedValue }); } } }; } }); // src/commands/blob/store-add.ts async function addStore(client2, argv) { const telemetryClient = new BlobAddStoreTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const flagsSpecification = getFlagsSpecification(addStoreSubcommand.options); let parsedArgs; try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: [nameArg], flags } = parsedArgs; const region = flags["--region"] || "iad1"; let name = nameArg; if (!name) { name = await client2.input.text({ message: "Enter a name for your blob store", validate: (value) => { if (value.length < 5) { return "Name must be at least 5 characters long"; } return true; } }); } telemetryClient.trackCliArgumentName(name); telemetryClient.trackCliOptionRegion(flags["--region"]); const link4 = await getLinkedProject(client2); let storeId; let storeRegion; try { output_manager_default.debug("Creating new blob store"); output_manager_default.spinner("Creating new blob store"); const requestBody = { name, region }; const res = await client2.fetch( "/v1/storage/stores/blob", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(requestBody), accountId: link4.status === "linked" ? link4.org.id : void 0 } ); storeId = res.store.id; storeRegion = res.store.region; } catch (err) { printError(err); return 1; } output_manager_default.stopSpinner(); const regionInfo = storeRegion ? ` in ${storeRegion}` : ""; output_manager_default.success(`Blob store created: ${name} (${storeId})${regionInfo}`); if (link4.status === "linked") { const res = await client2.input.confirm( `Would you like to link this blob store to ${link4.project.name}?`, true ); if (res) { const environments = await client2.input.checkbox({ message: "Select environments", choices: [ { name: "Production", value: "production", checked: true }, { name: "Preview", value: "preview", checked: true }, { name: "Development", value: "development", checked: true } ] }); output_manager_default.spinner( `Connecting ${import_chalk48.default.bold(name)} to ${import_chalk48.default.bold(link4.project.name)}...` ); await connectResourceToProject( client2, link4.project.id, storeId, environments, link4.org.id ); output_manager_default.success( `Blob store ${import_chalk48.default.bold(name)} linked to ${import_chalk48.default.bold( link4.project.name )}. Make sure to pull the new environment variables using ${getCommandName("env pull")}` ); } } return 0; } var import_chalk48; var init_store_add2 = __esm({ "src/commands/blob/store-add.ts"() { "use strict"; init_output_manager(); init_link2(); init_connect_resource_to_project(); import_chalk48 = __toESM3(require_source(), 1); init_pkg_name(); init_get_flags_specification(); init_get_args(); init_command43(); init_store_add(); init_error2(); } }); // src/commands/blob/store-remove.ts async function removeStore(client2, argv, rwToken) { const flagsSpecification = getFlagsSpecification( removeStoreSubcommand.options ); let parsedArgs; try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } let { args: [storeId] } = parsedArgs; if (!storeId && rwToken.success) { const [, , , id] = rwToken.token.split("_"); storeId = `store_${id}`; } if (!storeId) { storeId = await client2.input.text({ message: "Enter the ID of the blob store you want to remove", validate: (value) => { if (value.length !== 22) { return "ID must be 22 characters long"; } return true; } }); } try { const link4 = await getLinkedProject(client2); const store2 = await client2.fetch( `/v1/storage/stores/${storeId}`, { method: "GET", accountId: link4.status === "linked" ? link4.org.id : void 0 } ); const res = await client2.input.confirm( `Are you sure you want to remove ${store2.store.name} (${store2.store.id})? This action cannot be undone.`, false ); if (!res) { output_manager_default.success("Blob store not removed"); return 0; } output_manager_default.debug("Deleting blob store"); output_manager_default.spinner("Deleting blob store"); await client2.fetch( `/v1/storage/stores/blob/${storeId}`, { method: "DELETE", accountId: link4.status === "linked" ? link4.org.id : void 0 } ); } catch (err) { printError(err); return 1; } output_manager_default.stopSpinner(); output_manager_default.success("Blob store deleted"); return 0; } var init_store_remove = __esm({ "src/commands/blob/store-remove.ts"() { "use strict"; init_error2(); init_output_manager(); init_get_flags_specification(); init_command43(); init_get_args(); init_link2(); } }); // src/util/telemetry/commands/blob/store.ts var BlobStoreTelemetryClient; var init_store = __esm({ "src/util/telemetry/commands/blob/store.ts"() { "use strict"; init_telemetry(); BlobStoreTelemetryClient = class extends TelemetryClient { trackCliSubcommandAdd(actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "remove", value: actual }); } trackCliSubcommandGet(actual) { this.trackCliSubcommand({ subcommand: "get", value: actual }); } }; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_days/index.js var require_add_days = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_days/index.js"(exports2, module2) { var parse11 = require_parse7(); function addDays(dirtyDate, dirtyAmount) { var date = parse11(dirtyDate); var amount = Number(dirtyAmount); date.setDate(date.getDate() + amount); return date; } module2.exports = addDays; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_milliseconds/index.js var require_add_milliseconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_milliseconds/index.js"(exports2, module2) { var parse11 = require_parse7(); function addMilliseconds(dirtyDate, dirtyAmount) { var timestamp = parse11(dirtyDate).getTime(); var amount = Number(dirtyAmount); return new Date(timestamp + amount); } module2.exports = addMilliseconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_hours/index.js var require_add_hours = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_hours/index.js"(exports2, module2) { var addMilliseconds = require_add_milliseconds(); var MILLISECONDS_IN_HOUR = 36e5; function addHours(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR); } module2.exports = addHours; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_year/index.js var require_set_iso_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_year/index.js"(exports2, module2) { var parse11 = require_parse7(); var startOfISOYear = require_start_of_iso_year(); var differenceInCalendarDays = require_difference_in_calendar_days(); function setISOYear(dirtyDate, dirtyISOYear) { var date = parse11(dirtyDate); var isoYear = Number(dirtyISOYear); var diff = differenceInCalendarDays(date, startOfISOYear(date)); var fourthOfJanuary = /* @__PURE__ */ new Date(0); fourthOfJanuary.setFullYear(isoYear, 0, 4); fourthOfJanuary.setHours(0, 0, 0, 0); date = startOfISOYear(fourthOfJanuary); date.setDate(date.getDate() + diff); return date; } module2.exports = setISOYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_iso_years/index.js var require_add_iso_years = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_iso_years/index.js"(exports2, module2) { var getISOYear = require_get_iso_year(); var setISOYear = require_set_iso_year(); function addISOYears(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return setISOYear(dirtyDate, getISOYear(dirtyDate) + amount); } module2.exports = addISOYears; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_minutes/index.js var require_add_minutes = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_minutes/index.js"(exports2, module2) { var addMilliseconds = require_add_milliseconds(); var MILLISECONDS_IN_MINUTE = 6e4; function addMinutes(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE); } module2.exports = addMinutes; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_days_in_month/index.js var require_get_days_in_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_days_in_month/index.js"(exports2, module2) { var parse11 = require_parse7(); function getDaysInMonth(dirtyDate) { var date = parse11(dirtyDate); var year = date.getFullYear(); var monthIndex = date.getMonth(); var lastDayOfMonth = /* @__PURE__ */ new Date(0); lastDayOfMonth.setFullYear(year, monthIndex + 1, 0); lastDayOfMonth.setHours(0, 0, 0, 0); return lastDayOfMonth.getDate(); } module2.exports = getDaysInMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_months/index.js var require_add_months = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_months/index.js"(exports2, module2) { var parse11 = require_parse7(); var getDaysInMonth = require_get_days_in_month(); function addMonths(dirtyDate, dirtyAmount) { var date = parse11(dirtyDate); var amount = Number(dirtyAmount); var desiredMonth = date.getMonth() + amount; var dateWithDesiredMonth = /* @__PURE__ */ new Date(0); dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1); dateWithDesiredMonth.setHours(0, 0, 0, 0); var daysInMonth = getDaysInMonth(dateWithDesiredMonth); date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate())); return date; } module2.exports = addMonths; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_quarters/index.js var require_add_quarters = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_quarters/index.js"(exports2, module2) { var addMonths = require_add_months(); function addQuarters(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); var months = amount * 3; return addMonths(dirtyDate, months); } module2.exports = addQuarters; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_seconds/index.js var require_add_seconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_seconds/index.js"(exports2, module2) { var addMilliseconds = require_add_milliseconds(); function addSeconds(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addMilliseconds(dirtyDate, amount * 1e3); } module2.exports = addSeconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_weeks/index.js var require_add_weeks = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_weeks/index.js"(exports2, module2) { var addDays = require_add_days(); function addWeeks(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); var days = amount * 7; return addDays(dirtyDate, days); } module2.exports = addWeeks; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_years/index.js var require_add_years = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_years/index.js"(exports2, module2) { var addMonths = require_add_months(); function addYears(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addMonths(dirtyDate, amount * 12); } module2.exports = addYears; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/are_ranges_overlapping/index.js var require_are_ranges_overlapping = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/are_ranges_overlapping/index.js"(exports2, module2) { var parse11 = require_parse7(); function areRangesOverlapping(dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) { var initialStartTime = parse11(dirtyInitialRangeStartDate).getTime(); var initialEndTime = parse11(dirtyInitialRangeEndDate).getTime(); var comparedStartTime = parse11(dirtyComparedRangeStartDate).getTime(); var comparedEndTime = parse11(dirtyComparedRangeEndDate).getTime(); if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) { throw new Error("The start of the range cannot be after the end of the range"); } return initialStartTime < comparedEndTime && comparedStartTime < initialEndTime; } module2.exports = areRangesOverlapping; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/closest_index_to/index.js var require_closest_index_to = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/closest_index_to/index.js"(exports2, module2) { var parse11 = require_parse7(); function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) { if (!(dirtyDatesArray instanceof Array)) { throw new TypeError(toString.call(dirtyDatesArray) + " is not an instance of Array"); } var dateToCompare = parse11(dirtyDateToCompare); var timeToCompare = dateToCompare.getTime(); var result; var minDistance; dirtyDatesArray.forEach(function(dirtyDate, index) { var currentDate = parse11(dirtyDate); var distance2 = Math.abs(timeToCompare - currentDate.getTime()); if (result === void 0 || distance2 < minDistance) { result = index; minDistance = distance2; } }); return result; } module2.exports = closestIndexTo; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/closest_to/index.js var require_closest_to = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/closest_to/index.js"(exports2, module2) { var parse11 = require_parse7(); function closestTo(dirtyDateToCompare, dirtyDatesArray) { if (!(dirtyDatesArray instanceof Array)) { throw new TypeError(toString.call(dirtyDatesArray) + " is not an instance of Array"); } var dateToCompare = parse11(dirtyDateToCompare); var timeToCompare = dateToCompare.getTime(); var result; var minDistance; dirtyDatesArray.forEach(function(dirtyDate) { var currentDate = parse11(dirtyDate); var distance2 = Math.abs(timeToCompare - currentDate.getTime()); if (result === void 0 || distance2 < minDistance) { result = currentDate; minDistance = distance2; } }); return result; } module2.exports = closestTo; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/compare_asc/index.js var require_compare_asc = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/compare_asc/index.js"(exports2, module2) { var parse11 = require_parse7(); function compareAsc(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var timeLeft = dateLeft.getTime(); var dateRight = parse11(dirtyDateRight); var timeRight = dateRight.getTime(); if (timeLeft < timeRight) { return -1; } else if (timeLeft > timeRight) { return 1; } else { return 0; } } module2.exports = compareAsc; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/compare_desc/index.js var require_compare_desc = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/compare_desc/index.js"(exports2, module2) { var parse11 = require_parse7(); function compareDesc(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var timeLeft = dateLeft.getTime(); var dateRight = parse11(dirtyDateRight); var timeRight = dateRight.getTime(); if (timeLeft > timeRight) { return -1; } else if (timeLeft < timeRight) { return 1; } else { return 0; } } module2.exports = compareDesc; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_iso_weeks/index.js var require_difference_in_calendar_iso_weeks = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_iso_weeks/index.js"(exports2, module2) { var startOfISOWeek = require_start_of_iso_week(); var MILLISECONDS_IN_MINUTE = 6e4; var MILLISECONDS_IN_WEEK = 6048e5; function differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) { var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft); var startOfISOWeekRight = startOfISOWeek(dirtyDateRight); var timestampLeft = startOfISOWeekLeft.getTime() - startOfISOWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; var timestampRight = startOfISOWeekRight.getTime() - startOfISOWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK); } module2.exports = differenceInCalendarISOWeeks; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_iso_years/index.js var require_difference_in_calendar_iso_years = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_iso_years/index.js"(exports2, module2) { var getISOYear = require_get_iso_year(); function differenceInCalendarISOYears(dirtyDateLeft, dirtyDateRight) { return getISOYear(dirtyDateLeft) - getISOYear(dirtyDateRight); } module2.exports = differenceInCalendarISOYears; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_months/index.js var require_difference_in_calendar_months = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_months/index.js"(exports2, module2) { var parse11 = require_parse7(); function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear(); var monthDiff = dateLeft.getMonth() - dateRight.getMonth(); return yearDiff * 12 + monthDiff; } module2.exports = differenceInCalendarMonths; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_quarter/index.js var require_get_quarter = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_quarter/index.js"(exports2, module2) { var parse11 = require_parse7(); function getQuarter(dirtyDate) { var date = parse11(dirtyDate); var quarter = Math.floor(date.getMonth() / 3) + 1; return quarter; } module2.exports = getQuarter; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_quarters/index.js var require_difference_in_calendar_quarters = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_quarters/index.js"(exports2, module2) { var getQuarter = require_get_quarter(); var parse11 = require_parse7(); function differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear(); var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight); return yearDiff * 4 + quarterDiff; } module2.exports = differenceInCalendarQuarters; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_weeks/index.js var require_difference_in_calendar_weeks = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_weeks/index.js"(exports2, module2) { var startOfWeek = require_start_of_week(); var MILLISECONDS_IN_MINUTE = 6e4; var MILLISECONDS_IN_WEEK = 6048e5; function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, dirtyOptions) { var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions); var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions); var timestampLeft = startOfWeekLeft.getTime() - startOfWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; var timestampRight = startOfWeekRight.getTime() - startOfWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK); } module2.exports = differenceInCalendarWeeks; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_years/index.js var require_difference_in_calendar_years = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_years/index.js"(exports2, module2) { var parse11 = require_parse7(); function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); return dateLeft.getFullYear() - dateRight.getFullYear(); } module2.exports = differenceInCalendarYears; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_days/index.js var require_difference_in_days = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_days/index.js"(exports2, module2) { var parse11 = require_parse7(); var differenceInCalendarDays = require_difference_in_calendar_days(); var compareAsc = require_compare_asc(); function differenceInDays(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); var sign = compareAsc(dateLeft, dateRight); var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight)); dateLeft.setDate(dateLeft.getDate() - sign * difference); var isLastDayNotFull = compareAsc(dateLeft, dateRight) === -sign; return sign * (difference - isLastDayNotFull); } module2.exports = differenceInDays; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_milliseconds/index.js var require_difference_in_milliseconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_milliseconds/index.js"(exports2, module2) { var parse11 = require_parse7(); function differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); return dateLeft.getTime() - dateRight.getTime(); } module2.exports = differenceInMilliseconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_hours/index.js var require_difference_in_hours = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_hours/index.js"(exports2, module2) { var differenceInMilliseconds = require_difference_in_milliseconds(); var MILLISECONDS_IN_HOUR = 36e5; function differenceInHours(dirtyDateLeft, dirtyDateRight) { var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_HOUR; return diff > 0 ? Math.floor(diff) : Math.ceil(diff); } module2.exports = differenceInHours; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_iso_years/index.js var require_sub_iso_years = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_iso_years/index.js"(exports2, module2) { var addISOYears = require_add_iso_years(); function subISOYears(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addISOYears(dirtyDate, -amount); } module2.exports = subISOYears; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_iso_years/index.js var require_difference_in_iso_years = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_iso_years/index.js"(exports2, module2) { var parse11 = require_parse7(); var differenceInCalendarISOYears = require_difference_in_calendar_iso_years(); var compareAsc = require_compare_asc(); var subISOYears = require_sub_iso_years(); function differenceInISOYears(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); var sign = compareAsc(dateLeft, dateRight); var difference = Math.abs(differenceInCalendarISOYears(dateLeft, dateRight)); dateLeft = subISOYears(dateLeft, sign * difference); var isLastISOYearNotFull = compareAsc(dateLeft, dateRight) === -sign; return sign * (difference - isLastISOYearNotFull); } module2.exports = differenceInISOYears; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_minutes/index.js var require_difference_in_minutes = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_minutes/index.js"(exports2, module2) { var differenceInMilliseconds = require_difference_in_milliseconds(); var MILLISECONDS_IN_MINUTE = 6e4; function differenceInMinutes(dirtyDateLeft, dirtyDateRight) { var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE; return diff > 0 ? Math.floor(diff) : Math.ceil(diff); } module2.exports = differenceInMinutes; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_months/index.js var require_difference_in_months = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_months/index.js"(exports2, module2) { var parse11 = require_parse7(); var differenceInCalendarMonths = require_difference_in_calendar_months(); var compareAsc = require_compare_asc(); function differenceInMonths(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); var sign = compareAsc(dateLeft, dateRight); var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight)); dateLeft.setMonth(dateLeft.getMonth() - sign * difference); var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; return sign * (difference - isLastMonthNotFull); } module2.exports = differenceInMonths; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_quarters/index.js var require_difference_in_quarters = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_quarters/index.js"(exports2, module2) { var differenceInMonths = require_difference_in_months(); function differenceInQuarters(dirtyDateLeft, dirtyDateRight) { var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3; return diff > 0 ? Math.floor(diff) : Math.ceil(diff); } module2.exports = differenceInQuarters; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_seconds/index.js var require_difference_in_seconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_seconds/index.js"(exports2, module2) { var differenceInMilliseconds = require_difference_in_milliseconds(); function differenceInSeconds(dirtyDateLeft, dirtyDateRight) { var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1e3; return diff > 0 ? Math.floor(diff) : Math.ceil(diff); } module2.exports = differenceInSeconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_weeks/index.js var require_difference_in_weeks = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_weeks/index.js"(exports2, module2) { var differenceInDays = require_difference_in_days(); function differenceInWeeks(dirtyDateLeft, dirtyDateRight) { var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7; return diff > 0 ? Math.floor(diff) : Math.ceil(diff); } module2.exports = differenceInWeeks; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_years/index.js var require_difference_in_years = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_years/index.js"(exports2, module2) { var parse11 = require_parse7(); var differenceInCalendarYears = require_difference_in_calendar_years(); var compareAsc = require_compare_asc(); function differenceInYears(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); var sign = compareAsc(dateLeft, dateRight); var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight)); dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference); var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign; return sign * (difference - isLastYearNotFull); } module2.exports = differenceInYears; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words/index.js var require_distance_in_words = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words/index.js"(exports2, module2) { var compareDesc = require_compare_desc(); var parse11 = require_parse7(); var differenceInSeconds = require_difference_in_seconds(); var differenceInMonths = require_difference_in_months(); var enLocale = require_en(); var MINUTES_IN_DAY = 1440; var MINUTES_IN_ALMOST_TWO_DAYS = 2520; var MINUTES_IN_MONTH = 43200; var MINUTES_IN_TWO_MONTHS = 86400; function distanceInWords(dirtyDateToCompare, dirtyDate, dirtyOptions) { var options = dirtyOptions || {}; var comparison = compareDesc(dirtyDateToCompare, dirtyDate); var locale = options.locale; var localize = enLocale.distanceInWords.localize; if (locale && locale.distanceInWords && locale.distanceInWords.localize) { localize = locale.distanceInWords.localize; } var localizeOptions = { addSuffix: Boolean(options.addSuffix), comparison }; var dateLeft, dateRight; if (comparison > 0) { dateLeft = parse11(dirtyDateToCompare); dateRight = parse11(dirtyDate); } else { dateLeft = parse11(dirtyDate); dateRight = parse11(dirtyDateToCompare); } var seconds = differenceInSeconds(dateRight, dateLeft); var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset(); var minutes = Math.round(seconds / 60) - offset; var months; if (minutes < 2) { if (options.includeSeconds) { if (seconds < 5) { return localize("lessThanXSeconds", 5, localizeOptions); } else if (seconds < 10) { return localize("lessThanXSeconds", 10, localizeOptions); } else if (seconds < 20) { return localize("lessThanXSeconds", 20, localizeOptions); } else if (seconds < 40) { return localize("halfAMinute", null, localizeOptions); } else if (seconds < 60) { return localize("lessThanXMinutes", 1, localizeOptions); } else { return localize("xMinutes", 1, localizeOptions); } } else { if (minutes === 0) { return localize("lessThanXMinutes", 1, localizeOptions); } else { return localize("xMinutes", minutes, localizeOptions); } } } else if (minutes < 45) { return localize("xMinutes", minutes, localizeOptions); } else if (minutes < 90) { return localize("aboutXHours", 1, localizeOptions); } else if (minutes < MINUTES_IN_DAY) { var hours = Math.round(minutes / 60); return localize("aboutXHours", hours, localizeOptions); } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) { return localize("xDays", 1, localizeOptions); } else if (minutes < MINUTES_IN_MONTH) { var days = Math.round(minutes / MINUTES_IN_DAY); return localize("xDays", days, localizeOptions); } else if (minutes < MINUTES_IN_TWO_MONTHS) { months = Math.round(minutes / MINUTES_IN_MONTH); return localize("aboutXMonths", months, localizeOptions); } months = differenceInMonths(dateRight, dateLeft); if (months < 12) { var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH); return localize("xMonths", nearestMonth, localizeOptions); } else { var monthsSinceStartOfYear = months % 12; var years = Math.floor(months / 12); if (monthsSinceStartOfYear < 3) { return localize("aboutXYears", years, localizeOptions); } else if (monthsSinceStartOfYear < 9) { return localize("overXYears", years, localizeOptions); } else { return localize("almostXYears", years + 1, localizeOptions); } } } module2.exports = distanceInWords; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words_strict/index.js var require_distance_in_words_strict = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words_strict/index.js"(exports2, module2) { var compareDesc = require_compare_desc(); var parse11 = require_parse7(); var differenceInSeconds = require_difference_in_seconds(); var enLocale = require_en(); var MINUTES_IN_DAY = 1440; var MINUTES_IN_MONTH = 43200; var MINUTES_IN_YEAR = 525600; function distanceInWordsStrict(dirtyDateToCompare, dirtyDate, dirtyOptions) { var options = dirtyOptions || {}; var comparison = compareDesc(dirtyDateToCompare, dirtyDate); var locale = options.locale; var localize = enLocale.distanceInWords.localize; if (locale && locale.distanceInWords && locale.distanceInWords.localize) { localize = locale.distanceInWords.localize; } var localizeOptions = { addSuffix: Boolean(options.addSuffix), comparison }; var dateLeft, dateRight; if (comparison > 0) { dateLeft = parse11(dirtyDateToCompare); dateRight = parse11(dirtyDate); } else { dateLeft = parse11(dirtyDate); dateRight = parse11(dirtyDateToCompare); } var unit; var mathPartial = Math[options.partialMethod ? String(options.partialMethod) : "floor"]; var seconds = differenceInSeconds(dateRight, dateLeft); var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset(); var minutes = mathPartial(seconds / 60) - offset; var hours, days, months, years; if (options.unit) { unit = String(options.unit); } else { if (minutes < 1) { unit = "s"; } else if (minutes < 60) { unit = "m"; } else if (minutes < MINUTES_IN_DAY) { unit = "h"; } else if (minutes < MINUTES_IN_MONTH) { unit = "d"; } else if (minutes < MINUTES_IN_YEAR) { unit = "M"; } else { unit = "Y"; } } if (unit === "s") { return localize("xSeconds", seconds, localizeOptions); } else if (unit === "m") { return localize("xMinutes", minutes, localizeOptions); } else if (unit === "h") { hours = mathPartial(minutes / 60); return localize("xHours", hours, localizeOptions); } else if (unit === "d") { days = mathPartial(minutes / MINUTES_IN_DAY); return localize("xDays", days, localizeOptions); } else if (unit === "M") { months = mathPartial(minutes / MINUTES_IN_MONTH); return localize("xMonths", months, localizeOptions); } else if (unit === "Y") { years = mathPartial(minutes / MINUTES_IN_YEAR); return localize("xYears", years, localizeOptions); } throw new Error("Unknown unit: " + unit); } module2.exports = distanceInWordsStrict; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words_to_now/index.js var require_distance_in_words_to_now = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words_to_now/index.js"(exports2, module2) { var distanceInWords = require_distance_in_words(); function distanceInWordsToNow(dirtyDate, dirtyOptions) { return distanceInWords(Date.now(), dirtyDate, dirtyOptions); } module2.exports = distanceInWordsToNow; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/each_day/index.js var require_each_day = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/each_day/index.js"(exports2, module2) { var parse11 = require_parse7(); function eachDay(dirtyStartDate, dirtyEndDate, dirtyStep) { var startDate = parse11(dirtyStartDate); var endDate = parse11(dirtyEndDate); var step = dirtyStep !== void 0 ? dirtyStep : 1; var endTime = endDate.getTime(); if (startDate.getTime() > endTime) { throw new Error("The first date cannot be after the second date"); } var dates = []; var currentDate = startDate; currentDate.setHours(0, 0, 0, 0); while (currentDate.getTime() <= endTime) { dates.push(parse11(currentDate)); currentDate.setDate(currentDate.getDate() + step); } return dates; } module2.exports = eachDay; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_day/index.js var require_end_of_day = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_day/index.js"(exports2, module2) { var parse11 = require_parse7(); function endOfDay(dirtyDate) { var date = parse11(dirtyDate); date.setHours(23, 59, 59, 999); return date; } module2.exports = endOfDay; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_hour/index.js var require_end_of_hour = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_hour/index.js"(exports2, module2) { var parse11 = require_parse7(); function endOfHour(dirtyDate) { var date = parse11(dirtyDate); date.setMinutes(59, 59, 999); return date; } module2.exports = endOfHour; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_week/index.js var require_end_of_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_week/index.js"(exports2, module2) { var parse11 = require_parse7(); function endOfWeek(dirtyDate, dirtyOptions) { var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0; var date = parse11(dirtyDate); var day = date.getDay(); var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn); date.setDate(date.getDate() + diff); date.setHours(23, 59, 59, 999); return date; } module2.exports = endOfWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_iso_week/index.js var require_end_of_iso_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_iso_week/index.js"(exports2, module2) { var endOfWeek = require_end_of_week(); function endOfISOWeek(dirtyDate) { return endOfWeek(dirtyDate, { weekStartsOn: 1 }); } module2.exports = endOfISOWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_iso_year/index.js var require_end_of_iso_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_iso_year/index.js"(exports2, module2) { var getISOYear = require_get_iso_year(); var startOfISOWeek = require_start_of_iso_week(); function endOfISOYear(dirtyDate) { var year = getISOYear(dirtyDate); var fourthOfJanuaryOfNextYear = /* @__PURE__ */ new Date(0); fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); var date = startOfISOWeek(fourthOfJanuaryOfNextYear); date.setMilliseconds(date.getMilliseconds() - 1); return date; } module2.exports = endOfISOYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_minute/index.js var require_end_of_minute = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_minute/index.js"(exports2, module2) { var parse11 = require_parse7(); function endOfMinute(dirtyDate) { var date = parse11(dirtyDate); date.setSeconds(59, 999); return date; } module2.exports = endOfMinute; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_month/index.js var require_end_of_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_month/index.js"(exports2, module2) { var parse11 = require_parse7(); function endOfMonth(dirtyDate) { var date = parse11(dirtyDate); var month = date.getMonth(); date.setFullYear(date.getFullYear(), month + 1, 0); date.setHours(23, 59, 59, 999); return date; } module2.exports = endOfMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_quarter/index.js var require_end_of_quarter = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_quarter/index.js"(exports2, module2) { var parse11 = require_parse7(); function endOfQuarter(dirtyDate) { var date = parse11(dirtyDate); var currentMonth = date.getMonth(); var month = currentMonth - currentMonth % 3 + 3; date.setMonth(month, 0); date.setHours(23, 59, 59, 999); return date; } module2.exports = endOfQuarter; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_second/index.js var require_end_of_second = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_second/index.js"(exports2, module2) { var parse11 = require_parse7(); function endOfSecond(dirtyDate) { var date = parse11(dirtyDate); date.setMilliseconds(999); return date; } module2.exports = endOfSecond; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_today/index.js var require_end_of_today = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_today/index.js"(exports2, module2) { var endOfDay = require_end_of_day(); function endOfToday() { return endOfDay(/* @__PURE__ */ new Date()); } module2.exports = endOfToday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_tomorrow/index.js var require_end_of_tomorrow = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_tomorrow/index.js"(exports2, module2) { function endOfTomorrow() { var now = /* @__PURE__ */ new Date(); var year = now.getFullYear(); var month = now.getMonth(); var day = now.getDate(); var date = /* @__PURE__ */ new Date(0); date.setFullYear(year, month, day + 1); date.setHours(23, 59, 59, 999); return date; } module2.exports = endOfTomorrow; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_year/index.js var require_end_of_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_year/index.js"(exports2, module2) { var parse11 = require_parse7(); function endOfYear(dirtyDate) { var date = parse11(dirtyDate); var year = date.getFullYear(); date.setFullYear(year + 1, 0, 0); date.setHours(23, 59, 59, 999); return date; } module2.exports = endOfYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_yesterday/index.js var require_end_of_yesterday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_yesterday/index.js"(exports2, module2) { function endOfYesterday() { var now = /* @__PURE__ */ new Date(); var year = now.getFullYear(); var month = now.getMonth(); var day = now.getDate(); var date = /* @__PURE__ */ new Date(0); date.setFullYear(year, month, day - 1); date.setHours(23, 59, 59, 999); return date; } module2.exports = endOfYesterday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_date/index.js var require_get_date = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_date/index.js"(exports2, module2) { var parse11 = require_parse7(); function getDate(dirtyDate) { var date = parse11(dirtyDate); var dayOfMonth = date.getDate(); return dayOfMonth; } module2.exports = getDate; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_day/index.js var require_get_day = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_day/index.js"(exports2, module2) { var parse11 = require_parse7(); function getDay(dirtyDate) { var date = parse11(dirtyDate); var day = date.getDay(); return day; } module2.exports = getDay; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_leap_year/index.js var require_is_leap_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_leap_year/index.js"(exports2, module2) { var parse11 = require_parse7(); function isLeapYear(dirtyDate) { var date = parse11(dirtyDate); var year = date.getFullYear(); return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0; } module2.exports = isLeapYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_days_in_year/index.js var require_get_days_in_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_days_in_year/index.js"(exports2, module2) { var isLeapYear = require_is_leap_year(); function getDaysInYear(dirtyDate) { return isLeapYear(dirtyDate) ? 366 : 365; } module2.exports = getDaysInYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_hours/index.js var require_get_hours = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_hours/index.js"(exports2, module2) { var parse11 = require_parse7(); function getHours(dirtyDate) { var date = parse11(dirtyDate); var hours = date.getHours(); return hours; } module2.exports = getHours; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_day/index.js var require_get_iso_day = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_day/index.js"(exports2, module2) { var parse11 = require_parse7(); function getISODay(dirtyDate) { var date = parse11(dirtyDate); var day = date.getDay(); if (day === 0) { day = 7; } return day; } module2.exports = getISODay; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_weeks_in_year/index.js var require_get_iso_weeks_in_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_weeks_in_year/index.js"(exports2, module2) { var startOfISOYear = require_start_of_iso_year(); var addWeeks = require_add_weeks(); var MILLISECONDS_IN_WEEK = 6048e5; function getISOWeeksInYear(dirtyDate) { var thisYear = startOfISOYear(dirtyDate); var nextYear = startOfISOYear(addWeeks(thisYear, 60)); var diff = nextYear.valueOf() - thisYear.valueOf(); return Math.round(diff / MILLISECONDS_IN_WEEK); } module2.exports = getISOWeeksInYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_milliseconds/index.js var require_get_milliseconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_milliseconds/index.js"(exports2, module2) { var parse11 = require_parse7(); function getMilliseconds(dirtyDate) { var date = parse11(dirtyDate); var milliseconds = date.getMilliseconds(); return milliseconds; } module2.exports = getMilliseconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_minutes/index.js var require_get_minutes = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_minutes/index.js"(exports2, module2) { var parse11 = require_parse7(); function getMinutes(dirtyDate) { var date = parse11(dirtyDate); var minutes = date.getMinutes(); return minutes; } module2.exports = getMinutes; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_month/index.js var require_get_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_month/index.js"(exports2, module2) { var parse11 = require_parse7(); function getMonth(dirtyDate) { var date = parse11(dirtyDate); var month = date.getMonth(); return month; } module2.exports = getMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_overlapping_days_in_ranges/index.js var require_get_overlapping_days_in_ranges = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_overlapping_days_in_ranges/index.js"(exports2, module2) { var parse11 = require_parse7(); var MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1e3; function getOverlappingDaysInRanges(dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) { var initialStartTime = parse11(dirtyInitialRangeStartDate).getTime(); var initialEndTime = parse11(dirtyInitialRangeEndDate).getTime(); var comparedStartTime = parse11(dirtyComparedRangeStartDate).getTime(); var comparedEndTime = parse11(dirtyComparedRangeEndDate).getTime(); if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) { throw new Error("The start of the range cannot be after the end of the range"); } var isOverlapping = initialStartTime < comparedEndTime && comparedStartTime < initialEndTime; if (!isOverlapping) { return 0; } var overlapStartDate = comparedStartTime < initialStartTime ? initialStartTime : comparedStartTime; var overlapEndDate = comparedEndTime > initialEndTime ? initialEndTime : comparedEndTime; var differenceInMs = overlapEndDate - overlapStartDate; return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY); } module2.exports = getOverlappingDaysInRanges; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_seconds/index.js var require_get_seconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_seconds/index.js"(exports2, module2) { var parse11 = require_parse7(); function getSeconds(dirtyDate) { var date = parse11(dirtyDate); var seconds = date.getSeconds(); return seconds; } module2.exports = getSeconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_time/index.js var require_get_time = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_time/index.js"(exports2, module2) { var parse11 = require_parse7(); function getTime(dirtyDate) { var date = parse11(dirtyDate); var timestamp = date.getTime(); return timestamp; } module2.exports = getTime; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_year/index.js var require_get_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_year/index.js"(exports2, module2) { var parse11 = require_parse7(); function getYear(dirtyDate) { var date = parse11(dirtyDate); var year = date.getFullYear(); return year; } module2.exports = getYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_after/index.js var require_is_after = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_after/index.js"(exports2, module2) { var parse11 = require_parse7(); function isAfter(dirtyDate, dirtyDateToCompare) { var date = parse11(dirtyDate); var dateToCompare = parse11(dirtyDateToCompare); return date.getTime() > dateToCompare.getTime(); } module2.exports = isAfter; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_before/index.js var require_is_before = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_before/index.js"(exports2, module2) { var parse11 = require_parse7(); function isBefore(dirtyDate, dirtyDateToCompare) { var date = parse11(dirtyDate); var dateToCompare = parse11(dirtyDateToCompare); return date.getTime() < dateToCompare.getTime(); } module2.exports = isBefore; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_equal/index.js var require_is_equal = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_equal/index.js"(exports2, module2) { var parse11 = require_parse7(); function isEqual(dirtyLeftDate, dirtyRightDate) { var dateLeft = parse11(dirtyLeftDate); var dateRight = parse11(dirtyRightDate); return dateLeft.getTime() === dateRight.getTime(); } module2.exports = isEqual; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_first_day_of_month/index.js var require_is_first_day_of_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_first_day_of_month/index.js"(exports2, module2) { var parse11 = require_parse7(); function isFirstDayOfMonth(dirtyDate) { return parse11(dirtyDate).getDate() === 1; } module2.exports = isFirstDayOfMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_friday/index.js var require_is_friday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_friday/index.js"(exports2, module2) { var parse11 = require_parse7(); function isFriday(dirtyDate) { return parse11(dirtyDate).getDay() === 5; } module2.exports = isFriday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_future/index.js var require_is_future = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_future/index.js"(exports2, module2) { var parse11 = require_parse7(); function isFuture(dirtyDate) { return parse11(dirtyDate).getTime() > (/* @__PURE__ */ new Date()).getTime(); } module2.exports = isFuture; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_last_day_of_month/index.js var require_is_last_day_of_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_last_day_of_month/index.js"(exports2, module2) { var parse11 = require_parse7(); var endOfDay = require_end_of_day(); var endOfMonth = require_end_of_month(); function isLastDayOfMonth(dirtyDate) { var date = parse11(dirtyDate); return endOfDay(date).getTime() === endOfMonth(date).getTime(); } module2.exports = isLastDayOfMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_monday/index.js var require_is_monday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_monday/index.js"(exports2, module2) { var parse11 = require_parse7(); function isMonday(dirtyDate) { return parse11(dirtyDate).getDay() === 1; } module2.exports = isMonday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_past/index.js var require_is_past = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_past/index.js"(exports2, module2) { var parse11 = require_parse7(); function isPast(dirtyDate) { return parse11(dirtyDate).getTime() < (/* @__PURE__ */ new Date()).getTime(); } module2.exports = isPast; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_day/index.js var require_is_same_day = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_day/index.js"(exports2, module2) { var startOfDay = require_start_of_day(); function isSameDay(dirtyDateLeft, dirtyDateRight) { var dateLeftStartOfDay = startOfDay(dirtyDateLeft); var dateRightStartOfDay = startOfDay(dirtyDateRight); return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime(); } module2.exports = isSameDay; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_hour/index.js var require_start_of_hour = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_hour/index.js"(exports2, module2) { var parse11 = require_parse7(); function startOfHour(dirtyDate) { var date = parse11(dirtyDate); date.setMinutes(0, 0, 0); return date; } module2.exports = startOfHour; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_hour/index.js var require_is_same_hour = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_hour/index.js"(exports2, module2) { var startOfHour = require_start_of_hour(); function isSameHour(dirtyDateLeft, dirtyDateRight) { var dateLeftStartOfHour = startOfHour(dirtyDateLeft); var dateRightStartOfHour = startOfHour(dirtyDateRight); return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime(); } module2.exports = isSameHour; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_week/index.js var require_is_same_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_week/index.js"(exports2, module2) { var startOfWeek = require_start_of_week(); function isSameWeek(dirtyDateLeft, dirtyDateRight, dirtyOptions) { var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions); var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions); return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime(); } module2.exports = isSameWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_iso_week/index.js var require_is_same_iso_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_iso_week/index.js"(exports2, module2) { var isSameWeek = require_is_same_week(); function isSameISOWeek(dirtyDateLeft, dirtyDateRight) { return isSameWeek(dirtyDateLeft, dirtyDateRight, { weekStartsOn: 1 }); } module2.exports = isSameISOWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_iso_year/index.js var require_is_same_iso_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_iso_year/index.js"(exports2, module2) { var startOfISOYear = require_start_of_iso_year(); function isSameISOYear(dirtyDateLeft, dirtyDateRight) { var dateLeftStartOfYear = startOfISOYear(dirtyDateLeft); var dateRightStartOfYear = startOfISOYear(dirtyDateRight); return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime(); } module2.exports = isSameISOYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_minute/index.js var require_start_of_minute = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_minute/index.js"(exports2, module2) { var parse11 = require_parse7(); function startOfMinute(dirtyDate) { var date = parse11(dirtyDate); date.setSeconds(0, 0); return date; } module2.exports = startOfMinute; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_minute/index.js var require_is_same_minute = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_minute/index.js"(exports2, module2) { var startOfMinute = require_start_of_minute(); function isSameMinute(dirtyDateLeft, dirtyDateRight) { var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft); var dateRightStartOfMinute = startOfMinute(dirtyDateRight); return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime(); } module2.exports = isSameMinute; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_month/index.js var require_is_same_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_month/index.js"(exports2, module2) { var parse11 = require_parse7(); function isSameMonth(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth(); } module2.exports = isSameMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_quarter/index.js var require_start_of_quarter = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_quarter/index.js"(exports2, module2) { var parse11 = require_parse7(); function startOfQuarter(dirtyDate) { var date = parse11(dirtyDate); var currentMonth = date.getMonth(); var month = currentMonth - currentMonth % 3; date.setMonth(month, 1); date.setHours(0, 0, 0, 0); return date; } module2.exports = startOfQuarter; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_quarter/index.js var require_is_same_quarter = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_quarter/index.js"(exports2, module2) { var startOfQuarter = require_start_of_quarter(); function isSameQuarter(dirtyDateLeft, dirtyDateRight) { var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft); var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight); return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime(); } module2.exports = isSameQuarter; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_second/index.js var require_start_of_second = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_second/index.js"(exports2, module2) { var parse11 = require_parse7(); function startOfSecond(dirtyDate) { var date = parse11(dirtyDate); date.setMilliseconds(0); return date; } module2.exports = startOfSecond; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_second/index.js var require_is_same_second = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_second/index.js"(exports2, module2) { var startOfSecond = require_start_of_second(); function isSameSecond(dirtyDateLeft, dirtyDateRight) { var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft); var dateRightStartOfSecond = startOfSecond(dirtyDateRight); return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime(); } module2.exports = isSameSecond; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_year/index.js var require_is_same_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_year/index.js"(exports2, module2) { var parse11 = require_parse7(); function isSameYear(dirtyDateLeft, dirtyDateRight) { var dateLeft = parse11(dirtyDateLeft); var dateRight = parse11(dirtyDateRight); return dateLeft.getFullYear() === dateRight.getFullYear(); } module2.exports = isSameYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_saturday/index.js var require_is_saturday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_saturday/index.js"(exports2, module2) { var parse11 = require_parse7(); function isSaturday(dirtyDate) { return parse11(dirtyDate).getDay() === 6; } module2.exports = isSaturday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_sunday/index.js var require_is_sunday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_sunday/index.js"(exports2, module2) { var parse11 = require_parse7(); function isSunday(dirtyDate) { return parse11(dirtyDate).getDay() === 0; } module2.exports = isSunday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_hour/index.js var require_is_this_hour = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_hour/index.js"(exports2, module2) { var isSameHour = require_is_same_hour(); function isThisHour(dirtyDate) { return isSameHour(/* @__PURE__ */ new Date(), dirtyDate); } module2.exports = isThisHour; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_iso_week/index.js var require_is_this_iso_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_iso_week/index.js"(exports2, module2) { var isSameISOWeek = require_is_same_iso_week(); function isThisISOWeek(dirtyDate) { return isSameISOWeek(/* @__PURE__ */ new Date(), dirtyDate); } module2.exports = isThisISOWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_iso_year/index.js var require_is_this_iso_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_iso_year/index.js"(exports2, module2) { var isSameISOYear = require_is_same_iso_year(); function isThisISOYear(dirtyDate) { return isSameISOYear(/* @__PURE__ */ new Date(), dirtyDate); } module2.exports = isThisISOYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_minute/index.js var require_is_this_minute = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_minute/index.js"(exports2, module2) { var isSameMinute = require_is_same_minute(); function isThisMinute(dirtyDate) { return isSameMinute(/* @__PURE__ */ new Date(), dirtyDate); } module2.exports = isThisMinute; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_month/index.js var require_is_this_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_month/index.js"(exports2, module2) { var isSameMonth = require_is_same_month(); function isThisMonth(dirtyDate) { return isSameMonth(/* @__PURE__ */ new Date(), dirtyDate); } module2.exports = isThisMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_quarter/index.js var require_is_this_quarter = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_quarter/index.js"(exports2, module2) { var isSameQuarter = require_is_same_quarter(); function isThisQuarter(dirtyDate) { return isSameQuarter(/* @__PURE__ */ new Date(), dirtyDate); } module2.exports = isThisQuarter; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_second/index.js var require_is_this_second = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_second/index.js"(exports2, module2) { var isSameSecond = require_is_same_second(); function isThisSecond(dirtyDate) { return isSameSecond(/* @__PURE__ */ new Date(), dirtyDate); } module2.exports = isThisSecond; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_week/index.js var require_is_this_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_week/index.js"(exports2, module2) { var isSameWeek = require_is_same_week(); function isThisWeek(dirtyDate, dirtyOptions) { return isSameWeek(/* @__PURE__ */ new Date(), dirtyDate, dirtyOptions); } module2.exports = isThisWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_year/index.js var require_is_this_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_year/index.js"(exports2, module2) { var isSameYear = require_is_same_year(); function isThisYear(dirtyDate) { return isSameYear(/* @__PURE__ */ new Date(), dirtyDate); } module2.exports = isThisYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_thursday/index.js var require_is_thursday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_thursday/index.js"(exports2, module2) { var parse11 = require_parse7(); function isThursday(dirtyDate) { return parse11(dirtyDate).getDay() === 4; } module2.exports = isThursday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_today/index.js var require_is_today = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_today/index.js"(exports2, module2) { var startOfDay = require_start_of_day(); function isToday(dirtyDate) { return startOfDay(dirtyDate).getTime() === startOfDay(/* @__PURE__ */ new Date()).getTime(); } module2.exports = isToday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_tomorrow/index.js var require_is_tomorrow = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_tomorrow/index.js"(exports2, module2) { var startOfDay = require_start_of_day(); function isTomorrow(dirtyDate) { var tomorrow = /* @__PURE__ */ new Date(); tomorrow.setDate(tomorrow.getDate() + 1); return startOfDay(dirtyDate).getTime() === startOfDay(tomorrow).getTime(); } module2.exports = isTomorrow; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_tuesday/index.js var require_is_tuesday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_tuesday/index.js"(exports2, module2) { var parse11 = require_parse7(); function isTuesday(dirtyDate) { return parse11(dirtyDate).getDay() === 2; } module2.exports = isTuesday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_wednesday/index.js var require_is_wednesday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_wednesday/index.js"(exports2, module2) { var parse11 = require_parse7(); function isWednesday(dirtyDate) { return parse11(dirtyDate).getDay() === 3; } module2.exports = isWednesday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_weekend/index.js var require_is_weekend = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_weekend/index.js"(exports2, module2) { var parse11 = require_parse7(); function isWeekend(dirtyDate) { var date = parse11(dirtyDate); var day = date.getDay(); return day === 0 || day === 6; } module2.exports = isWeekend; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_within_range/index.js var require_is_within_range = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_within_range/index.js"(exports2, module2) { var parse11 = require_parse7(); function isWithinRange(dirtyDate, dirtyStartDate, dirtyEndDate) { var time = parse11(dirtyDate).getTime(); var startTime = parse11(dirtyStartDate).getTime(); var endTime = parse11(dirtyEndDate).getTime(); if (startTime > endTime) { throw new Error("The start of the range cannot be after the end of the range"); } return time >= startTime && time <= endTime; } module2.exports = isWithinRange; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_yesterday/index.js var require_is_yesterday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_yesterday/index.js"(exports2, module2) { var startOfDay = require_start_of_day(); function isYesterday(dirtyDate) { var yesterday = /* @__PURE__ */ new Date(); yesterday.setDate(yesterday.getDate() - 1); return startOfDay(dirtyDate).getTime() === startOfDay(yesterday).getTime(); } module2.exports = isYesterday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_week/index.js var require_last_day_of_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_week/index.js"(exports2, module2) { var parse11 = require_parse7(); function lastDayOfWeek(dirtyDate, dirtyOptions) { var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0; var date = parse11(dirtyDate); var day = date.getDay(); var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn); date.setHours(0, 0, 0, 0); date.setDate(date.getDate() + diff); return date; } module2.exports = lastDayOfWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_iso_week/index.js var require_last_day_of_iso_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_iso_week/index.js"(exports2, module2) { var lastDayOfWeek = require_last_day_of_week(); function lastDayOfISOWeek(dirtyDate) { return lastDayOfWeek(dirtyDate, { weekStartsOn: 1 }); } module2.exports = lastDayOfISOWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_iso_year/index.js var require_last_day_of_iso_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_iso_year/index.js"(exports2, module2) { var getISOYear = require_get_iso_year(); var startOfISOWeek = require_start_of_iso_week(); function lastDayOfISOYear(dirtyDate) { var year = getISOYear(dirtyDate); var fourthOfJanuary = /* @__PURE__ */ new Date(0); fourthOfJanuary.setFullYear(year + 1, 0, 4); fourthOfJanuary.setHours(0, 0, 0, 0); var date = startOfISOWeek(fourthOfJanuary); date.setDate(date.getDate() - 1); return date; } module2.exports = lastDayOfISOYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_month/index.js var require_last_day_of_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_month/index.js"(exports2, module2) { var parse11 = require_parse7(); function lastDayOfMonth(dirtyDate) { var date = parse11(dirtyDate); var month = date.getMonth(); date.setFullYear(date.getFullYear(), month + 1, 0); date.setHours(0, 0, 0, 0); return date; } module2.exports = lastDayOfMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_quarter/index.js var require_last_day_of_quarter = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_quarter/index.js"(exports2, module2) { var parse11 = require_parse7(); function lastDayOfQuarter(dirtyDate) { var date = parse11(dirtyDate); var currentMonth = date.getMonth(); var month = currentMonth - currentMonth % 3 + 3; date.setMonth(month, 0); date.setHours(0, 0, 0, 0); return date; } module2.exports = lastDayOfQuarter; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_year/index.js var require_last_day_of_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_year/index.js"(exports2, module2) { var parse11 = require_parse7(); function lastDayOfYear(dirtyDate) { var date = parse11(dirtyDate); var year = date.getFullYear(); date.setFullYear(year + 1, 0, 0); date.setHours(0, 0, 0, 0); return date; } module2.exports = lastDayOfYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/max/index.js var require_max = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/max/index.js"(exports2, module2) { var parse11 = require_parse7(); function max() { var dirtyDates = Array.prototype.slice.call(arguments); var dates = dirtyDates.map(function(dirtyDate) { return parse11(dirtyDate); }); var latestTimestamp = Math.max.apply(null, dates); return new Date(latestTimestamp); } module2.exports = max; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/min/index.js var require_min = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/min/index.js"(exports2, module2) { var parse11 = require_parse7(); function min() { var dirtyDates = Array.prototype.slice.call(arguments); var dates = dirtyDates.map(function(dirtyDate) { return parse11(dirtyDate); }); var earliestTimestamp = Math.min.apply(null, dates); return new Date(earliestTimestamp); } module2.exports = min; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_date/index.js var require_set_date = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_date/index.js"(exports2, module2) { var parse11 = require_parse7(); function setDate(dirtyDate, dirtyDayOfMonth) { var date = parse11(dirtyDate); var dayOfMonth = Number(dirtyDayOfMonth); date.setDate(dayOfMonth); return date; } module2.exports = setDate; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_day/index.js var require_set_day = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_day/index.js"(exports2, module2) { var parse11 = require_parse7(); var addDays = require_add_days(); function setDay(dirtyDate, dirtyDay, dirtyOptions) { var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0; var date = parse11(dirtyDate); var day = Number(dirtyDay); var currentDay = date.getDay(); var remainder = day % 7; var dayIndex = (remainder + 7) % 7; var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay; return addDays(date, diff); } module2.exports = setDay; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_day_of_year/index.js var require_set_day_of_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_day_of_year/index.js"(exports2, module2) { var parse11 = require_parse7(); function setDayOfYear(dirtyDate, dirtyDayOfYear) { var date = parse11(dirtyDate); var dayOfYear = Number(dirtyDayOfYear); date.setMonth(0); date.setDate(dayOfYear); return date; } module2.exports = setDayOfYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_hours/index.js var require_set_hours = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_hours/index.js"(exports2, module2) { var parse11 = require_parse7(); function setHours(dirtyDate, dirtyHours) { var date = parse11(dirtyDate); var hours = Number(dirtyHours); date.setHours(hours); return date; } module2.exports = setHours; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_day/index.js var require_set_iso_day = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_day/index.js"(exports2, module2) { var parse11 = require_parse7(); var addDays = require_add_days(); var getISODay = require_get_iso_day(); function setISODay(dirtyDate, dirtyDay) { var date = parse11(dirtyDate); var day = Number(dirtyDay); var currentDay = getISODay(date); var diff = day - currentDay; return addDays(date, diff); } module2.exports = setISODay; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_week/index.js var require_set_iso_week = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_week/index.js"(exports2, module2) { var parse11 = require_parse7(); var getISOWeek = require_get_iso_week(); function setISOWeek(dirtyDate, dirtyISOWeek) { var date = parse11(dirtyDate); var isoWeek = Number(dirtyISOWeek); var diff = getISOWeek(date) - isoWeek; date.setDate(date.getDate() - diff * 7); return date; } module2.exports = setISOWeek; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_milliseconds/index.js var require_set_milliseconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_milliseconds/index.js"(exports2, module2) { var parse11 = require_parse7(); function setMilliseconds(dirtyDate, dirtyMilliseconds) { var date = parse11(dirtyDate); var milliseconds = Number(dirtyMilliseconds); date.setMilliseconds(milliseconds); return date; } module2.exports = setMilliseconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_minutes/index.js var require_set_minutes = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_minutes/index.js"(exports2, module2) { var parse11 = require_parse7(); function setMinutes(dirtyDate, dirtyMinutes) { var date = parse11(dirtyDate); var minutes = Number(dirtyMinutes); date.setMinutes(minutes); return date; } module2.exports = setMinutes; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_month/index.js var require_set_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_month/index.js"(exports2, module2) { var parse11 = require_parse7(); var getDaysInMonth = require_get_days_in_month(); function setMonth(dirtyDate, dirtyMonth) { var date = parse11(dirtyDate); var month = Number(dirtyMonth); var year = date.getFullYear(); var day = date.getDate(); var dateWithDesiredMonth = /* @__PURE__ */ new Date(0); dateWithDesiredMonth.setFullYear(year, month, 15); dateWithDesiredMonth.setHours(0, 0, 0, 0); var daysInMonth = getDaysInMonth(dateWithDesiredMonth); date.setMonth(month, Math.min(day, daysInMonth)); return date; } module2.exports = setMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_quarter/index.js var require_set_quarter = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_quarter/index.js"(exports2, module2) { var parse11 = require_parse7(); var setMonth = require_set_month(); function setQuarter(dirtyDate, dirtyQuarter) { var date = parse11(dirtyDate); var quarter = Number(dirtyQuarter); var oldQuarter = Math.floor(date.getMonth() / 3) + 1; var diff = quarter - oldQuarter; return setMonth(date, date.getMonth() + diff * 3); } module2.exports = setQuarter; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_seconds/index.js var require_set_seconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_seconds/index.js"(exports2, module2) { var parse11 = require_parse7(); function setSeconds(dirtyDate, dirtySeconds) { var date = parse11(dirtyDate); var seconds = Number(dirtySeconds); date.setSeconds(seconds); return date; } module2.exports = setSeconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_year/index.js var require_set_year = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_year/index.js"(exports2, module2) { var parse11 = require_parse7(); function setYear(dirtyDate, dirtyYear) { var date = parse11(dirtyDate); var year = Number(dirtyYear); date.setFullYear(year); return date; } module2.exports = setYear; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_month/index.js var require_start_of_month = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_month/index.js"(exports2, module2) { var parse11 = require_parse7(); function startOfMonth(dirtyDate) { var date = parse11(dirtyDate); date.setDate(1); date.setHours(0, 0, 0, 0); return date; } module2.exports = startOfMonth; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_today/index.js var require_start_of_today = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_today/index.js"(exports2, module2) { var startOfDay = require_start_of_day(); function startOfToday() { return startOfDay(/* @__PURE__ */ new Date()); } module2.exports = startOfToday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_tomorrow/index.js var require_start_of_tomorrow = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_tomorrow/index.js"(exports2, module2) { function startOfTomorrow() { var now = /* @__PURE__ */ new Date(); var year = now.getFullYear(); var month = now.getMonth(); var day = now.getDate(); var date = /* @__PURE__ */ new Date(0); date.setFullYear(year, month, day + 1); date.setHours(0, 0, 0, 0); return date; } module2.exports = startOfTomorrow; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_yesterday/index.js var require_start_of_yesterday = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_yesterday/index.js"(exports2, module2) { function startOfYesterday() { var now = /* @__PURE__ */ new Date(); var year = now.getFullYear(); var month = now.getMonth(); var day = now.getDate(); var date = /* @__PURE__ */ new Date(0); date.setFullYear(year, month, day - 1); date.setHours(0, 0, 0, 0); return date; } module2.exports = startOfYesterday; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_days/index.js var require_sub_days = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_days/index.js"(exports2, module2) { var addDays = require_add_days(); function subDays(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addDays(dirtyDate, -amount); } module2.exports = subDays; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_hours/index.js var require_sub_hours = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_hours/index.js"(exports2, module2) { var addHours = require_add_hours(); function subHours(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addHours(dirtyDate, -amount); } module2.exports = subHours; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_milliseconds/index.js var require_sub_milliseconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_milliseconds/index.js"(exports2, module2) { var addMilliseconds = require_add_milliseconds(); function subMilliseconds(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addMilliseconds(dirtyDate, -amount); } module2.exports = subMilliseconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_minutes/index.js var require_sub_minutes = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_minutes/index.js"(exports2, module2) { var addMinutes = require_add_minutes(); function subMinutes(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addMinutes(dirtyDate, -amount); } module2.exports = subMinutes; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_months/index.js var require_sub_months = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_months/index.js"(exports2, module2) { var addMonths = require_add_months(); function subMonths(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addMonths(dirtyDate, -amount); } module2.exports = subMonths; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_quarters/index.js var require_sub_quarters = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_quarters/index.js"(exports2, module2) { var addQuarters = require_add_quarters(); function subQuarters(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addQuarters(dirtyDate, -amount); } module2.exports = subQuarters; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_seconds/index.js var require_sub_seconds = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_seconds/index.js"(exports2, module2) { var addSeconds = require_add_seconds(); function subSeconds(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addSeconds(dirtyDate, -amount); } module2.exports = subSeconds; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_weeks/index.js var require_sub_weeks = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_weeks/index.js"(exports2, module2) { var addWeeks = require_add_weeks(); function subWeeks(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addWeeks(dirtyDate, -amount); } module2.exports = subWeeks; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_years/index.js var require_sub_years = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_years/index.js"(exports2, module2) { var addYears = require_add_years(); function subYears(dirtyDate, dirtyAmount) { var amount = Number(dirtyAmount); return addYears(dirtyDate, -amount); } module2.exports = subYears; } }); // ../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/index.js var require_date_fns = __commonJS2({ "../../node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/index.js"(exports2, module2) { module2.exports = { addDays: require_add_days(), addHours: require_add_hours(), addISOYears: require_add_iso_years(), addMilliseconds: require_add_milliseconds(), addMinutes: require_add_minutes(), addMonths: require_add_months(), addQuarters: require_add_quarters(), addSeconds: require_add_seconds(), addWeeks: require_add_weeks(), addYears: require_add_years(), areRangesOverlapping: require_are_ranges_overlapping(), closestIndexTo: require_closest_index_to(), closestTo: require_closest_to(), compareAsc: require_compare_asc(), compareDesc: require_compare_desc(), differenceInCalendarDays: require_difference_in_calendar_days(), differenceInCalendarISOWeeks: require_difference_in_calendar_iso_weeks(), differenceInCalendarISOYears: require_difference_in_calendar_iso_years(), differenceInCalendarMonths: require_difference_in_calendar_months(), differenceInCalendarQuarters: require_difference_in_calendar_quarters(), differenceInCalendarWeeks: require_difference_in_calendar_weeks(), differenceInCalendarYears: require_difference_in_calendar_years(), differenceInDays: require_difference_in_days(), differenceInHours: require_difference_in_hours(), differenceInISOYears: require_difference_in_iso_years(), differenceInMilliseconds: require_difference_in_milliseconds(), differenceInMinutes: require_difference_in_minutes(), differenceInMonths: require_difference_in_months(), differenceInQuarters: require_difference_in_quarters(), differenceInSeconds: require_difference_in_seconds(), differenceInWeeks: require_difference_in_weeks(), differenceInYears: require_difference_in_years(), distanceInWords: require_distance_in_words(), distanceInWordsStrict: require_distance_in_words_strict(), distanceInWordsToNow: require_distance_in_words_to_now(), eachDay: require_each_day(), endOfDay: require_end_of_day(), endOfHour: require_end_of_hour(), endOfISOWeek: require_end_of_iso_week(), endOfISOYear: require_end_of_iso_year(), endOfMinute: require_end_of_minute(), endOfMonth: require_end_of_month(), endOfQuarter: require_end_of_quarter(), endOfSecond: require_end_of_second(), endOfToday: require_end_of_today(), endOfTomorrow: require_end_of_tomorrow(), endOfWeek: require_end_of_week(), endOfYear: require_end_of_year(), endOfYesterday: require_end_of_yesterday(), format: require_format2(), getDate: require_get_date(), getDay: require_get_day(), getDayOfYear: require_get_day_of_year(), getDaysInMonth: require_get_days_in_month(), getDaysInYear: require_get_days_in_year(), getHours: require_get_hours(), getISODay: require_get_iso_day(), getISOWeek: require_get_iso_week(), getISOWeeksInYear: require_get_iso_weeks_in_year(), getISOYear: require_get_iso_year(), getMilliseconds: require_get_milliseconds(), getMinutes: require_get_minutes(), getMonth: require_get_month(), getOverlappingDaysInRanges: require_get_overlapping_days_in_ranges(), getQuarter: require_get_quarter(), getSeconds: require_get_seconds(), getTime: require_get_time(), getYear: require_get_year(), isAfter: require_is_after(), isBefore: require_is_before(), isDate: require_is_date(), isEqual: require_is_equal(), isFirstDayOfMonth: require_is_first_day_of_month(), isFriday: require_is_friday(), isFuture: require_is_future(), isLastDayOfMonth: require_is_last_day_of_month(), isLeapYear: require_is_leap_year(), isMonday: require_is_monday(), isPast: require_is_past(), isSameDay: require_is_same_day(), isSameHour: require_is_same_hour(), isSameISOWeek: require_is_same_iso_week(), isSameISOYear: require_is_same_iso_year(), isSameMinute: require_is_same_minute(), isSameMonth: require_is_same_month(), isSameQuarter: require_is_same_quarter(), isSameSecond: require_is_same_second(), isSameWeek: require_is_same_week(), isSameYear: require_is_same_year(), isSaturday: require_is_saturday(), isSunday: require_is_sunday(), isThisHour: require_is_this_hour(), isThisISOWeek: require_is_this_iso_week(), isThisISOYear: require_is_this_iso_year(), isThisMinute: require_is_this_minute(), isThisMonth: require_is_this_month(), isThisQuarter: require_is_this_quarter(), isThisSecond: require_is_this_second(), isThisWeek: require_is_this_week(), isThisYear: require_is_this_year(), isThursday: require_is_thursday(), isToday: require_is_today(), isTomorrow: require_is_tomorrow(), isTuesday: require_is_tuesday(), isValid: require_is_valid(), isWednesday: require_is_wednesday(), isWeekend: require_is_weekend(), isWithinRange: require_is_within_range(), isYesterday: require_is_yesterday(), lastDayOfISOWeek: require_last_day_of_iso_week(), lastDayOfISOYear: require_last_day_of_iso_year(), lastDayOfMonth: require_last_day_of_month(), lastDayOfQuarter: require_last_day_of_quarter(), lastDayOfWeek: require_last_day_of_week(), lastDayOfYear: require_last_day_of_year(), max: require_max(), min: require_min(), parse: require_parse7(), setDate: require_set_date(), setDay: require_set_day(), setDayOfYear: require_set_day_of_year(), setHours: require_set_hours(), setISODay: require_set_iso_day(), setISOWeek: require_set_iso_week(), setISOYear: require_set_iso_year(), setMilliseconds: require_set_milliseconds(), setMinutes: require_set_minutes(), setMonth: require_set_month(), setQuarter: require_set_quarter(), setSeconds: require_set_seconds(), setYear: require_set_year(), startOfDay: require_start_of_day(), startOfHour: require_start_of_hour(), startOfISOWeek: require_start_of_iso_week(), startOfISOYear: require_start_of_iso_year(), startOfMinute: require_start_of_minute(), startOfMonth: require_start_of_month(), startOfQuarter: require_start_of_quarter(), startOfSecond: require_start_of_second(), startOfToday: require_start_of_today(), startOfTomorrow: require_start_of_tomorrow(), startOfWeek: require_start_of_week(), startOfYear: require_start_of_year(), startOfYesterday: require_start_of_yesterday(), subDays: require_sub_days(), subHours: require_sub_hours(), subISOYears: require_sub_iso_years(), subMilliseconds: require_sub_milliseconds(), subMinutes: require_sub_minutes(), subMonths: require_sub_months(), subQuarters: require_sub_quarters(), subSeconds: require_sub_seconds(), subWeeks: require_sub_weeks(), subYears: require_sub_years() }; } }); // src/util/telemetry/commands/blob/store-get.ts var BlobGetStoreTelemetryClient; var init_store_get = __esm({ "src/util/telemetry/commands/blob/store-get.ts"() { "use strict"; init_telemetry(); BlobGetStoreTelemetryClient = class extends TelemetryClient { trackCliArgumentStoreId(value) { if (value) { this.trackCliArgument({ arg: "storeId", value }); } } }; } }); // src/commands/blob/store-get.ts async function getStore3(client2, argv, rwToken) { const telemetryClient = new BlobGetStoreTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const flagsSpecification = getFlagsSpecification(getStoreSubcommand.options); let parsedArgs; try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: [storeIdArg] } = parsedArgs; let storeId = storeIdArg; if (!storeId && rwToken.success) { const [, , , id] = rwToken.token.split("_"); storeId = `store_${id}`; } if (!storeId) { storeId = await client2.input.text({ message: "Enter the ID of the blob store you want to remove", validate: (value) => { if (value.length !== 22) { return "ID must be 22 characters long"; } return true; } }); } telemetryClient.trackCliArgumentStoreId(storeId); try { const link4 = await getLinkedProject(client2); output_manager_default.debug("Getting blob store"); output_manager_default.spinner("Getting blob store"); const store2 = await client2.fetch(`/v1/storage/stores/${storeId}`, { method: "GET", accountId: link4.status === "linked" ? link4.org.id : void 0 }); const dateTimeFormat2 = "MM/DD/YYYY HH:mm:ss.SS"; const regionInfo = store2.store.region ? ` Region: ${store2.store.region}` : ""; output_manager_default.print( `Blob Store: ${import_chalk49.default.bold(store2.store.name)} (${import_chalk49.default.dim(store2.store.id)}) Billing State: ${store2.store.billingState === "active" ? import_chalk49.default.green("Active") : import_chalk49.default.red("Inactive")} Size: ${(0, import_bytes3.default)(store2.store.size)}${regionInfo} Created At: ${(0, import_date_fns.format)(new Date(store2.store.createdAt), dateTimeFormat2)} Updated At: ${(0, import_date_fns.format)(new Date(store2.store.updatedAt), dateTimeFormat2)} ` ); } catch (err) { printError(err); return 1; } output_manager_default.stopSpinner(); return 0; } var import_bytes3, import_date_fns, import_chalk49; var init_store_get2 = __esm({ "src/commands/blob/store-get.ts"() { "use strict"; import_bytes3 = __toESM3(require_bytes(), 1); init_output_manager(); init_error2(); init_get_args(); init_get_flags_specification(); init_link2(); init_command43(); import_date_fns = __toESM3(require_date_fns(), 1); import_chalk49 = __toESM3(require_source(), 1); init_store_get(); } }); // src/commands/blob/store.ts async function store(client2, rwToken) { const telemetry2 = new BlobStoreTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const flagsSpecification = getFlagsSpecification(storeSubcommand.options); let parsedArgs; try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const subArgs = parsedArgs.args.slice(2); const { subcommand, args: args2, subcommandOriginal } = getSubcommand( subArgs, COMMAND_CONFIG2 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("blob store", subcommand); output_manager_default.print(help(storeSubcommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: storeSubcommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "add": if (needHelp) { telemetry2.trackCliFlagHelp("blob store", subcommandOriginal); printHelp(addStoreSubcommand); return 2; } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return addStore(client2, args2); case "remove": if (needHelp) { telemetry2.trackCliFlagHelp("blob store", subcommandOriginal); printHelp(removeStoreSubcommand); return 2; } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return removeStore(client2, args2, rwToken); case "get": if (needHelp) { telemetry2.trackCliFlagHelp("blob store", subcommandOriginal); printHelp(getStoreSubcommand); return 2; } telemetry2.trackCliSubcommandGet(subcommandOriginal); return getStore3(client2, args2, rwToken); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG2)); output_manager_default.print(help(storeSubcommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG2; var init_store2 = __esm({ "src/commands/blob/store.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_get_subcommand(); init_help(); init_command43(); init_get_flags_specification(); init_output_manager(); init_commands(); init_store_add2(); init_store_remove(); init_store(); init_error2(); init_store_get2(); COMMAND_CONFIG2 = { add: getCommandAliases(addStoreSubcommand), remove: getCommandAliases(removeStoreSubcommand), get: getCommandAliases(getStoreSubcommand) }; } }); // src/util/output/list-item.ts var import_chalk50, listItem, list_item_default; var init_list_item = __esm({ "src/util/output/list-item.ts"() { "use strict"; import_chalk50 = __toESM3(require_source(), 1); listItem = (msg, n) => { if (!n) { n = "-"; } if (Number(n)) { n += "."; } return `${(0, import_chalk50.default)(n.toString())} ${msg}`; }; list_item_default = listItem; } }); // src/util/blob/token.ts import { resolve as resolve6 } from "path"; async function getBlobRWToken(client2, argv) { const flagsSpecification = getFlagsSpecification(blobCommand.options); try { const parsedArgs = parseArguments(argv, flagsSpecification); const { flags: { "--rw-token": rwToken } } = parsedArgs; if (rwToken) { return { token: rwToken, success: true }; } } catch (err) { } if (process.env.BLOB_READ_WRITE_TOKEN) { return { token: process.env.BLOB_READ_WRITE_TOKEN, success: true }; } const filename = ".env.local"; const fullPath = resolve6(client2.cwd, filename); try { const env = await createEnvObject(fullPath); if (env?.BLOB_READ_WRITE_TOKEN) { return { token: env.BLOB_READ_WRITE_TOKEN, success: true }; } } catch (error3) { } return { error: ErrorMessage, success: false }; } var ErrorMessage; var init_token = __esm({ "src/util/blob/token.ts"() { "use strict"; init_diff_env_files(); init_get_flags_specification(); init_command43(); init_get_args(); init_pkg_name(); init_cmd(); init_list_item(); ErrorMessage = `No Vercel Blob token found. To fix this issue, choose one of the following options: ${list_item_default(`Pass the token directly as an option: ${getCommandName("blob list --rw-token BLOB_TOKEN")}`, 1)} ${list_item_default(`Set the Token as an environment variable: ${cmd(`BLOB_READ_WRITE_TOKEN=BLOB_TOKEN ${packageName} blob list`)}`, 2)} ${list_item_default("Link your current folder to a Vercel Project that has a Vercel Blob store connected", 3)}`; } }); // src/commands/blob/index.ts var blob_exports = {}; __export3(blob_exports, { default: () => main }); async function main(client2) { const telemetry2 = new BlobTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const flagsSpecification = getFlagsSpecification(blobCommand.options); let parsedArgs; try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const subArgs = parsedArgs.args.slice(1); const { subcommand, args: args2, subcommandOriginal } = getSubcommand( subArgs, COMMAND_CONFIG3 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("blob", subcommand); output_manager_default.print(help(blobCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: blobCommand, columns: client2.stderr.columns }) ); } const token = await getBlobRWToken(client2, client2.argv); telemetry2.trackCliOptionRwToken(); switch (subcommand) { case "list": if (needHelp) { telemetry2.trackCliFlagHelp("blob", subcommandOriginal); printHelp(listSubcommand12); return 2; } telemetry2.trackCliSubcommandList(subcommandOriginal); if (!token.success) { printError(token.error); return 1; } return list3(client2, args2, token.token); case "put": if (needHelp) { telemetry2.trackCliFlagHelp("blob", subcommandOriginal); printHelp(putSubcommand); return 2; } telemetry2.trackCliSubcommandPut(subcommandOriginal); if (!token.success) { printError(token.error); return 1; } return put2(client2, args2, token.token); case "del": if (needHelp) { telemetry2.trackCliFlagHelp("blob", subcommandOriginal); printHelp(delSubcommand); return 2; } telemetry2.trackCliSubcommandDel(subcommandOriginal); if (!token.success) { printError(token.error); return 1; } return del2(client2, args2, token.token); case "copy": if (needHelp) { telemetry2.trackCliFlagHelp("blob", subcommandOriginal); printHelp(copySubcommand); return 2; } telemetry2.trackCliSubcommandCopy(subcommandOriginal); if (!token.success) { printError(token.error); return 1; } return copy2(client2, args2, token.token); case "store": telemetry2.trackCliSubcommandStore(subcommandOriginal); return store(client2, token); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG3)); output_manager_default.print(help(blobCommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG3; var init_blob2 = __esm({ "src/commands/blob/index.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_get_subcommand(); init_help(); init_list4(); init_command43(); init_get_flags_specification(); init_output_manager(); init_commands(); init_blob(); init_put2(); init_del2(); init_copy2(); init_store2(); init_error2(); init_token(); COMMAND_CONFIG3 = { list: getCommandAliases(listSubcommand12), put: getCommandAliases(putSubcommand), del: getCommandAliases(delSubcommand), copy: getCommandAliases(copySubcommand), store: getCommandAliases(storeSubcommand) }; } }); // ../../node_modules/.pnpm/path-to-regexp@6.1.0/node_modules/path-to-regexp/dist/index.js var require_dist21 = __commonJS2({ "../../node_modules/.pnpm/path-to-regexp@6.1.0/node_modules/path-to-regexp/dist/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function lexer(str) { var tokens = []; var i = 0; while (i < str.length) { var char = str[i]; if (char === "*" || char === "+" || char === "?") { tokens.push({ type: "MODIFIER", index: i, value: str[i++] }); continue; } if (char === "\\") { tokens.push({ type: "ESCAPED_CHAR", index: i++, value: str[i++] }); continue; } if (char === "{") { tokens.push({ type: "OPEN", index: i, value: str[i++] }); continue; } if (char === "}") { tokens.push({ type: "CLOSE", index: i, value: str[i++] }); continue; } if (char === ":") { var name = ""; var j = i + 1; while (j < str.length) { var code2 = str.charCodeAt(j); if ( // `0-9` code2 >= 48 && code2 <= 57 || // `A-Z` code2 >= 65 && code2 <= 90 || // `a-z` code2 >= 97 && code2 <= 122 || // `_` code2 === 95 ) { name += str[j++]; continue; } break; } if (!name) throw new TypeError("Missing parameter name at " + i); tokens.push({ type: "NAME", index: i, value: name }); i = j; continue; } if (char === "(") { var count = 1; var pattern = ""; var j = i + 1; if (str[j] === "?") { throw new TypeError('Pattern cannot start with "?" at ' + j); } while (j < str.length) { if (str[j] === "\\") { pattern += str[j++] + str[j++]; continue; } if (str[j] === ")") { count--; if (count === 0) { j++; break; } } else if (str[j] === "(") { count++; if (str[j + 1] !== "?") { throw new TypeError("Capturing groups are not allowed at " + j); } } pattern += str[j++]; } if (count) throw new TypeError("Unbalanced pattern at " + i); if (!pattern) throw new TypeError("Missing pattern at " + i); tokens.push({ type: "PATTERN", index: i, value: pattern }); i = j; continue; } tokens.push({ type: "CHAR", index: i, value: str[i++] }); } tokens.push({ type: "END", index: i, value: "" }); return tokens; } function parse11(str, options) { if (options === void 0) { options = {}; } var tokens = lexer(str); var _a = options.prefixes, prefixes = _a === void 0 ? "./" : _a; var defaultPattern = "[^" + escapeString(options.delimiter || "/#?") + "]+?"; var result = []; var key = 0; var i = 0; var path11 = ""; var tryConsume = function(type) { if (i < tokens.length && tokens[i].type === type) return tokens[i++].value; }; var mustConsume = function(type) { var value2 = tryConsume(type); if (value2 !== void 0) return value2; var _a2 = tokens[i], nextType = _a2.type, index = _a2.index; throw new TypeError("Unexpected " + nextType + " at " + index + ", expected " + type); }; var consumeText = function() { var result2 = ""; var value2; while (value2 = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR")) { result2 += value2; } return result2; }; while (i < tokens.length) { var char = tryConsume("CHAR"); var name = tryConsume("NAME"); var pattern = tryConsume("PATTERN"); if (name || pattern) { var prefix = char || ""; if (prefixes.indexOf(prefix) === -1) { path11 += prefix; prefix = ""; } if (path11) { result.push(path11); path11 = ""; } result.push({ name: name || key++, prefix, suffix: "", pattern: pattern || defaultPattern, modifier: tryConsume("MODIFIER") || "" }); continue; } var value = char || tryConsume("ESCAPED_CHAR"); if (value) { path11 += value; continue; } if (path11) { result.push(path11); path11 = ""; } var open10 = tryConsume("OPEN"); if (open10) { var prefix = consumeText(); var name_1 = tryConsume("NAME") || ""; var pattern_1 = tryConsume("PATTERN") || ""; var suffix = consumeText(); mustConsume("CLOSE"); result.push({ name: name_1 || (pattern_1 ? key++ : ""), pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1, prefix, suffix, modifier: tryConsume("MODIFIER") || "" }); continue; } mustConsume("END"); } return result; } exports2.parse = parse11; function compile(str, options) { return tokensToFunction(parse11(str, options), options); } exports2.compile = compile; function tokensToFunction(tokens, options) { if (options === void 0) { options = {}; } var reFlags = flags(options); var _a = options.encode, encode = _a === void 0 ? function(x) { return x; } : _a, _b = options.validate, validate2 = _b === void 0 ? true : _b; var matches = tokens.map(function(token) { if (typeof token === "object") { return new RegExp("^(?:" + token.pattern + ")$", reFlags); } }); return function(data) { var path11 = ""; for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (typeof token === "string") { path11 += token; continue; } var value = data ? data[token.name] : void 0; var optional = token.modifier === "?" || token.modifier === "*"; var repeat2 = token.modifier === "*" || token.modifier === "+"; if (Array.isArray(value)) { if (!repeat2) { throw new TypeError('Expected "' + token.name + '" to not repeat, but got an array'); } if (value.length === 0) { if (optional) continue; throw new TypeError('Expected "' + token.name + '" to not be empty'); } for (var j = 0; j < value.length; j++) { var segment = encode(value[j], token); if (validate2 && !matches[i].test(segment)) { throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but got "' + segment + '"'); } path11 += token.prefix + segment + token.suffix; } continue; } if (typeof value === "string" || typeof value === "number") { var segment = encode(String(value), token); if (validate2 && !matches[i].test(segment)) { throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but got "' + segment + '"'); } path11 += token.prefix + segment + token.suffix; continue; } if (optional) continue; var typeOfMessage = repeat2 ? "an array" : "a string"; throw new TypeError('Expected "' + token.name + '" to be ' + typeOfMessage); } return path11; }; } exports2.tokensToFunction = tokensToFunction; function match(str, options) { var keys = []; var re = pathToRegexp(str, keys, options); return regexpToFunction(re, keys, options); } exports2.match = match; function regexpToFunction(re, keys, options) { if (options === void 0) { options = {}; } var _a = options.decode, decode = _a === void 0 ? function(x) { return x; } : _a; return function(pathname) { var m = re.exec(pathname); if (!m) return false; var path11 = m[0], index = m.index; var params2 = /* @__PURE__ */ Object.create(null); var _loop_1 = function(i2) { if (m[i2] === void 0) return "continue"; var key = keys[i2 - 1]; if (key.modifier === "*" || key.modifier === "+") { params2[key.name] = m[i2].split(key.prefix + key.suffix).map(function(value) { return decode(value, key); }); } else { params2[key.name] = decode(m[i2], key); } }; for (var i = 1; i < m.length; i++) { _loop_1(i); } return { path: path11, index, params: params2 }; }; } exports2.regexpToFunction = regexpToFunction; function escapeString(str) { return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); } function flags(options) { return options && options.sensitive ? "" : "i"; } function regexpToRegexp(path11, keys) { if (!keys) return path11; var groups = path11.source.match(/\((?!\?)/g); if (groups) { for (var i = 0; i < groups.length; i++) { keys.push({ name: i, prefix: "", suffix: "", modifier: "", pattern: "" }); } } return path11; } function arrayToRegexp(paths, keys, options) { var parts = paths.map(function(path11) { return pathToRegexp(path11, keys, options).source; }); return new RegExp("(?:" + parts.join("|") + ")", flags(options)); } function stringToRegexp(path11, keys, options) { return tokensToRegexp(parse11(path11, options), keys, options); } function tokensToRegexp(tokens, keys, options) { if (options === void 0) { options = {}; } var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function(x) { return x; } : _d; var endsWith = "[" + escapeString(options.endsWith || "") + "]|$"; var delimiter3 = "[" + escapeString(options.delimiter || "/#?") + "]"; var route = start ? "^" : ""; for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) { var token = tokens_1[_i]; if (typeof token === "string") { route += escapeString(encode(token)); } else { var prefix = escapeString(encode(token.prefix)); var suffix = escapeString(encode(token.suffix)); if (token.pattern) { if (keys) keys.push(token); if (prefix || suffix) { if (token.modifier === "+" || token.modifier === "*") { var mod = token.modifier === "*" ? "?" : ""; route += "(?:" + prefix + "((?:" + token.pattern + ")(?:" + suffix + prefix + "(?:" + token.pattern + "))*)" + suffix + ")" + mod; } else { route += "(?:" + prefix + "(" + token.pattern + ")" + suffix + ")" + token.modifier; } } else { route += "(" + token.pattern + ")" + token.modifier; } } else { route += "(?:" + prefix + suffix + ")" + token.modifier; } } } if (end) { if (!strict) route += delimiter3 + "?"; route += !options.endsWith ? "$" : "(?=" + endsWith + ")"; } else { var endToken = tokens[tokens.length - 1]; var isEndDelimited = typeof endToken === "string" ? delimiter3.indexOf(endToken[endToken.length - 1]) > -1 : ( // tslint:disable-next-line endToken === void 0 ); if (!strict) { route += "(?:" + delimiter3 + "(?=" + endsWith + "))?"; } if (!isEndDelimited) { route += "(?=" + delimiter3 + "|" + endsWith + ")"; } } return new RegExp(route, flags(options)); } exports2.tokensToRegexp = tokensToRegexp; function pathToRegexp(path11, keys, options) { if (path11 instanceof RegExp) return regexpToRegexp(path11, keys); if (Array.isArray(path11)) return arrayToRegexp(path11, keys, options); return stringToRegexp(path11, keys, options); } exports2.pathToRegexp = pathToRegexp; } }); // ../../node_modules/.pnpm/path-to-regexp@6.3.0/node_modules/path-to-regexp/dist/index.js var require_dist22 = __commonJS2({ "../../node_modules/.pnpm/path-to-regexp@6.3.0/node_modules/path-to-regexp/dist/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.pathToRegexp = exports2.tokensToRegexp = exports2.regexpToFunction = exports2.match = exports2.tokensToFunction = exports2.compile = exports2.parse = void 0; function lexer(str) { var tokens = []; var i = 0; while (i < str.length) { var char = str[i]; if (char === "*" || char === "+" || char === "?") { tokens.push({ type: "MODIFIER", index: i, value: str[i++] }); continue; } if (char === "\\") { tokens.push({ type: "ESCAPED_CHAR", index: i++, value: str[i++] }); continue; } if (char === "{") { tokens.push({ type: "OPEN", index: i, value: str[i++] }); continue; } if (char === "}") { tokens.push({ type: "CLOSE", index: i, value: str[i++] }); continue; } if (char === ":") { var name = ""; var j = i + 1; while (j < str.length) { var code2 = str.charCodeAt(j); if ( // `0-9` code2 >= 48 && code2 <= 57 || // `A-Z` code2 >= 65 && code2 <= 90 || // `a-z` code2 >= 97 && code2 <= 122 || // `_` code2 === 95 ) { name += str[j++]; continue; } break; } if (!name) throw new TypeError("Missing parameter name at ".concat(i)); tokens.push({ type: "NAME", index: i, value: name }); i = j; continue; } if (char === "(") { var count = 1; var pattern = ""; var j = i + 1; if (str[j] === "?") { throw new TypeError('Pattern cannot start with "?" at '.concat(j)); } while (j < str.length) { if (str[j] === "\\") { pattern += str[j++] + str[j++]; continue; } if (str[j] === ")") { count--; if (count === 0) { j++; break; } } else if (str[j] === "(") { count++; if (str[j + 1] !== "?") { throw new TypeError("Capturing groups are not allowed at ".concat(j)); } } pattern += str[j++]; } if (count) throw new TypeError("Unbalanced pattern at ".concat(i)); if (!pattern) throw new TypeError("Missing pattern at ".concat(i)); tokens.push({ type: "PATTERN", index: i, value: pattern }); i = j; continue; } tokens.push({ type: "CHAR", index: i, value: str[i++] }); } tokens.push({ type: "END", index: i, value: "" }); return tokens; } function parse11(str, options) { if (options === void 0) { options = {}; } var tokens = lexer(str); var _a = options.prefixes, prefixes = _a === void 0 ? "./" : _a, _b = options.delimiter, delimiter3 = _b === void 0 ? "/#?" : _b; var result = []; var key = 0; var i = 0; var path11 = ""; var tryConsume = function(type) { if (i < tokens.length && tokens[i].type === type) return tokens[i++].value; }; var mustConsume = function(type) { var value2 = tryConsume(type); if (value2 !== void 0) return value2; var _a2 = tokens[i], nextType = _a2.type, index = _a2.index; throw new TypeError("Unexpected ".concat(nextType, " at ").concat(index, ", expected ").concat(type)); }; var consumeText = function() { var result2 = ""; var value2; while (value2 = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR")) { result2 += value2; } return result2; }; var isSafe = function(value2) { for (var _i = 0, delimiter_1 = delimiter3; _i < delimiter_1.length; _i++) { var char2 = delimiter_1[_i]; if (value2.indexOf(char2) > -1) return true; } return false; }; var safePattern = function(prefix2) { var prev = result[result.length - 1]; var prevText = prefix2 || (prev && typeof prev === "string" ? prev : ""); if (prev && !prevText) { throw new TypeError('Must have text between two parameters, missing text after "'.concat(prev.name, '"')); } if (!prevText || isSafe(prevText)) return "[^".concat(escapeString(delimiter3), "]+?"); return "(?:(?!".concat(escapeString(prevText), ")[^").concat(escapeString(delimiter3), "])+?"); }; while (i < tokens.length) { var char = tryConsume("CHAR"); var name = tryConsume("NAME"); var pattern = tryConsume("PATTERN"); if (name || pattern) { var prefix = char || ""; if (prefixes.indexOf(prefix) === -1) { path11 += prefix; prefix = ""; } if (path11) { result.push(path11); path11 = ""; } result.push({ name: name || key++, prefix, suffix: "", pattern: pattern || safePattern(prefix), modifier: tryConsume("MODIFIER") || "" }); continue; } var value = char || tryConsume("ESCAPED_CHAR"); if (value) { path11 += value; continue; } if (path11) { result.push(path11); path11 = ""; } var open10 = tryConsume("OPEN"); if (open10) { var prefix = consumeText(); var name_1 = tryConsume("NAME") || ""; var pattern_1 = tryConsume("PATTERN") || ""; var suffix = consumeText(); mustConsume("CLOSE"); result.push({ name: name_1 || (pattern_1 ? key++ : ""), pattern: name_1 && !pattern_1 ? safePattern(prefix) : pattern_1, prefix, suffix, modifier: tryConsume("MODIFIER") || "" }); continue; } mustConsume("END"); } return result; } exports2.parse = parse11; function compile(str, options) { return tokensToFunction(parse11(str, options), options); } exports2.compile = compile; function tokensToFunction(tokens, options) { if (options === void 0) { options = {}; } var reFlags = flags(options); var _a = options.encode, encode = _a === void 0 ? function(x) { return x; } : _a, _b = options.validate, validate2 = _b === void 0 ? true : _b; var matches = tokens.map(function(token) { if (typeof token === "object") { return new RegExp("^(?:".concat(token.pattern, ")$"), reFlags); } }); return function(data) { var path11 = ""; for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (typeof token === "string") { path11 += token; continue; } var value = data ? data[token.name] : void 0; var optional = token.modifier === "?" || token.modifier === "*"; var repeat2 = token.modifier === "*" || token.modifier === "+"; if (Array.isArray(value)) { if (!repeat2) { throw new TypeError('Expected "'.concat(token.name, '" to not repeat, but got an array')); } if (value.length === 0) { if (optional) continue; throw new TypeError('Expected "'.concat(token.name, '" to not be empty')); } for (var j = 0; j < value.length; j++) { var segment = encode(value[j], token); if (validate2 && !matches[i].test(segment)) { throw new TypeError('Expected all "'.concat(token.name, '" to match "').concat(token.pattern, '", but got "').concat(segment, '"')); } path11 += token.prefix + segment + token.suffix; } continue; } if (typeof value === "string" || typeof value === "number") { var segment = encode(String(value), token); if (validate2 && !matches[i].test(segment)) { throw new TypeError('Expected "'.concat(token.name, '" to match "').concat(token.pattern, '", but got "').concat(segment, '"')); } path11 += token.prefix + segment + token.suffix; continue; } if (optional) continue; var typeOfMessage = repeat2 ? "an array" : "a string"; throw new TypeError('Expected "'.concat(token.name, '" to be ').concat(typeOfMessage)); } return path11; }; } exports2.tokensToFunction = tokensToFunction; function match(str, options) { var keys = []; var re = pathToRegexp(str, keys, options); return regexpToFunction(re, keys, options); } exports2.match = match; function regexpToFunction(re, keys, options) { if (options === void 0) { options = {}; } var _a = options.decode, decode = _a === void 0 ? function(x) { return x; } : _a; return function(pathname) { var m = re.exec(pathname); if (!m) return false; var path11 = m[0], index = m.index; var params2 = /* @__PURE__ */ Object.create(null); var _loop_1 = function(i2) { if (m[i2] === void 0) return "continue"; var key = keys[i2 - 1]; if (key.modifier === "*" || key.modifier === "+") { params2[key.name] = m[i2].split(key.prefix + key.suffix).map(function(value) { return decode(value, key); }); } else { params2[key.name] = decode(m[i2], key); } }; for (var i = 1; i < m.length; i++) { _loop_1(i); } return { path: path11, index, params: params2 }; }; } exports2.regexpToFunction = regexpToFunction; function escapeString(str) { return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); } function flags(options) { return options && options.sensitive ? "" : "i"; } function regexpToRegexp(path11, keys) { if (!keys) return path11; var groupsRegex = /\((?:\?<(.*?)>)?(?!\?)/g; var index = 0; var execResult = groupsRegex.exec(path11.source); while (execResult) { keys.push({ // Use parenthesized substring match if available, index otherwise name: execResult[1] || index++, prefix: "", suffix: "", modifier: "", pattern: "" }); execResult = groupsRegex.exec(path11.source); } return path11; } function arrayToRegexp(paths, keys, options) { var parts = paths.map(function(path11) { return pathToRegexp(path11, keys, options).source; }); return new RegExp("(?:".concat(parts.join("|"), ")"), flags(options)); } function stringToRegexp(path11, keys, options) { return tokensToRegexp(parse11(path11, options), keys, options); } function tokensToRegexp(tokens, keys, options) { if (options === void 0) { options = {}; } var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function(x) { return x; } : _d, _e = options.delimiter, delimiter3 = _e === void 0 ? "/#?" : _e, _f = options.endsWith, endsWith = _f === void 0 ? "" : _f; var endsWithRe = "[".concat(escapeString(endsWith), "]|$"); var delimiterRe = "[".concat(escapeString(delimiter3), "]"); var route = start ? "^" : ""; for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) { var token = tokens_1[_i]; if (typeof token === "string") { route += escapeString(encode(token)); } else { var prefix = escapeString(encode(token.prefix)); var suffix = escapeString(encode(token.suffix)); if (token.pattern) { if (keys) keys.push(token); if (prefix || suffix) { if (token.modifier === "+" || token.modifier === "*") { var mod = token.modifier === "*" ? "?" : ""; route += "(?:".concat(prefix, "((?:").concat(token.pattern, ")(?:").concat(suffix).concat(prefix, "(?:").concat(token.pattern, "))*)").concat(suffix, ")").concat(mod); } else { route += "(?:".concat(prefix, "(").concat(token.pattern, ")").concat(suffix, ")").concat(token.modifier); } } else { if (token.modifier === "+" || token.modifier === "*") { throw new TypeError('Can not repeat "'.concat(token.name, '" without a prefix and suffix')); } route += "(".concat(token.pattern, ")").concat(token.modifier); } } else { route += "(?:".concat(prefix).concat(suffix, ")").concat(token.modifier); } } } if (end) { if (!strict) route += "".concat(delimiterRe, "?"); route += !options.endsWith ? "$" : "(?=".concat(endsWithRe, ")"); } else { var endToken = tokens[tokens.length - 1]; var isEndDelimited = typeof endToken === "string" ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1 : endToken === void 0; if (!strict) { route += "(?:".concat(delimiterRe, "(?=").concat(endsWithRe, "))?"); } if (!isEndDelimited) { route += "(?=".concat(delimiterRe, "|").concat(endsWithRe, ")"); } } return new RegExp(route, flags(options)); } exports2.tokensToRegexp = tokensToRegexp; function pathToRegexp(path11, keys, options) { if (path11 instanceof RegExp) return regexpToRegexp(path11, keys); if (Array.isArray(path11)) return arrayToRegexp(path11, keys, options); return stringToRegexp(path11, keys, options); } exports2.pathToRegexp = pathToRegexp; } }); // ../routing-utils/dist/superstatic.js var require_superstatic = __commonJS2({ "../routing-utils/dist/superstatic.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var superstatic_exports = {}; __export4(superstatic_exports, { collectHasSegments: () => collectHasSegments, convertCleanUrls: () => convertCleanUrls, convertHeaders: () => convertHeaders, convertRedirects: () => convertRedirects, convertRewrites: () => convertRewrites, convertTrailingSlash: () => convertTrailingSlash, getCleanUrls: () => getCleanUrls2, pathToRegexp: () => pathToRegexp, sourceToRegex: () => sourceToRegex3 }); module2.exports = __toCommonJS4(superstatic_exports); var import_url20 = __require("url"); var import_path_to_regexp = require_dist21(); var import_path_to_regexp_updated = require_dist22(); function cloneKeys(keys) { if (typeof keys === "undefined") { return void 0; } return keys.slice(0); } function compareKeys(left, right) { const leftSerialized = typeof left === "undefined" ? "undefined" : left.toString(); const rightSerialized = typeof right === "undefined" ? "undefined" : right.toString(); return leftSerialized === rightSerialized; } function pathToRegexp(callerId, path11, keys, options) { const newKeys = cloneKeys(keys); const currentRegExp = (0, import_path_to_regexp.pathToRegexp)(path11, keys, options); try { const currentKeys = keys; const newRegExp = (0, import_path_to_regexp_updated.pathToRegexp)(path11, newKeys, options); const isDiffRegExp = currentRegExp.toString() !== newRegExp.toString(); if (process.env.FORCE_PATH_TO_REGEXP_LOG || isDiffRegExp) { const message2 = JSON.stringify({ path: path11, currentRegExp: currentRegExp.toString(), newRegExp: newRegExp.toString() }); console.error(`[vc] PATH TO REGEXP PATH DIFF @ #${callerId}: ${message2}`); } const isDiffKeys = !compareKeys(keys, newKeys); if (process.env.FORCE_PATH_TO_REGEXP_LOG || isDiffKeys) { const message2 = JSON.stringify({ isDiffKeys, currentKeys, newKeys }); console.error(`[vc] PATH TO REGEXP KEYS DIFF @ #${callerId}: ${message2}`); } } catch (err) { const error3 = err; const message2 = JSON.stringify({ path: path11, error: error3.message }); console.error(`[vc] PATH TO REGEXP ERROR @ #${callerId}: ${message2}`); } return currentRegExp; } var UN_NAMED_SEGMENT = "__UN_NAMED_SEGMENT__"; function getCleanUrls2(filePaths) { const htmlFiles = filePaths.map(toRoute).filter((f) => f.endsWith(".html")).map((f) => ({ html: f, clean: f.slice(0, -5) })); return htmlFiles; } function convertCleanUrls(cleanUrls, trailingSlash, status3 = 308) { const routes2 = []; if (cleanUrls) { const loc = trailingSlash ? "/$1/" : "/$1"; routes2.push({ src: "^/(?:(.+)/)?index(?:\\.html)?/?$", headers: { Location: loc }, status: status3 }); routes2.push({ src: "^/(.*)\\.html/?$", headers: { Location: loc }, status: status3 }); } return routes2; } function convertRedirects(redirects, defaultStatus = 308) { return redirects.map((r) => { const { src, segments } = sourceToRegex3(r.source); const hasSegments = collectHasSegments(r.has); normalizeHasKeys(r.has); normalizeHasKeys(r.missing); try { const loc = replaceSegments(segments, hasSegments, r.destination, true); let status3; if (typeof r.permanent === "boolean") { status3 = r.permanent ? 308 : 307; } else if (r.statusCode) { status3 = r.statusCode; } else { status3 = defaultStatus; } const route = { src, headers: { Location: loc }, status: status3 }; if (typeof r.env !== "undefined") { route.env = r.env; } if (r.has) { route.has = r.has; } if (r.missing) { route.missing = r.missing; } return route; } catch (e2) { throw new Error(`Failed to parse redirect: ${JSON.stringify(r)}`); } }); } function convertRewrites(rewrites, internalParamNames) { return rewrites.map((r) => { const { src, segments } = sourceToRegex3(r.source); const hasSegments = collectHasSegments(r.has); normalizeHasKeys(r.has); normalizeHasKeys(r.missing); try { const dest = replaceSegments( segments, hasSegments, r.destination, false, internalParamNames ); const route = { src, dest, check: true }; if (typeof r.env !== "undefined") { route.env = r.env; } if (r.has) { route.has = r.has; } if (r.missing) { route.missing = r.missing; } if (r.statusCode) { route.status = r.statusCode; } return route; } catch (e2) { throw new Error(`Failed to parse rewrite: ${JSON.stringify(r)}`); } }); } function convertHeaders(headers) { return headers.map((h) => { const obj = {}; const { src, segments } = sourceToRegex3(h.source); const hasSegments = collectHasSegments(h.has); normalizeHasKeys(h.has); normalizeHasKeys(h.missing); const namedSegments = segments.filter((name) => name !== UN_NAMED_SEGMENT); const indexes = {}; segments.forEach((name, index) => { indexes[name] = toSegmentDest(index); }); hasSegments.forEach((name) => { indexes[name] = "$" + name; }); h.headers.forEach(({ key, value }) => { if (namedSegments.length > 0 || hasSegments.length > 0) { if (key.includes(":")) { key = safelyCompile(key, indexes); } if (value.includes(":")) { value = safelyCompile(value, indexes); } } obj[key] = value; }); const route = { src, headers: obj, continue: true }; if (h.has) { route.has = h.has; } if (h.missing) { route.missing = h.missing; } return route; }); } function convertTrailingSlash(enable3, status3 = 308) { const routes2 = []; if (enable3) { routes2.push({ src: "^/\\.well-known(?:/.*)?$" }); routes2.push({ src: "^/((?:[^/]+/)*[^/\\.]+)$", headers: { Location: "/$1/" }, status: status3 }); routes2.push({ src: "^/((?:[^/]+/)*[^/]+\\.\\w+)/$", headers: { Location: "/$1" }, status: status3 }); } else { routes2.push({ src: "^/(.*)\\/$", headers: { Location: "/$1" }, status: status3 }); } return routes2; } function sourceToRegex3(source) { const keys = []; const r = pathToRegexp("632", source, keys, { strict: true, sensitive: true, delimiter: "/" }); const segments = keys.map((k) => k.name).map((name) => { if (typeof name !== "string") { return UN_NAMED_SEGMENT; } return name; }); return { src: r.source, segments }; } var namedGroupsRegex = /\(\?<([a-zA-Z][a-zA-Z0-9_]*)>/g; var normalizeHasKeys = (hasItems = []) => { for (const hasItem of hasItems) { if ("key" in hasItem && hasItem.type === "header") { hasItem.key = hasItem.key.toLowerCase(); } } return hasItems; }; function getStringValueForRegex(value) { if (typeof value === "string") { return value; } if (value && typeof value === "object" && value !== null) { if ("re" in value && typeof value.re === "string") { return value.re; } } return null; } function collectHasSegments(has) { const hasSegments = /* @__PURE__ */ new Set(); for (const hasItem of has || []) { if (!hasItem.value && "key" in hasItem) { hasSegments.add(hasItem.key); } const stringValue = getStringValueForRegex(hasItem.value); if (stringValue) { for (const match of stringValue.matchAll(namedGroupsRegex)) { if (match[1]) { hasSegments.add(match[1]); } } if (hasItem.type === "host") { hasSegments.add("host"); } } } return [...hasSegments]; } var escapeSegment = (str, segmentName) => str.replace(new RegExp(`:${segmentName}`, "g"), `__ESC_COLON_${segmentName}`); var unescapeSegments = (str) => str.replace(/__ESC_COLON_/gi, ":"); function replaceSegments(segments, hasItemSegments, destination, isRedirect, internalParamNames) { const namedSegments = segments.filter((name) => name !== UN_NAMED_SEGMENT); const canNeedReplacing = destination.includes(":") && namedSegments.length > 0 || hasItemSegments.length > 0 || !isRedirect; if (!canNeedReplacing) { return destination; } let escapedDestination = destination; const indexes = {}; segments.forEach((name, index) => { indexes[name] = toSegmentDest(index); escapedDestination = escapeSegment(escapedDestination, name); }); hasItemSegments.forEach((name) => { indexes[name] = "$" + name; escapedDestination = escapeSegment(escapedDestination, name); }); const parsedDestination = (0, import_url20.parse)(escapedDestination, true); delete parsedDestination.href; delete parsedDestination.path; delete parsedDestination.search; delete parsedDestination.host; let { pathname, hash, query, hostname: hostname3, ...rest } = parsedDestination; pathname = unescapeSegments(pathname || ""); hash = unescapeSegments(hash || ""); hostname3 = unescapeSegments(hostname3 || ""); let destParams = /* @__PURE__ */ new Set(); const pathnameKeys = []; const hashKeys = []; const hostnameKeys = []; try { pathToRegexp("528", pathname, pathnameKeys); pathToRegexp("834", hash || "", hashKeys); pathToRegexp("712", hostname3 || "", hostnameKeys); } catch (_) { } destParams = new Set( [...pathnameKeys, ...hashKeys, ...hostnameKeys].map((key) => key.name).filter((val) => typeof val === "string") ); pathname = safelyCompile(pathname, indexes, true); hash = hash ? safelyCompile(hash, indexes, true) : null; hostname3 = hostname3 ? safelyCompile(hostname3, indexes, true) : null; for (const [key, strOrArray] of Object.entries(query)) { if (Array.isArray(strOrArray)) { query[key] = strOrArray.map( (str) => safelyCompile(unescapeSegments(str), indexes, true) ); } else { query[key] = safelyCompile( unescapeSegments(strOrArray), indexes, true ); } } const paramKeys = Object.keys(indexes); const needsQueryUpdating = ( // we do not consider an internal param since it is added automatically !isRedirect && !paramKeys.some( (param2) => !(internalParamNames && internalParamNames.includes(param2)) && destParams.has(param2) ) ); if (needsQueryUpdating) { for (const param2 of paramKeys) { if (!(param2 in query) && param2 !== UN_NAMED_SEGMENT) { query[param2] = indexes[param2]; } } } destination = (0, import_url20.format)({ ...rest, hostname: hostname3, pathname, query, hash }); return destination.replace(/%24/g, "$"); } function safelyCompile(value, indexes, attemptDirectCompile) { if (!value) { return value; } if (attemptDirectCompile) { try { return (0, import_path_to_regexp.compile)(value, { validate: false })(indexes); } catch (e2) { } } for (const key of Object.keys(indexes)) { if (value.includes(`:${key}`)) { value = value.replace( new RegExp(`:${key}\\*`, "g"), `:${key}--ESCAPED_PARAM_ASTERISK` ).replace( new RegExp(`:${key}\\?`, "g"), `:${key}--ESCAPED_PARAM_QUESTION` ).replace(new RegExp(`:${key}\\+`, "g"), `:${key}--ESCAPED_PARAM_PLUS`).replace( new RegExp(`:${key}(?!\\w)`, "g"), `--ESCAPED_PARAM_COLON${key}` ); } } value = value.replace(/(:|\*|\?|\+|\(|\)|\{|\})/g, "\\$1").replace(/--ESCAPED_PARAM_PLUS/g, "+").replace(/--ESCAPED_PARAM_COLON/g, ":").replace(/--ESCAPED_PARAM_QUESTION/g, "?").replace(/--ESCAPED_PARAM_ASTERISK/g, "*"); return (0, import_path_to_regexp.compile)(`/${value}`, { validate: false })(indexes).slice(1); } function toSegmentDest(index) { const i = index + 1; return "$" + i.toString(); } function toRoute(filePath) { return filePath.startsWith("/") ? filePath : "/" + filePath; } } }); // ../routing-utils/dist/append.js var require_append = __commonJS2({ "../routing-utils/dist/append.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var append_exports = {}; __export4(append_exports, { appendRoutesToPhase: () => appendRoutesToPhase4 }); module2.exports = __toCommonJS4(append_exports); var import_index = require_dist23(); function appendRoutesToPhase4({ routes: prevRoutes, newRoutes, phase }) { const routes2 = prevRoutes ? [...prevRoutes] : []; if (newRoutes === null || newRoutes.length === 0) { return routes2; } let isInPhase = false; let insertIndex = -1; routes2.forEach((r, i) => { if ((0, import_index.isHandler)(r)) { if (r.handle === phase) { isInPhase = true; } else if (isInPhase) { insertIndex = i; isInPhase = false; } } }); if (isInPhase) { routes2.push(...newRoutes); } else if (phase === null) { const lastPhase = routes2.findIndex((r) => (0, import_index.isHandler)(r) && r.handle); if (lastPhase === -1) { routes2.push(...newRoutes); } else { routes2.splice(lastPhase, 0, ...newRoutes); } } else if (insertIndex > -1) { routes2.splice(insertIndex, 0, ...newRoutes); } else { routes2.push({ handle: phase }); routes2.push(...newRoutes); } return routes2; } } }); // ../routing-utils/dist/merge.js var require_merge4 = __commonJS2({ "../routing-utils/dist/merge.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var merge_exports = {}; __export4(merge_exports, { mergeRoutes: () => mergeRoutes3 }); module2.exports = __toCommonJS4(merge_exports); var import_index = require_dist23(); function getBuilderRoutesMapping(builds) { const builderRoutes = {}; for (const { entrypoint, routes: routes2, use } of builds) { if (routes2) { if (!builderRoutes[entrypoint]) { builderRoutes[entrypoint] = {}; } builderRoutes[entrypoint][use] = routes2; } } return builderRoutes; } function getCheckAndContinue(routes2) { const checks = []; const continues = []; const others = []; for (const route of routes2) { if ((0, import_index.isHandler)(route)) { throw new Error( `Unexpected route found in getCheckAndContinue(): ${JSON.stringify( route )}` ); } else if (route.check && !route.override) { checks.push(route); } else if (route.continue && !route.override) { continues.push(route); } else { others.push(route); } } return { checks, continues, others }; } function mergeRoutes3({ userRoutes, builds }) { const userHandleMap = /* @__PURE__ */ new Map(); let userPrevHandle = null; (userRoutes || []).forEach((route) => { if ((0, import_index.isHandler)(route)) { userPrevHandle = route.handle; } else { const routes2 = userHandleMap.get(userPrevHandle); if (!routes2) { userHandleMap.set(userPrevHandle, [route]); } else { routes2.push(route); } } }); const builderHandleMap = /* @__PURE__ */ new Map(); const builderRoutes = getBuilderRoutesMapping(builds); const sortedPaths = Object.keys(builderRoutes).sort(); sortedPaths.forEach((path11) => { const br = builderRoutes[path11]; const sortedBuilders = Object.keys(br).sort(); sortedBuilders.forEach((use) => { let builderPrevHandle = null; br[use].forEach((route) => { if ((0, import_index.isHandler)(route)) { builderPrevHandle = route.handle; } else { const routes2 = builderHandleMap.get(builderPrevHandle); if (!routes2) { builderHandleMap.set(builderPrevHandle, [route]); } else { routes2.push(route); } } }); }); }); const outputRoutes = []; const uniqueHandleValues = /* @__PURE__ */ new Set([ null, ...userHandleMap.keys(), ...builderHandleMap.keys() ]); for (const handle of uniqueHandleValues) { const userRoutes2 = userHandleMap.get(handle) || []; const builderRoutes2 = builderHandleMap.get(handle) || []; const builderSorted = getCheckAndContinue(builderRoutes2); if (handle !== null && (userRoutes2.length > 0 || builderRoutes2.length > 0)) { outputRoutes.push({ handle }); } outputRoutes.push(...builderSorted.continues); outputRoutes.push(...userRoutes2); outputRoutes.push(...builderSorted.checks); outputRoutes.push(...builderSorted.others); } return outputRoutes; } } }); // ../routing-utils/dist/schemas.js var require_schemas = __commonJS2({ "../routing-utils/dist/schemas.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var schemas_exports = {}; __export4(schemas_exports, { bulkRedirectsSchema: () => bulkRedirectsSchema, cleanUrlsSchema: () => cleanUrlsSchema2, hasSchema: () => hasSchema, headersSchema: () => headersSchema2, redirectsSchema: () => redirectsSchema2, rewritesSchema: () => rewritesSchema2, routesSchema: () => routesSchema2, trailingSlashSchema: () => trailingSlashSchema2 }); module2.exports = __toCommonJS4(schemas_exports); var mitigateSchema = { description: "Mitigation action to take on a route", type: "object", additionalProperties: false, required: ["action"], properties: { action: { description: "The mitigation action to take", type: "string", enum: ["challenge", "deny"] } } }; var matchableValueSchema = { description: "A value to match against. Can be a string (regex) or a condition operation object", anyOf: [ { description: "A regular expression used to match thev value. Named groups can be used in the destination.", type: "string", maxLength: 4096 }, { description: "A condition operation object", type: "object", additionalProperties: false, minProperties: 1, properties: { eq: { description: "Equal to", anyOf: [ { type: "string", maxLength: 4096 }, { type: "number" } ] }, neq: { description: "Not equal", type: "string", maxLength: 4096 }, inc: { description: "In array", type: "array", items: { type: "string", maxLength: 4096 } }, ninc: { description: "Not in array", type: "array", items: { type: "string", maxLength: 4096 } }, pre: { description: "Starts with", type: "string", maxLength: 4096 }, suf: { description: "Ends with", type: "string", maxLength: 4096 }, re: { description: "Regex", type: "string", maxLength: 4096 }, gt: { description: "Greater than", type: "number" }, gte: { description: "Greater than or equal to", type: "number" }, lt: { description: "Less than", type: "number" }, lte: { description: "Less than or equal to", type: "number" } } } ] }; var hasSchema = { description: "An array of requirements that are needed to match", type: "array", maxItems: 16, items: { anyOf: [ { type: "object", additionalProperties: false, required: ["type", "value"], properties: { type: { description: "The type of request element to check", type: "string", enum: ["host"] }, value: matchableValueSchema } }, { type: "object", additionalProperties: false, required: ["type", "key"], properties: { type: { description: "The type of request element to check", type: "string", enum: ["header", "cookie", "query"] }, key: { description: "The name of the element contained in the particular type", type: "string", maxLength: 4096 }, value: matchableValueSchema } } ] } }; var transformsSchema = { description: "A list of transform rules to adjust the query parameters of a request or HTTP headers of request or response", type: "array", minItems: 1, items: { type: "object", additionalProperties: false, required: ["type", "op", "target"], properties: { type: { description: "The scope of the transform to apply", type: "string", enum: ["request.headers", "request.query", "response.headers"] }, op: { description: "The operation to perform on the target", type: "string", enum: ["append", "set", "delete"] }, target: { description: "The target of the transform", type: "object", required: ["key"], properties: { // re is not supported for transforms. Once supported, replace target.key with matchableValueSchema key: { description: "A value to match against. Can be a string or a condition operation object (without regex support)", anyOf: [ { description: "A valid header name (letters, numbers, hyphens, underscores)", type: "string", maxLength: 4096 }, { description: "A condition operation object", type: "object", additionalProperties: false, minProperties: 1, properties: { eq: { description: "Equal to", anyOf: [ { type: "string", maxLength: 4096 }, { type: "number" } ] }, neq: { description: "Not equal", type: "string", maxLength: 4096 }, inc: { description: "In array", type: "array", items: { type: "string", maxLength: 4096 } }, ninc: { description: "Not in array", type: "array", items: { type: "string", maxLength: 4096 } }, pre: { description: "Starts with", type: "string", maxLength: 4096 }, suf: { description: "Ends with", type: "string", maxLength: 4096 }, gt: { description: "Greater than", type: "number" }, gte: { description: "Greater than or equal to", type: "number" }, lt: { description: "Less than", type: "number" }, lte: { description: "Less than or equal to", type: "number" } } } ] } } }, args: { description: "The arguments to the operation", anyOf: [ { type: "string", maxLength: 4096 }, { type: "array", minItems: 1, items: { type: "string", maxLength: 4096 } } ] }, env: { description: "An array of environment variable names that should be replaced at runtime in the args value", type: "array", minItems: 1, maxItems: 64, items: { type: "string", maxLength: 256 } } }, allOf: [ { if: { properties: { op: { enum: ["append", "set"] } } }, then: { required: ["args"] } }, { if: { allOf: [ { properties: { type: { enum: ["request.headers", "response.headers"] } } }, { properties: { op: { enum: ["set", "append"] } } } ] }, then: { properties: { target: { properties: { key: { if: { type: "string" }, then: { pattern: "^[a-zA-Z0-9_-]+$" } } } }, args: { anyOf: [ { type: "string", pattern: "^[a-zA-Z0-9_ :;.,\"'?!(){}\\[\\]@<>=+*#$&`|~\\^%/-]+$" }, { type: "array", items: { type: "string", pattern: "^[a-zA-Z0-9_ :;.,\"'?!(){}\\[\\]@<>=+*#$&`|~\\^%/-]+$" } } ] } } } } ] } }; var routesSchema2 = { type: "array", deprecated: true, description: "A list of routes objects used to rewrite paths to point towards other internal or external paths", example: [{ dest: "https://docs.example.com", src: "/docs" }], items: { anyOf: [ { type: "object", required: ["src"], additionalProperties: false, properties: { src: { type: "string", maxLength: 4096 }, dest: { type: "string", maxLength: 4096 }, headers: { type: "object", additionalProperties: false, minProperties: 1, maxProperties: 100, patternProperties: { "^.{1,256}$": { type: "string", maxLength: 32768 } } }, methods: { type: "array", maxItems: 10, items: { type: "string", maxLength: 32 } }, caseSensitive: { type: "boolean" }, important: { type: "boolean" }, user: { type: "boolean" }, continue: { type: "boolean" }, override: { type: "boolean" }, check: { type: "boolean" }, isInternal: { type: "boolean" }, status: { type: "integer", minimum: 100, maximum: 999 }, locale: { type: "object", additionalProperties: false, minProperties: 1, properties: { redirect: { type: "object", additionalProperties: false, minProperties: 1, maxProperties: 100, patternProperties: { "^.{1,256}$": { type: "string", maxLength: 4096 } } }, value: { type: "string", maxLength: 4096 }, path: { type: "string", maxLength: 4096 }, cookie: { type: "string", maxLength: 4096 }, default: { type: "string", maxLength: 4096 } } }, middleware: { type: "number" }, middlewarePath: { type: "string" }, middlewareRawSrc: { type: "array", items: { type: "string" } }, has: hasSchema, missing: hasSchema, mitigate: mitigateSchema, transforms: transformsSchema, env: { description: "An array of environment variable names that should be replaced at runtime in the destination or headers", type: "array", minItems: 1, maxItems: 64, items: { type: "string", maxLength: 256 } }, respectOriginCacheControl: { description: "When set to true (default), external rewrites will respect the Cache-Control header from the origin. When false, caching is disabled for this rewrite.", type: "boolean" } } }, { type: "object", required: ["handle"], additionalProperties: false, properties: { handle: { type: "string", maxLength: 32, enum: ["error", "filesystem", "hit", "miss", "resource", "rewrite"] } } } ] } }; var rewritesSchema2 = { type: "array", maxItems: 2048, description: "A list of rewrite definitions.", items: { type: "object", additionalProperties: false, required: ["source", "destination"], properties: { source: { description: "A pattern that matches each incoming pathname (excluding querystring).", type: "string", maxLength: 4096 }, destination: { description: "An absolute pathname to an existing resource or an external URL.", type: "string", maxLength: 4096 }, has: hasSchema, missing: hasSchema, statusCode: { description: "An optional integer to override the status code of the response.", type: "integer", minimum: 100, maximum: 999 }, env: { description: "An array of environment variable names that should be replaced at runtime in the destination", type: "array", minItems: 1, maxItems: 64, items: { type: "string", maxLength: 256 } }, respectOriginCacheControl: { description: "When set to true (default), external rewrites will respect the Cache-Control header from the origin. When false, caching is disabled for this rewrite.", type: "boolean" } } } }; var redirectsSchema2 = { title: "Redirects", type: "array", maxItems: 2048, description: "A list of redirect definitions.", items: { type: "object", additionalProperties: false, required: ["source", "destination"], properties: { source: { description: "A pattern that matches each incoming pathname (excluding querystring).", type: "string", maxLength: 4096 }, destination: { description: "A location destination defined as an absolute pathname or external URL.", type: "string", maxLength: 4096 }, permanent: { description: "A boolean to toggle between permanent and temporary redirect. When `true`, the status code is `308`. When `false` the status code is `307`.", type: "boolean" }, statusCode: { description: "An optional integer to define the status code of the redirect.", private: true, type: "integer", minimum: 100, maximum: 999 }, has: hasSchema, missing: hasSchema, env: { description: "An array of environment variable names that should be replaced at runtime in the destination", type: "array", minItems: 1, maxItems: 64, items: { type: "string", maxLength: 256 } } } } }; var headersSchema2 = { type: "array", maxItems: 2048, description: "A list of header definitions.", items: { type: "object", additionalProperties: false, required: ["source", "headers"], properties: { source: { description: "A pattern that matches each incoming pathname (excluding querystring)", type: "string", maxLength: 4096 }, headers: { description: "An array of key/value pairs representing each response header.", type: "array", maxItems: 1024, items: { type: "object", additionalProperties: false, required: ["key", "value"], properties: { key: { type: "string", maxLength: 4096 }, value: { type: "string", maxLength: 32768 } } } }, has: hasSchema, missing: hasSchema } } }; var cleanUrlsSchema2 = { description: "When set to `true`, all HTML files and Serverless Functions will have their extension removed. When visiting a path that ends with the extension, a 308 response will redirect the client to the extensionless path.", type: "boolean" }; var trailingSlashSchema2 = { description: "When `false`, visiting a path that ends with a forward slash will respond with a `308` status code and redirect to the path without the trailing slash.", type: "boolean" }; var bulkRedirectsSchema = { type: "array", description: "A list of bulk redirect definitions.", items: { type: "object", additionalProperties: false, required: ["source", "destination"], properties: { source: { description: "The exact URL path or pattern to match.", type: "string", maxLength: 2048 }, destination: { description: "The target URL path where traffic should be redirected.", type: "string", maxLength: 2048 }, permanent: { description: "A boolean to toggle between permanent and temporary redirect. When `true`, the status code is `308`. When `false` the status code is `307`.", type: "boolean" }, statusCode: { description: "An optional integer to define the status code of the redirect.", type: "integer", enum: [301, 302, 307, 308] }, sensitive: { description: "A boolean to toggle between case-sensitive and case-insensitive redirect. When `true`, the redirect is case-sensitive. When `false` the redirect is case-insensitive.", type: "boolean" }, query: { description: "Whether the query string should be preserved by the redirect. The default is `false`.", type: "boolean" } } } }; } }); // ../routing-utils/dist/types.js var require_types7 = __commonJS2({ "../routing-utils/dist/types.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var types_exports = {}; module2.exports = __toCommonJS4(types_exports); } }); // ../routing-utils/dist/index.js var require_dist23 = __commonJS2({ "../routing-utils/dist/index.js"(exports2, module2) { "use strict"; var __defProp4 = Object.defineProperty; var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor; var __getOwnPropNames4 = Object.getOwnPropertyNames; var __hasOwnProp4 = Object.prototype.hasOwnProperty; var __export4 = (target, all) => { for (var name in all) __defProp4(target, name, { get: all[name], enumerable: true }); }; var __copyProps4 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames4(from)) if (!__hasOwnProp4.call(to, key) && key !== except) __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc4(from, key)) || desc.enumerable }); } return to; }; var __reExport = (target, mod, secondTarget) => (__copyProps4(target, mod, "default"), secondTarget && __copyProps4(secondTarget, mod, "default")); var __toCommonJS4 = (mod) => __copyProps4(__defProp4({}, "__esModule", { value: true }), mod); var src_exports2 = {}; __export4(src_exports2, { appendRoutesToPhase: () => import_append.appendRoutesToPhase, getCleanUrls: () => import_superstatic2.getCleanUrls, getTransformedRoutes: () => getTransformedRoutes3, isHandler: () => isHandler2, isValidHandleValue: () => isValidHandleValue, mergeRoutes: () => import_merge2.mergeRoutes, normalizeRoutes: () => normalizeRoutes2, sourceToRegex: () => import_superstatic2.sourceToRegex }); module2.exports = __toCommonJS4(src_exports2); var import_url20 = __require("url"); var import_superstatic = require_superstatic(); var import_append = require_append(); var import_merge2 = require_merge4(); __reExport(src_exports2, require_schemas(), module2.exports); var import_superstatic2 = require_superstatic(); __reExport(src_exports2, require_types7(), module2.exports); var VALID_HANDLE_VALUES = [ "filesystem", "hit", "miss", "rewrite", "error", "resource" ]; var validHandleValues = new Set(VALID_HANDLE_VALUES); function isHandler2(route) { return typeof route.handle !== "undefined"; } function isValidHandleValue(handle) { return validHandleValues.has(handle); } function normalizeRoutes2(inputRoutes) { if (!inputRoutes || inputRoutes.length === 0) { return { routes: inputRoutes, error: null }; } const routes2 = []; const handling = []; const errors = []; inputRoutes.forEach((r, i) => { const route = { ...r }; routes2.push(route); const keys = Object.keys(route); if (isHandler2(route)) { const { handle } = route; if (keys.length !== 1) { const unknownProp = keys.find((prop) => prop !== "handle"); errors.push( `Route at index ${i} has unknown property \`${unknownProp}\`.` ); } else if (!isValidHandleValue(handle)) { errors.push( `Route at index ${i} has unknown handle value \`handle: ${handle}\`.` ); } else if (handling.includes(handle)) { errors.push( `Route at index ${i} is a duplicate. Please use one \`handle: ${handle}\` at most.` ); } else { handling.push(handle); } } else if (route.src) { if (!route.src.startsWith("^")) { route.src = `^${route.src}`; } if (!route.src.endsWith("$")) { route.src = `${route.src}$`; } route.src = route.src.replace(/\\\//g, "/"); const regError = checkRegexSyntax("Route", i, route.src); if (regError) { errors.push(regError); } const handleValue = handling[handling.length - 1]; if (handleValue === "hit") { if (route.dest) { errors.push( `Route at index ${i} cannot define \`dest\` after \`handle: hit\`.` ); } if (route.status) { errors.push( `Route at index ${i} cannot define \`status\` after \`handle: hit\`.` ); } if (!route.continue) { errors.push( `Route at index ${i} must define \`continue: true\` after \`handle: hit\`.` ); } } else if (handleValue === "miss") { if (route.dest && !route.check) { errors.push( `Route at index ${i} must define \`check: true\` after \`handle: miss\`.` ); } else if (!route.dest && !route.continue) { errors.push( `Route at index ${i} must define \`continue: true\` after \`handle: miss\`.` ); } } } else { errors.push( `Route at index ${i} must define either \`handle\` or \`src\` property.` ); } }); const error3 = errors.length > 0 ? createError( "invalid_route", errors, "https://vercel.link/routes-json", "Learn More" ) : null; return { routes: routes2, error: error3 }; } function checkRegexSyntax(type, index, src) { try { new RegExp(src); } catch (err) { const prop = type === "Route" ? "src" : "source"; return `${type} at index ${index} has invalid \`${prop}\` regular expression "${src}".`; } return null; } function checkPatternSyntax(type, index, { source, destination, has }) { let sourceSegments = /* @__PURE__ */ new Set(); const destinationSegments = /* @__PURE__ */ new Set(); try { sourceSegments = new Set((0, import_superstatic.sourceToRegex)(source).segments); } catch (err) { return { message: `${type} at index ${index} has invalid \`source\` pattern "${source}".`, link: "https://vercel.link/invalid-route-source-pattern" }; } if (destination) { try { const { hostname: hostname3, pathname, query } = (0, import_url20.parse)(destination, true); (0, import_superstatic.sourceToRegex)(hostname3 || "").segments.forEach( (name) => destinationSegments.add(name) ); (0, import_superstatic.sourceToRegex)(pathname || "").segments.forEach( (name) => destinationSegments.add(name) ); for (const strOrArray of Object.values(query)) { const value = Array.isArray(strOrArray) ? strOrArray[0] : strOrArray; (0, import_superstatic.sourceToRegex)(value || "").segments.forEach( (name) => destinationSegments.add(name) ); } } catch (err) { } const hasSegments = (0, import_superstatic.collectHasSegments)(has); for (const segment of destinationSegments) { if (!sourceSegments.has(segment) && !hasSegments.includes(segment)) { return { message: `${type} at index ${index} has segment ":${segment}" in \`destination\` property but not in \`source\` or \`has\` property.`, link: "https://vercel.link/invalid-route-destination-segment" }; } } } return null; } function checkRedirect(r, index) { if (typeof r.permanent !== "undefined" && typeof r.statusCode !== "undefined") { return `Redirect at index ${index} cannot define both \`permanent\` and \`statusCode\` properties.`; } return null; } function createError(code2, allErrors, link4, action) { const errors = Array.isArray(allErrors) ? allErrors : [allErrors]; const message2 = errors[0]; const error3 = { name: "RouteApiError", code: code2, message: message2, link: link4, action, errors }; return error3; } function notEmpty(value) { return value !== null && value !== void 0; } function getTransformedRoutes3(vercelConfig) { const { cleanUrls, rewrites, redirects, headers, trailingSlash } = vercelConfig; let { routes: routes2 = null } = vercelConfig; if (routes2) { const hasNewProperties = typeof cleanUrls !== "undefined" || typeof trailingSlash !== "undefined" || typeof redirects !== "undefined" || typeof headers !== "undefined" || typeof rewrites !== "undefined"; if (hasNewProperties) { const error3 = createError( "invalid_mixed_routes", "If `rewrites`, `redirects`, `headers`, `cleanUrls` or `trailingSlash` are used, then `routes` cannot be present.", "https://vercel.link/mix-routing-props", "Learn More" ); return { routes: routes2, error: error3 }; } return normalizeRoutes2(routes2); } if (typeof cleanUrls !== "undefined") { const normalized = normalizeRoutes2( (0, import_superstatic.convertCleanUrls)(cleanUrls, trailingSlash) ); if (normalized.error) { normalized.error.code = "invalid_clean_urls"; return { routes: routes2, error: normalized.error }; } routes2 = routes2 || []; routes2.push(...normalized.routes || []); } if (typeof trailingSlash !== "undefined") { const normalized = normalizeRoutes2((0, import_superstatic.convertTrailingSlash)(trailingSlash)); if (normalized.error) { normalized.error.code = "invalid_trailing_slash"; return { routes: routes2, error: normalized.error }; } routes2 = routes2 || []; routes2.push(...normalized.routes || []); } if (typeof redirects !== "undefined") { const code2 = "invalid_redirect"; const regexErrorMessage = redirects.map((r, i) => checkRegexSyntax("Redirect", i, r.source)).find(notEmpty); if (regexErrorMessage) { return { routes: routes2, error: createError( "invalid_redirect", regexErrorMessage, "https://vercel.link/invalid-route-source-pattern", "Learn More" ) }; } const patternError = redirects.map((r, i) => checkPatternSyntax("Redirect", i, r)).find(notEmpty); if (patternError) { return { routes: routes2, error: createError( code2, patternError.message, patternError.link, "Learn More" ) }; } const redirectErrorMessage = redirects.map(checkRedirect).find(notEmpty); if (redirectErrorMessage) { return { routes: routes2, error: createError( code2, redirectErrorMessage, "https://vercel.link/redirects-json", "Learn More" ) }; } const normalized = normalizeRoutes2((0, import_superstatic.convertRedirects)(redirects)); if (normalized.error) { normalized.error.code = code2; return { routes: routes2, error: normalized.error }; } routes2 = routes2 || []; routes2.push(...normalized.routes || []); } if (typeof headers !== "undefined") { const code2 = "invalid_header"; const regexErrorMessage = headers.map((r, i) => checkRegexSyntax("Header", i, r.source)).find(notEmpty); if (regexErrorMessage) { return { routes: routes2, error: createError( code2, regexErrorMessage, "https://vercel.link/invalid-route-source-pattern", "Learn More" ) }; } const patternError = headers.map((r, i) => checkPatternSyntax("Header", i, r)).find(notEmpty); if (patternError) { return { routes: routes2, error: createError( code2, patternError.message, patternError.link, "Learn More" ) }; } const normalized = normalizeRoutes2((0, import_superstatic.convertHeaders)(headers)); if (normalized.error) { normalized.error.code = code2; return { routes: routes2, error: normalized.error }; } routes2 = routes2 || []; routes2.push(...normalized.routes || []); } if (typeof rewrites !== "undefined") { const code2 = "invalid_rewrite"; const regexErrorMessage = rewrites.map((r, i) => checkRegexSyntax("Rewrite", i, r.source)).find(notEmpty); if (regexErrorMessage) { return { routes: routes2, error: createError( code2, regexErrorMessage, "https://vercel.link/invalid-route-source-pattern", "Learn More" ) }; } const patternError = rewrites.map((r, i) => checkPatternSyntax("Rewrite", i, r)).find(notEmpty); if (patternError) { return { routes: routes2, error: createError( code2, patternError.message, patternError.link, "Learn More" ) }; } const normalized = normalizeRoutes2((0, import_superstatic.convertRewrites)(rewrites)); if (normalized.error) { normalized.error.code = code2; return { routes: routes2, error: normalized.error }; } routes2 = routes2 || []; routes2.push({ handle: "filesystem" }); routes2.push(...normalized.routes || []); } return { routes: routes2, error: null }; } } }); // src/util/build/corepack.ts import { delimiter, join as join10 } from "path"; import { spawnAsync } from "@vercel/build-utils"; async function initCorepack({ repoRootPath }) { if (process.env.ENABLE_EXPERIMENTAL_COREPACK !== "1") { return null; } const pkg = await readJSONFile( join10(repoRootPath, "package.json") ); if (pkg instanceof CantParseJSONFile) { output_manager_default.warn( "Warning: Could not enable corepack because package.json is invalid JSON", pkg.meta.parseErrorLocation ); } else if (!pkg?.packageManager) { output_manager_default.warn( 'Warning: Could not enable corepack because package.json is missing "packageManager" property' ); } else { output_manager_default.log( `Detected ENABLE_EXPERIMENTAL_COREPACK=1 and "${pkg.packageManager}" in package.json` ); const corepackRootDir = join10(repoRootPath, VERCEL_DIR, "cache", "corepack"); const corepackHomeDir = join10(corepackRootDir, "home"); const corepackShimDir = join10(corepackRootDir, "shim"); await import_fs_extra10.default.mkdirp(corepackHomeDir); await import_fs_extra10.default.mkdirp(corepackShimDir); process.env.COREPACK_HOME = corepackHomeDir; process.env.PATH = `${corepackShimDir}${delimiter}${process.env.PATH}`; const pkgManagerName = pkg.packageManager.split("@")[0]; await spawnAsync( "corepack", ["enable", pkgManagerName, "--install-directory", corepackShimDir], { prettyCommand: `corepack enable ${pkgManagerName}` } ); return corepackShimDir; } return null; } function cleanupCorepack(corepackShimDir) { if (process.env.COREPACK_HOME) { delete process.env.COREPACK_HOME; } if (process.env.PATH) { process.env.PATH = process.env.PATH.replace( `${corepackShimDir}${delimiter}`, "" ); } } var import_fs_extra10; var init_corepack = __esm({ "src/util/build/corepack.ts"() { "use strict"; import_fs_extra10 = __toESM3(require_lib(), 1); init_errors_ts(); init_link2(); init_read_json_file(); init_output_manager(); } }); // ../../node_modules/.pnpm/builtins@1.0.3/node_modules/builtins/builtins.json var require_builtins = __commonJS2({ "../../node_modules/.pnpm/builtins@1.0.3/node_modules/builtins/builtins.json"(exports2, module2) { module2.exports = [ "assert", "buffer", "child_process", "cluster", "console", "constants", "crypto", "dgram", "dns", "domain", "events", "fs", "http", "https", "module", "net", "os", "path", "process", "punycode", "querystring", "readline", "repl", "stream", "string_decoder", "timers", "tls", "tty", "url", "util", "v8", "vm", "zlib" ]; } }); // ../../node_modules/.pnpm/validate-npm-package-name@3.0.0/node_modules/validate-npm-package-name/index.js var require_validate_npm_package_name = __commonJS2({ "../../node_modules/.pnpm/validate-npm-package-name@3.0.0/node_modules/validate-npm-package-name/index.js"(exports2, module2) { "use strict"; var scopedPackagePattern = new RegExp("^(?:@([^/]+?)[/])?([^/]+?)$"); var builtins = require_builtins(); var blacklist = [ "node_modules", "favicon.ico" ]; var validate2 = module2.exports = function(name) { var warnings = []; var errors = []; if (name === null) { errors.push("name cannot be null"); return done(warnings, errors); } if (name === void 0) { errors.push("name cannot be undefined"); return done(warnings, errors); } if (typeof name !== "string") { errors.push("name must be a string"); return done(warnings, errors); } if (!name.length) { errors.push("name length must be greater than zero"); } if (name.match(/^\./)) { errors.push("name cannot start with a period"); } if (name.match(/^_/)) { errors.push("name cannot start with an underscore"); } if (name.trim() !== name) { errors.push("name cannot contain leading or trailing spaces"); } blacklist.forEach(function(blacklistedName) { if (name.toLowerCase() === blacklistedName) { errors.push(blacklistedName + " is a blacklisted name"); } }); builtins.forEach(function(builtin) { if (name.toLowerCase() === builtin) { warnings.push(builtin + " is a core module name"); } }); if (name.length > 214) { warnings.push("name can no longer contain more than 214 characters"); } if (name.toLowerCase() !== name) { warnings.push("name can no longer contain capital letters"); } if (/[~'!()*]/.test(name.split("/").slice(-1)[0])) { warnings.push(`name can no longer contain special characters ("~'!()*")`); } if (encodeURIComponent(name) !== name) { var nameMatch = name.match(scopedPackagePattern); if (nameMatch) { var user = nameMatch[1]; var pkg = nameMatch[2]; if (encodeURIComponent(user) === user && encodeURIComponent(pkg) === pkg) { return done(warnings, errors); } } errors.push("name can only contain URL-friendly characters"); } return done(warnings, errors); }; validate2.scopedPackagePattern = scopedPackagePattern; var done = function(warnings, errors) { var result = { validForNewPackages: errors.length === 0 && warnings.length === 0, validForOldPackages: errors.length === 0, warnings, errors }; if (!result.warnings.length) delete result.warnings; if (!result.errors.length) delete result.errors; return result; }; } }); // ../../node_modules/.pnpm/hosted-git-info@2.8.9/node_modules/hosted-git-info/git-host-info.js var require_git_host_info = __commonJS2({ "../../node_modules/.pnpm/hosted-git-info@2.8.9/node_modules/hosted-git-info/git-host-info.js"(exports2, module2) { "use strict"; var gitHosts = module2.exports = { github: { // First two are insecure and generally shouldn't be used any more, but // they are still supported. "protocols": ["git", "http", "git+ssh", "git+https", "ssh", "https"], "domain": "github.com", "treepath": "tree", "filetemplate": "https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}", "bugstemplate": "https://{domain}/{user}/{project}/issues", "gittemplate": "git://{auth@}{domain}/{user}/{project}.git{#committish}", "tarballtemplate": "https://codeload.{domain}/{user}/{project}/tar.gz/{committish}" }, bitbucket: { "protocols": ["git+ssh", "git+https", "ssh", "https"], "domain": "bitbucket.org", "treepath": "src", "tarballtemplate": "https://{domain}/{user}/{project}/get/{committish}.tar.gz" }, gitlab: { "protocols": ["git+ssh", "git+https", "ssh", "https"], "domain": "gitlab.com", "treepath": "tree", "bugstemplate": "https://{domain}/{user}/{project}/issues", "httpstemplate": "git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}", "tarballtemplate": "https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}", "pathmatch": /^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/ }, gist: { "protocols": ["git", "git+ssh", "git+https", "ssh", "https"], "domain": "gist.github.com", "pathmatch": /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/, "filetemplate": "https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}", "bugstemplate": "https://{domain}/{project}", "gittemplate": "git://{domain}/{project}.git{#committish}", "sshtemplate": "git@{domain}:/{project}.git{#committish}", "sshurltemplate": "git+ssh://git@{domain}/{project}.git{#committish}", "browsetemplate": "https://{domain}/{project}{/committish}", "browsefiletemplate": "https://{domain}/{project}{/committish}{#path}", "docstemplate": "https://{domain}/{project}{/committish}", "httpstemplate": "git+https://{domain}/{project}.git{#committish}", "shortcuttemplate": "{type}:{project}{#committish}", "pathtemplate": "{project}{#committish}", "tarballtemplate": "https://codeload.github.com/gist/{project}/tar.gz/{committish}", "hashformat": function(fragment) { return "file-" + formatHashFragment(fragment); } } }; var gitHostDefaults = { "sshtemplate": "git@{domain}:{user}/{project}.git{#committish}", "sshurltemplate": "git+ssh://git@{domain}/{user}/{project}.git{#committish}", "browsetemplate": "https://{domain}/{user}/{project}{/tree/committish}", "browsefiletemplate": "https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}", "docstemplate": "https://{domain}/{user}/{project}{/tree/committish}#readme", "httpstemplate": "git+https://{auth@}{domain}/{user}/{project}.git{#committish}", "filetemplate": "https://{domain}/{user}/{project}/raw/{committish}/{path}", "shortcuttemplate": "{type}:{user}/{project}{#committish}", "pathtemplate": "{user}/{project}{#committish}", "pathmatch": /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/, "hashformat": formatHashFragment }; Object.keys(gitHosts).forEach(function(name) { Object.keys(gitHostDefaults).forEach(function(key) { if (gitHosts[name][key]) return; gitHosts[name][key] = gitHostDefaults[key]; }); gitHosts[name].protocols_re = RegExp("^(" + gitHosts[name].protocols.map(function(protocol) { return protocol.replace(/([\\+*{}()[\]$^|])/g, "\\$1"); }).join("|") + "):$"); }); function formatHashFragment(fragment) { return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, "").replace(/\W+/g, "-"); } } }); // ../../node_modules/.pnpm/hosted-git-info@2.8.9/node_modules/hosted-git-info/git-host.js var require_git_host = __commonJS2({ "../../node_modules/.pnpm/hosted-git-info@2.8.9/node_modules/hosted-git-info/git-host.js"(exports2, module2) { "use strict"; var gitHosts = require_git_host_info(); var extend = Object.assign || function _extend(target, source) { if (source === null || typeof source !== "object") return target; var keys = Object.keys(source); var i = keys.length; while (i--) { target[keys[i]] = source[keys[i]]; } return target; }; module2.exports = GitHost; function GitHost(type, user, auth, project, committish, defaultRepresentation, opts) { var gitHostInfo = this; gitHostInfo.type = type; Object.keys(gitHosts[type]).forEach(function(key) { gitHostInfo[key] = gitHosts[type][key]; }); gitHostInfo.user = user; gitHostInfo.auth = auth; gitHostInfo.project = project; gitHostInfo.committish = committish; gitHostInfo.default = defaultRepresentation; gitHostInfo.opts = opts || {}; } GitHost.prototype.hash = function() { return this.committish ? "#" + this.committish : ""; }; GitHost.prototype._fill = function(template, opts) { if (!template) return; var vars = extend({}, opts); vars.path = vars.path ? vars.path.replace(/^[/]+/g, "") : ""; opts = extend(extend({}, this.opts), opts); var self2 = this; Object.keys(this).forEach(function(key) { if (self2[key] != null && vars[key] == null) vars[key] = self2[key]; }); var rawAuth = vars.auth; var rawcommittish = vars.committish; var rawFragment = vars.fragment; var rawPath = vars.path; var rawProject = vars.project; Object.keys(vars).forEach(function(key) { var value = vars[key]; if ((key === "path" || key === "project") && typeof value === "string") { vars[key] = value.split("/").map(function(pathComponent) { return encodeURIComponent(pathComponent); }).join("/"); } else { vars[key] = encodeURIComponent(value); } }); vars["auth@"] = rawAuth ? rawAuth + "@" : ""; vars["#fragment"] = rawFragment ? "#" + this.hashformat(rawFragment) : ""; vars.fragment = vars.fragment ? vars.fragment : ""; vars["#path"] = rawPath ? "#" + this.hashformat(rawPath) : ""; vars["/path"] = vars.path ? "/" + vars.path : ""; vars.projectPath = rawProject.split("/").map(encodeURIComponent).join("/"); if (opts.noCommittish) { vars["#committish"] = ""; vars["/tree/committish"] = ""; vars["/committish"] = ""; vars.committish = ""; } else { vars["#committish"] = rawcommittish ? "#" + rawcommittish : ""; vars["/tree/committish"] = vars.committish ? "/" + vars.treepath + "/" + vars.committish : ""; vars["/committish"] = vars.committish ? "/" + vars.committish : ""; vars.committish = vars.committish || "master"; } var res = template; Object.keys(vars).forEach(function(key) { res = res.replace(new RegExp("[{]" + key + "[}]", "g"), vars[key]); }); if (opts.noGitPlus) { return res.replace(/^git[+]/, ""); } else { return res; } }; GitHost.prototype.ssh = function(opts) { return this._fill(this.sshtemplate, opts); }; GitHost.prototype.sshurl = function(opts) { return this._fill(this.sshurltemplate, opts); }; GitHost.prototype.browse = function(P, F, opts) { if (typeof P === "string") { if (typeof F !== "string") { opts = F; F = null; } return this._fill(this.browsefiletemplate, extend({ fragment: F, path: P }, opts)); } else { return this._fill(this.browsetemplate, P); } }; GitHost.prototype.docs = function(opts) { return this._fill(this.docstemplate, opts); }; GitHost.prototype.bugs = function(opts) { return this._fill(this.bugstemplate, opts); }; GitHost.prototype.https = function(opts) { return this._fill(this.httpstemplate, opts); }; GitHost.prototype.git = function(opts) { return this._fill(this.gittemplate, opts); }; GitHost.prototype.shortcut = function(opts) { return this._fill(this.shortcuttemplate, opts); }; GitHost.prototype.path = function(opts) { return this._fill(this.pathtemplate, opts); }; GitHost.prototype.tarball = function(opts_) { var opts = extend({}, opts_, { noCommittish: false }); return this._fill(this.tarballtemplate, opts); }; GitHost.prototype.file = function(P, opts) { return this._fill(this.filetemplate, extend({ path: P }, opts)); }; GitHost.prototype.getDefaultRepresentation = function() { return this.default; }; GitHost.prototype.toString = function(opts) { if (this.default && typeof this[this.default] === "function") return this[this.default](opts); return this.sshurl(opts); }; } }); // ../../node_modules/.pnpm/hosted-git-info@2.8.9/node_modules/hosted-git-info/index.js var require_hosted_git_info = __commonJS2({ "../../node_modules/.pnpm/hosted-git-info@2.8.9/node_modules/hosted-git-info/index.js"(exports2, module2) { "use strict"; var url3 = __require("url"); var gitHosts = require_git_host_info(); var GitHost = module2.exports = require_git_host(); var protocolToRepresentationMap = { "git+ssh:": "sshurl", "git+https:": "https", "ssh:": "sshurl", "git:": "git" }; function protocolToRepresentation(protocol) { return protocolToRepresentationMap[protocol] || protocol.slice(0, -1); } var authProtocols = { "git:": true, "https:": true, "git+https:": true, "http:": true, "git+http:": true }; var cache = {}; module2.exports.fromUrl = function(giturl, opts) { if (typeof giturl !== "string") return; var key = giturl + JSON.stringify(opts || {}); if (!(key in cache)) { cache[key] = fromUrl(giturl, opts); } return cache[key]; }; function fromUrl(giturl, opts) { if (giturl == null || giturl === "") return; var url4 = fixupUnqualifiedGist( isGitHubShorthand(giturl) ? "github:" + giturl : giturl ); var parsed = parseGitUrl(url4); var shortcutMatch = url4.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\/)?([^#]+)/); var matches = Object.keys(gitHosts).map(function(gitHostName) { try { var gitHostInfo = gitHosts[gitHostName]; var auth = null; if (parsed.auth && authProtocols[parsed.protocol]) { auth = parsed.auth; } var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null; var user = null; var project = null; var defaultRepresentation = null; if (shortcutMatch && shortcutMatch[1] === gitHostName) { user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2]); project = decodeURIComponent(shortcutMatch[3].replace(/\.git$/, "")); defaultRepresentation = "shortcut"; } else { if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, "") !== gitHostInfo.domain) return; if (!gitHostInfo.protocols_re.test(parsed.protocol)) return; if (!parsed.path) return; var pathmatch = gitHostInfo.pathmatch; var matched = parsed.path.match(pathmatch); if (!matched) return; if (matched[1] !== null && matched[1] !== void 0) { user = decodeURIComponent(matched[1].replace(/^:/, "")); } project = decodeURIComponent(matched[2]); defaultRepresentation = protocolToRepresentation(parsed.protocol); } return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts); } catch (ex) { if (ex instanceof URIError) { } else throw ex; } }).filter(function(gitHostInfo) { return gitHostInfo; }); if (matches.length !== 1) return; return matches[0]; } function isGitHubShorthand(arg2) { return /^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(arg2); } function fixupUnqualifiedGist(giturl) { var parsed = url3.parse(giturl); if (parsed.protocol === "gist:" && parsed.host && !parsed.path) { return parsed.protocol + "/" + parsed.host; } else { return giturl; } } function parseGitUrl(giturl) { var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/); if (!matched) { var legacy = url3.parse(giturl); if (legacy.auth && typeof url3.URL === "function") { var authmatch = giturl.match(/[^@]+@[^:/]+/); if (authmatch) { var whatwg = new url3.URL(authmatch[0]); legacy.auth = whatwg.username || ""; if (whatwg.password) legacy.auth += ":" + whatwg.password; } } return legacy; } return { protocol: "git+ssh:", slashes: true, auth: matched[1], host: matched[2], port: null, hostname: matched[2], hash: matched[4], search: null, query: null, pathname: "/" + matched[3], path: "/" + matched[3], href: "git+ssh://" + matched[1] + "@" + matched[2] + "/" + matched[3] + (matched[4] || "") }; } } }); // ../../node_modules/.pnpm/os-tmpdir@1.0.2/node_modules/os-tmpdir/index.js var require_os_tmpdir = __commonJS2({ "../../node_modules/.pnpm/os-tmpdir@1.0.2/node_modules/os-tmpdir/index.js"(exports2, module2) { "use strict"; var isWindows = process.platform === "win32"; var trailingSlashRe = isWindows ? /[^:]\\$/ : /.\/$/; module2.exports = function() { var path11; if (isWindows) { path11 = process.env.TEMP || process.env.TMP || (process.env.SystemRoot || process.env.windir) + "\\temp"; } else { path11 = process.env.TMPDIR || process.env.TMP || process.env.TEMP || "/tmp"; } if (trailingSlashRe.test(path11)) { path11 = path11.slice(0, -1); } return path11; }; } }); // ../../node_modules/.pnpm/os-homedir@1.0.2/node_modules/os-homedir/index.js var require_os_homedir = __commonJS2({ "../../node_modules/.pnpm/os-homedir@1.0.2/node_modules/os-homedir/index.js"(exports2, module2) { "use strict"; var os4 = __require("os"); function homedir5() { var env = process.env; var home2 = env.HOME; var user = env.LOGNAME || env.USER || env.LNAME || env.USERNAME; if (process.platform === "win32") { return env.USERPROFILE || env.HOMEDRIVE + env.HOMEPATH || home2 || null; } if (process.platform === "darwin") { return home2 || (user ? "/Users/" + user : null); } if (process.platform === "linux") { return home2 || (process.getuid() === 0 ? "/root" : user ? "/home/" + user : null); } return home2 || null; } module2.exports = typeof os4.homedir === "function" ? os4.homedir : homedir5; } }); // ../../node_modules/.pnpm/osenv@0.1.5/node_modules/osenv/osenv.js var require_osenv = __commonJS2({ "../../node_modules/.pnpm/osenv@0.1.5/node_modules/osenv/osenv.js"(exports2) { var isWindows = process.platform === "win32"; var path11 = __require("path"); var exec2 = __require("child_process").exec; var osTmpdir = require_os_tmpdir(); var osHomedir = require_os_homedir(); function memo(key, lookup, fallback) { var fell = false; var falling = false; exports2[key] = function(cb) { var val = lookup(); if (!val && !fell && !falling && fallback) { fell = true; falling = true; exec2(fallback, function(er, output2, stderr) { falling = false; if (er) return; val = output2.trim(); }); } exports2[key] = function(cb2) { if (cb2) process.nextTick(cb2.bind(null, null, val)); return val; }; if (cb && !falling) process.nextTick(cb.bind(null, null, val)); return val; }; } memo("user", function() { return isWindows ? process.env.USERDOMAIN + "\\" + process.env.USERNAME : process.env.USER; }, "whoami"); memo("prompt", function() { return isWindows ? process.env.PROMPT : process.env.PS1; }); memo("hostname", function() { return isWindows ? process.env.COMPUTERNAME : process.env.HOSTNAME; }, "hostname"); memo("tmpdir", function() { return osTmpdir(); }); memo("home", function() { return osHomedir(); }); memo("path", function() { return (process.env.PATH || process.env.Path || process.env.path).split(isWindows ? ";" : ":"); }); memo("editor", function() { return process.env.EDITOR || process.env.VISUAL || (isWindows ? "notepad.exe" : "vi"); }); memo("shell", function() { return isWindows ? process.env.ComSpec || "cmd" : process.env.SHELL || "bash"; }); } }); // ../../node_modules/.pnpm/npm-package-arg@6.1.0/node_modules/npm-package-arg/npa.js var require_npa = __commonJS2({ "../../node_modules/.pnpm/npm-package-arg@6.1.0/node_modules/npm-package-arg/npa.js"(exports2, module2) { "use strict"; module2.exports = npa3; module2.exports.resolve = resolve14; module2.exports.Result = Result; var url3; var HostedGit; var semver3; var path11; var validatePackageName; var osenv; var isWindows = process.platform === "win32" || global.FAKE_WINDOWS; var hasSlashes = isWindows ? /\\|[/]/ : /[/]/; var isURL2 = /^(?:git[+])?[a-z]+:/i; var isFilename = /[.](?:tgz|tar.gz|tar)$/i; function npa3(arg2, where) { let name; let spec; if (typeof arg2 === "object") { if (arg2 instanceof Result && (!where || where === arg2.where)) { return arg2; } else if (arg2.name && arg2.rawSpec) { return npa3.resolve(arg2.name, arg2.rawSpec, where || arg2.where); } else { return npa3(arg2.raw, where || arg2.where); } } const nameEndsAt = arg2[0] === "@" ? arg2.slice(1).indexOf("@") + 1 : arg2.indexOf("@"); const namePart = nameEndsAt > 0 ? arg2.slice(0, nameEndsAt) : arg2; if (isURL2.test(arg2)) { spec = arg2; } else if (namePart[0] !== "@" && (hasSlashes.test(namePart) || isFilename.test(namePart))) { spec = arg2; } else if (nameEndsAt > 0) { name = namePart; spec = arg2.slice(nameEndsAt + 1); } else { if (!validatePackageName) validatePackageName = require_validate_npm_package_name(); const valid = validatePackageName(arg2); if (valid.validForOldPackages) { name = arg2; } else { spec = arg2; } } return resolve14(name, spec, where, arg2); } var isFilespec = isWindows ? /^(?:[.]|~[/]|[/\\]|[a-zA-Z]:)/ : /^(?:[.]|~[/]|[/]|[a-zA-Z]:)/; function resolve14(name, spec, where, arg2) { const res = new Result({ raw: arg2, name, rawSpec: spec, fromArgument: arg2 != null }); if (name) res.setName(name); if (spec && (isFilespec.test(spec) || /^file:/i.test(spec))) { return fromFile(res, where); } else if (spec && /^npm:/i.test(spec)) { return fromAlias(res, where); } if (!HostedGit) HostedGit = require_hosted_git_info(); const hosted = HostedGit.fromUrl(spec, { noGitPlus: true, noCommittish: true }); if (hosted) { return fromHostedGit(res, hosted); } else if (spec && isURL2.test(spec)) { return fromURL(res); } else if (spec && (hasSlashes.test(spec) || isFilename.test(spec))) { return fromFile(res, where); } else { return fromRegistry(res); } } function invalidPackageName(name, valid) { const err = new Error(`Invalid package name "${name}": ${valid.errors.join("; ")}`); err.code = "EINVALIDPACKAGENAME"; return err; } function invalidTagName(name) { const err = new Error(`Invalid tag name "${name}": Tags may not have any characters that encodeURIComponent encodes.`); err.code = "EINVALIDTAGNAME"; return err; } function Result(opts) { this.type = opts.type; this.registry = opts.registry; this.where = opts.where; if (opts.raw == null) { this.raw = opts.name ? opts.name + "@" + opts.rawSpec : opts.rawSpec; } else { this.raw = opts.raw; } this.name = void 0; this.escapedName = void 0; this.scope = void 0; this.rawSpec = opts.rawSpec == null ? "" : opts.rawSpec; this.saveSpec = opts.saveSpec; this.fetchSpec = opts.fetchSpec; if (opts.name) this.setName(opts.name); this.gitRange = opts.gitRange; this.gitCommittish = opts.gitCommittish; this.hosted = opts.hosted; } Result.prototype = {}; Result.prototype.setName = function(name) { if (!validatePackageName) validatePackageName = require_validate_npm_package_name(); const valid = validatePackageName(name); if (!valid.validForOldPackages) { throw invalidPackageName(name, valid); } this.name = name; this.scope = name[0] === "@" ? name.slice(0, name.indexOf("/")) : void 0; this.escapedName = name.replace("/", "%2f"); return this; }; Result.prototype.toString = function() { const full = []; if (this.name != null && this.name !== "") full.push(this.name); const spec = this.saveSpec || this.fetchSpec || this.rawSpec; if (spec != null && spec !== "") full.push(spec); return full.length ? full.join("@") : this.raw; }; Result.prototype.toJSON = function() { const result = Object.assign({}, this); delete result.hosted; return result; }; function setGitCommittish(res, committish) { if (committish != null && committish.length >= 7 && committish.slice(0, 7) === "semver:") { res.gitRange = decodeURIComponent(committish.slice(7)); res.gitCommittish = null; } else { res.gitCommittish = committish === "" ? null : committish; } return res; } var isAbsolutePath = /^[/]|^[A-Za-z]:/; function resolvePath2(where, spec) { if (isAbsolutePath.test(spec)) return spec; if (!path11) path11 = __require("path"); return path11.resolve(where, spec); } function isAbsolute2(dir) { if (dir[0] === "/") return true; if (/^[A-Za-z]:/.test(dir)) return true; return false; } function fromFile(res, where) { if (!where) where = process.cwd(); res.type = isFilename.test(res.rawSpec) ? "file" : "directory"; res.where = where; const spec = res.rawSpec.replace(/\\/g, "/").replace(/^file:[/]*([A-Za-z]:)/, "$1").replace(/^file:(?:[/]*([~./]))?/, "$1"); if (/^~[/]/.test(spec)) { if (!osenv) osenv = require_osenv(); res.fetchSpec = resolvePath2(osenv.home(), spec.slice(2)); res.saveSpec = "file:" + spec; } else { res.fetchSpec = resolvePath2(where, spec); if (isAbsolute2(spec)) { res.saveSpec = "file:" + spec; } else { if (!path11) path11 = __require("path"); res.saveSpec = "file:" + path11.relative(where, res.fetchSpec); } } return res; } function fromHostedGit(res, hosted) { res.type = "git"; res.hosted = hosted; res.saveSpec = hosted.toString({ noGitPlus: false, noCommittish: false }); res.fetchSpec = hosted.getDefaultRepresentation() === "shortcut" ? null : hosted.toString(); return setGitCommittish(res, hosted.committish); } function unsupportedURLType(protocol, spec) { const err = new Error(`Unsupported URL Type "${protocol}": ${spec}`); err.code = "EUNSUPPORTEDPROTOCOL"; return err; } function matchGitScp(spec) { const matched = spec.match(/^git\+ssh:\/\/([^:#]+:[^#]+(?:\.git)?)(?:#(.*))?$/i); return matched && !matched[1].match(/:[0-9]+\/?.*$/i) && { fetchSpec: matched[1], gitCommittish: matched[2] == null ? null : matched[2] }; } function fromURL(res) { if (!url3) url3 = __require("url"); const urlparse = url3.parse(res.rawSpec); res.saveSpec = res.rawSpec; switch (urlparse.protocol) { case "git:": case "git+http:": case "git+https:": case "git+rsync:": case "git+ftp:": case "git+file:": case "git+ssh:": res.type = "git"; const match = urlparse.protocol === "git+ssh:" && matchGitScp(res.rawSpec); if (match) { setGitCommittish(res, match.gitCommittish); res.fetchSpec = match.fetchSpec; } else { setGitCommittish(res, urlparse.hash != null ? urlparse.hash.slice(1) : ""); urlparse.protocol = urlparse.protocol.replace(/^git[+]/, ""); delete urlparse.hash; res.fetchSpec = url3.format(urlparse); } break; case "http:": case "https:": res.type = "remote"; res.fetchSpec = res.saveSpec; break; default: throw unsupportedURLType(urlparse.protocol, res.rawSpec); } return res; } function fromAlias(res, where) { const subSpec = npa3(res.rawSpec.substr(4), where); if (subSpec.type === "alias") { throw new Error("nested aliases not supported"); } if (!subSpec.registry) { throw new Error("aliases only work for registry deps"); } res.subSpec = subSpec; res.registry = true; res.type = "alias"; res.saveSpec = null; res.fetchSpec = null; return res; } function fromRegistry(res) { res.registry = true; const spec = res.rawSpec === "" ? "latest" : res.rawSpec; res.saveSpec = null; res.fetchSpec = spec; if (!semver3) semver3 = require_semver(); const version2 = semver3.valid(spec, true); const range = semver3.validRange(spec, true); if (version2) { res.type = "version"; } else if (range) { res.type = "range"; } else { if (encodeURIComponent(spec) !== spec) { throw invalidTagName(spec); } res.type = "tag"; } return res; } } }); // src/util/build/static-builder.ts var static_builder_exports = {}; __export3(static_builder_exports, { build: () => build, shouldServe: () => shouldServe, version: () => version }); import { shouldServe as defaultShouldServe } from "@vercel/build-utils"; var import_minimatch, version, build, shouldServe; var init_static_builder = __esm({ "src/util/build/static-builder.ts"() { "use strict"; import_minimatch = __toESM3(require_minimatch2(), 1); version = 2; build = async ({ entrypoint, files, config: config2 }) => { const output2 = {}; const outputDirectory = config2.zeroConfig ? config2.outputDirectory : ""; for (let [filename, fileFsRef] of Object.entries(files)) { if (filename.startsWith(".git/") || filename === "vercel.json" || filename === ".vercelignore" || filename === "now.json" || filename === ".nowignore" || filename.startsWith(".env")) { continue; } if (entrypoint && !(entrypoint === filename || (0, import_minimatch.default)(filename, entrypoint, { dot: true }))) { continue; } if (outputDirectory) { const outputMatch = outputDirectory + "/"; if (filename.startsWith(outputMatch)) { filename = filename.slice(outputMatch.length); } } output2[filename] = fileFsRef; } return { output: output2 }; }; shouldServe = (_opts) => { const opts = { ..._opts }; const { config: { zeroConfig, outputDirectory } } = opts; if (zeroConfig && outputDirectory) { opts.entrypoint = `${outputDirectory}/${opts.entrypoint}`; opts.requestPath = `${outputDirectory}/${opts.requestPath}`; } return defaultShouldServe(opts); }; } }); // src/util/build/import-builders.ts import { URL as URL7 } from "url"; import { dirname as dirname5, join as join11 } from "path"; import { createRequire } from "module"; async function importBuilders(builderSpecs, cwd) { const buildersDir = join11(cwd, VERCEL_DIR, "builders"); let importResult = await resolveBuilders(buildersDir, builderSpecs); if ("buildersToAdd" in importResult) { const installResult = await installBuilders( buildersDir, importResult.buildersToAdd ); importResult = await resolveBuilders( buildersDir, builderSpecs, installResult.resolvedSpecs ); if ("buildersToAdd" in importResult) { throw new Error("Something went wrong!"); } } return importResult.builders; } async function resolveBuilders(buildersDir, builderSpecs, resolvedSpecs) { const builders = /* @__PURE__ */ new Map(); const buildersToAdd = /* @__PURE__ */ new Set(); for (const spec of builderSpecs) { const resolvedSpec = resolvedSpecs?.get(spec) || spec; const parsed = (0, import_npm_package_arg.default)(resolvedSpec); const { name } = parsed; if (!name) { buildersToAdd.add(spec); continue; } if ((0, import_fs_detectors2.isStaticRuntime)(name)) { builders.set(name, { builder: static_builder_exports, pkg: { name }, path: "", pkgPath: "" }); continue; } try { let pkgPath; let builderPkg; try { pkgPath = join11(buildersDir, "node_modules", name, "package.json"); builderPkg = await (0, import_fs_extra11.readJSON)(pkgPath); } catch (error3) { if (!(0, import_error_utils14.isErrnoException)(error3)) { throw error3; } if (error3.code !== "ENOENT") { throw error3; } pkgPath = require_.resolve(`${name}/package.json`, { paths: [__dirname] }); builderPkg = await (0, import_fs_extra11.readJSON)(pkgPath); } if (!builderPkg || !pkgPath) { throw new Error(`Failed to load \`package.json\` for "${name}"`); } if (typeof builderPkg.version !== "string") { throw new Error( `\`package.json\` for "${name}" does not contain a "version" field` ); } if (parsed.type === "version" && parsed.rawSpec !== builderPkg.version) { output_manager_default.debug( `Installed version "${name}@${builderPkg.version}" does not match "${parsed.rawSpec}"` ); buildersToAdd.add(spec); continue; } if (parsed.type === "range" && !(0, import_semver2.satisfies)(builderPkg.version, parsed.rawSpec)) { output_manager_default.debug( `Installed version "${name}@${builderPkg.version}" is not compatible with "${parsed.rawSpec}"` ); buildersToAdd.add(spec); continue; } const path11 = join11(dirname5(pkgPath), builderPkg.main || "index.js"); const builder = require_(path11); builders.set(spec, { builder, pkg: { name, ...builderPkg }, path: path11, pkgPath }); output_manager_default.debug(`Imported Builder "${name}" from "${dirname5(pkgPath)}"`); } catch (err) { if (err.code === "MODULE_NOT_FOUND" && !resolvedSpecs) { output_manager_default.debug(`Failed to import "${name}": ${err}`); buildersToAdd.add(spec); } else { err.message = `Importing "${name}": ${err.message}`; throw err; } } } if (buildersToAdd.size > 0) { return { buildersToAdd }; } return { builders }; } async function installBuilders(buildersDir, buildersToAdd) { const resolvedSpecs = /* @__PURE__ */ new Map(); const buildersPkgPath = join11(buildersDir, "package.json"); try { const emptyPkgJson = { private: true, license: "UNLICENSED" }; await (0, import_fs_extra11.outputJSON)(buildersPkgPath, emptyPkgJson, { flag: "wx" }); } catch (err) { if (err.code !== "EEXIST") throw err; } output_manager_default.log( `Installing ${(0, import_pluralize4.default)("Builder", buildersToAdd.size)}: ${Array.from( buildersToAdd ).join(", ")}` ); try { const { stderr } = await (0, import_execa3.default)( "npm", ["install", "@vercel/build-utils", ...buildersToAdd], { cwd: buildersDir, stdio: "pipe", reject: true } ); stderr.split("/\r?\n/").filter((line) => line.includes("npm WARN deprecated")).forEach((line) => { output_manager_default.warn(line); }); } catch (err) { if ((0, import_error_utils14.isError)(err)) { const execaMessage = err.message; let message2 = getErrorMessage(err, execaMessage); if (execaMessage.startsWith("Command failed with ENOENT")) { message2 = `Please install ${cmd("npm")} before continuing`; } else { const notFound = /GET (.*) - Not found/.exec(message2); if (notFound) { const url3 = new URL7(notFound[1]); const packageName2 = decodeURIComponent(url3.pathname.slice(1)); message2 = `The package ${code( packageName2 )} is not published on the npm registry`; } } err.message = message2; err.link = "https://vercel.link/builder-dependencies-install-failed"; } throw err; } const nowScopePath = join11(buildersDir, "node_modules/@now"); await (0, import_fs_extra11.mkdirp)(nowScopePath); try { await (0, import_fs_extra11.symlink)("../@vercel/build-utils", join11(nowScopePath, "build-utils")); } catch (err) { if (!(0, import_error_utils14.isErrnoException)(err) || err.code !== "EEXIST") { throw err; } } const buildersPkg = await readJSONFile(buildersPkgPath); if (buildersPkg instanceof CantParseJSONFile) throw buildersPkg; if (!buildersPkg) { throw new Error(`Failed to load "${buildersPkgPath}"`); } for (const spec of buildersToAdd) { for (const [name, version2] of Object.entries( buildersPkg.dependencies || {} )) { if (version2 === spec) { output_manager_default.debug(`Resolved Builder spec "${spec}" to name "${name}"`); resolvedSpecs.set(spec, name); } } } return { resolvedSpecs }; } function getErrorMessage(err, execaMessage) { if (!err || !("stderr" in err)) { return execaMessage; } if (typeof err.stderr === "string") { return err.stderr; } return execaMessage; } var import_pluralize4, import_npm_package_arg, import_semver2, import_fs_extra11, import_fs_detectors2, import_execa3, import_error_utils14, require_; var init_import_builders = __esm({ "src/util/build/import-builders.ts"() { "use strict"; import_pluralize4 = __toESM3(require_pluralize(), 1); import_npm_package_arg = __toESM3(require_npa(), 1); import_semver2 = __toESM3(require_semver(), 1); import_fs_extra11 = __toESM3(require_lib(), 1); import_fs_detectors2 = __toESM3(require_dist8(), 1); import_execa3 = __toESM3(require_execa(), 1); init_static_builder(); init_link2(); init_read_json_file(); init_errors_ts(); import_error_utils14 = __toESM3(require_dist2(), 1); init_cmd(); init_code(); init_output_manager(); require_ = createRequire(__filename); } }); // src/util/build/monorepo.ts import { relative as relative3, basename as basename5 } from "path"; import { debug } from "@vercel/build-utils"; async function setMonorepoDefaultSettings(cwd, workPath, projectSettings) { const localFileSystem = new import_fs_detectors3.LocalFileSystemDetector(cwd); const projectName = basename5(workPath); const relativeToRoot = relative3(workPath, cwd); const setCommand = (command, value) => { if (projectSettings[command]) { debug( `Skipping auto-assignment of ${command} as it is already set via project settings or configuration overrides.` ); } else { projectSettings[command] = value; } }; try { const result = await (0, import_fs_detectors3.getMonorepoDefaultSettings)( projectName, relative3(cwd, workPath), relativeToRoot, localFileSystem ); if (result === null) { return; } projectSettings.monorepoManager = result.monorepoManager; const { monorepoManager, ...commands2 } = result; output_manager_default.log( `Detected ${(0, import_title3.default)(monorepoManager)}. Adjusting default settings...` ); if (commands2.buildCommand) { setCommand("buildCommand", commands2.buildCommand); } if (commands2.installCommand) { setCommand("installCommand", commands2.installCommand); } if (commands2.commandForIgnoringBuildStep) { setCommand( "commandForIgnoringBuildStep", commands2.commandForIgnoringBuildStep ); } } catch (error3) { if (error3 instanceof import_fs_detectors3.MissingBuildPipeline || error3 instanceof import_fs_detectors3.MissingBuildTarget) { output_manager_default.warn(`${error3.message} Skipping automatic setting assignment.`); return; } throw error3; } } var import_fs_detectors3, import_title3; var init_monorepo = __esm({ "src/util/build/monorepo.ts"() { "use strict"; import_fs_detectors3 = __toESM3(require_dist8(), 1); import_title3 = __toESM3(require_lib4(), 1); init_output_manager(); } }); // src/util/build/scrub-argv.ts function scrubArgv(argv) { const clonedArgv = [...argv]; const tokenRE = /^(-[A-Za-z]*[bet]|--(?:build-env|env|token))(=.*)?$/; for (let i = 0, len = clonedArgv.length; i < len; i++) { const m = clonedArgv[i].match(tokenRE); if (m?.[2]) { clonedArgv[i] = `${m[1]}=REDACTED`; } else if (m && i + 1 < len) { clonedArgv[++i] = "REDACTED"; } } return clonedArgv; } var init_scrub_argv = __esm({ "src/util/build/scrub-argv.ts"() { "use strict"; } }); // src/util/build/sort-builders.ts function sortBuilders(builds) { const frontendRuntimeSet2 = new Set( import_frameworks2.frameworkList.map((f) => f.useRuntime?.use || "@vercel/static-build") ); frontendRuntimeSet2.delete("@vercel/python"); frontendRuntimeSet2.delete("@vercel/ruby"); frontendRuntimeSet2.delete("@vercel/rust"); const toNumber = (build2) => build2.use === "@vercel/python" || build2.use === "@vercel/ruby" || build2.use === "@vercel/rust" ? 1 : frontendRuntimeSet2.has(build2.use) ? 0 : 2; return builds.sort((build1, build2) => { return toNumber(build1) - toNumber(build2); }); } var import_frameworks2; var init_sort_builders = __esm({ "src/util/build/sort-builders.ts"() { "use strict"; import_frameworks2 = __toESM3(require_frameworks(), 1); } }); // ../../node_modules/.pnpm/mime-db@1.40.0/node_modules/mime-db/db.json var require_db = __commonJS2({ "../../node_modules/.pnpm/mime-db@1.40.0/node_modules/mime-db/db.json"(exports2, module2) { module2.exports = { "application/1d-interleaved-parityfec": { source: "iana" }, "application/3gpdash-qoe-report+xml": { source: "iana", compressible: true }, "application/3gpp-ims+xml": { source: "iana", compressible: true }, "application/a2l": { 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/aml": { source: "iana" }, "application/andrew-inset": { source: "iana", extensions: ["ez"] }, "application/applefile": { source: "iana" }, "application/applixware": { source: "apache", extensions: ["aw"] }, "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 }, "application/atomicmail": { source: "iana" }, "application/atomsvc+xml": { source: "iana", compressible: true, extensions: ["atomsvc"] }, "application/atsc-dwd+xml": { source: "iana", compressible: true }, "application/atsc-held+xml": { source: "iana", compressible: true }, "application/atsc-rsat+xml": { source: "iana", compressible: true }, "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", compressible: true }, "application/calendar+json": { source: "iana", compressible: true }, "application/calendar+xml": { source: "iana", compressible: true }, "application/call-completion": { source: "iana" }, "application/cals-1840": { source: "iana" }, "application/cbor": { 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 }, "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/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 }, "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/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/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: ["ecma", "es"] }, "application/edi-consent": { source: "iana" }, "application/edi-x12": { source: "iana", compressible: false }, "application/edifact": { source: "iana", compressible: false }, "application/efi": { source: "iana" }, "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 }, "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/fastinfoset": { source: "iana" }, "application/fastsoap": { source: "iana" }, "application/fdt+xml": { source: "iana", compressible: true }, "application/fhir+json": { source: "iana", compressible: true }, "application/fhir+xml": { source: "iana", compressible: true }, "application/fido.trusted-apps+json": { compressible: true }, "application/fits": { 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", 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 }, "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/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 }, "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/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": { 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 }, "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/mmt-aei+xml": { source: "iana", compressible: true }, "application/mmt-usd+xml": { source: "iana", compressible: true }, "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", compressible: true }, "application/msc-mixer+xml": { source: "iana", compressible: true }, "application/msword": { source: "iana", compressible: false, extensions: ["doc", "dot"] }, "application/mud+json": { source: "iana", compressible: true }, "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" }, "application/news-groupinfo": { source: "iana" }, "application/news-transmission": { source: "iana" }, "application/nlsml+xml": { source: "iana", compressible: true }, "application/node": { source: "iana" }, "application/nss": { 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/oscore": { source: "iana" }, "application/oxps": { source: "iana", extensions: ["oxps"] }, "application/p2p-overlay+xml": { source: "iana", compressible: true }, "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" }, "application/pgp-signature": { source: "iana", extensions: ["asc", "sig"] }, "application/pics-rules": { source: "apache", extensions: ["prf"] }, "application/pidf+xml": { source: "iana", compressible: true }, "application/pidf-diff+xml": { source: "iana", 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", 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 }, "application/prs.alvestrand.titrax-sheet": { source: "iana" }, "application/prs.cww": { source: "iana", extensions: ["cww"] }, "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/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 }, "application/route-s-tsid+xml": { source: "iana", compressible: true }, "application/route-usd+xml": { source: "iana", compressible: true }, "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/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 }, "application/senml-exi": { source: "iana" }, "application/sensml+cbor": { source: "iana" }, "application/sensml+json": { source: "iana", compressible: true }, "application/sensml+xml": { source: "iana", compressible: true }, "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/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/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/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/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/trickle-ice-sdpfrag": { source: "iana" }, "application/trig": { source: "iana" }, "application/ttml+xml": { source: "iana", compressible: true }, "application/tve-trigger": { source: "iana" }, "application/tzif": { source: "iana" }, "application/tzif-leap": { source: "iana" }, "application/ulpfec": { source: "iana" }, "application/urc-grpsheet+xml": { source: "iana", compressible: true }, "application/urc-ressheet+xml": { source: "iana", compressible: true }, "application/urc-targetdesc+xml": { source: "iana", compressible: true }, "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 }, "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.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.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-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.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.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.modca": { source: "iana" }, "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.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.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.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: ["keynote"] }, "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 }, "application/vnd.balsamiq.bmpr": { source: "iana" }, "application/vnd.banana-accounting": { 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.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.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.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.d2l.coursepackage1p0+zip": { source: "iana", compressible: false }, "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.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.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.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.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.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.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.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.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.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.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.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.las+json": { source: "iana", compressible: true }, "application/vnd.las.las+xml": { source: "iana", compressible: true, extensions: ["lasxml"] }, "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.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" }, "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.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.ncd.control": { source: "iana" }, "application/vnd.ncd.reference": { source: "iana" }, "application/vnd.nearst.inv+json": { source: "iana", compressible: true }, "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 }, "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.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+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", compressible: true }, "application/vnd.omads-file+xml": { source: "iana", compressible: true }, "application/vnd.omads-folder+xml": { source: "iana", 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 }, "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 }, "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" }, "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.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.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.sema": { source: "iana", extensions: ["sema"] }, "application/vnd.semd": { source: "iana", extensions: ["semd"] }, "application/vnd.semf": { source: "iana", extensions: ["semf"] }, "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.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.software602.filler.form+xml": { source: "iana", compressible: true }, "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.symbian.install": { source: "apache", extensions: ["sis", "sisx"] }, "application/vnd.syncml+xml": { source: "iana", compressible: true, extensions: ["xsm"] }, "application/vnd.syncml.dm+wbxml": { source: "iana", extensions: ["bdm"] }, "application/vnd.syncml.dm+xml": { source: "iana", 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", compressible: true }, "application/vnd.syncml.dmtnds+wbxml": { source: "iana" }, "application/vnd.syncml.dmtnds+xml": { source: "iana", 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.veryant.thin": { 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", 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.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": { compressible: true, extensions: ["wasm"] }, "application/watcherinfo+xml": { source: "iana", compressible: true }, "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-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-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-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: "apache", extensions: ["der", "crt", "pem"] }, "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 }, "application/xcap-caps+xml": { source: "iana", compressible: true }, "application/xcap-diff+xml": { source: "iana", compressible: true, extensions: ["xdf"] }, "application/xcap-el+xml": { source: "iana", compressible: true }, "application/xcap-error+xml": { source: "iana", compressible: true }, "application/xcap-ns+xml": { source: "iana", compressible: true }, "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 }, "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: ["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" }, "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/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/midi": { source: "apache", extensions: ["mid", "midi", "kar", "rmi"] }, "audio/mobile-xmf": { source: "iana" }, "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"] }, "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/silk": { source: "apache", extensions: ["sil"] }, "audio/smv": { source: "iana" }, "audio/smv-qcp": { source: "iana" }, "audio/smv0": { 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/tone": { 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", 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" }, "image/avcs": { source: "iana" }, "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/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/jpm": { source: "iana", compressible: false, extensions: ["jpm"] }, "image/jpx": { source: "iana", compressible: false, extensions: ["jpx", "jpf"] }, "image/jxr": { source: "iana", extensions: ["jxr"] }, "image/ktx": { source: "iana", extensions: ["ktx"] }, "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", extensions: ["ico"] }, "image/vnd.mix": { source: "iana" }, "image/vnd.mozilla.apng": { source: "iana" }, "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.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/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/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.rosette.annotated-data-model": { source: "iana" }, "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", compressible: false }, "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/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/fwdred": { 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", compressible: true, extensions: ["n3"] }, "text/parameters": { source: "iana" }, "text/parityfec": { source: "iana" }, "text/plain": { source: "iana", compressible: true, extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] }, "text/provenance-notation": { source: "iana" }, "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/shex": { extensions: ["shex"] }, "text/slim": { extensions: ["slim", "slm"] }, "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" }, "text/vnd.dmclientscript": { source: "iana" }, "text/vnd.dvb.subtitle": { source: "iana", extensions: ["sub"] }, "text/vnd.esmertec.theme-descriptor": { 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.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.sun.j2me.app-descriptor": { source: "iana", extensions: ["jad"] }, "text/vnd.trolltech.linguist": { source: "iana" }, "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": { 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": { 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/bmpeg": { source: "iana" }, "video/bt656": { source: "iana" }, "video/celb": { source: "iana" }, "video/dv": { source: "iana" }, "video/encaprtp": { 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" }, "video/jpeg": { source: "iana", extensions: ["jpgv"] }, "video/jpeg2000": { source: "iana" }, "video/jpm": { source: "apache", extensions: ["jpm", "jpgm"] }, "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/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/vp8": { 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 } }; } }); // ../../node_modules/.pnpm/mime-db@1.40.0/node_modules/mime-db/index.js var require_mime_db = __commonJS2({ "../../node_modules/.pnpm/mime-db@1.40.0/node_modules/mime-db/index.js"(exports2, module2) { module2.exports = require_db(); } }); // ../../node_modules/.pnpm/mime-types@2.1.24/node_modules/mime-types/index.js var require_mime_types = __commonJS2({ "../../node_modules/.pnpm/mime-types@2.1.24/node_modules/mime-types/index.js"(exports2) { "use strict"; var db = require_mime_db(); var extname3 = __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 = contentType2; 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 contentType2(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(path11) { if (!path11 || typeof path11 !== "string") { return false; } var extension2 = extname3("x." + path11).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; } }); } } }); // ../../node_modules/.pnpm/promisepipe@3.0.0/node_modules/promisepipe/index.js var require_promisepipe = __commonJS2({ "../../node_modules/.pnpm/promisepipe@3.0.0/node_modules/promisepipe/index.js"(exports2, module2) { "use strict"; var StreamError = class extends Error { constructor(err, source) { const message2 = err && err.message || err; super(message2); this.source = source; this.originalError = err; } }; var events = ["error", "end", "close", "finish"]; function cleanupEventHandlers(stream, listener) { events.map((e2) => stream.removeListener(e2, listener)); } function streamPromise(stream, state) { if (stream === process.stdout || stream === process.stderr) { return Promise.resolve(stream); } const isReadable = stream.readable || typeof stream._read === "function"; function on(evt) { function executor(resolve14, reject) { const fn2 = evt === "error" ? (err) => reject(new StreamError(err, stream)) : () => { if (isReadable && evt === "finish" && !state.error) { return; } cleanupEventHandlers(stream, fn2); resolve14(stream); }; stream.on(evt, fn2); } return new Promise(executor); } return Promise.race(events.map(on)); } function promisePipe(stream) { let i = arguments.length; const streams = []; while (i--) streams[i] = arguments[i]; const allStreams = streams.reduce((current, next) => current.concat(next), []); allStreams.reduce((current, next) => current.pipe(next)); return allStreamsDone(streams); } function allStreamsDone(allStreams) { let state = {}; let firstRejection; return Promise.all(allStreams.map((stream) => streamPromise(stream, state).catch((e2) => { if (!firstRejection) { firstRejection = e2; state.error = true; allStreams.forEach((stream2) => { if (stream2 !== process.stdout && stream2 !== process.stderr) { stream2.destroy(); } }); } }))).then((allResults) => { if (firstRejection) { throw firstRejection; } return allResults; }); } module2.exports = Object.assign(promisePipe, { __esModule: true, default: promisePipe, justPromise: (streams) => allStreamsDone(streams), StreamError }); } }); // src/util/build/merge.ts import { join as join12, relative as relative4 } from "path"; async function merge(source, destination, ignoreFilter, sourceRoot) { const root = sourceRoot || source; if (ignoreFilter) { const relPath = relative4(root, source); if (relPath && !ignoreFilter(relPath)) { await (0, import_fs_extra12.remove)(source); return; } } const destStat = await (0, import_fs_extra12.stat)(destination).catch( (err) => err ); if ((0, import_error_utils15.isErrnoException)(destStat)) { if (destStat.code === "ENOENT") { await (0, import_fs_extra12.move)(source, destination); return; } throw destStat; } else if (destStat.isDirectory()) { const contents = await (0, import_fs_extra12.readdir)( source ).catch((err) => err); if ((0, import_error_utils15.isErrnoException)(contents)) { if (contents.code !== "ENOTDIR") { throw contents; } } else { await Promise.all( contents.map( (name) => merge(join12(source, name), join12(destination, name), ignoreFilter, root) ) ); await (0, import_fs_extra12.rmdir)(source); return; } } await (0, import_fs_extra12.remove)(destination); await (0, import_fs_extra12.move)(source, destination); } var import_error_utils15, import_fs_extra12; var init_merge = __esm({ "src/util/build/merge.ts"() { "use strict"; import_error_utils15 = __toESM3(require_dist2(), 1); import_fs_extra12 = __toESM3(require_lib(), 1); } }); // ../../node_modules/.pnpm/pend@1.2.0/node_modules/pend/index.js var require_pend = __commonJS2({ "../../node_modules/.pnpm/pend@1.2.0/node_modules/pend/index.js"(exports2, module2) { module2.exports = Pend; function Pend() { this.pending = 0; this.max = Infinity; this.listeners = []; this.waiting = []; this.error = null; } Pend.prototype.go = function(fn2) { if (this.pending < this.max) { pendGo(this, fn2); } else { this.waiting.push(fn2); } }; Pend.prototype.wait = function(cb) { if (this.pending === 0) { cb(this.error); } else { this.listeners.push(cb); } }; Pend.prototype.hold = function() { return pendHold(this); }; function pendHold(self2) { self2.pending += 1; var called = false; return onCb; function onCb(err) { if (called) throw new Error("callback called twice"); called = true; self2.error = self2.error || err; self2.pending -= 1; if (self2.waiting.length > 0 && self2.pending < self2.max) { pendGo(self2, self2.waiting.shift()); } else if (self2.pending === 0) { var listeners = self2.listeners; self2.listeners = []; listeners.forEach(cbListener); } } function cbListener(listener) { listener(self2.error); } } function pendGo(self2, fn2) { fn2(pendHold(self2)); } } }); // ../../node_modules/.pnpm/fd-slicer@1.1.0/node_modules/fd-slicer/index.js var require_fd_slicer = __commonJS2({ "../../node_modules/.pnpm/fd-slicer@1.1.0/node_modules/fd-slicer/index.js"(exports2) { var fs15 = __require("fs"); var util = __require("util"); var stream = __require("stream"); var Readable = stream.Readable; var Writable = stream.Writable; var PassThrough = stream.PassThrough; var Pend = require_pend(); var EventEmitter2 = __require("events").EventEmitter; exports2.createFromBuffer = createFromBuffer; exports2.createFromFd = createFromFd; exports2.BufferSlicer = BufferSlicer; exports2.FdSlicer = FdSlicer; util.inherits(FdSlicer, EventEmitter2); function FdSlicer(fd, options) { options = options || {}; EventEmitter2.call(this); this.fd = fd; this.pend = new Pend(); this.pend.max = 1; this.refCount = 0; this.autoClose = !!options.autoClose; } FdSlicer.prototype.read = function(buffer, offset, length, position, callback) { var self2 = this; self2.pend.go(function(cb) { fs15.read(self2.fd, buffer, offset, length, position, function(err, bytesRead, buffer2) { cb(); callback(err, bytesRead, buffer2); }); }); }; FdSlicer.prototype.write = function(buffer, offset, length, position, callback) { var self2 = this; self2.pend.go(function(cb) { fs15.write(self2.fd, buffer, offset, length, position, function(err, written, buffer2) { cb(); callback(err, written, buffer2); }); }); }; FdSlicer.prototype.createReadStream = function(options) { return new ReadStream(this, options); }; FdSlicer.prototype.createWriteStream = function(options) { return new WriteStream(this, options); }; FdSlicer.prototype.ref = function() { this.refCount += 1; }; FdSlicer.prototype.unref = function() { var self2 = this; self2.refCount -= 1; if (self2.refCount > 0) return; if (self2.refCount < 0) throw new Error("invalid unref"); if (self2.autoClose) { fs15.close(self2.fd, onCloseDone); } function onCloseDone(err) { if (err) { self2.emit("error", err); } else { self2.emit("close"); } } }; util.inherits(ReadStream, Readable); function ReadStream(context, options) { options = options || {}; Readable.call(this, options); this.context = context; this.context.ref(); this.start = options.start || 0; this.endOffset = options.end; this.pos = this.start; this.destroyed = false; } ReadStream.prototype._read = function(n) { var self2 = this; if (self2.destroyed) return; var toRead = Math.min(self2._readableState.highWaterMark, n); if (self2.endOffset != null) { toRead = Math.min(toRead, self2.endOffset - self2.pos); } if (toRead <= 0) { self2.destroyed = true; self2.push(null); self2.context.unref(); return; } self2.context.pend.go(function(cb) { if (self2.destroyed) return cb(); var buffer = new Buffer(toRead); fs15.read(self2.context.fd, buffer, 0, toRead, self2.pos, function(err, bytesRead) { if (err) { self2.destroy(err); } else if (bytesRead === 0) { self2.destroyed = true; self2.push(null); self2.context.unref(); } else { self2.pos += bytesRead; self2.push(buffer.slice(0, bytesRead)); } cb(); }); }); }; ReadStream.prototype.destroy = function(err) { if (this.destroyed) return; err = err || new Error("stream destroyed"); this.destroyed = true; this.emit("error", err); this.context.unref(); }; util.inherits(WriteStream, Writable); function WriteStream(context, options) { options = options || {}; Writable.call(this, options); this.context = context; this.context.ref(); this.start = options.start || 0; this.endOffset = options.end == null ? Infinity : +options.end; this.bytesWritten = 0; this.pos = this.start; this.destroyed = false; this.on("finish", this.destroy.bind(this)); } WriteStream.prototype._write = function(buffer, encoding, callback) { var self2 = this; if (self2.destroyed) return; if (self2.pos + buffer.length > self2.endOffset) { var err = new Error("maximum file length exceeded"); err.code = "ETOOBIG"; self2.destroy(); callback(err); return; } self2.context.pend.go(function(cb) { if (self2.destroyed) return cb(); fs15.write(self2.context.fd, buffer, 0, buffer.length, self2.pos, function(err2, bytes9) { if (err2) { self2.destroy(); cb(); callback(err2); } else { self2.bytesWritten += bytes9; self2.pos += bytes9; self2.emit("progress"); cb(); callback(); } }); }); }; WriteStream.prototype.destroy = function() { if (this.destroyed) return; this.destroyed = true; this.context.unref(); }; util.inherits(BufferSlicer, EventEmitter2); function BufferSlicer(buffer, options) { EventEmitter2.call(this); options = options || {}; this.refCount = 0; this.buffer = buffer; this.maxChunkSize = options.maxChunkSize || Number.MAX_SAFE_INTEGER; } BufferSlicer.prototype.read = function(buffer, offset, length, position, callback) { var end = position + length; var delta = end - this.buffer.length; var written = delta > 0 ? delta : length; this.buffer.copy(buffer, offset, position, end); setImmediate(function() { callback(null, written); }); }; BufferSlicer.prototype.write = function(buffer, offset, length, position, callback) { buffer.copy(this.buffer, position, offset, offset + length); setImmediate(function() { callback(null, length, buffer); }); }; BufferSlicer.prototype.createReadStream = function(options) { options = options || {}; var readStream = new PassThrough(options); readStream.destroyed = false; readStream.start = options.start || 0; readStream.endOffset = options.end; readStream.pos = readStream.endOffset || this.buffer.length; var entireSlice = this.buffer.slice(readStream.start, readStream.pos); var offset = 0; while (true) { var nextOffset = offset + this.maxChunkSize; if (nextOffset >= entireSlice.length) { if (offset < entireSlice.length) { readStream.write(entireSlice.slice(offset, entireSlice.length)); } break; } readStream.write(entireSlice.slice(offset, nextOffset)); offset = nextOffset; } readStream.end(); readStream.destroy = function() { readStream.destroyed = true; }; return readStream; }; BufferSlicer.prototype.createWriteStream = function(options) { var bufferSlicer = this; options = options || {}; var writeStream = new Writable(options); writeStream.start = options.start || 0; writeStream.endOffset = options.end == null ? this.buffer.length : +options.end; writeStream.bytesWritten = 0; writeStream.pos = writeStream.start; writeStream.destroyed = false; writeStream._write = function(buffer, encoding, callback) { if (writeStream.destroyed) return; var end = writeStream.pos + buffer.length; if (end > writeStream.endOffset) { var err = new Error("maximum file length exceeded"); err.code = "ETOOBIG"; writeStream.destroyed = true; callback(err); return; } buffer.copy(bufferSlicer.buffer, writeStream.pos, 0, buffer.length); writeStream.bytesWritten += buffer.length; writeStream.pos = end; writeStream.emit("progress"); callback(); }; writeStream.destroy = function() { writeStream.destroyed = true; }; return writeStream; }; BufferSlicer.prototype.ref = function() { this.refCount += 1; }; BufferSlicer.prototype.unref = function() { this.refCount -= 1; if (this.refCount < 0) { throw new Error("invalid unref"); } }; function createFromBuffer(buffer, options) { return new BufferSlicer(buffer, options); } function createFromFd(fd, options) { return new FdSlicer(fd, options); } } }); // ../../node_modules/.pnpm/buffer-crc32@0.2.13/node_modules/buffer-crc32/index.js var require_buffer_crc32 = __commonJS2({ "../../node_modules/.pnpm/buffer-crc32@0.2.13/node_modules/buffer-crc32/index.js"(exports2, module2) { var Buffer2 = __require("buffer").Buffer; var CRC_TABLE = [ 0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918e3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117 ]; if (typeof Int32Array !== "undefined") { CRC_TABLE = new Int32Array(CRC_TABLE); } function ensureBuffer(input) { if (Buffer2.isBuffer(input)) { return input; } var hasNewBufferAPI = typeof Buffer2.alloc === "function" && typeof Buffer2.from === "function"; if (typeof input === "number") { return hasNewBufferAPI ? Buffer2.alloc(input) : new Buffer2(input); } else if (typeof input === "string") { return hasNewBufferAPI ? Buffer2.from(input) : new Buffer2(input); } else { throw new Error("input must be buffer, number, or string, received " + typeof input); } } function bufferizeInt(num) { var tmp = ensureBuffer(4); tmp.writeInt32BE(num, 0); return tmp; } function _crc32(buf, previous) { buf = ensureBuffer(buf); if (Buffer2.isBuffer(previous)) { previous = previous.readUInt32BE(0); } var crc = ~~previous ^ -1; for (var n = 0; n < buf.length; n++) { crc = CRC_TABLE[(crc ^ buf[n]) & 255] ^ crc >>> 8; } return crc ^ -1; } function crc32() { return bufferizeInt(_crc32.apply(null, arguments)); } crc32.signed = function() { return _crc32.apply(null, arguments); }; crc32.unsigned = function() { return _crc32.apply(null, arguments) >>> 0; }; module2.exports = crc32; } }); // ../../node_modules/.pnpm/yauzl@2.10.0/node_modules/yauzl/index.js var require_yauzl = __commonJS2({ "../../node_modules/.pnpm/yauzl@2.10.0/node_modules/yauzl/index.js"(exports2) { var fs15 = __require("fs"); var zlib = __require("zlib"); var fd_slicer = require_fd_slicer(); var crc32 = require_buffer_crc32(); var util = __require("util"); var EventEmitter2 = __require("events").EventEmitter; var Transform = __require("stream").Transform; var PassThrough = __require("stream").PassThrough; var Writable = __require("stream").Writable; exports2.open = open10; exports2.fromFd = fromFd; exports2.fromBuffer = fromBuffer; exports2.fromRandomAccessReader = fromRandomAccessReader; exports2.dosDateTimeToDate = dosDateTimeToDate; exports2.validateFileName = validateFileName; exports2.ZipFile = ZipFile; exports2.Entry = Entry; exports2.RandomAccessReader = RandomAccessReader; function open10(path11, options, callback) { if (typeof options === "function") { callback = options; options = null; } if (options == null) options = {}; if (options.autoClose == null) options.autoClose = true; if (options.lazyEntries == null) options.lazyEntries = false; if (options.decodeStrings == null) options.decodeStrings = true; if (options.validateEntrySizes == null) options.validateEntrySizes = true; if (options.strictFileNames == null) options.strictFileNames = false; if (callback == null) callback = defaultCallback; fs15.open(path11, "r", function(err, fd) { if (err) return callback(err); fromFd(fd, options, function(err2, zipfile) { if (err2) fs15.close(fd, defaultCallback); callback(err2, zipfile); }); }); } function fromFd(fd, options, callback) { if (typeof options === "function") { callback = options; options = null; } if (options == null) options = {}; if (options.autoClose == null) options.autoClose = false; if (options.lazyEntries == null) options.lazyEntries = false; if (options.decodeStrings == null) options.decodeStrings = true; if (options.validateEntrySizes == null) options.validateEntrySizes = true; if (options.strictFileNames == null) options.strictFileNames = false; if (callback == null) callback = defaultCallback; fs15.fstat(fd, function(err, stats) { if (err) return callback(err); var reader = fd_slicer.createFromFd(fd, { autoClose: true }); fromRandomAccessReader(reader, stats.size, options, callback); }); } function fromBuffer(buffer, options, callback) { if (typeof options === "function") { callback = options; options = null; } if (options == null) options = {}; options.autoClose = false; if (options.lazyEntries == null) options.lazyEntries = false; if (options.decodeStrings == null) options.decodeStrings = true; if (options.validateEntrySizes == null) options.validateEntrySizes = true; if (options.strictFileNames == null) options.strictFileNames = false; var reader = fd_slicer.createFromBuffer(buffer, { maxChunkSize: 65536 }); fromRandomAccessReader(reader, buffer.length, options, callback); } function fromRandomAccessReader(reader, totalSize, options, callback) { if (typeof options === "function") { callback = options; options = null; } if (options == null) options = {}; if (options.autoClose == null) options.autoClose = true; if (options.lazyEntries == null) options.lazyEntries = false; if (options.decodeStrings == null) options.decodeStrings = true; var decodeStrings = !!options.decodeStrings; if (options.validateEntrySizes == null) options.validateEntrySizes = true; if (options.strictFileNames == null) options.strictFileNames = false; if (callback == null) callback = defaultCallback; if (typeof totalSize !== "number") throw new Error("expected totalSize parameter to be a number"); if (totalSize > Number.MAX_SAFE_INTEGER) { throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double."); } reader.ref(); var eocdrWithoutCommentSize = 22; var maxCommentSize = 65535; var bufferSize = Math.min(eocdrWithoutCommentSize + maxCommentSize, totalSize); var buffer = newBuffer(bufferSize); var bufferReadStart = totalSize - buffer.length; readAndAssertNoEof(reader, buffer, 0, bufferSize, bufferReadStart, function(err) { if (err) return callback(err); for (var i = bufferSize - eocdrWithoutCommentSize; i >= 0; i -= 1) { if (buffer.readUInt32LE(i) !== 101010256) continue; var eocdrBuffer = buffer.slice(i); var diskNumber = eocdrBuffer.readUInt16LE(4); if (diskNumber !== 0) { return callback(new Error("multi-disk zip files are not supported: found disk number: " + diskNumber)); } var entryCount = eocdrBuffer.readUInt16LE(10); var centralDirectoryOffset = eocdrBuffer.readUInt32LE(16); var commentLength = eocdrBuffer.readUInt16LE(20); var expectedCommentLength = eocdrBuffer.length - eocdrWithoutCommentSize; if (commentLength !== expectedCommentLength) { return callback(new Error("invalid comment length. expected: " + expectedCommentLength + ". found: " + commentLength)); } var comment = decodeStrings ? decodeBuffer(eocdrBuffer, 22, eocdrBuffer.length, false) : eocdrBuffer.slice(22); if (!(entryCount === 65535 || centralDirectoryOffset === 4294967295)) { return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames)); } var zip64EocdlBuffer = newBuffer(20); var zip64EocdlOffset = bufferReadStart + i - zip64EocdlBuffer.length; readAndAssertNoEof(reader, zip64EocdlBuffer, 0, zip64EocdlBuffer.length, zip64EocdlOffset, function(err2) { if (err2) return callback(err2); if (zip64EocdlBuffer.readUInt32LE(0) !== 117853008) { return callback(new Error("invalid zip64 end of central directory locator signature")); } var zip64EocdrOffset = readUInt64LE(zip64EocdlBuffer, 8); var zip64EocdrBuffer = newBuffer(56); readAndAssertNoEof(reader, zip64EocdrBuffer, 0, zip64EocdrBuffer.length, zip64EocdrOffset, function(err3) { if (err3) return callback(err3); if (zip64EocdrBuffer.readUInt32LE(0) !== 101075792) { return callback(new Error("invalid zip64 end of central directory record signature")); } entryCount = readUInt64LE(zip64EocdrBuffer, 32); centralDirectoryOffset = readUInt64LE(zip64EocdrBuffer, 48); return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames)); }); }); return; } callback(new Error("end of central directory record signature not found")); }); } util.inherits(ZipFile, EventEmitter2); function ZipFile(reader, centralDirectoryOffset, fileSize, entryCount, comment, autoClose, lazyEntries, decodeStrings, validateEntrySizes, strictFileNames) { var self2 = this; EventEmitter2.call(self2); self2.reader = reader; self2.reader.on("error", function(err) { emitError(self2, err); }); self2.reader.once("close", function() { self2.emit("close"); }); self2.readEntryCursor = centralDirectoryOffset; self2.fileSize = fileSize; self2.entryCount = entryCount; self2.comment = comment; self2.entriesRead = 0; self2.autoClose = !!autoClose; self2.lazyEntries = !!lazyEntries; self2.decodeStrings = !!decodeStrings; self2.validateEntrySizes = !!validateEntrySizes; self2.strictFileNames = !!strictFileNames; self2.isOpen = true; self2.emittedError = false; if (!self2.lazyEntries) self2._readEntry(); } ZipFile.prototype.close = function() { if (!this.isOpen) return; this.isOpen = false; this.reader.unref(); }; function emitErrorAndAutoClose(self2, err) { if (self2.autoClose) self2.close(); emitError(self2, err); } function emitError(self2, err) { if (self2.emittedError) return; self2.emittedError = true; self2.emit("error", err); } ZipFile.prototype.readEntry = function() { if (!this.lazyEntries) throw new Error("readEntry() called without lazyEntries:true"); this._readEntry(); }; ZipFile.prototype._readEntry = function() { var self2 = this; if (self2.entryCount === self2.entriesRead) { setImmediate(function() { if (self2.autoClose) self2.close(); if (self2.emittedError) return; self2.emit("end"); }); return; } if (self2.emittedError) return; var buffer = newBuffer(46); readAndAssertNoEof(self2.reader, buffer, 0, buffer.length, self2.readEntryCursor, function(err) { if (err) return emitErrorAndAutoClose(self2, err); if (self2.emittedError) return; var entry = new Entry(); var signature = buffer.readUInt32LE(0); if (signature !== 33639248) return emitErrorAndAutoClose(self2, new Error("invalid central directory file header signature: 0x" + signature.toString(16))); entry.versionMadeBy = buffer.readUInt16LE(4); entry.versionNeededToExtract = buffer.readUInt16LE(6); entry.generalPurposeBitFlag = buffer.readUInt16LE(8); entry.compressionMethod = buffer.readUInt16LE(10); entry.lastModFileTime = buffer.readUInt16LE(12); entry.lastModFileDate = buffer.readUInt16LE(14); entry.crc32 = buffer.readUInt32LE(16); entry.compressedSize = buffer.readUInt32LE(20); entry.uncompressedSize = buffer.readUInt32LE(24); entry.fileNameLength = buffer.readUInt16LE(28); entry.extraFieldLength = buffer.readUInt16LE(30); entry.fileCommentLength = buffer.readUInt16LE(32); entry.internalFileAttributes = buffer.readUInt16LE(36); entry.externalFileAttributes = buffer.readUInt32LE(38); entry.relativeOffsetOfLocalHeader = buffer.readUInt32LE(42); if (entry.generalPurposeBitFlag & 64) return emitErrorAndAutoClose(self2, new Error("strong encryption is not supported")); self2.readEntryCursor += 46; buffer = newBuffer(entry.fileNameLength + entry.extraFieldLength + entry.fileCommentLength); readAndAssertNoEof(self2.reader, buffer, 0, buffer.length, self2.readEntryCursor, function(err2) { if (err2) return emitErrorAndAutoClose(self2, err2); if (self2.emittedError) return; var isUtf8 = (entry.generalPurposeBitFlag & 2048) !== 0; entry.fileName = self2.decodeStrings ? decodeBuffer(buffer, 0, entry.fileNameLength, isUtf8) : buffer.slice(0, entry.fileNameLength); var fileCommentStart = entry.fileNameLength + entry.extraFieldLength; var extraFieldBuffer = buffer.slice(entry.fileNameLength, fileCommentStart); entry.extraFields = []; var i = 0; while (i < extraFieldBuffer.length - 3) { var headerId = extraFieldBuffer.readUInt16LE(i + 0); var dataSize = extraFieldBuffer.readUInt16LE(i + 2); var dataStart = i + 4; var dataEnd = dataStart + dataSize; if (dataEnd > extraFieldBuffer.length) return emitErrorAndAutoClose(self2, new Error("extra field length exceeds extra field buffer size")); var dataBuffer = newBuffer(dataSize); extraFieldBuffer.copy(dataBuffer, 0, dataStart, dataEnd); entry.extraFields.push({ id: headerId, data: dataBuffer }); i = dataEnd; } entry.fileComment = self2.decodeStrings ? decodeBuffer(buffer, fileCommentStart, fileCommentStart + entry.fileCommentLength, isUtf8) : buffer.slice(fileCommentStart, fileCommentStart + entry.fileCommentLength); entry.comment = entry.fileComment; self2.readEntryCursor += buffer.length; self2.entriesRead += 1; if (entry.uncompressedSize === 4294967295 || entry.compressedSize === 4294967295 || entry.relativeOffsetOfLocalHeader === 4294967295) { var zip64EiefBuffer = null; for (var i = 0; i < entry.extraFields.length; i++) { var extraField = entry.extraFields[i]; if (extraField.id === 1) { zip64EiefBuffer = extraField.data; break; } } if (zip64EiefBuffer == null) { return emitErrorAndAutoClose(self2, new Error("expected zip64 extended information extra field")); } var index = 0; if (entry.uncompressedSize === 4294967295) { if (index + 8 > zip64EiefBuffer.length) { return emitErrorAndAutoClose(self2, new Error("zip64 extended information extra field does not include uncompressed size")); } entry.uncompressedSize = readUInt64LE(zip64EiefBuffer, index); index += 8; } if (entry.compressedSize === 4294967295) { if (index + 8 > zip64EiefBuffer.length) { return emitErrorAndAutoClose(self2, new Error("zip64 extended information extra field does not include compressed size")); } entry.compressedSize = readUInt64LE(zip64EiefBuffer, index); index += 8; } if (entry.relativeOffsetOfLocalHeader === 4294967295) { if (index + 8 > zip64EiefBuffer.length) { return emitErrorAndAutoClose(self2, new Error("zip64 extended information extra field does not include relative header offset")); } entry.relativeOffsetOfLocalHeader = readUInt64LE(zip64EiefBuffer, index); index += 8; } } if (self2.decodeStrings) { for (var i = 0; i < entry.extraFields.length; i++) { var extraField = entry.extraFields[i]; if (extraField.id === 28789) { if (extraField.data.length < 6) { continue; } if (extraField.data.readUInt8(0) !== 1) { continue; } var oldNameCrc32 = extraField.data.readUInt32LE(1); if (crc32.unsigned(buffer.slice(0, entry.fileNameLength)) !== oldNameCrc32) { continue; } entry.fileName = decodeBuffer(extraField.data, 5, extraField.data.length, true); break; } } } if (self2.validateEntrySizes && entry.compressionMethod === 0) { var expectedCompressedSize = entry.uncompressedSize; if (entry.isEncrypted()) { expectedCompressedSize += 12; } if (entry.compressedSize !== expectedCompressedSize) { var msg = "compressed/uncompressed size mismatch for stored file: " + entry.compressedSize + " != " + entry.uncompressedSize; return emitErrorAndAutoClose(self2, new Error(msg)); } } if (self2.decodeStrings) { if (!self2.strictFileNames) { entry.fileName = entry.fileName.replace(/\\/g, "/"); } var errorMessage = validateFileName(entry.fileName, self2.validateFileNameOptions); if (errorMessage != null) return emitErrorAndAutoClose(self2, new Error(errorMessage)); } self2.emit("entry", entry); if (!self2.lazyEntries) self2._readEntry(); }); }); }; ZipFile.prototype.openReadStream = function(entry, options, callback) { var self2 = this; var relativeStart = 0; var relativeEnd = entry.compressedSize; if (callback == null) { callback = options; options = {}; } else { if (options.decrypt != null) { if (!entry.isEncrypted()) { throw new Error("options.decrypt can only be specified for encrypted entries"); } if (options.decrypt !== false) throw new Error("invalid options.decrypt value: " + options.decrypt); if (entry.isCompressed()) { if (options.decompress !== false) throw new Error("entry is encrypted and compressed, and options.decompress !== false"); } } if (options.decompress != null) { if (!entry.isCompressed()) { throw new Error("options.decompress can only be specified for compressed entries"); } if (!(options.decompress === false || options.decompress === true)) { throw new Error("invalid options.decompress value: " + options.decompress); } } if (options.start != null || options.end != null) { if (entry.isCompressed() && options.decompress !== false) { throw new Error("start/end range not allowed for compressed entry without options.decompress === false"); } if (entry.isEncrypted() && options.decrypt !== false) { throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false"); } } if (options.start != null) { relativeStart = options.start; if (relativeStart < 0) throw new Error("options.start < 0"); if (relativeStart > entry.compressedSize) throw new Error("options.start > entry.compressedSize"); } if (options.end != null) { relativeEnd = options.end; if (relativeEnd < 0) throw new Error("options.end < 0"); if (relativeEnd > entry.compressedSize) throw new Error("options.end > entry.compressedSize"); if (relativeEnd < relativeStart) throw new Error("options.end < options.start"); } } if (!self2.isOpen) return callback(new Error("closed")); if (entry.isEncrypted()) { if (options.decrypt !== false) return callback(new Error("entry is encrypted, and options.decrypt !== false")); } self2.reader.ref(); var buffer = newBuffer(30); readAndAssertNoEof(self2.reader, buffer, 0, buffer.length, entry.relativeOffsetOfLocalHeader, function(err) { try { if (err) return callback(err); var signature = buffer.readUInt32LE(0); if (signature !== 67324752) { return callback(new Error("invalid local file header signature: 0x" + signature.toString(16))); } var fileNameLength = buffer.readUInt16LE(26); var extraFieldLength = buffer.readUInt16LE(28); var localFileHeaderEnd = entry.relativeOffsetOfLocalHeader + buffer.length + fileNameLength + extraFieldLength; var decompress; if (entry.compressionMethod === 0) { decompress = false; } else if (entry.compressionMethod === 8) { decompress = options.decompress != null ? options.decompress : true; } else { return callback(new Error("unsupported compression method: " + entry.compressionMethod)); } var fileDataStart = localFileHeaderEnd; var fileDataEnd = fileDataStart + entry.compressedSize; if (entry.compressedSize !== 0) { if (fileDataEnd > self2.fileSize) { return callback(new Error("file data overflows file bounds: " + fileDataStart + " + " + entry.compressedSize + " > " + self2.fileSize)); } } var readStream = self2.reader.createReadStream({ start: fileDataStart + relativeStart, end: fileDataStart + relativeEnd }); var endpointStream = readStream; if (decompress) { var destroyed = false; var inflateFilter = zlib.createInflateRaw(); readStream.on("error", function(err2) { setImmediate(function() { if (!destroyed) inflateFilter.emit("error", err2); }); }); readStream.pipe(inflateFilter); if (self2.validateEntrySizes) { endpointStream = new AssertByteCountStream(entry.uncompressedSize); inflateFilter.on("error", function(err2) { setImmediate(function() { if (!destroyed) endpointStream.emit("error", err2); }); }); inflateFilter.pipe(endpointStream); } else { endpointStream = inflateFilter; } endpointStream.destroy = function() { destroyed = true; if (inflateFilter !== endpointStream) inflateFilter.unpipe(endpointStream); readStream.unpipe(inflateFilter); readStream.destroy(); }; } callback(null, endpointStream); } finally { self2.reader.unref(); } }); }; function Entry() { } Entry.prototype.getLastModDate = function() { return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime); }; Entry.prototype.isEncrypted = function() { return (this.generalPurposeBitFlag & 1) !== 0; }; Entry.prototype.isCompressed = function() { return this.compressionMethod === 8; }; function dosDateTimeToDate(date, time) { var day = date & 31; var month = (date >> 5 & 15) - 1; var year = (date >> 9 & 127) + 1980; var millisecond = 0; var second = (time & 31) * 2; var minute = time >> 5 & 63; var hour = time >> 11 & 31; return new Date(year, month, day, hour, minute, second, millisecond); } function validateFileName(fileName) { if (fileName.indexOf("\\") !== -1) { return "invalid characters in fileName: " + fileName; } if (/^[a-zA-Z]:/.test(fileName) || /^\//.test(fileName)) { return "absolute path: " + fileName; } if (fileName.split("/").indexOf("..") !== -1) { return "invalid relative path: " + fileName; } return null; } function readAndAssertNoEof(reader, buffer, offset, length, position, callback) { if (length === 0) { return setImmediate(function() { callback(null, newBuffer(0)); }); } reader.read(buffer, offset, length, position, function(err, bytesRead) { if (err) return callback(err); if (bytesRead < length) { return callback(new Error("unexpected EOF")); } callback(); }); } util.inherits(AssertByteCountStream, Transform); function AssertByteCountStream(byteCount) { Transform.call(this); this.actualByteCount = 0; this.expectedByteCount = byteCount; } AssertByteCountStream.prototype._transform = function(chunk, encoding, cb) { this.actualByteCount += chunk.length; if (this.actualByteCount > this.expectedByteCount) { var msg = "too many bytes in the stream. expected " + this.expectedByteCount + ". got at least " + this.actualByteCount; return cb(new Error(msg)); } cb(null, chunk); }; AssertByteCountStream.prototype._flush = function(cb) { if (this.actualByteCount < this.expectedByteCount) { var msg = "not enough bytes in the stream. expected " + this.expectedByteCount + ". got only " + this.actualByteCount; return cb(new Error(msg)); } cb(); }; util.inherits(RandomAccessReader, EventEmitter2); function RandomAccessReader() { EventEmitter2.call(this); this.refCount = 0; } RandomAccessReader.prototype.ref = function() { this.refCount += 1; }; RandomAccessReader.prototype.unref = function() { var self2 = this; self2.refCount -= 1; if (self2.refCount > 0) return; if (self2.refCount < 0) throw new Error("invalid unref"); self2.close(onCloseDone); function onCloseDone(err) { if (err) return self2.emit("error", err); self2.emit("close"); } }; RandomAccessReader.prototype.createReadStream = function(options) { var start = options.start; var end = options.end; if (start === end) { var emptyStream = new PassThrough(); setImmediate(function() { emptyStream.end(); }); return emptyStream; } var stream = this._readStreamForRange(start, end); var destroyed = false; var refUnrefFilter = new RefUnrefFilter(this); stream.on("error", function(err) { setImmediate(function() { if (!destroyed) refUnrefFilter.emit("error", err); }); }); refUnrefFilter.destroy = function() { stream.unpipe(refUnrefFilter); refUnrefFilter.unref(); stream.destroy(); }; var byteCounter = new AssertByteCountStream(end - start); refUnrefFilter.on("error", function(err) { setImmediate(function() { if (!destroyed) byteCounter.emit("error", err); }); }); byteCounter.destroy = function() { destroyed = true; refUnrefFilter.unpipe(byteCounter); refUnrefFilter.destroy(); }; return stream.pipe(refUnrefFilter).pipe(byteCounter); }; RandomAccessReader.prototype._readStreamForRange = function(start, end) { throw new Error("not implemented"); }; RandomAccessReader.prototype.read = function(buffer, offset, length, position, callback) { var readStream = this.createReadStream({ start: position, end: position + length }); var writeStream = new Writable(); var written = 0; writeStream._write = function(chunk, encoding, cb) { chunk.copy(buffer, offset + written, 0, chunk.length); written += chunk.length; cb(); }; writeStream.on("finish", callback); readStream.on("error", function(error3) { callback(error3); }); readStream.pipe(writeStream); }; RandomAccessReader.prototype.close = function(callback) { setImmediate(callback); }; util.inherits(RefUnrefFilter, PassThrough); function RefUnrefFilter(context) { PassThrough.call(this); this.context = context; this.context.ref(); this.unreffedYet = false; } RefUnrefFilter.prototype._flush = function(cb) { this.unref(); cb(); }; RefUnrefFilter.prototype.unref = function(cb) { if (this.unreffedYet) return; this.unreffedYet = true; this.context.unref(); }; var cp437 = "\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\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"; function decodeBuffer(buffer, start, end, isUtf8) { if (isUtf8) { return buffer.toString("utf8", start, end); } else { var result = ""; for (var i = start; i < end; i++) { result += cp437[buffer[i]]; } return result; } } function readUInt64LE(buffer, offset) { var lower32 = buffer.readUInt32LE(offset); var upper32 = buffer.readUInt32LE(offset + 4); return upper32 * 4294967296 + lower32; } var newBuffer; if (typeof Buffer.allocUnsafe === "function") { newBuffer = function(len) { return Buffer.allocUnsafe(len); }; } else { newBuffer = function(len) { return new Buffer(len); }; } function defaultCallback(err) { if (err) throw err; } } }); // ../../node_modules/.pnpm/events-intercept@2.0.0/node_modules/events-intercept/lib/events-intercept.js var require_events_intercept = __commonJS2({ "../../node_modules/.pnpm/events-intercept@2.0.0/node_modules/events-intercept/lib/events-intercept.js"(exports2, module2) { (function() { var events = __require("events"); var util = __require("util"); function intercept(type, interceptor) { var m; if (typeof interceptor !== "function") { throw new TypeError("interceptor must be a function"); } this.emit("newInterceptor", type, interceptor); if (!this._interceptors[type]) { this._interceptors[type] = [interceptor]; } else { this._interceptors[type].push(interceptor); } if (!this._interceptors[type].warned) { if (typeof this._maxInterceptors !== "undefined") { m = this._maxInterceptors; } else { m = EventEmitter2.defaultMaxInterceptors; } if (m && m > 0 && this._interceptors[type].length > m) { this._interceptors[type].warned = true; console.error( "(node) warning: possible events-intercept EventEmitter memory leak detected. %d interceptors added. Use emitter.setMaxInterceptors(n) to increase limit.", this._interceptors[type].length ); console.trace(); } } return this; } function emitFactory(superCall) { return function(type) { var completed, interceptor, _this = this; function next(err) { var trueArgs; if (err) { _this.emit("error", err); } else if (completed === interceptor.length) { return superCall.apply(_this, [type].concat(Array.prototype.slice.call(arguments).slice(1))); } else { trueArgs = Array.prototype.slice.call(arguments).slice(1).concat([next]); completed += 1; return interceptor[completed - 1].apply(_this, trueArgs); } } if (!_this._interceptors) { _this._interceptors = {}; } interceptor = _this._interceptors[type]; if (!interceptor) { return superCall.apply(_this, arguments); } else { completed = 0; return next.apply(_this, [null].concat(Array.prototype.slice.call(arguments).slice(1))); } }; } function interceptors(type) { var ret; if (!this._interceptors || !this._interceptors[type]) { ret = []; } else { ret = this._interceptors[type].slice(); } return ret; } function removeInterceptor(type, interceptor) { var list10, position, length, i; if (typeof interceptor !== "function") { throw new TypeError("interceptor must be a function"); } if (!this._interceptors || !this._interceptors[type]) { return this; } list10 = this._interceptors[type]; length = list10.length; position = -1; for (i = length - 1; i >= 0; i--) { if (list10[i] === interceptor) { position = i; break; } } if (position < 0) { return this; } if (length === 1) { delete this._interceptors[type]; } else { list10.splice(position, 1); } this.emit("removeInterceptor", type, interceptor); return this; } function listenersFactory(superCall) { return function(type) { var superListeners = superCall.call(this, type); var fakeFunctionIndex; var tempSuperListeners = superListeners.slice(); if (type === "newListener" || type === "removeListener") { fakeFunctionIndex = superListeners.indexOf(fakeFunction); if (fakeFunctionIndex !== -1) { tempSuperListeners.splice(fakeFunctionIndex, 1); } return tempSuperListeners; } return superListeners; }; } function fakeFunction() { } function fixListeners(emitter) { emitter.on("newListener", fakeFunction); emitter.on("removeListener", fakeFunction); } function setMaxInterceptors(n) { if (typeof n !== "number" || n < 0 || isNaN(n)) { throw new TypeError("n must be a positive number"); } this._maxInterceptors = n; return this; } function removeAllInterceptors(type) { var key, theseInterceptors, length, i; if (!this._interceptors || Object.getOwnPropertyNames(this._interceptors).length === 0) { return this; } if (arguments.length === 0) { for (key in this._interceptors) { if (this._interceptors.hasOwnProperty(key) && key !== "removeInterceptor") { this.removeAllInterceptors(key); } } this.removeAllInterceptors("removeInterceptor"); this._interceptors = {}; } else if (this._interceptors[type]) { theseInterceptors = this._interceptors[type]; length = theseInterceptors.length; for (i = length - 1; i >= 0; i--) { this.removeInterceptor(type, theseInterceptors[i]); } delete this._interceptors[type]; } return this; } function EventEmitter2() { events.EventEmitter.call(this); fixListeners(this); } util.inherits(EventEmitter2, events.EventEmitter); EventEmitter2.prototype.intercept = intercept; EventEmitter2.prototype.emit = emitFactory(EventEmitter2.super_.prototype.emit); EventEmitter2.prototype.interceptors = interceptors; EventEmitter2.prototype.removeInterceptor = removeInterceptor; EventEmitter2.prototype.removeAllInterceptors = removeAllInterceptors; EventEmitter2.prototype.setMaxInterceptors = setMaxInterceptors; EventEmitter2.prototype.listeners = listenersFactory(EventEmitter2.super_.prototype.listeners); EventEmitter2.defaultMaxInterceptors = 10; function monkeyPatch(emitter) { var oldEmit = emitter.emit; var oldListeners = emitter.listeners; emitter.emit = emitFactory(oldEmit); emitter.intercept = intercept; emitter.interceptors = interceptors; emitter.removeInterceptor = removeInterceptor; emitter.removeAllInterceptors = removeAllInterceptors; emitter.setMaxInterceptors = setMaxInterceptors; emitter.listeners = listenersFactory(oldListeners); fixListeners(emitter); } module2.exports = { EventEmitter: EventEmitter2, patch: monkeyPatch }; })(); } }); // ../../node_modules/.pnpm/yauzl-clone@1.0.4/node_modules/yauzl-clone/lib/index.js var require_lib13 = __commonJS2({ "../../node_modules/.pnpm/yauzl-clone@1.0.4/node_modules/yauzl-clone/lib/index.js"(exports2, module2) { "use strict"; var util = __require("util"); var eventsIntercept = require_events_intercept(); module2.exports = { clone, patch, patchAll }; function clone(yauzl, options) { options = Object.assign({ clone: true, subclassZipFile: false, subclassEntry: false, eventsIntercept: false }, options); if (options.subclassEntry) options.eventsIntercept = true; if (options.clone) yauzl = Object.assign({}, yauzl); if (options.subclassZipFile) { const original = yauzl.ZipFile; yauzl.ZipFile = function ZipFile() { original.apply(this, arguments); }; util.inherits(yauzl.ZipFile, original); patchAll(yauzl, (original2) => zipFilePatcher(original2, yauzl.ZipFile)); } if (options.eventsIntercept) { const ZipFileProto = yauzl.ZipFile.prototype; if (!ZipFileProto.intercept) { eventsIntercept.patch(ZipFileProto); ["_events", "_eventsCount", "_interceptors"].forEach((key) => delete ZipFileProto[key]); } } if (options.subclassEntry) { const original = yauzl.Entry; yauzl.Entry = function Entry() { original.apply(this, arguments); }; util.inherits(yauzl.Entry, original); patchAll(yauzl, (original2) => entryPatcher(original2, yauzl.Entry)); } return yauzl; } function patchAll(yauzl, fn2) { patch(yauzl, "open", fn2); patch(yauzl, "fromFd", fn2); patch(yauzl, "fromBuffer", fn2); patch(yauzl, "fromRandomAccessReader", fn2); } function patch(yauzl, methodName, fn2) { const original = yauzl[methodName]; if (methodName == "fromRandomAccessReader") { const shimmed = fn2(original); yauzl.fromRandomAccessReader = function(reader, totalSize, options, callback) { if (typeof options == "function") { callback = options; options = {}; } else if (!options) { options = {}; } return shimmed.call(this, reader, totalSize, options, callback); }; } else { const shimmed = fn2(function(path11, unused, options, callback) { return original.call(this, path11, options, callback); }); yauzl[methodName] = function(path11, options, callback) { if (typeof options == "function") { callback = options; options = {}; } else if (!options) { options = {}; } return shimmed.call(this, path11, null, options, callback); }; } return yauzl[methodName]; } function zipFilePatcher(original, ZipFile) { return function(path11, totalSize, options, callback) { const { lazyEntries } = options, hasLazyEntries = options.hasOwnProperty("lazyEntries"); if (!lazyEntries) options.lazyEntries = true; return original.call(this, path11, totalSize, options, function(err, zipFile) { if (err) return callback(err); const zipFileInternal = zipFile; zipFile = Object.assign(Object.create(ZipFile.prototype), zipFile); zipFileInternal.emit = zipFile.emit.bind(zipFile); if (!lazyEntries) { if (hasLazyEntries) { options.lazyEntries = lazyEntries; } else { delete options.lazyEntries; } zipFile.lazyEntries = false; zipFileInternal.lazyEntries = false; zipFile._readEntry(); } callback(null, zipFile); }); }; } function entryPatcher(original, Entry) { return function(path11, totalSize, options, callback) { return original.call(this, path11, totalSize, options, function(err, zipFile) { if (err) return callback(err); zipFile.intercept("entry", function(entry, cb) { entry = Object.assign(Object.create(Entry.prototype), entry); cb(null, entry); }); callback(null, zipFile); }); }; } } }); // ../../node_modules/.pnpm/yauzl-promise@2.1.3/node_modules/yauzl-promise/lib/promise.js var require_promise2 = __commonJS2({ "../../node_modules/.pnpm/yauzl-promise@2.1.3/node_modules/yauzl-promise/lib/promise.js"(exports2, module2) { "use strict"; var NativePromise; try { NativePromise = Promise; } catch (e2) { } module2.exports = NativePromise; } }); // ../../node_modules/.pnpm/yauzl-promise@2.1.3/node_modules/yauzl-promise/lib/promisify.js var require_promisify = __commonJS2({ "../../node_modules/.pnpm/yauzl-promise@2.1.3/node_modules/yauzl-promise/lib/promisify.js"(exports2, module2) { "use strict"; var cloner = require_lib13(); var STATE = Symbol(); var STORED_ERROR = Symbol(); module2.exports = (yauzl, Promise2) => { const { ZipFile, Entry } = yauzl; promisifyMethod(yauzl, Promise2, "open"); promisifyMethod(yauzl, Promise2, "fromFd"); promisifyMethod(yauzl, Promise2, "fromBuffer"); promisifyMethod(yauzl, Promise2, "fromRandomAccessReader"); promisifyClose(ZipFile, Promise2); promisifyReadEntry(ZipFile, Promise2); ZipFile.prototype.readEntries = readEntries; addWalkEntriesMethod(ZipFile, Promise2); promisifyOpenReadStream(ZipFile, Promise2); Entry.prototype.openReadStream = entryOpenReadStream; ZipFile.Entry = Entry; }; function promisifyMethod(yauzl, Promise2, fnName) { const fromBuffer = fnName == "fromBuffer"; cloner.patch(yauzl, fnName, (original) => { return function(path11, totalSize, options) { return new Promise2((resolve14, reject) => { options = Object.assign({}, options, { lazyEntries: true, autoClose: false }); original(path11, totalSize, options, (err, zipFile) => { if (err) return reject(err); opened(zipFile, resolve14, fromBuffer, yauzl); }); }); }; }); } function opened(zipFile, resolve14, fromBuffer, yauzl) { if (fromBuffer) { zipFile.reader.unref = yauzl.RandomAccessReader.prototype.unref; zipFile.reader.close = (cb) => cb(); } clearState(zipFile); clearError(zipFile); zipFile.intercept("entry", emittedEntry); zipFile.intercept("end", emittedEnd); zipFile.intercept("close", emittedClose); zipFile.intercept("error", emittedError); resolve14(zipFile); } function emittedError(err) { const state = getState(this); if (state) { clearState(this); return state.reject(err); } if (!getError(this)) setError(this, err); } function rejectWithStoredError(zipFile, reject) { const err = getError(zipFile); clearError(zipFile); reject(err); } function promisifyClose(ZipFile, Promise2) { const close2 = ZipFile.prototype.close; ZipFile.prototype.close = function() { return new Promise2((resolve14, reject) => { if (getError(this)) return rejectWithStoredError(this, reject); if (!this.isOpen) return resolve14(); if (getState(this)) return reject(new Error("Previous operation has not completed yet")); setState(this, { action: "close", resolve: resolve14, reject }); close2.call(this); }); }; } function emittedClose() { const state = getState(this); if (!state || state.action != "close") return this.emit("error", new Error("Unexpected 'close' event emitted")); clearState(this); state.resolve(); } function promisifyReadEntry(ZipFile, Promise2) { const readEntry = ZipFile.prototype.readEntry; ZipFile.prototype.readEntry = function() { return new Promise2((resolve14, reject) => { if (getError(this)) return rejectWithStoredError(this, reject); if (!this.isOpen) return reject(new Error("ZipFile is not open")); if (getState(this)) return reject(new Error("Previous operation has not completed yet")); setState(this, { action: "read", resolve: resolve14, reject }); readEntry.call(this); }); }; } function emittedEntry(entry) { const state = getState(this); if (!state || state.action != "read") return this.emit("error", new Error(`Unexpected '${entry ? "entry" : "end"}' event emitted`)); clearState(this); if (entry) entry.zipFile = this; state.resolve(entry); } function emittedEnd() { emittedEntry.call(this, null); } function getState(zipFile) { return zipFile[STATE]; } function setState(zipFile, state) { zipFile[STATE] = state; } function clearState(zipFile) { zipFile[STATE] = void 0; } function getError(zipFile) { return zipFile[STORED_ERROR]; } function setError(zipFile, state) { zipFile[STORED_ERROR] = state; } function clearError(zipFile) { zipFile[STORED_ERROR] = void 0; } function readEntries(numEntries) { const entries = []; return this.walkEntries((entry) => { entries.push(entry); }, numEntries).then(() => { return entries; }); } function addWalkEntriesMethod(ZipFile, Promise2) { ZipFile.prototype.walkEntries = function(callback, numEntries) { callback = wrapFunctionToReturnPromise(callback, Promise2); return new Promise2((resolve14, reject) => { walkNextEntry(this, callback, numEntries, 0, (err) => { if (err) return reject(err); resolve14(); }); }); }; } function walkNextEntry(zipFile, fn2, numEntries, count, cb) { if (numEntries && count == numEntries) return cb(); zipFile.readEntry().then((entry) => { if (!entry) return cb(); return fn2(entry).then(() => { walkNextEntry(zipFile, fn2, numEntries, count + 1, cb); }); }).catch((err) => { cb(err); }); } function promisifyOpenReadStream(ZipFile, Promise2) { const openReadStream = ZipFile.prototype.openReadStream; ZipFile.prototype.openReadStream = function(entry, options) { return new Promise2((resolve14, reject) => { if (getError(this)) return rejectWithStoredError(this, reject); openReadStream.call(this, entry, options || {}, (err, stream) => { if (err) return reject(err); resolve14(stream); }); }); }; } function entryOpenReadStream(options) { return this.zipFile.openReadStream(this, options); } function wrapFunctionToReturnPromise(fn2, Promise2) { return function() { try { const result = fn2.apply(this, arguments); if (result instanceof Promise2) return result; return Promise2.resolve(result); } catch (err) { return new Promise2((resolve14, reject) => { reject(err); }); } }; } } }); // ../../node_modules/.pnpm/yauzl-promise@2.1.3/node_modules/yauzl-promise/lib/index.js var require_lib14 = __commonJS2({ "../../node_modules/.pnpm/yauzl-promise@2.1.3/node_modules/yauzl-promise/lib/index.js"(exports2, module2) { "use strict"; var yauzlOriginal = require_yauzl(); var cloner = require_lib13(); var NativePromise = require_promise2(); var promisify3 = require_promisify(); function use(Promise2, yauzl, options) { options = Object.assign({ clone: true }, options); if (!Promise2) Promise2 = NativePromise; if (!yauzl) yauzl = yauzlOriginal; if (options.clone) { yauzl = cloner.clone(yauzl, { subclassZipFile: true, subclassEntry: true }); } else { cloner.clone(yauzl, { clone: false, eventsIntercept: true }); } if (Promise2) { promisify3(yauzl, Promise2); } else { yauzl = {}; } yauzl.use = use; yauzl.usePromise = function(Promise3) { return use(Promise3, null); }; yauzl.useYauzl = function(yauzl2, options2) { return use(null, yauzl2, options2); }; return yauzl; } module2.exports = use(); } }); // src/util/build/unzip.ts import path5 from "path"; import { streamToBuffer } from "@vercel/build-utils"; async function* createZipIterator(zipFile) { let entry; while ((entry = await zipFile.readEntry()) !== null) { yield entry; } } async function unzip(buffer, dir) { const zipFile = await (0, import_yauzl_promise.fromBuffer)(buffer); for await (const entry of createZipIterator(zipFile)) { if (entry.fileName.startsWith("__MACOSX/")) continue; try { const destDir = path5.dirname(path5.join(dir, entry.fileName)); await fs6.mkdirp(destDir); const canonicalDestDir = await fs6.realpath(destDir); const relativeDestDir = path5.relative(dir, canonicalDestDir); if (relativeDestDir.split(path5.sep).includes("..")) { throw new Error( `Out of bound path "${canonicalDestDir}" found while processing file ${entry.fileName}` ); } await extractEntry(zipFile, entry, dir); } catch (err) { await zipFile.close(); throw err; } } } async function extractEntry(zipFile, entry, dir) { const dest = path5.join(dir, entry.fileName); const mode = entry.externalFileAttributes >> 16 & 65535; const IFMT = 61440; const IFDIR = 16384; const IFLNK = 40960; const symlink3 = (mode & IFMT) === IFLNK; let isDir = (mode & IFMT) === IFDIR; if (!isDir && entry.fileName.endsWith("/")) { isDir = true; } const madeBy = entry.versionMadeBy >> 8; if (!isDir) isDir = madeBy === 0 && entry.externalFileAttributes === 16; const procMode = getExtractedMode(mode, isDir) & 511; const destDir = isDir ? dest : path5.dirname(dest); const mkdirOptions = { recursive: true }; if (isDir) { mkdirOptions.mode = procMode; } await fs6.mkdir(destDir, mkdirOptions); if (isDir) return; const readStream = await zipFile.openReadStream(entry); if (symlink3) { const link4 = await streamToBuffer(readStream); await fs6.symlink(link4.toString("utf8"), dest); } else { await (0, import_promisepipe.default)(readStream, fs6.createWriteStream(dest, { mode: procMode })); } } function getExtractedMode(entryMode, isDir) { let mode = entryMode; if (mode === 0) { if (isDir) { mode = 493; } else { mode = 420; } } return mode; } var import_promisepipe, fs6, import_yauzl_promise; var init_unzip = __esm({ "src/util/build/unzip.ts"() { "use strict"; import_promisepipe = __toESM3(require_promisepipe(), 1); fs6 = __toESM3(require_lib(), 1); import_yauzl_promise = __toESM3(require_lib14(), 1); } }); // src/util/build/write-build-result.ts import { basename as basename6, dirname as dirname6, extname, join as join13, relative as relative5, resolve as resolve7, posix } from "path"; import { FileFsRef, download, downloadFile, getLambdaOptionsFromFunction, normalizePath as normalizePath2, isBackendBuilder, isExperimentalBackendsEnabled } from "@vercel/build-utils"; async function writeBuildResult(args2) { const { repoRootPath, outputDir, buildResult, build: build2, builder, builderPkg, vercelConfig, standalone, workPath } = args2; const version2 = builder.version; if (typeof version2 !== "number" || version2 === 2) { return writeBuildResultV2({ repoRootPath, outputDir, buildResult, build: build2, vercelConfig, standalone, workPath }); } else if (version2 === 3) { return writeBuildResultV3({ repoRootPath, outputDir, buildResult, build: build2, vercelConfig, standalone, workPath }); } throw new Error( `Unsupported Builder version \`${version2}\` from "${builderPkg.name}"` ); } function isEdgeFunction(v) { return v?.type === "EdgeFunction"; } function isLambda(v) { return v?.type === "Lambda"; } function isPrerender(v) { return v?.type === "Prerender"; } function isFile(v) { const type = v?.type; return type === "FileRef" || type === "FileFsRef" || type === "FileBlob"; } function stripDuplicateSlashes(path11) { return normalize2(path11).replace(/(^\/|\/$)/g, ""); } async function writeBuildResultV2(args2) { const { repoRootPath, outputDir, buildResult, build: build2, vercelConfig, standalone, workPath } = args2; if ("buildOutputPath" in buildResult) { await mergeBuilderOutput(outputDir, buildResult, workPath); return; } if (!buildResult.output) { const configFile = vercelConfig?.[import_client3.fileNameSymbol]; const updateMessage = build2.use.startsWith("@now/") ? ` Please update from "@now" to "@vercel" in your \`${configFile}\` file.` : ""; throw new Error( `The build result from "${build2.use}" is missing the "output" property.${updateMessage}` ); } const existingFunctions = /* @__PURE__ */ new Map(); const overrides = {}; for (const [path11, output2] of Object.entries(buildResult.output)) { const normalizedPath = stripDuplicateSlashes(path11); if (isLambda(output2)) { await writeLambda( repoRootPath, outputDir, output2, normalizedPath, void 0, existingFunctions, standalone ); } else if (isPrerender(output2)) { if (!output2.lambda) { throw new Error( `Invalid Prerender with no "lambda" property: ${normalizedPath}` ); } await writeLambda( repoRootPath, outputDir, output2.lambda, normalizedPath, void 0, existingFunctions, standalone ); let fallback = output2.fallback; if (fallback) { const ext = getFileExtension(fallback); const fallbackName = `${normalizedPath}.prerender-fallback${ext}`; const fallbackPath = join13(outputDir, "functions", fallbackName); let usedHardLink = false; if ("fsPath" in fallback) { try { await import_fs_extra13.default.link(fallback.fsPath, fallbackPath); usedHardLink = true; } catch (_) { } } if (!usedHardLink) { const stream = fallback.toStream(); await (0, import_promisepipe2.default)( stream, import_fs_extra13.default.createWriteStream(fallbackPath, { mode: fallback.mode }) ); } fallback = new FileFsRef({ ...output2.fallback, fsPath: basename6(fallbackName) }); } const prerenderConfigPath = join13( outputDir, "functions", `${normalizedPath}.prerender-config.json` ); const prerenderConfig = { ...output2, lambda: void 0, fallback }; await import_fs_extra13.default.writeJSON(prerenderConfigPath, prerenderConfig, { spaces: 2 }); } else if (isFile(output2)) { await writeStaticFile( outputDir, output2, normalizedPath, overrides, vercelConfig?.cleanUrls ); } else if (isEdgeFunction(output2)) { await writeEdgeFunction( repoRootPath, outputDir, output2, normalizedPath, existingFunctions, standalone ); } else { throw new Error( `Unsupported output type: "${output2.type}" for ${normalizedPath}` ); } } return Object.keys(overrides).length > 0 ? overrides : void 0; } async function writeBuildResultV3(args2) { const { repoRootPath, outputDir, buildResult, build: build2, vercelConfig, standalone, workPath } = args2; const { output: output2 } = buildResult; const routesJsonPath = join13(workPath, ".vercel", "routes.json"); if (isBackendBuilder(build2) || build2.use === "@vercel/python") { if ((0, import_fs_extra13.existsSync)(routesJsonPath)) { try { const newOutput = { index: output2 }; const routesJson = await import_fs_extra13.default.readJSON(routesJsonPath); if (routesJson && typeof routesJson === "object" && "routes" in routesJson && Array.isArray(routesJson.routes)) { for (const route of routesJson.routes) { if (route.source === "/") { continue; } if (route.source) { newOutput[route.source] = output2; } } } return writeBuildResultV2({ repoRootPath, outputDir, buildResult: { output: newOutput, routes: buildResult.routes }, build: build2, vercelConfig, standalone, workPath }); } catch (error3) { output_manager_default.error(`Failed to read routes.json: ${error3}`); } } if (isBackendBuilder(build2) && isExperimentalBackendsEnabled() && "routes" in buildResult) { return writeBuildResultV2({ repoRootPath, outputDir, buildResult, build: build2, vercelConfig, standalone, workPath }); } } const src = build2.src; if (typeof src !== "string") { throw new Error(`Expected "build.src" to be a string`); } const functionConfiguration = vercelConfig ? await getLambdaOptionsFromFunction({ sourceFile: src, config: vercelConfig }) : {}; const ext = extname(src); const path11 = stripDuplicateSlashes( build2.config?.zeroConfig ? src.substring(0, src.length - ext.length) : src ); if (isLambda(output2)) { await writeLambda( repoRootPath, outputDir, output2, path11, functionConfiguration, void 0, standalone ); } else if (isEdgeFunction(output2)) { await writeEdgeFunction( repoRootPath, outputDir, output2, path11, void 0, standalone ); } else { throw new Error( `Unsupported output type: "${output2.type}" for ${build2.src}` ); } } async function writeStaticFile(outputDir, file, path11, overrides, cleanUrls = false) { let fsPath = path11; let override = null; const ext = getFileExtension(file); if (ext && extname(path11) !== ext) { fsPath += ext; if (!override) override = {}; override.path = path11; } if (cleanUrls && path11.endsWith(".html")) { if (!override) override = {}; override.path = path11.slice(0, -5); } if (file.contentType) { if (!override) override = {}; override.contentType = file.contentType; } if (override) { overrides[fsPath] = override; } const dest = join13(outputDir, "static", fsPath); await import_fs_extra13.default.mkdirp(dirname6(dest)); if ("fsPath" in file) { try { return await import_fs_extra13.default.link(file.fsPath, dest); } catch (_) { } } await downloadFile(file, dest); } async function writeFunctionSymlink(outputDir, dest, fn2, existingFunctions) { const existingPath = existingFunctions.get(fn2); if (!existingPath) return false; const destDir = dirname6(dest); const targetDest = join13(outputDir, "functions", `${existingPath}.func`); const target = relative5(destDir, targetDest); await import_fs_extra13.default.mkdirp(destDir); await import_fs_extra13.default.symlink(target, dest); return true; } async function writeEdgeFunction(repoRootPath, outputDir, edgeFunction, path11, existingFunctions, standalone = false) { const dest = join13(outputDir, "functions", `${path11}.func`); if (existingFunctions) { if (await writeFunctionSymlink( outputDir, dest, edgeFunction, existingFunctions )) { return; } existingFunctions.set(edgeFunction, path11); } await import_fs_extra13.default.mkdirp(dest); const ops = []; const sharedDest = join13(outputDir, "shared"); const { files, filePathMap, shared } = filesWithoutFsRefs( edgeFunction.files, repoRootPath, sharedDest, standalone ); ops.push(download(files, dest)); if (shared) { ops.push(download(shared, sharedDest)); } const config2 = { runtime: "edge", ...edgeFunction, entrypoint: normalizePath2(edgeFunction.entrypoint), filePathMap, files: void 0, type: void 0 }; const configPath = join13(dest, ".vc-config.json"); ops.push( import_fs_extra13.default.writeJSON(configPath, config2, { spaces: 2 }) ); await Promise.all(ops); } async function writeLambda(repoRootPath, outputDir, lambda, path11, functionConfiguration, existingFunctions, standalone = false) { const dest = join13(outputDir, "functions", `${path11}.func`); if (existingFunctions) { if (await writeFunctionSymlink(outputDir, dest, lambda, existingFunctions)) { return; } existingFunctions.set(lambda, path11); } await import_fs_extra13.default.mkdirp(dest); const ops = []; let filePathMap; if (lambda.files) { const sharedDest = join13(outputDir, "shared"); const f = filesWithoutFsRefs( lambda.files, repoRootPath, sharedDest, standalone ); filePathMap = f.filePathMap; ops.push(download(f.files, dest)); if (f.shared) { ops.push(download(f.shared, sharedDest)); } } else if (lambda.zipBuffer) { ops.push(unzip(lambda.zipBuffer, dest)); } else { throw new Error('Malformed `Lambda` - no "files" present'); } const architecture = functionConfiguration?.architecture ?? lambda.architecture; const memory = functionConfiguration?.memory ?? lambda.memory; const maxDuration = functionConfiguration?.maxDuration ?? lambda.maxDuration; const experimentalTriggers = functionConfiguration?.experimentalTriggers ?? lambda.experimentalTriggers; const supportsCancellation = functionConfiguration?.supportsCancellation ?? lambda.supportsCancellation; const config2 = { ...lambda, handler: normalizePath2(lambda.handler), architecture, memory, maxDuration, experimentalTriggers, supportsCancellation, filePathMap, type: void 0, files: void 0, zipBuffer: void 0 }; const configPath = join13(dest, ".vc-config.json"); ops.push( import_fs_extra13.default.writeJSON(configPath, config2, { spaces: 2 }) ); await Promise.all(ops); for await (const dir of findDirs(".vercel", dest)) { const absDir = join13(dest, dir); const entries = await import_fs_extra13.default.readdir(absDir); if (entries.includes("cache")) { await Promise.all( entries.filter((e2) => e2 !== "cache").map((entry) => import_fs_extra13.default.remove(join13(absDir, entry))) ); } else { await import_fs_extra13.default.remove(absDir); } } } async function mergeBuilderOutput(outputDir, buildResult, workPath) { const absOutputDir = resolve7(outputDir); const { ig } = await (0, import_client3.getVercelIgnore)(workPath); const filter = ig.createFilter(); if (absOutputDir === buildResult.buildOutputPath) { const staticDir = join13(outputDir, "static"); try { await cleanIgnoredFiles(staticDir, staticDir, filter); } catch (err) { if (err.code !== "ENOENT") throw err; } return; } const ignoreFilter = (path11) => { const normalizedPath = path11.replace(/\\/g, "/"); if (normalizedPath.startsWith("static/")) { return filter(normalizedPath.substring("static/".length)); } return true; }; await merge(buildResult.buildOutputPath, outputDir, ignoreFilter); } async function cleanIgnoredFiles(dir, staticRoot, filter) { const entries = await import_fs_extra13.default.readdir(dir); await Promise.all( entries.map(async (entry) => { const entryPath = join13(dir, entry); const stat2 = await import_fs_extra13.default.stat(entryPath); const relativePath = relative5(staticRoot, entryPath); if (stat2.isDirectory()) { await cleanIgnoredFiles(entryPath, staticRoot, filter); const remaining = await import_fs_extra13.default.readdir(entryPath); if (remaining.length === 0) { await import_fs_extra13.default.rmdir(entryPath); } } else if (!filter(relativePath)) { output_manager_default.debug(`Removing ignored file: ${relativePath}`); await import_fs_extra13.default.remove(entryPath); } }) ); } function getFileExtension(file) { let ext = ""; if (file.type === "FileFsRef") { ext = extname(file.fsPath); } if (!ext && file.contentType) { const e2 = import_mime_types.default.extension(file.contentType); if (e2) { ext = `.${e2}`; } } return ext; } async function* findDirs(name, dir, root = dir) { let paths; try { paths = await import_fs_extra13.default.readdir(dir); } catch (err) { if (err.code !== "ENOENT") { throw err; } paths = []; } for (const path11 of paths) { const abs = join13(dir, path11); let stat2; try { stat2 = await import_fs_extra13.default.lstat(abs); } catch (err) { if (err.code === "ENOENT") continue; throw err; } if (stat2.isDirectory()) { if (path11 === name) { yield relative5(root, abs); } else { yield* findDirs(name, abs, root); } } } } function filesWithoutFsRefs(files, repoRootPath, sharedDest, standalone) { let filePathMap; const out = {}; const shared = {}; for (const [path11, file] of Object.entries(files)) { if (file.type === "FileFsRef") { if (!filePathMap) filePathMap = {}; if (standalone && sharedDest) { shared[path11] = file; filePathMap[normalizePath2(path11)] = normalizePath2( relative5(repoRootPath, join13(sharedDest, path11)) ); } else { filePathMap[normalizePath2(path11)] = normalizePath2( relative5(repoRootPath, file.fsPath) ); } } else { out[path11] = file; } } return { files: out, filePathMap, shared }; } var import_fs_extra13, import_mime_types, import_promisepipe2, import_client3, normalize2, OUTPUT_DIR; var init_write_build_result = __esm({ "src/util/build/write-build-result.ts"() { "use strict"; import_fs_extra13 = __toESM3(require_lib(), 1); import_mime_types = __toESM3(require_mime_types(), 1); import_promisepipe2 = __toESM3(require_promisepipe(), 1); init_merge(); init_unzip(); init_link2(); import_client3 = __toESM3(require_dist7(), 1); init_output_manager(); ({ normalize: normalize2 } = posix); OUTPUT_DIR = join13(VERCEL_DIR, "output"); } }); // src/util/unique-strings.ts var unique_strings_default; var init_unique_strings = __esm({ "src/util/unique-strings.ts"() { "use strict"; unique_strings_default = (arr) => { const len = arr.length; const res = []; const o = {}; let i; for (i = 0; i < len; i += 1) { o[arr[i]] = o[arr[i]] || res.push(arr[i]); } return res; }; } }); // src/util/get-files.ts import { resolve as resolve8 } from "path"; function flatten(arr, res = []) { for (const cur of arr) { if (Array.isArray(cur)) { flatten(cur, res); } else { res.push(cur); } } return res; } async function staticFiles(path11, { src }) { const { debug: debug2, time } = output_manager_default; let files = []; const source = src || "."; const search = resolve8(path11, source); const { ig } = await (0, import_client4.getVercelIgnore)(path11); const filter = ig.createFilter(); const prefixLength = path11.length + 1; const accepts = (file) => { const relativePath = file.slice(prefixLength); if (relativePath === "") { return true; } const accepted = filter(relativePath); if (!accepted) { debug2(`Ignoring ${file}`); } return accepted; }; files = await time( `Locating files ${path11}`, explode([search], { accepts }) ); return unique_strings_default(files); } async function explode(paths, { accepts }) { const { debug: debug2 } = output_manager_default; const list10 = async (file) => { let path11 = file; let s; if (!accepts(file)) { return null; } try { s = await import_fs_extra14.default.stat(path11); } catch (e2) { path11 = `${file}.js`; try { s = await import_fs_extra14.default.stat(path11); } catch (e22) { debug2(`Ignoring invalid file ${file}`); return null; } } if (s.isDirectory()) { const all = await import_fs_extra14.default.readdir(file); const recursive = many(all.map((subdir) => asAbsolute(subdir, file))); return recursive; } if (!s.isFile()) { debug2(`Ignoring special file ${file}`); return null; } return path11; }; const many = (all) => Promise.all(all.map((file) => list10(file))); const arrayOfArrays = await many(paths); return flatten(arrayOfArrays).filter(notNull); } function notNull(value) { return value !== null; } var import_fs_extra14, import_client4, asAbsolute; var init_get_files = __esm({ "src/util/get-files.ts"() { "use strict"; import_fs_extra14 = __toESM3(require_lib(), 1); import_client4 = __toESM3(require_dist7(), 1); init_unique_strings(); init_output_manager(); asAbsolute = function(path11, parent) { if (path11[0] === "/") { return path11; } return resolve8(parent, path11); }; } }); // src/util/projects/project-settings.ts import { join as join14 } from "path"; async function writeProjectSettings(cwd, project, org, isRepoLinked) { let analyticsId; if (project.analytics?.id && (!project.analytics.disabledAt || project.analytics.enabledAt && project.analytics.enabledAt > project.analytics.disabledAt)) { analyticsId = project.analytics.id; } const projectLinkAndSettings = { projectId: isRepoLinked ? void 0 : project.id, orgId: isRepoLinked ? void 0 : org.id, projectName: isRepoLinked ? void 0 : project.name, settings: { createdAt: project.createdAt, framework: project.framework, devCommand: project.devCommand, installCommand: project.installCommand, buildCommand: project.buildCommand, outputDirectory: project.outputDirectory, rootDirectory: project.rootDirectory, directoryListing: project.directoryListing, nodeVersion: project.nodeVersion, analyticsId } }; const path11 = join14(cwd, VERCEL_DIR, VERCEL_DIR_PROJECT); return await (0, import_fs_extra15.outputJSON)(path11, projectLinkAndSettings, { spaces: 2 }); } async function readProjectSettings(vercelDir) { try { return JSON.parse( await (0, import_fs_extra15.readFile)(join14(vercelDir, VERCEL_DIR_PROJECT), "utf8") ); } catch (err) { if ((0, import_error_utils16.isErrnoException)(err) && err.code && ["ENOENT", "ENOTDIR"].includes(err.code)) { return null; } if ((0, import_error_utils16.isError)(err) && err.name === "SyntaxError") { return null; } throw err; } } function pickOverrides(vercelConfig) { const overrides = {}; for (const prop of [ "buildCommand", "devCommand", "framework", "ignoreCommand", "installCommand", "outputDirectory" ]) { if (typeof vercelConfig[prop] !== "undefined") { if (prop === "ignoreCommand") { overrides.commandForIgnoringBuildStep = vercelConfig[prop]; } else { overrides[prop] = vercelConfig[prop]; } } } return overrides; } var import_fs_extra15, import_error_utils16; var init_project_settings = __esm({ "src/util/projects/project-settings.ts"() { "use strict"; import_fs_extra15 = __toESM3(require_lib(), 1); init_link2(); import_error_utils16 = __toESM3(require_dist2(), 1); } }); // src/util/telemetry/commands/build/index.ts var BuildTelemetryClient; var init_build = __esm({ "src/util/telemetry/commands/build/index.ts"() { "use strict"; init_telemetry(); BuildTelemetryClient = class extends TelemetryClient { trackCliOptionOutput(path11) { if (path11) { this.trackCliOption({ option: "output", value: this.redactedValue }); } } trackCliOptionTarget(option) { if (option) { this.trackCliOption({ option: "target", value: this.redactedTargetName(option) }); } } trackCliFlagProd(flag) { if (flag) { this.trackCliFlag("prod"); } } trackCliFlagYes(flag) { if (flag) { this.trackCliFlag("yes"); } } trackCliFlagStandalone(flag) { if (flag) { this.trackCliFlag("standalone"); } } }; } }); // src/util/validate-config.ts import { functionsSchema, buildsSchema, NowBuildError as NowBuildError4, getPrettyError } from "@vercel/build-utils"; function validateConfig(config2) { if (!validate(config2)) { if (validate.errors && validate.errors[0]) { const error3 = validate.errors[0]; const fileName = config2[import_client5.fileNameSymbol] || "vercel.json"; const niceError = getPrettyError(error3); niceError.message = `Invalid ${fileName} - ${niceError.message}`; return niceError; } } if (config2.functions && config2.builds) { return new NowBuildError4({ code: "FUNCTIONS_AND_BUILDS", message: "The `functions` property cannot be used in conjunction with the `builds` property. Please remove one of them.", link: "https://vercel.link/functions-and-builds" }); } if (config2.experimentalServices && config2.builds) { return new NowBuildError4({ code: "SERVICES_AND_BUILDS", message: "The `experimentalServices` property cannot be used in conjunction with the `builds` property. Please remove one of them." }); } if (config2.experimentalServices && config2.functions) { return new NowBuildError4({ code: "SERVICES_AND_FUNCTIONS", message: "The `experimentalServices` property cannot be used in conjunction with the `functions` property. Please remove one of them." }); } if (config2.experimentalServiceGroups && !config2.experimentalServices) { return new NowBuildError4({ code: "SERVICE_GROUPS_WITHOUT_SERVICES", message: "The `experimentalServiceGroups` property requires `experimentalServices` to be defined. Service groups reference services by name." }); } return null; } var import_ajv2, import_routing_utils, import_client5, imagesSchema, cronsSchema, customErrorPageSchema, serviceConfigSchema, experimentalServicesSchema, experimentalServiceGroupsSchema, vercelConfigSchema, ajv, validate; var init_validate_config = __esm({ "src/util/validate-config.ts"() { "use strict"; import_ajv2 = __toESM3(require_ajv(), 1); import_routing_utils = __toESM3(require_dist23(), 1); import_client5 = __toESM3(require_dist7(), 1); imagesSchema = { type: "object", additionalProperties: false, required: ["sizes"], properties: { contentDispositionType: { enum: ["inline", "attachment"] }, contentSecurityPolicy: { type: "string", minLength: 1, maxLength: 256 }, dangerouslyAllowSVG: { type: "boolean" }, domains: { type: "array", minItems: 0, maxItems: 50, items: { type: "string", minLength: 1, maxLength: 256 } }, formats: { type: "array", minItems: 1, maxItems: 4, items: { enum: ["image/avif", "image/webp", "image/jpeg", "image/png"] } }, localPatterns: { type: "array", minItems: 0, maxItems: 25, items: { type: "object", additionalProperties: false, properties: { pathname: { type: "string", minLength: 1, maxLength: 256 }, search: { type: "string", minLength: 0, maxLength: 256 } } } }, minimumCacheTTL: { type: "integer", minimum: 1, maximum: 31536e4 }, qualities: { type: "array", minItems: 1, maxItems: 20, items: { type: "integer", minimum: 1, maximum: 100 } }, remotePatterns: { type: "array", minItems: 0, maxItems: 50, items: { type: "object", additionalProperties: false, required: ["hostname"], properties: { protocol: { enum: ["http", "https"] }, hostname: { type: "string", minLength: 1, maxLength: 256 }, port: { type: "string", minLength: 0, maxLength: 5 }, pathname: { type: "string", minLength: 1, maxLength: 256 }, search: { type: "string", minLength: 0, maxLength: 256 } } } }, sizes: { type: "array", minItems: 1, maxItems: 50, items: { type: "number" } } } }; cronsSchema = { type: "array", minItems: 0, items: { type: "object", additionalProperties: false, required: ["path", "schedule"], properties: { path: { type: "string", minLength: 1, maxLength: 512, pattern: "^/.*" }, schedule: { type: "string", minLength: 9, maxLength: 256 } } } }; customErrorPageSchema = { oneOf: [ { type: "string", minLength: 1 }, { type: "object", additionalProperties: false, minProperties: 1, properties: { default5xx: { type: "string", minLength: 1 }, default4xx: { type: "string", minLength: 1 } } } ] }; serviceConfigSchema = { type: "object", additionalProperties: false, properties: { type: { enum: ["web", "cron", "worker"] }, entrypoint: { type: "string", minLength: 1, maxLength: 512 }, workspace: { type: "string", minLength: 1, maxLength: 512 }, routePrefix: { type: "string", minLength: 1, maxLength: 512 }, framework: { type: "string", minLength: 1, maxLength: 256 }, builder: { type: "string", minLength: 1, maxLength: 256 }, runtime: { type: "string", minLength: 1, maxLength: 256 }, buildCommand: { type: "string", minLength: 1, maxLength: 2048 }, installCommand: { type: "string", minLength: 1, maxLength: 2048 }, memory: { type: "integer", minimum: 128, maximum: 10240 }, maxDuration: { type: "integer", minimum: 1, maximum: 900 }, includeFiles: { oneOf: [ { type: "string", minLength: 1 }, { type: "array", items: { type: "string", minLength: 1 } } ] }, excludeFiles: { oneOf: [ { type: "string", minLength: 1 }, { type: "array", items: { type: "string", minLength: 1 } } ] }, // Cron-specific schedule: { type: "string", minLength: 9, maxLength: 256 }, // Worker-specific topic: { type: "string", minLength: 1, maxLength: 256 }, consumer: { type: "string", minLength: 1, maxLength: 256 } } }; experimentalServicesSchema = { type: "object", additionalProperties: serviceConfigSchema }; experimentalServiceGroupsSchema = { type: "object", additionalProperties: { type: "array", items: { type: "string", minLength: 1, maxLength: 256 } } }; vercelConfigSchema = { type: "object", // These are not all possibilities because `vc dev` // doesn't need to know about `regions`, `public`, etc. additionalProperties: true, properties: { builds: buildsSchema, routes: import_routing_utils.routesSchema, cleanUrls: import_routing_utils.cleanUrlsSchema, headers: import_routing_utils.headersSchema, redirects: import_routing_utils.redirectsSchema, rewrites: import_routing_utils.rewritesSchema, trailingSlash: import_routing_utils.trailingSlashSchema, functions: functionsSchema, images: imagesSchema, crons: cronsSchema, customErrorPage: customErrorPageSchema, bunVersion: { type: "string" }, experimentalServices: experimentalServicesSchema, experimentalServiceGroups: experimentalServiceGroupsSchema } }; ajv = new import_ajv2.default(); validate = ajv.compile(vercelConfigSchema); } }); // src/util/validate-cron-secret.ts import { NowBuildError as NowBuildError5 } from "@vercel/build-utils"; function validateCronSecret(cronSecret) { if (!cronSecret) { return null; } if (cronSecret !== cronSecret.trim()) { return new NowBuildError5({ code: "INVALID_CRON_SECRET", message: "The `CRON_SECRET` environment variable contains leading or trailing whitespace, which is not allowed in HTTP header values.", link: "https://vercel.link/securing-cron-jobs", action: "Learn More" }); } const invalidChars = []; for (let i = 0; i < cronSecret.length; i++) { const code2 = cronSecret.charCodeAt(i); const isValidChar = code2 === 9 || // HTAB code2 >= 32 && code2 <= 126; if (!isValidChar) { invalidChars.push({ char: cronSecret[i], index: i, code: code2 }); } } if (invalidChars.length > 0) { const descriptions = invalidChars.slice(0, 3).map(({ code: code2, index }) => { if (code2 < 32) { return `control character (0x${code2.toString(16).padStart(2, "0")}) at position ${index}`; } else if (code2 === 127) { return `DEL character at position ${index}`; } else { return `non-ASCII character (0x${code2.toString(16).padStart(2, "0")}) at position ${index}`; } }); const moreCount = invalidChars.length - 3; const moreText = moreCount > 0 ? `, and ${moreCount} more` : ""; return new NowBuildError5({ code: "INVALID_CRON_SECRET", message: `The \`CRON_SECRET\` environment variable contains characters that are not valid in HTTP headers: ${descriptions.join(", ")}${moreText}. Only visible ASCII characters (letters, digits, symbols), spaces, and tabs are allowed.`, link: "https://vercel.link/securing-cron-jobs", action: "Learn More" }); } return null; } var init_validate_cron_secret = __esm({ "src/util/validate-cron-secret.ts"() { "use strict"; } }); // src/util/input/input-project.ts async function inputProject(client2, org, detectedProjectName, autoConfirm = false) { const slugifiedName = (0, import_slugify2.default)(detectedProjectName); let detectedProject = null; output_manager_default.spinner("Searching for existing projects\u2026", 1e3); const [project, slugifiedProject] = await Promise.all([ getProjectByNameOrId(client2, detectedProjectName, org.id), slugifiedName !== detectedProjectName ? getProjectByNameOrId(client2, slugifiedName, org.id) : null ]); detectedProject = !(project instanceof ProjectNotFound) ? project : !(slugifiedProject instanceof ProjectNotFound) ? slugifiedProject : null; if (detectedProject && !detectedProject.id) { throw new Error(`Detected linked project does not have "id".`); } output_manager_default.stopSpinner(); if (autoConfirm) { return detectedProject || detectedProjectName; } let shouldLinkProject; if (!detectedProject) { shouldLinkProject = await client2.input.confirm( `Link to existing project?`, false ); } else { if (await client2.input.confirm( `Found project ${import_chalk51.default.cyan( `\u201C${org.slug}/${detectedProject.name}\u201D` )}. Link to it?`, true )) { return detectedProject; } shouldLinkProject = await client2.input.confirm( `Link to different existing project?`, true ); } if (shouldLinkProject) { const firstPage = await client2.fetch(`/v9/projects?limit=100`, { accountId: org.id }); const projects = firstPage.projects; const hasMoreProjects = firstPage.pagination.next !== null; if (projects.length === 0) { output_manager_default.log( `No existing projects found under ${import_chalk51.default.bold(org.slug)}. Creating new project.` ); } else if (hasMoreProjects) { let toLink; await client2.input.text({ message: "What's the name of your existing project?", validate: async (val) => { if (!val) { return "Project name cannot be empty"; } const project2 = await getProjectByNameOrId(client2, val, org.id); if (project2 instanceof ProjectNotFound) { return "Project not found"; } toLink = project2; return true; } }); return toLink; } else { const choices = projects.sort((a, b) => b.updatedAt - a.updatedAt).map((project2) => ({ name: project2.name, value: project2 })); const toLink = await client2.input.select({ message: "Which existing project do you want to link?", choices }); return toLink; } } return await client2.input.text({ message: `What\u2019s your project\u2019s name?`, default: !detectedProject ? slugifiedName : void 0, validate: async (val) => { if (!val) { return "Project name cannot be empty"; } const project2 = await getProjectByNameOrId(client2, val, org.id); if (!(project2 instanceof ProjectNotFound)) { return "Project already exists"; } return true; } }); } var import_chalk51, import_slugify2; var init_input_project = __esm({ "src/util/input/input-project.ts"() { "use strict"; init_get_project_by_id_or_name(); import_chalk51 = __toESM3(require_source(), 1); init_errors_ts(); import_slugify2 = __toESM3(require_slugify(), 1); init_output_manager(); } }); // src/util/validate-paths.ts import { homedir as homedir4 } from "os"; async function validateRootDirectory(cwd, path11, errorSuffix = "") { const pathStat = await (0, import_fs_extra16.lstat)(path11).catch(() => null); const suffix = errorSuffix ? ` ${errorSuffix}` : ""; if (!pathStat) { output_manager_default.error( `The provided path ${import_chalk52.default.cyan( `\u201C${humanizePath(path11)}\u201D` )} does not exist.${suffix}` ); return false; } if (!pathStat.isDirectory()) { output_manager_default.error( `The provided path ${import_chalk52.default.cyan( `\u201C${humanizePath(path11)}\u201D` )} is a file, but expected a directory.${suffix}` ); return false; } if (!path11.startsWith(cwd)) { output_manager_default.error( `The provided path ${import_chalk52.default.cyan( `\u201C${humanizePath(path11)}\u201D` )} is outside of the project.${suffix}` ); return false; } return true; } async function validatePaths(client2, paths) { if (paths.length > 1) { output_manager_default.error(`Can't deploy more than one path.`); return { valid: false, exitCode: 1 }; } const path11 = paths[0]; const pathStat = await (0, import_fs_extra16.lstat)(path11).catch(() => null); if (!pathStat) { output_manager_default.error(`Could not find ${import_chalk52.default.cyan(`\u201C${humanizePath(path11)}\u201D`)}`); return { valid: false, exitCode: 1 }; } if (!pathStat.isDirectory()) { output_manager_default.prettyError({ message: "Support for single file deployments has been removed.", link: "https://vercel.link/no-single-file-deployments" }); return { valid: false, exitCode: 1 }; } if (path11 === homedir4()) { const shouldDeployHomeDirectory = await client2.input.confirm( `You are deploying your home directory. Do you want to continue?`, false ); if (!shouldDeployHomeDirectory) { output_manager_default.print(`Canceled `); return { valid: false, exitCode: 0 }; } } return { valid: true, path: path11 }; } var import_fs_extra16, import_chalk52; var init_validate_paths = __esm({ "src/util/validate-paths.ts"() { "use strict"; import_fs_extra16 = __toESM3(require_lib(), 1); import_chalk52 = __toESM3(require_source(), 1); init_humanize_path(); init_output_manager(); } }); // src/util/input/input-root-directory.ts import path6 from "path"; async function inputRootDirectory(client2, cwd, autoConfirm = false) { if (autoConfirm) { return null; } while (true) { const rootDirectory = await client2.input.text({ message: `In which directory is your code located?`, transformer: (input) => { return `${import_chalk53.default.dim(`./`)}${input}`; } }); if (!rootDirectory) { return null; } const normal = path6.normalize(rootDirectory); if (normal === "." || normal === "./") { return null; } const fullPath = path6.join(cwd, normal); if (await validateRootDirectory( cwd, fullPath, "Please choose a different one." ) === false) { continue; } return normal; } } var import_chalk53; var init_input_root_directory = __esm({ "src/util/input/input-root-directory.ts"() { "use strict"; import_chalk53 = __toESM3(require_source(), 1); init_validate_paths(); } }); // src/util/is-setting-value.ts function isSettingValue(setting) { return setting && typeof setting.value === "string"; } var init_is_setting_value = __esm({ "src/util/is-setting-value.ts"() { "use strict"; } }); // src/util/input/edit-project-settings.ts async function editProjectSettings(client2, projectSettings, framework, autoConfirm, localConfigurationOverrides) { const settings = Object.assign( { buildCommand: null, devCommand: null, framework: null, commandForIgnoringBuildStep: null, installCommand: null, outputDirectory: null }, projectSettings ); const hasLocalConfigurationOverrides = localConfigurationOverrides && Object.values(localConfigurationOverrides ?? {}).some(Boolean); if (hasLocalConfigurationOverrides) { for (const setting of settingKeys) { const localConfigValue = localConfigurationOverrides[setting]; if (localConfigValue) settings[setting] = localConfigValue; } output_manager_default.print("Local settings detected in vercel.json:\n"); for (const setting of settingKeys) { const override = localConfigurationOverrides[setting]; if (override) { output_manager_default.print( `${import_chalk54.default.dim( `- ${import_chalk54.default.bold(`${settingMap[setting]}:`)} ${override}` )} ` ); } } if (localConfigurationOverrides.framework) { const overrideFramework = import_frameworks3.frameworkList.find( (f) => f.slug === localConfigurationOverrides.framework ); if (overrideFramework) { framework = overrideFramework; output_manager_default.print( `Merging default Project Settings for ${framework.name}. Previously listed overrides are prioritized. ` ); } } } if (!framework) { settings.framework = null; return settings; } const styledFramework = (frameworkName) => { const frameworkStyle = { text: frameworkName, color: import_chalk54.default.blue }; if (frameworkName === "Hono") { frameworkStyle.text = "\u{1F525} Hono"; frameworkStyle.color = import_chalk54.default.hex("#FFA500"); } return import_chalk54.default.bold(frameworkStyle.color(frameworkStyle.text)); }; output_manager_default.log( !framework.slug ? `No framework detected. Default Project Settings: ` : `Auto-detected Project Settings for ${styledFramework(framework.name)} ` ); settings.framework = framework.slug; if (!framework.slug) { for (const setting of settingKeys) { if (setting === "framework" || setting === "commandForIgnoringBuildStep") { continue; } const defaultSetting = framework.settings[setting]; const override = localConfigurationOverrides?.[setting]; if (!override && defaultSetting) { output_manager_default.print( `${import_chalk54.default.dim( `- ${import_chalk54.default.bold(`${settingMap[setting]}:`)} ${isSettingValue(defaultSetting) ? defaultSetting.value : import_chalk54.default.italic(`${defaultSetting.placeholder}`)}` )} ` ); } } } if (autoConfirm || !await client2.input.confirm("Want to modify these settings?", false)) { return settings; } const choices = settingKeys.reduce( (acc, setting) => { const skip = setting === "framework" || setting === "commandForIgnoringBuildStep" || setting === "installCommand" || localConfigurationOverrides?.[setting]; if (skip) return acc; return [...acc, { name: settingMap[setting], value: setting }]; }, [] ); const settingFields = await client2.input.checkbox({ message: "Which settings would you like to overwrite (select multiple)?", choices }); for (const setting of settingFields) { const field = settingMap[setting]; settings[setting] = await client2.input.text({ message: `What's your ${import_chalk54.default.bold(field)}?` }); } return settings; } var import_chalk54, import_frameworks3, settingMap, settingKeys; var init_edit_project_settings = __esm({ "src/util/input/edit-project-settings.ts"() { "use strict"; import_chalk54 = __toESM3(require_source(), 1); import_frameworks3 = __toESM3(require_frameworks(), 1); init_is_setting_value(); init_output_manager(); settingMap = { buildCommand: "Build Command", devCommand: "Development Command", commandForIgnoringBuildStep: "Ignore Command", installCommand: "Install Command", outputDirectory: "Output Directory", framework: "Framework" }; settingKeys = Object.keys(settingMap).sort(); } }); // src/util/config/read-config.ts async function readConfig(dir) { let pkgFilePath; try { const compileResult = await compileVercelConfig(dir); pkgFilePath = compileResult.configPath || getLocalPathConfig(dir); } catch (err) { if (err instanceof Error) { return err; } throw err; } const result = await readJSONFile(pkgFilePath); if (result instanceof CantParseJSONFile) { return result; } if (result) { return result; } return null; } var init_read_config = __esm({ "src/util/config/read-config.ts"() { "use strict"; init_errors_ts(); init_read_json_file(); init_local_path(); init_compile_vercel_config(); } }); // src/util/input/vercel-auth.ts async function vercelAuth(client2, { autoConfirm = false }) { if (autoConfirm || await client2.input.confirm( `Want to use the default Deployment Protection settings? ${import_chalk55.default.dim(`(Vercel Authentication: Standard Protection)`)}`, true )) { return DEFAULT_VERCEL_AUTH_SETTING; } const vercelAuth2 = await client2.input.select(OPTIONS); return vercelAuth2; } var import_chalk55, DEFAULT_VERCEL_AUTH_SETTING, OPTIONS; var init_vercel_auth = __esm({ "src/util/input/vercel-auth.ts"() { "use strict"; import_chalk55 = __toESM3(require_source(), 1); DEFAULT_VERCEL_AUTH_SETTING = "standard"; OPTIONS = { message: `What setting do you want to use for Vercel Authentication?`, default: DEFAULT_VERCEL_AUTH_SETTING, choices: [ { description: "Standard Protection (recommended)", name: "standard", value: "standard" }, { description: "No Protection (all deployments will be public)", name: "none", value: "none" } ] }; } }); // src/util/link/setup-and-link.ts import { join as join15, basename as basename7 } from "path"; async function setupAndLink(client2, path11, { autoConfirm = false, forceDelete = false, link: link4, successEmoji = "link", setupMsg = "Set up", projectName = basename7(path11) }) { const { config: config2 } = client2; if (!isDirectory(path11)) { output_manager_default.error(`Expected directory but found file: ${path11}`); return { status: "error", exitCode: 1, reason: "PATH_IS_FILE" }; } if (!link4) { link4 = await getLinkedProject(client2, path11); } const isTTY3 = client2.stdin.isTTY; let rootDirectory = null; let newProjectName; let org; if (!forceDelete && link4.status === "linked") { return link4; } if (forceDelete) { const vercelDir = getVercelDirectory(path11); (0, import_fs_extra17.remove)(join15(vercelDir, VERCEL_DIR_README)); (0, import_fs_extra17.remove)(join15(vercelDir, VERCEL_DIR_PROJECT)); } if (!isTTY3 && !autoConfirm) { return { status: "error", exitCode: 1, reason: "HEADLESS" }; } const shouldStartSetup = autoConfirm || await client2.input.confirm( `${setupMsg} ${import_chalk56.default.cyan(`\u201C${humanizePath(path11)}\u201D`)}?`, true ); if (!shouldStartSetup) { output_manager_default.print(`Canceled. Project not set up. `); return { status: "not_linked", org: null, project: null }; } try { org = await selectOrg( client2, "Which scope should contain your project?", autoConfirm ); } catch (err) { if (isAPIError(err)) { if (err.code === "NOT_AUTHORIZED") { output_manager_default.prettyError(err); return { status: "error", exitCode: 1, reason: "NOT_AUTHORIZED" }; } if (err.code === "TEAM_DELETED") { output_manager_default.prettyError(err); return { status: "error", exitCode: 1, reason: "TEAM_DELETED" }; } } throw err; } const projectOrNewProjectName = await inputProject( client2, org, projectName, autoConfirm ); if (typeof projectOrNewProjectName === "string") { newProjectName = projectOrNewProjectName; rootDirectory = await inputRootDirectory(client2, path11, autoConfirm); } else { const project = projectOrNewProjectName; await linkFolderToProject( client2, path11, { projectId: project.id, orgId: org.id }, project.name, org.slug, successEmoji, autoConfirm ); return { status: "linked", org, project }; } if (rootDirectory && !await validateRootDirectory(path11, join15(path11, rootDirectory))) { return { status: "error", exitCode: 1, reason: "INVALID_ROOT_DIRECTORY" }; } config2.currentTeam = org.type === "team" ? org.id : void 0; const pathWithRootDirectory = rootDirectory ? join15(path11, rootDirectory) : path11; const localConfig = await readConfig(pathWithRootDirectory); if (localConfig instanceof CantParseJSONFile) { output_manager_default.prettyError(localConfig); return { status: "error", exitCode: 1 }; } const isZeroConfig = !localConfig || !localConfig.builds || localConfig.builds.length === 0; try { let settings = {}; if (isZeroConfig) { const localConfigurationOverrides = { buildCommand: localConfig?.buildCommand, devCommand: localConfig?.devCommand, framework: localConfig?.framework, commandForIgnoringBuildStep: localConfig?.ignoreCommand, installCommand: localConfig?.installCommand, outputDirectory: localConfig?.outputDirectory }; const detectedProjectsForWorkspace = await detectProjects( pathWithRootDirectory ); const detectedProjects = detectedProjectsForWorkspace.get("") || []; const framework = detectedProjects[0] ?? import_frameworks4.frameworkList.find((f) => f.slug === null); settings = await editProjectSettings( client2, {}, framework, autoConfirm, localConfigurationOverrides ); } let changeAdditionalSettings = false; if (!autoConfirm) { changeAdditionalSettings = await client2.input.confirm( "Do you want to change additional project settings?", false ); } let vercelAuthSetting = DEFAULT_VERCEL_AUTH_SETTING; if (changeAdditionalSettings) { vercelAuthSetting = await vercelAuth(client2, { autoConfirm }); } if (rootDirectory) { settings.rootDirectory = rootDirectory; } const project = await createProject(client2, { ...settings, name: newProjectName, vercelAuth: vercelAuthSetting }); await linkFolderToProject( client2, path11, { projectId: project.id, orgId: org.id }, project.name, org.slug, successEmoji, autoConfirm, false // don't prompt to pull env for newly created projects ); await connectGitRepository(client2, path11, project, autoConfirm, org); return { status: "linked", org, project }; } catch (err) { if (isAPIError(err) && err.code === "too_many_projects") { output_manager_default.prettyError(err); return { status: "error", exitCode: 1, reason: "TOO_MANY_PROJECTS" }; } printError(err); return { status: "error", exitCode: 1 }; } } async function connectGitRepository(client2, path11, project, autoConfirm, org) { try { const gitConfig = await parseGitConfig(join15(path11, ".git/config")); if (!gitConfig) { return; } const remoteUrls = pluckRemoteUrls(gitConfig); if (!remoteUrls || Object.keys(remoteUrls).length === 0) { return; } const shouldConnect = autoConfirm || await client2.input.confirm( `Detected a repository. Connect it to this project?`, true ); if (!shouldConnect) { return; } const repoInfo = await selectAndParseRemoteUrl(client2, remoteUrls); if (!repoInfo) { return; } await checkExistsAndConnect({ client: client2, confirm: autoConfirm, gitProviderLink: project.link, org, gitOrg: repoInfo.org, project, // Type assertion since we only need the id provider: repoInfo.provider, repo: repoInfo.repo, repoPath: `${repoInfo.org}/${repoInfo.repo}` }); } catch (error3) { output_manager_default.debug(`Failed to connect git repository: ${error3}`); } } var import_chalk56, import_fs_extra17, import_frameworks4; var init_setup_and_link = __esm({ "src/util/link/setup-and-link.ts"() { "use strict"; import_chalk56 = __toESM3(require_source(), 1); import_fs_extra17 = __toESM3(require_lib(), 1); init_link2(); init_create_project(); init_error2(); init_create_git_meta(); init_connect_git_provider(); init_humanize_path(); init_global_path(); init_select_org(); init_input_project(); init_validate_paths(); init_input_root_directory(); init_edit_project_settings(); init_errors_ts(); init_output_manager(); init_detect_projects(); init_read_config(); import_frameworks4 = __toESM3(require_frameworks(), 1); init_vercel_auth(); } }); // src/util/link/ensure-link.ts async function ensureLink(commandName, client2, cwd, opts = {}) { let { link: link4 } = opts; if (!link4) { link4 = await getLinkedProject(client2, cwd); opts.link = link4; } if (link4.status === "linked" && opts.forceDelete || link4.status === "not_linked") { link4 = await setupAndLink(client2, cwd, opts); if (link4.status === "not_linked") { return 0; } } if (link4.status === "error") { if (link4.reason === "HEADLESS") { output_manager_default.error( `Command ${getCommandName( commandName )} requires confirmation. Use option ${param("--yes")} to confirm.` ); } return link4.exitCode; } return link4; } var init_ensure_link = __esm({ "src/util/link/ensure-link.ts"() { "use strict"; init_setup_and_link(); init_param(); init_pkg_name(); init_link2(); init_output_manager(); } }); // src/util/telemetry/commands/pull/index.ts var PullTelemetryClient; var init_pull3 = __esm({ "src/util/telemetry/commands/pull/index.ts"() { "use strict"; init_telemetry(); PullTelemetryClient = class extends TelemetryClient { trackCliArgumentProjectPath(value) { if (value) { this.trackCliArgument({ arg: "projectPath", value: this.redactedValue }); } } trackCliOptionEnvironment(environment) { if (environment) { this.trackCliOption({ option: "environment", value: this.redactedTargetName(environment) }); } } trackCliOptionGitBranch(gitBranch) { if (gitBranch) { this.trackCliOption({ option: "git-branch", value: this.redactedValue }); } } trackCliFlagProd(isProduction) { if (isProduction) { this.trackCliFlag("prod"); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/pull/index.ts var pull_exports = {}; __export3(pull_exports, { default: () => main2, parseEnvironment: () => parseEnvironment, pullCommandLogic: () => pullCommandLogic }); import { join as join16 } from "path"; async function pullAllEnvFiles(environment, client2, link4, flags, cwd) { const environmentFile = `.env.${environment}.local`; await envPullCommandLogic( client2, join16(".vercel", environmentFile), !!flags["--yes"], environment, link4, flags["--git-branch"], cwd, "vercel-cli:pull" ); return 0; } function parseEnvironment(environment = "development") { if (!isValidEnvTarget(environment)) { throw new Error( `environment "${environment}" not supported; must be one of ${getEnvTargetPlaceholder()}` ); } return environment; } async function main2(client2) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(pullCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } const telemetryClient = new PullTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (parsedArgs.flags["--help"]) { telemetryClient.trackCliFlagHelp("pull"); output_manager_default.print(help(pullCommand, { columns: client2.stderr.columns })); return 2; } const cwd = parsedArgs.args[1] || client2.cwd; const autoConfirm = Boolean(parsedArgs.flags["--yes"]); const isProduction = Boolean(parsedArgs.flags["--prod"]); const environment = parseTarget({ flagName: "environment", flags: parsedArgs.flags }) || "development"; telemetryClient.trackCliArgumentProjectPath(parsedArgs.args[1]); telemetryClient.trackCliFlagYes(autoConfirm); telemetryClient.trackCliFlagProd(isProduction); telemetryClient.trackCliOptionGitBranch(parsedArgs.flags["--git-branch"]); telemetryClient.trackCliOptionEnvironment(parsedArgs.flags["--environment"]); const returnCode = await pullCommandLogic( client2, cwd, autoConfirm, environment, parsedArgs.flags ); return returnCode; } async function pullCommandLogic(client2, cwd, autoConfirm, environment, flags) { const link4 = await ensureLink("pull", client2, cwd, { autoConfirm }); if (typeof link4 === "number") { return link4; } const { project, org, repoRoot } = link4; let currentDirectory; if (repoRoot) { currentDirectory = join16(repoRoot, project.rootDirectory || ""); } else { currentDirectory = cwd; } client2.config.currentTeam = org.type === "team" ? org.id : void 0; const pullResultCode = await pullAllEnvFiles( environment, client2, link4, flags, currentDirectory ); if (pullResultCode !== 0) { return pullResultCode; } output_manager_default.print("\n"); output_manager_default.log("Downloading project settings"); const isRepoLinked = typeof repoRoot === "string"; await writeProjectSettings(currentDirectory, project, org, isRepoLinked); const settingsStamp = stamp_default(); output_manager_default.print( `${prependEmoji( `Downloaded project settings to ${import_chalk57.default.bold( humanizePath(join16(currentDirectory, VERCEL_DIR, VERCEL_DIR_PROJECT)) )} ${import_chalk57.default.gray(settingsStamp())}`, emoji("success") )} ` ); return 0; } var import_chalk57; var init_pull4 = __esm({ "src/commands/pull/index.ts"() { "use strict"; import_chalk57 = __toESM3(require_source(), 1); init_emoji(); init_get_args(); init_stamp(); init_link2(); init_project_settings(); init_pull2(); init_env_target(); init_ensure_link(); init_humanize_path(); init_help(); init_command32(); init_parse_target(); init_get_flags_specification(); init_error2(); init_output_manager(); init_pull3(); } }); // src/commands/build/index.ts var build_exports = {}; __export3(build_exports, { default: () => main3 }); import { join as join17, normalize as normalize3, relative as relative6, resolve as resolve9, sep as sep2 } from "path"; import { download as download2, FileFsRef as FileFsRef2, getDiscontinuedNodeVersions, getInstalledPackageVersion, normalizePath as normalizePath3, NowBuildError as NowBuildError6, runNpmInstall, runCustomInstallCommand, resetCustomInstallCommandSet, Span, validateNpmrc, shouldUseExperimentalBackends, isBackendBuilder as isBackendBuilder2 } from "@vercel/build-utils"; import { mkdir as mkdir4, writeFile as writeFile5 } from "fs/promises"; async function main3(client2) { const telemetryClient = new BuildTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const reporter = new InMemoryReporter(); const rootSpan = new Span({ name: "vc", reporter }); let { cwd } = client2; if (process.env.__VERCEL_BUILD_RUNNING) { output_manager_default.error( `${cmd( `${packageName} build` )} must not recursively invoke itself. Check the Build Command in the Project Settings or the ${cmd( "build" )} script in ${cmd("package.json")}` ); output_manager_default.error( `Learn More: https://vercel.link/recursive-invocation-of-commands` ); return 1; } else { process.env.__VERCEL_BUILD_RUNNING = "1"; } let parsedArgs = null; const flagsSpecification = getFlagsSpecification(buildCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); telemetryClient.trackCliOptionOutput(parsedArgs.flags["--output"]); telemetryClient.trackCliOptionTarget(parsedArgs.flags["--target"]); telemetryClient.trackCliFlagProd(parsedArgs.flags["--prod"]); telemetryClient.trackCliFlagYes(parsedArgs.flags["--yes"]); telemetryClient.trackCliFlagStandalone(parsedArgs.flags["--standalone"]); } catch (error3) { printError(error3); return 1; } if (parsedArgs.flags["--help"]) { telemetryClient.trackCliFlagHelp("build"); output_manager_default.print(help(buildCommand, { columns: client2.stderr.columns })); return 2; } const target = parseTarget({ flagName: "target", flags: parsedArgs.flags }) || "preview"; const yes = Boolean(parsedArgs.flags["--yes"]); const hasDeprecatedEnvVar = process.env.VERCEL_EXPERIMENTAL_STANDALONE_BUILD === "1"; if (hasDeprecatedEnvVar) { output_manager_default.warn( "The VERCEL_EXPERIMENTAL_STANDALONE_BUILD environment variable is deprecated. Please use the --standalone flag instead." ); } const standalone = Boolean( parsedArgs.flags["--standalone"] || hasDeprecatedEnvVar ); try { await validateNpmrc(cwd); } catch (err) { output_manager_default.prettyError(err); return 1; } const link4 = await getProjectLink(client2, cwd); const projectRootDirectory = link4?.projectRootDirectory ?? ""; if (link4?.repoRoot) { cwd = client2.cwd = link4.repoRoot; } const vercelDir = join17(cwd, projectRootDirectory, VERCEL_DIR); let project = await readProjectSettings(vercelDir); const isTTY3 = process.stdin.isTTY; while (!project?.settings) { let confirmed = yes; if (!confirmed) { if (!isTTY3) { output_manager_default.print( `No Project Settings found locally. Run ${getCommandName( "pull --yes" )} to retrieve them.` ); return 1; } confirmed = await client2.input.confirm( `No Project Settings found locally. Run ${getCommandName( "pull" )} for retrieving them?`, true ); } if (!confirmed) { output_manager_default.print(`Canceled. No Project Settings retrieved. `); return 0; } const { argv: originalArgv } = client2; client2.cwd = join17(cwd, projectRootDirectory); client2.argv = [ ...originalArgv.slice(0, 2), "pull", `--environment`, target ]; const result = await pullCommandLogic( client2, client2.cwd, Boolean(parsedArgs.flags["--yes"]), target, parsedArgs.flags ); if (result !== 0) { return result; } client2.cwd = cwd; client2.argv = originalArgv; project = await readProjectSettings(vercelDir); } const defaultOutputDir = join17(cwd, projectRootDirectory, OUTPUT_DIR); const outputDir = parsedArgs.flags["--output"] ? resolve9(parsedArgs.flags["--output"]) : defaultOutputDir; await Promise.all([ import_fs_extra18.default.remove(outputDir), // Also delete `.vercel/output`, in case the script is targeting Build Output API directly outputDir !== defaultOutputDir ? import_fs_extra18.default.remove(defaultOutputDir) : void 0 ]); const buildsJson = { "//": "This file was generated by the `vercel build` command. It is not part of the Build Output API.", target, argv: scrubArgv(process.argv) }; if (!process.env.VERCEL_BUILD_IMAGE) { output_manager_default.warn( "Build not running on Vercel. System environment variables will not be available." ); } const envToUnset = /* @__PURE__ */ new Set(["VERCEL", "NOW_BUILDER"]); try { const envPath = join17( cwd, projectRootDirectory, VERCEL_DIR, `.env.${target}.local` ); const dotenvResult = import_dotenv2.default.config({ path: envPath, debug: output_manager_default.isDebugEnabled() }); if (dotenvResult.error) { output_manager_default.debug( `Failed loading environment variables: ${dotenvResult.error}` ); } else if (dotenvResult.parsed) { for (const key of Object.keys(dotenvResult.parsed)) { envToUnset.add(key); } output_manager_default.debug(`Loaded environment variables from "${envPath}"`); } if (project.settings.analyticsId) { envToUnset.add("VERCEL_ANALYTICS_ID"); process.env.VERCEL_ANALYTICS_ID = project.settings.analyticsId; } process.env.VERCEL = "1"; process.env.NOW_BUILDER = "1"; try { await rootSpan.child("vc.doBuild").trace( (span) => doBuild(client2, project, buildsJson, cwd, outputDir, span, standalone) ); } finally { await rootSpan.stop(); } return 0; } catch (err) { output_manager_default.prettyError(err); buildsJson.error = toEnumerableError(err); const buildsJsonPath = join17(outputDir, "builds.json"); const configJsonPath = join17(outputDir, "config.json"); await import_fs_extra18.default.outputJSON(buildsJsonPath, buildsJson, { spaces: 2 }); await import_fs_extra18.default.writeJSON(configJsonPath, { version: 3 }, { spaces: 2 }); return 1; } finally { try { const diagnosticsOutputPath = join17(outputDir, "diagnostics"); await mkdir4(diagnosticsOutputPath, { recursive: true }); await writeFile5( join17(diagnosticsOutputPath, "cli_traces.json"), JSON.stringify(reporter.events) ); } catch (err) { output_manager_default.error("Failed to write diagnostics trace file"); output_manager_default.prettyError(err); } for (const key of envToUnset) { delete process.env[key]; } delete process.env.VERCEL_INSTALL_COMPLETED; resetCustomInstallCommandSet(); } } async function doBuild(client2, project, buildsJson, cwd, outputDir, span, standalone = false) { const { localConfigPath } = client2; const VALID_DEPLOYMENT_ID_PATTERN = /^[a-zA-Z0-9_-]+$/; const workPath = join17(cwd, project.settings.rootDirectory || "."); const sourceConfigFile = await findSourceVercelConfigFile(workPath); let corepackShimDir; if (sourceConfigFile) { corepackShimDir = await initCorepack({ repoRootPath: cwd }); const installCommand2 = project.settings.installCommand; if (typeof installCommand2 === "string") { if (installCommand2.trim()) { output_manager_default.log(`Running install command before config compilation...`); await runCustomInstallCommand({ destPath: workPath, installCommand: installCommand2, spawnOpts: { env: process.env }, projectCreatedAt: project.settings.createdAt }); } else { output_manager_default.debug("Skipping empty install command"); } } else { output_manager_default.log(`Installing dependencies before config compilation...`); await runNpmInstall( workPath, [], { env: process.env }, void 0, project.settings.createdAt ); } process.env.VERCEL_INSTALL_COMPLETED = "1"; } const compileResult = await compileVercelConfig(workPath); const vercelConfigPath = localConfigPath || compileResult.configPath || join17(workPath, "vercel.json"); const [pkg, vercelConfig, nowConfig, hasInstrumentation] = await Promise.all([ readJSONFile(join17(workPath, "package.json")), readJSONFile(vercelConfigPath), readJSONFile(join17(workPath, "now.json")), (0, import_fs_detectors4.detectInstrumentation)(new import_fs_detectors4.LocalFileSystemDetector(workPath)) ]); if (pkg instanceof CantParseJSONFile) throw pkg; if (vercelConfig instanceof CantParseJSONFile) throw vercelConfig; if (nowConfig instanceof CantParseJSONFile) throw nowConfig; if (hasInstrumentation) { output_manager_default.debug( "OpenTelemetry instrumentation detected. Automatic fetch instrumentation will be disabled." ); process.env.VERCEL_TRACING_DISABLE_AUTOMATIC_FETCH_INSTRUMENTATION = "1"; } if (vercelConfig) { vercelConfig[import_client6.fileNameSymbol] = compileResult.wasCompiled ? compileResult.sourceFile || DEFAULT_VERCEL_CONFIG_FILENAME : "vercel.json"; } else if (nowConfig) { nowConfig[import_client6.fileNameSymbol] = "now.json"; } const localConfig = vercelConfig || nowConfig || {}; const validateError = validateConfig(localConfig); if (validateError) { throw validateError; } if (localConfig.crons && localConfig.crons.length > 0) { const cronSecretError = validateCronSecret(process.env.CRON_SECRET); if (cronSecretError) { throw cronSecretError; } } if (localConfig.customErrorPage) { const errorPages = typeof localConfig.customErrorPage === "string" ? [localConfig.customErrorPage] : Object.values(localConfig.customErrorPage); for (const page of errorPages) { if (page) { const src = join17(workPath, page); if (!(0, import_fs_extra18.existsSync)(src)) { throw new NowBuildError6({ code: "CUSTOM_ERROR_PAGE_NOT_FOUND", message: `The custom error page "${page}" was not found in "${workPath}".`, link: "https://vercel.com/docs/projects/project-configuration#custom-error-page" }); } } } } const projectSettings = { ...project.settings, ...pickOverrides(localConfig) }; if (process.env.VERCEL_BUILD_MONOREPO_SUPPORT === "1" && pkg?.scripts?.["vercel-build"] === void 0 && projectSettings.rootDirectory !== null && projectSettings.rootDirectory !== ".") { await setMonorepoDefaultSettings(cwd, workPath, projectSettings); } const files = (await staticFiles(workPath, {})).map( (f) => normalizePath3(relative6(workPath, f)) ); const routesResult = (0, import_routing_utils2.getTransformedRoutes)(localConfig); if (routesResult.error) { throw routesResult.error; } if (localConfig.builds && localConfig.functions) { throw new NowBuildError6({ code: "bad_request", message: "The `functions` property cannot be used in conjunction with the `builds` property. Please remove one of them.", link: "https://vercel.link/functions-and-builds" }); } let builds = localConfig.builds || []; let zeroConfigRoutes = []; let isZeroConfig = false; if (builds.length > 0) { output_manager_default.warn( "Due to `builds` existing in your configuration file, the Build and Development Settings defined in your Project Settings will not apply. Learn More: https://vercel.link/unused-build-settings" ); builds = builds.map((b) => expandBuild(files, b)).flat(); } else { isZeroConfig = true; const detectedBuilders = await (0, import_fs_detectors4.detectBuilders)(files, pkg, { ...localConfig, projectSettings, ignoreBuildScript: true, featHandleMiss: true, workPath }); if (detectedBuilders.errors && detectedBuilders.errors.length > 0) { throw detectedBuilders.errors[0]; } for (const w of detectedBuilders.warnings) { output_manager_default.warn(w.message, null, w.link, w.action || "Learn More"); } if (detectedBuilders.builders) { builds = detectedBuilders.builders; } else { builds = [{ src: "**", use: "@vercel/static" }]; } zeroConfigRoutes.push(...detectedBuilders.redirectRoutes || []); zeroConfigRoutes.push( ...(0, import_routing_utils2.appendRoutesToPhase)({ routes: [], newRoutes: detectedBuilders.rewriteRoutes, phase: "filesystem" }) ); zeroConfigRoutes = (0, import_routing_utils2.appendRoutesToPhase)({ routes: zeroConfigRoutes, newRoutes: detectedBuilders.errorRoutes, phase: "error" }); zeroConfigRoutes.push(...detectedBuilders.defaultRoutes || []); } const builderSpecs = new Set(builds.map((b) => b.use)); const buildersWithPkgs = await importBuilders(builderSpecs, cwd); const filesMap = {}; for (const path11 of files) { const fsPath = join17(workPath, path11); const { mode } = await import_fs_extra18.default.stat(fsPath); filesMap[path11] = new FileFsRef2({ mode, fsPath }); } const buildStamp = stamp_default(); await import_fs_extra18.default.mkdirp(outputDir); const ops = []; const buildsJsonBuilds = new Map( builds.map((build2) => { const builderWithPkg = buildersWithPkgs.get(build2.use); if (!builderWithPkg) { throw new Error(`Failed to load Builder "${build2.use}"`); } const { builder, pkg: builderPkg } = builderWithPkg; return [ build2, { require: builderPkg.name, requirePath: builderWithPkg.path, apiVersion: builder.version, ...build2 } ]; }) ); buildsJson.builds = Array.from(buildsJsonBuilds.values()); await writeBuildJson(buildsJson, outputDir); const meta = { skipDownload: true, cliVersion: pkg_default.version }; const sortedBuilders = sortBuilders(builds); const buildResults = /* @__PURE__ */ new Map(); const overrides = []; const repoRootPath = cwd; if (!corepackShimDir) { corepackShimDir = await initCorepack({ repoRootPath }); } const diagnostics = {}; for (const build2 of sortedBuilders) { if (typeof build2.src !== "string") continue; const builderWithPkg = buildersWithPkgs.get(build2.use); if (!builderWithPkg) { throw new Error(`Failed to load Builder "${build2.use}"`); } try { const { builder, pkg: builderPkg } = builderWithPkg; for (const key of [ "buildCommand", "installCommand", "outputDirectory", "nodeVersion" ]) { const value = projectSettings[key]; if (typeof value === "string") { const envKey = `VERCEL_PROJECT_SETTINGS_` + key.replace(/[A-Z]/g, (letter) => `_${letter}`).toUpperCase(); process.env[envKey] = value; output_manager_default.debug(`Setting env ${envKey} to "${value}"`); } } const isFrontendBuilder = build2.config && "framework" in build2.config; const buildConfig = isZeroConfig ? { outputDirectory: projectSettings.outputDirectory ?? void 0, ...build2.config, projectSettings, installCommand: projectSettings.installCommand ?? void 0, devCommand: projectSettings.devCommand ?? void 0, buildCommand: projectSettings.buildCommand ?? void 0, framework: projectSettings.framework, nodeVersion: projectSettings.nodeVersion, bunVersion: localConfig.bunVersion ?? void 0 } : { ...build2.config || {}, bunVersion: localConfig.bunVersion ?? void 0 }; const builderSpan = span.child("vc.builder", { name: builderPkg.name }); const buildOptions = { files: filesMap, entrypoint: build2.src, workPath, repoRootPath, config: buildConfig, meta, span: builderSpan }; output_manager_default.debug( `Building entrypoint "${build2.src}" with "${builderPkg.name}"` ); let buildResult; try { buildResult = await builderSpan.trace( async () => { if (shouldUseExperimentalBackends(buildConfig.framework) && builderPkg.name !== "@vercel/static" && isBackendBuilder2(build2)) { const experimentalBackendBuilder = await import("@vercel/backends"); return experimentalBackendBuilder.build(buildOptions); } return builder.build(buildOptions); } ); if (buildConfig.zeroConfig && isFrontendBuilder && "output" in buildResult && !buildResult.routes) { const framework2 = import_frameworks5.frameworkList.find( (f) => f.slug === buildConfig.framework ); if (framework2) { const defaultRoutes = await getFrameworkRoutes(framework2, workPath); buildResult.routes = defaultRoutes; } } } finally { try { const builderDiagnostics = await builderSpan.child("vc.builder.diagnostics").trace(async () => { return await builder.diagnostics?.(buildOptions); }); Object.assign(diagnostics, builderDiagnostics); } catch (error3) { output_manager_default.error("Collecting diagnostics failed"); output_manager_default.debug(error3); } } if (buildResult && "output" in buildResult && "runtime" in buildResult.output && "type" in buildResult.output && buildResult.output.type === "Lambda") { const lambdaRuntime = buildResult.output.runtime; if (getDiscontinuedNodeVersions().some((o) => o.runtime === lambdaRuntime)) { throw new NowBuildError6({ code: "NODEJS_DISCONTINUED_VERSION", message: `The Runtime "${build2.use}" is using "${lambdaRuntime}", which is discontinued. Please upgrade your Runtime to a more recent version or consult the author for more details.`, link: "https://vercel.link/function-runtimes" }); } } if ("output" in buildResult && buildResult.output && (isBackendBuilder2(build2) || build2.use === "@vercel/python")) { const routesJsonPath = join17(workPath, ".vercel", "routes.json"); if ((0, import_fs_extra18.existsSync)(routesJsonPath)) { try { const routesJson = await readJSONFile(routesJsonPath); if (routesJson && typeof routesJson === "object" && "routes" in routesJson && Array.isArray(routesJson.routes)) { const indexLambda = "index" in buildResult.output ? buildResult.output["index"] : void 0; const convertedRoutes = []; const convertedOutputs = indexLambda ? { index: indexLambda } : {}; for (const route of routesJson.routes) { if (typeof route.source !== "string") { continue; } const { src } = (0, import_routing_utils2.sourceToRegex)(route.source); const newRoute = { src, dest: route.source }; if (route.methods) { newRoute.methods = route.methods; } if (route.source === "/") { continue; } if (indexLambda) { convertedOutputs[route.source] = indexLambda; } convertedRoutes.push(newRoute); } buildResult.routes = [ { handle: "filesystem" }, ...convertedRoutes, { src: "/(.*)", dest: "/" } ]; if (indexLambda) { buildResult.output = convertedOutputs; } } } catch (error3) { output_manager_default.error(`Failed to read routes.json: ${error3}`); } } } buildResults.set(build2, buildResult); let buildOutputLength = 0; if ("output" in buildResult) { buildOutputLength = Array.isArray(buildResult.output) ? buildResult.output.length : 1; } ops.push( builderSpan.child("vc.builder.writeBuildResult", { buildOutputLength: String(buildOutputLength) }).trace( () => writeBuildResult({ repoRootPath, outputDir, buildResult, build: build2, builder, builderPkg, vercelConfig: localConfig, standalone, workPath }) ).then( (override) => { if (override) overrides.push(override); }, (err) => err ) ); } catch (err) { const buildJsonBuild = buildsJsonBuilds.get(build2); if (buildJsonBuild) { buildJsonBuild.error = toEnumerableError(err); } throw err; } finally { ops.push( download2(diagnostics, join17(outputDir, "diagnostics")).then( () => void 0, (err) => err ) ); } } if (corepackShimDir) { cleanupCorepack(corepackShimDir); } const errors = await Promise.all(ops); for (const error3 of errors) { if (error3) { throw error3; } } let needBuildsJsonOverride = false; const speedInsightsVersion = await getInstalledPackageVersion( "@vercel/speed-insights" ); if (speedInsightsVersion) { buildsJson.features = { ...buildsJson.features ?? {}, speedInsightsVersion }; needBuildsJsonOverride = true; } const webAnalyticsVersion = await getInstalledPackageVersion("@vercel/analytics"); if (webAnalyticsVersion) { buildsJson.features = { ...buildsJson.features ?? {}, webAnalyticsVersion }; needBuildsJsonOverride = true; } if (needBuildsJsonOverride) { await writeBuildJson(buildsJson, outputDir); } const configPath = join17(outputDir, "config.json"); const existingConfig = await readJSONFile(configPath); if (existingConfig instanceof CantParseJSONFile) { throw existingConfig; } if (existingConfig) { if ("deploymentId" in existingConfig && typeof existingConfig.deploymentId === "string") { const deploymentId = existingConfig.deploymentId; if (deploymentId.length > 32) { throw new NowBuildError6({ code: "INVALID_DEPLOYMENT_ID", message: `The deploymentId "${deploymentId}" must be 32 characters or less. Please choose a shorter deploymentId in your config.`, link: "https://vercel.com/docs/skew-protection#custom-skew-protection-deployment-id" }); } if (!VALID_DEPLOYMENT_ID_PATTERN.test(deploymentId)) { throw new NowBuildError6({ code: "INVALID_DEPLOYMENT_ID", message: `The deploymentId "${deploymentId}" contains invalid characters. Only alphanumeric characters (a-z, A-Z, 0-9), hyphens (-), and underscores (_) are allowed.`, link: "https://vercel.com/docs/skew-protection#custom-skew-protection-deployment-id" }); } } if (existingConfig.overrides) { overrides.push(existingConfig.overrides); } for (const [build2, buildResult] of buildResults.entries()) { if ("buildOutputPath" in buildResult) { output_manager_default.debug(`Using "config.json" for "${build2.use}`); buildResults.set(build2, existingConfig); break; } } } const builderRoutes = Array.from( buildResults.entries() ).filter((b) => "routes" in b[1] && Array.isArray(b[1].routes)).map((b) => { return { use: b[0].use, entrypoint: b[0].src, routes: b[1].routes }; }); if (zeroConfigRoutes.length) { builderRoutes.unshift({ use: "@vercel/zero-config-routes", entrypoint: "/", routes: zeroConfigRoutes }); } const mergedRoutes = (0, import_routing_utils2.mergeRoutes)({ userRoutes: routesResult.routes, builds: builderRoutes }); const mergedImages = mergeImages(localConfig.images, buildResults.values()); const mergedCrons = mergeCrons(localConfig.crons, buildResults.values()); const mergedWildcard = mergeWildcard(buildResults.values()); const mergedDeploymentId = await mergeDeploymentId( existingConfig?.deploymentId, buildResults.values(), workPath ); if (mergedDeploymentId) { if (mergedDeploymentId.length > 32) { throw new NowBuildError6({ code: "INVALID_DEPLOYMENT_ID", message: `The deploymentId "${mergedDeploymentId}" must be 32 characters or less. Please choose a shorter deploymentId in your config.`, link: "https://vercel.com/docs/skew-protection#custom-skew-protection-deployment-id" }); } if (!VALID_DEPLOYMENT_ID_PATTERN.test(mergedDeploymentId)) { throw new NowBuildError6({ code: "INVALID_DEPLOYMENT_ID", message: `The deploymentId "${mergedDeploymentId}" contains invalid characters. Only alphanumeric characters (a-z, A-Z, 0-9), hyphens (-), and underscores (_) are allowed.`, link: "https://vercel.com/docs/skew-protection#custom-skew-protection-deployment-id" }); } } const mergedOverrides = overrides.length > 0 ? Object.assign({}, ...overrides) : void 0; const framework = await getFramework(workPath, buildResults); const config2 = { version: 3, routes: mergedRoutes, images: mergedImages, wildcard: mergedWildcard, overrides: mergedOverrides, framework, crons: mergedCrons, ...mergedDeploymentId && { deploymentId: mergedDeploymentId } }; await import_fs_extra18.default.writeJSON(join17(outputDir, "config.json"), config2, { spaces: 2 }); await writeFlagsJSON(buildResults.values(), outputDir); const relOutputDir = relative6(cwd, outputDir); output_manager_default.print( `${prependEmoji( `Build Completed in ${import_chalk58.default.bold( relOutputDir.startsWith("..") ? outputDir : relOutputDir )} ${import_chalk58.default.gray(buildStamp())}`, emoji("success") )} ` ); } async function getFramework(cwd, buildResults) { const detectedFramework = await (0, import_fs_detectors4.detectFrameworkRecord)({ fs: new import_fs_detectors4.LocalFileSystemDetector(cwd), frameworkList: import_frameworks5.frameworkList }); if (!detectedFramework) { return; } if (detectedFramework.useRuntime) { for (const [build2, buildResult] of buildResults.entries()) { if ("framework" in buildResult && build2.use === detectedFramework.useRuntime.use) { return buildResult.framework; } } } if (detectedFramework.detectedVersion) { if (import_semver3.default.valid(detectedFramework.detectedVersion)) { return { version: detectedFramework.detectedVersion }; } } const frameworkVersion = (0, import_fs_detectors4.detectFrameworkVersion)(detectedFramework); if (frameworkVersion) { return { version: frameworkVersion }; } } function expandBuild(files, build2) { if (!build2.use) { throw new NowBuildError6({ code: `invalid_build_specification`, message: "Field `use` is missing in build specification", link: "https://vercel.com/docs/concepts/projects/project-configuration#builds", action: "View Documentation" }); } let src = normalize3(build2.src || "**").split(sep2).join("/"); if (src === "." || src === "./") { throw new NowBuildError6({ code: `invalid_build_specification`, message: "A build `src` path resolves to an empty string", link: "https://vercel.com/docs/concepts/projects/project-configuration#builds", action: "View Documentation" }); } if (src[0] === "/") { src = src.substring(1); } const matches = files.filter( (name) => name === src || (0, import_minimatch2.default)(name, src, { dot: true }) ); return matches.map((m) => { return { ...build2, src: m }; }); } function mergeImages(images, buildResults) { for (const result of buildResults) { if ("images" in result && result.images) { images = Object.assign({}, images, result.images); } } return images; } function mergeCrons(crons = [], buildResults) { for (const result of buildResults) { if ("crons" in result && result.crons) { crons = crons.concat(result.crons); } } return crons; } function mergeWildcard(buildResults) { let wildcard = void 0; for (const result of buildResults) { if ("wildcard" in result && result.wildcard) { if (!wildcard) wildcard = []; wildcard.push(...result.wildcard); } } return wildcard; } async function mergeDeploymentId(existingDeploymentId, buildResults, workPath) { if (existingDeploymentId) { return existingDeploymentId; } for (const result of buildResults) { if ("deploymentId" in result && result.deploymentId) { return result.deploymentId; } } try { const routesManifestPath = join17(workPath, ".next", "routes-manifest.json"); if (await import_fs_extra18.default.pathExists(routesManifestPath)) { const routesManifest = await readJSONFile( routesManifestPath ); if (routesManifest && !(routesManifest instanceof CantParseJSONFile)) { if (routesManifest.deploymentId) { return routesManifest.deploymentId; } } } } catch { } return void 0; } async function writeFlagsJSON(buildResults, outputDir) { const flagsFilePath = join17(outputDir, "flags.json"); let hasFlags = true; const flags = await import_fs_extra18.default.readJSON(flagsFilePath).catch((error3) => { if (error3.code === "ENOENT") { hasFlags = false; return { definitions: {} }; } throw error3; }); for (const result of buildResults) { if (!("flags" in result) || !result.flags || !result.flags.definitions) continue; for (const [key, definition] of Object.entries(result.flags.definitions)) { if (result.flags.definitions[key]) { output_manager_default.warn( `The flag "${key}" was found multiple times. Only its first occurrence will be considered.` ); continue; } hasFlags = true; flags.definitions[key] = definition; } } if (hasFlags) { await import_fs_extra18.default.writeJSON(flagsFilePath, flags, { spaces: 2 }); } } async function writeBuildJson(buildsJson, outputDir) { await import_fs_extra18.default.writeJSON(join17(outputDir, "builds.json"), buildsJson, { spaces: 2 }); } async function getFrameworkRoutes(framework, dirPrefix) { let routes2 = []; if (typeof framework.defaultRoutes === "function") { routes2 = await framework.defaultRoutes(dirPrefix); } else if (Array.isArray(framework.defaultRoutes)) { routes2 = framework.defaultRoutes; } return routes2; } var import_chalk58, import_dotenv2, import_fs_extra18, import_minimatch2, import_semver3, import_client6, import_frameworks5, import_fs_detectors4, import_routing_utils2, InMemoryReporter; var init_build2 = __esm({ "src/commands/build/index.ts"() { "use strict"; import_chalk58 = __toESM3(require_source(), 1); import_dotenv2 = __toESM3(require_main(), 1); import_fs_extra18 = __toESM3(require_lib(), 1); import_minimatch2 = __toESM3(require_minimatch2(), 1); import_semver3 = __toESM3(require_semver(), 1); import_client6 = __toESM3(require_dist7(), 1); import_frameworks5 = __toESM3(require_frameworks(), 1); import_fs_detectors4 = __toESM3(require_dist8(), 1); import_routing_utils2 = __toESM3(require_dist23(), 1); init_output_manager(); init_corepack(); init_import_builders(); init_monorepo(); init_scrub_argv(); init_sort_builders(); init_write_build_result(); init_emoji(); init_error2(); init_errors_ts(); init_get_args(); init_get_files(); init_get_flags_specification(); init_cmd(); init_stamp(); init_parse_target(); init_pkg(); init_pkg_name(); init_link2(); init_project_settings(); init_read_json_file(); init_build(); init_validate_config(); init_validate_cron_secret(); init_compile_vercel_config(); init_help(); init_pull4(); init_command4(); InMemoryReporter = class { constructor() { this.events = []; } report(event) { this.events.push(event); } }; } }); // src/util/telemetry/commands/cache/purge.ts var CachePurgeTelemetryClient; var init_purge = __esm({ "src/util/telemetry/commands/cache/purge.ts"() { "use strict"; init_telemetry(); CachePurgeTelemetryClient = class extends TelemetryClient { trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } trackCliOptionType(type) { if (type) { this.trackCliOption({ option: "type", value: type }); } } }; } }); // src/commands/cache/purge.ts async function purge(client2, argv) { const telemetry2 = new CachePurgeTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(purgeSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const link4 = await getLinkedProject(client2); if (link4.status === "not_linked") { output_manager_default.error( "No project linked. Run `vercel link` to link a project to this directory." ); return 1; } if (link4.status === "error") { return link4.exitCode; } const { project, org } = link4; client2.config.currentTeam = org.type === "team" ? org.id : void 0; const yes = Boolean(parsedArgs.flags["--yes"]); telemetry2.trackCliFlagYes(yes); const type = parsedArgs.flags["--type"] || "all"; telemetry2.trackCliOptionType(parsedArgs.flags["--type"]); const cacheTypeMap = { cdn: "the CDN cache", data: "the Data cache", all: "the CDN cache and Data cache" }; const validTypes = Object.keys(cacheTypeMap); if (!validTypes.includes(type)) { output_manager_default.error( `Invalid cache type "${type}". Valid types are: ${validTypes.join(", ")}` ); return 1; } const typeDesciption = cacheTypeMap[type]; const msg = `You are about to purge ${typeDesciption} for project ${project.name}`; const query = new URLSearchParams({ projectIdOrName: project.id }).toString(); if (!yes) { if (!process.stdin.isTTY) { output_manager_default.print( `${msg}. To continue, run ${getCommandName("cache purge --yes")}.` ); return 1; } const confirmed = await client2.input.confirm(`${msg}. Continue?`, true); if (!confirmed) { output_manager_default.print(`Canceled. `); return 0; } } const requests = []; if (type === "cdn" || type === "all") { requests.push( client2.fetch(`/v1/edge-cache/purge-all?${query}`, { method: "POST", headers: { "Content-Type": "application/json" } }) ); } if (type === "data" || type === "all") { requests.push( client2.fetch(`/v1/data-cache/purge-all?${query}`, { method: "DELETE", headers: { "Content-Type": "application/json" } }) ); } await Promise.all(requests); output_manager_default.print( prependEmoji(`Successfully purged ${typeDesciption}`, emoji("success")) + ` ` ); return 0; } var init_purge2 = __esm({ "src/commands/cache/purge.ts"() { "use strict"; init_get_args(); init_error2(); init_command5(); init_get_flags_specification(); init_output_manager(); init_pkg_name(); init_link2(); init_emoji(); init_purge(); } }); // src/util/telemetry/commands/cache/invalidate.ts var CacheInvalidateTelemetryClient; var init_invalidate = __esm({ "src/util/telemetry/commands/cache/invalidate.ts"() { "use strict"; init_telemetry(); CacheInvalidateTelemetryClient = class extends TelemetryClient { trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } trackCliOptionTag(tag) { if (tag) { this.trackCliOption({ option: "tag", value: tag }); } } trackCliOptionSrcimg(srcimg) { if (srcimg) { this.trackCliOption({ option: "srcimg", value: srcimg }); } } }; } }); // src/commands/cache/invalidate.ts async function invalidate(client2, argv) { const telemetry2 = new CacheInvalidateTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification( invalidateSubcommand.options ); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const link4 = await getLinkedProject(client2); if (link4.status === "not_linked") { output_manager_default.error( "No project linked. Run `vercel link` to link a project to this directory." ); return 1; } if (link4.status === "error") { return link4.exitCode; } const { project, org } = link4; client2.config.currentTeam = org.type === "team" ? org.id : void 0; const yes = Boolean(parsedArgs.flags["--yes"]); const tag = parsedArgs.flags["--tag"]; const srcimg = parsedArgs.flags["--srcimg"]; telemetry2.trackCliFlagYes(yes); telemetry2.trackCliOptionTag(tag); telemetry2.trackCliOptionSrcimg(srcimg); if (tag && srcimg) { output_manager_default.error(`Cannot use both --tag and --srcimg options`); return 1; } let itemName = ""; let itemValue = ""; let flag = ""; let postUrl = ""; let postBody = {}; if (tag) { itemName = (0, import_pluralize5.default)("tag", tag.split(",").length, false); itemValue = tag; flag = "--tag"; postUrl = "/v1/edge-cache/invalidate-by-tags"; postBody = { tags: tag }; } else if (srcimg) { itemName = "source image"; itemValue = srcimg; flag = "--srcimg"; postUrl = "/v1/edge-cache/invalidate-by-src-images"; postBody = { srcImages: [srcimg] }; } else { output_manager_default.error(`The --tag or --srcimg option is required`); return 1; } const msg = `You are about to invalidate all cached content associated with ${itemName} ${itemValue} for project ${project.name}`; if (!yes) { if (!process.stdin.isTTY) { output_manager_default.print( `${msg}. To continue, run ${getCommandName(`cache invalidate ${flag} ${itemValue} --yes`)}.` ); return 1; } const confirmed = await client2.input.confirm(`${msg}. Continue?`, true); if (!confirmed) { output_manager_default.print(`Canceled. `); return 0; } } await client2.fetch(`${postUrl}?projectIdOrName=${project.id}`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(postBody) }); output_manager_default.print( prependEmoji( `Successfully invalidated all cached content associated with ${itemName} ${itemValue}`, emoji("success") ) + ` ` ); return 0; } var import_pluralize5; var init_invalidate2 = __esm({ "src/commands/cache/invalidate.ts"() { "use strict"; init_get_args(); init_error2(); init_command5(); init_get_flags_specification(); init_output_manager(); init_pkg_name(); init_link2(); init_emoji(); init_invalidate(); import_pluralize5 = __toESM3(require_pluralize(), 1); } }); // src/util/telemetry/commands/cache/dangerously-delete.ts var CacheDangerouslyDeleteTelemetryClient; var init_dangerously_delete = __esm({ "src/util/telemetry/commands/cache/dangerously-delete.ts"() { "use strict"; init_telemetry(); CacheDangerouslyDeleteTelemetryClient = class extends TelemetryClient { trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } trackCliOptionTag(tag) { if (tag) { this.trackCliOption({ option: "tag", value: tag }); } } trackCliOptionSrcimg(srcimg) { if (srcimg) { this.trackCliOption({ option: "srcimg", value: srcimg }); } } trackCliOptionRevalidationDeadlineSeconds(seconds) { if (seconds) { this.trackCliOption({ option: "revalidation-deadline-seconds", value: seconds?.toString() }); } } }; } }); // src/commands/cache/dangerously-delete.ts async function dangerouslyDelete(client2, argv) { const telemetry2 = new CacheDangerouslyDeleteTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification( dangerouslyDeleteSubcommand.options ); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const link4 = await getLinkedProject(client2); if (link4.status === "not_linked") { output_manager_default.error( "No project linked. Run `vercel link` to link a project to this directory." ); return 1; } if (link4.status === "error") { return link4.exitCode; } const { project, org } = link4; client2.config.currentTeam = org.type === "team" ? org.id : void 0; const yes = Boolean(parsedArgs.flags["--yes"]); const tag = parsedArgs.flags["--tag"]; const srcimg = parsedArgs.flags["--srcimg"]; const revalidate = parsedArgs.flags["--revalidation-deadline-seconds"]; telemetry2.trackCliFlagYes(yes); telemetry2.trackCliOptionTag(tag); telemetry2.trackCliOptionSrcimg(srcimg); telemetry2.trackCliOptionRevalidationDeadlineSeconds(revalidate); if (tag && srcimg) { output_manager_default.error(`Cannot use both --tag and --srcimg options`); return 1; } let itemName = ""; let itemValue = ""; let flag = ""; let postUrl = ""; let postBody = {}; if (tag) { itemName = (0, import_pluralize6.default)("tag", tag.split(",").length, false); itemValue = tag; flag = "--tag"; postUrl = "/v1/edge-cache/dangerously-delete-by-tags"; postBody = { tags: tag, revalidationDeadlineSeconds: revalidate }; } else if (srcimg) { itemName = "source image"; itemValue = srcimg; flag = "--srcimg"; postUrl = "/v1/edge-cache/dangerously-delete-by-src-images"; postBody = { srcImages: [srcimg], revalidationDeadlineSeconds: revalidate }; } else { output_manager_default.error(`The --tag or --srcimg option is required`); return 1; } const msg = `You are about to dangerously delete all cached content associated with ${itemName} ${itemValue} for project ${project.name}`; if (!yes) { if (!process.stdin.isTTY) { const optional = typeof revalidate !== "undefined" ? ` --revalidation-deadline-seconds ${revalidate}` : ""; output_manager_default.print( `${msg}. To continue, run ${getCommandName(`cache dangerously-delete ${flag} ${itemValue}${optional} --yes`)}.` ); return 1; } const confirmed = await client2.input.confirm(`${msg}. Continue?`, true); if (!confirmed) { output_manager_default.print(`Canceled. `); return 0; } } await client2.fetch(`${postUrl}?projectIdOrName=${project.id}`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(postBody) }); output_manager_default.print( prependEmoji( `Successfully deleted all cached content associated with ${itemName} ${itemValue}`, emoji("success") ) + ` ` ); return 0; } var import_pluralize6; var init_dangerously_delete2 = __esm({ "src/commands/cache/dangerously-delete.ts"() { "use strict"; init_get_args(); init_error2(); init_command5(); init_get_flags_specification(); init_output_manager(); init_pkg_name(); init_link2(); init_emoji(); init_dangerously_delete(); import_pluralize6 = __toESM3(require_pluralize(), 1); } }); // src/util/telemetry/commands/cache/index.ts var CacheTelemetryClient; var init_cache = __esm({ "src/util/telemetry/commands/cache/index.ts"() { "use strict"; init_telemetry(); CacheTelemetryClient = class extends TelemetryClient { trackCliSubcommandPurge(actual) { this.trackCliSubcommand({ subcommand: "purge", value: actual }); } trackCliSubcommandInvalidate(actual) { this.trackCliSubcommand({ subcommand: "invalidate", value: actual }); } trackCliSubcommandDangerouslyDelete(actual) { this.trackCliSubcommand({ subcommand: "dangerously-delete", value: actual }); } }; } }); // src/commands/cache/index.ts var cache_exports = {}; __export3(cache_exports, { default: () => main4 }); async function main4(client2) { const telemetry2 = new CacheTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(cacheCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const subArgs = parsedArgs.args.slice(1); const { subcommand, args: args2, subcommandOriginal } = getSubcommand( subArgs, COMMAND_CONFIG4 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp(cacheCommand.name); output_manager_default.print(help(cacheCommand, { columns: client2.stderr.columns })); return 0; } function printHelp(command) { telemetry2.trackCliFlagHelp(command.name, subcommandOriginal); output_manager_default.print( help(command, { parent: cacheCommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "purge": if (needHelp) { printHelp(purgeSubcommand); return 2; } telemetry2.trackCliSubcommandPurge(subcommandOriginal); return purge(client2, args2); case "invalidate": if (needHelp) { printHelp(invalidateSubcommand); return 2; } telemetry2.trackCliSubcommandInvalidate(subcommandOriginal); return invalidate(client2, args2); case "dangerously-delete": if (needHelp) { printHelp(dangerouslyDeleteSubcommand); return 2; } telemetry2.trackCliSubcommandDangerouslyDelete(subcommandOriginal); return dangerouslyDelete(client2, args2); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG4)); output_manager_default.print(help(cacheCommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG4; var init_cache2 = __esm({ "src/commands/cache/index.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_get_subcommand(); init_error2(); init_help(); init_purge2(); init_invalidate2(); init_dangerously_delete2(); init_command5(); init_get_flags_specification(); init_output_manager(); init_commands(); init_cache(); COMMAND_CONFIG4 = { purge: getCommandAliases(purgeSubcommand), invalidate: getCommandAliases(invalidateSubcommand), "dangerously-delete": getCommandAliases(dangerouslyDeleteSubcommand) }; } }); // src/util/certs/create-cert-from-file.ts import { readFileSync } from "fs"; import { resolve as resolve10 } from "path"; async function createCertFromFile(client2, keyPath, certPath, caPath) { output_manager_default.spinner("Adding your custom certificate"); try { const cert = readFileSync(resolve10(certPath), "utf8"); const key = readFileSync(resolve10(keyPath), "utf8"); const ca = readFileSync(resolve10(caPath), "utf8"); const certificate = await client2.fetch("/v3/certs", { method: "PUT", body: { ca, cert, key } }); return certificate; } catch (err) { if ((0, import_error_utils17.isErrnoException)(err) && err.code === "ENOENT") { return new Error(`The specified file "${err.path}" doesn't exist.`); } if (isAPIError(err) && err.status < 500) { return err; } throw err; } } var import_error_utils17; var init_create_cert_from_file = __esm({ "src/util/certs/create-cert-from-file.ts"() { "use strict"; import_error_utils17 = __toESM3(require_dist2(), 1); init_errors_ts(); init_output_manager(); } }); // src/util/telemetry/commands/certs/add.ts var CertsAddTelemetryClient; var init_add = __esm({ "src/util/telemetry/commands/certs/add.ts"() { "use strict"; init_telemetry(); CertsAddTelemetryClient = class extends TelemetryClient { trackCliFlagOverwrite(v) { if (v) { this.trackCliFlag("overwrite"); } } trackCliOptionCrt(v) { if (v) { this.trackCliOption({ option: "crt", value: this.redactedValue }); } } trackCliOptionKey(v) { if (v) { this.trackCliOption({ option: "key", value: this.redactedValue }); } } trackCliOptionCa(v) { if (v) { this.trackCliOption({ option: "ca", value: this.redactedValue }); } } }; } }); // src/commands/certs/add.ts async function add(client2, argv) { const { telemetryEventStore } = client2; const addStamp = stamp_default(); let parsedArgs; const flagsSpecification = getFlagsSpecification(addSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArgs; let cert; const { "--overwrite": overwrite, "--crt": crtPath, "--key": keyPath, "--ca": caPath } = opts; const telemetry2 = new CertsAddTelemetryClient({ opts: { store: telemetryEventStore } }); telemetry2.trackCliFlagOverwrite(overwrite); telemetry2.trackCliOptionCrt(crtPath); telemetry2.trackCliOptionKey(keyPath); telemetry2.trackCliOptionCa(caPath); if (overwrite) { output_manager_default.error("Overwrite option is deprecated"); return 1; } if (crtPath || keyPath || caPath) { if (args2.length !== 0 || !crtPath || !keyPath || !caPath) { output_manager_default.error( `Invalid number of arguments to create a custom certificate entry. Usage:` ); output_manager_default.print( ` ${import_chalk59.default.cyan( `${getCommandName( "certs add --crt --key --ca " )}` )} ` ); return 1; } cert = await createCertFromFile(client2, keyPath, crtPath, caPath); } else { output_manager_default.warn( `${import_chalk59.default.cyan( getCommandName("certs add") )} will be soon deprecated. Please use ${import_chalk59.default.cyan( getCommandName("certs issue ") )} instead` ); if (args2.length < 1) { output_manager_default.error( `Invalid number of arguments to create a custom certificate entry. Usage:` ); output_manager_default.print( ` ${import_chalk59.default.cyan(getCommandName("certs add [, ]"))} ` ); return 1; } const cns = args2.reduce( (res, item) => res.concat(item.split(",")), [] ); output_manager_default.spinner( `Generating a certificate for ${import_chalk59.default.bold(cns.join(", "))}` ); const { contextName } = await getScope(client2); cert = await createCertForCns(client2, cns, contextName); output_manager_default.stopSpinner(); } if (cert instanceof Error) { output_manager_default.error(cert.message); return 1; } else { output_manager_default.success( `Certificate entry for ${import_chalk59.default.bold( cert.cns.join(", ") )} created ${addStamp()}` ); } return 0; } var import_chalk59, add_default; var init_add2 = __esm({ "src/commands/certs/add.ts"() { "use strict"; import_chalk59 = __toESM3(require_source(), 1); init_get_scope(); init_stamp(); init_output_manager(); init_create_cert_from_file(); init_create_cert_for_cns(); init_pkg_name(); init_add(); init_command6(); init_get_flags_specification(); init_get_args(); init_error2(); add_default = add; } }); // src/util/certs/finish-cert-order.ts async function startCertOrder(client2, cns, context) { output_manager_default.spinner(`Issuing a certificate for ${import_chalk60.default.bold(cns.join(", "))}`); try { const cert = await client2.fetch("/v3/certs", { method: "PATCH", body: { op: "finalizeOrder", domains: cns } }); return cert; } catch (err) { if (isAPIError(err)) { if (err.code === "cert_order_not_found") { return new CertOrderNotFound(cns); } const mappedError = mapCertError(err, cns); if (mappedError) { return mappedError; } } throw err; } } var import_chalk60; var init_finish_cert_order = __esm({ "src/util/certs/finish-cert-order.ts"() { "use strict"; import_chalk60 = __toESM3(require_source(), 1); init_errors_ts(); init_map_cert_error(); init_output_manager(); } }); // src/util/certs/get-cns-from-args.ts function getCnsFromArgs(args2) { return args2.reduce((res, item) => [...res, ...item.split(",")], []).filter((i) => i); } var init_get_cns_from_args = __esm({ "src/util/certs/get-cns-from-args.ts"() { "use strict"; } }); // src/util/certs/start-cert-order.ts async function startCertOrder2(client2, cns, contextName) { output_manager_default.spinner( `Starting certificate issuance for ${import_chalk61.default.bold( cns.join(", ") )} under ${import_chalk61.default.bold(contextName)}` ); const order = await client2.fetch("/v3/certs", { method: "PATCH", body: { op: "startOrder", domains: cns } }); return order; } var import_chalk61; var init_start_cert_order = __esm({ "src/util/certs/start-cert-order.ts"() { "use strict"; import_chalk61 = __toESM3(require_source(), 1); init_output_manager(); } }); // src/util/telemetry/commands/certs/issue.ts var CertsIssueTelemetryClient; var init_issue = __esm({ "src/util/telemetry/commands/certs/issue.ts"() { "use strict"; init_add(); CertsIssueTelemetryClient = class extends CertsAddTelemetryClient { trackCliArgumentCn(value) { if (value) { this.trackCliArgument({ arg: "cn", value: this.redactedValue }); } } trackCliFlagChallengeOnly(v) { if (v) { this.trackCliFlag("challenge-only"); } } }; } }); // src/commands/certs/issue.ts async function issue(client2, argv) { let cert; const { telemetryEventStore } = client2; const addStamp = stamp_default(); let parsedArgs; const flagsSpecification = getFlagsSpecification(issueSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArgs; const { "--challenge-only": challengeOnly, "--overwrite": overwrite, "--crt": crtPath, "--key": keyPath, "--ca": caPath } = opts; const telemetry2 = new CertsIssueTelemetryClient({ opts: { store: telemetryEventStore } }); telemetry2.trackCliFlagChallengeOnly(challengeOnly); telemetry2.trackCliFlagOverwrite(overwrite); telemetry2.trackCliOptionCrt(crtPath); telemetry2.trackCliOptionKey(keyPath); telemetry2.trackCliOptionCa(caPath); if (overwrite) { output_manager_default.error("Overwrite option is deprecated"); return 1; } if (crtPath || keyPath || caPath) { if (args2.length !== 0 || !crtPath || !keyPath || !caPath) { output_manager_default.error( `Invalid number of arguments to create a custom certificate entry. Usage:` ); output_manager_default.print( ` ${import_chalk62.default.cyan( getCommandName( "certs issue --crt --key --ca " ) )} ` ); return 1; } cert = await createCertFromFile(client2, keyPath, crtPath, caPath); if (cert instanceof Error) { output_manager_default.error(cert.message); return 1; } output_manager_default.success( `Certificate entry for ${import_chalk62.default.bold( cert.cns.join(", ") )} created ${addStamp()}` ); return 0; } if (args2.length < 1) { output_manager_default.error( `Invalid number of arguments to create a custom certificate entry. Usage:` ); output_manager_default.print( ` ${import_chalk62.default.cyan(getCommandName("certs issue [, ]"))} ` ); return 1; } telemetry2.trackCliArgumentCn(args2[0]); const cns = getCnsFromArgs(args2); const { contextName } = await getScope(client2); if (challengeOnly) { return runStartOrder(client2, cns, contextName, addStamp); } cert = await startCertOrder(client2, cns, contextName); if (cert instanceof CertOrderNotFound) { cert = await createCertForCns(client2, cns, contextName); } if (cert instanceof CertError) { if (cert.meta.code === "wildcard_not_allowed") { return runStartOrder(client2, cns, contextName, addStamp, { fallingBack: true }); } } const handledResult = handleCertError(cert); if (handledResult === 1) { return handledResult; } if (handledResult instanceof DomainPermissionDenied) { output_manager_default.error( `You do not have permissions over domain ${import_chalk62.default.underline( handledResult.meta.domain )} under ${import_chalk62.default.bold(handledResult.meta.context)}.` ); return 1; } output_manager_default.success( `Certificate entry for ${import_chalk62.default.bold( handledResult.cns.join(", ") )} created ${addStamp()}` ); return 0; } async function runStartOrder(client2, cns, contextName, stamp, { fallingBack = false } = {}) { const { challengesToResolve } = await startCertOrder2( client2, cns, contextName ); const pendingChallenges = challengesToResolve.filter( (challenge) => challenge.status === "pending" ); if (fallingBack) { output_manager_default.warn( `To generate a wildcard certificate for domain for an external domain you must solve challenges manually.` ); } if (pendingChallenges.length === 0) { output_manager_default.log( `A certificate issuance for ${import_chalk62.default.bold( cns.join(", ") )} has been started ${stamp()}` ); output_manager_default.print( ` There are no pending challenges. Finish the issuance by running: ` ); output_manager_default.print( ` ${import_chalk62.default.cyan(getCommandName(`certs issue ${cns.join(" ")}`))} ` ); return 0; } output_manager_default.log( `A certificate issuance for ${import_chalk62.default.bold( cns.join(", ") )} has been started ${stamp()}` ); output_manager_default.print( ` Add the following TXT records with your registrar to be able to the solve the DNS challenge: ` ); const [header, ...rows] = formatDNSTable( pendingChallenges.map((challenge) => { const subdomain = (0, import_tldts4.getSubdomain)(challenge.domain); if (subdomain === null) { throw new InvalidDomain(challenge.domain); } return [ subdomain ? `_acme-challenge.${subdomain}` : `_acme-challenge`, "TXT", challenge.value ]; }) ).split("\n"); output_manager_default.print(`${header} `); client2.stdout.write(`${rows.join("\n")} `); output_manager_default.log(`To issue the certificate once the records are added, run:`); output_manager_default.print( ` ${import_chalk62.default.cyan(getCommandName(`certs issue ${cns.join(" ")}`))} ` ); output_manager_default.print( " Read more: https://err.sh/vercel/solve-challenges-manually\n" ); return 0; } var import_chalk62, import_tldts4; var init_issue2 = __esm({ "src/commands/certs/issue.ts"() { "use strict"; import_chalk62 = __toESM3(require_source(), 1); import_tldts4 = __toESM3(require_cjs7(), 1); init_errors_ts(); init_create_cert_for_cns(); init_create_cert_from_file(); init_format_dns_table(); init_finish_cert_order(); init_get_cns_from_args(); init_get_scope(); init_stamp(); init_start_cert_order(); init_handle_cert_error(); init_pkg_name(); init_output_manager(); init_issue(); init_command6(); init_get_flags_specification(); init_get_args(); init_error2(); } }); // src/util/certs/get-certs.ts async function getCerts(client2, next, limit = 20) { let certsUrl = `/v4/certs?limit=${limit}`; if (next) { certsUrl += `&until=${next}`; } return await client2.fetch(certsUrl); } var init_get_certs = __esm({ "src/util/certs/get-certs.ts"() { "use strict"; } }); // src/util/telemetry/commands/certs/ls.ts var CertsLsTelemetryClient; var init_ls2 = __esm({ "src/util/telemetry/commands/certs/ls.ts"() { "use strict"; init_telemetry(); CertsLsTelemetryClient = class extends TelemetryClient { trackCliOptionLimit(limit) { if (limit) { this.trackCliOption({ option: "limit", value: this.redactedValue }); } } trackCliOptionNext(next) { if (next) { this.trackCliOption({ option: "next", value: this.redactedValue }); } } }; } }); // src/commands/certs/ls.ts async function ls2(client2, argv) { const { telemetryEventStore } = client2; const telemetry2 = new CertsLsTelemetryClient({ opts: { store: telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(listSubcommand3.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArgs; const validationResult = validateLsArgs({ commandName: "certs ls", args: args2 }); if (validationResult !== 0) { return validationResult; } telemetry2.trackCliOptionLimit(opts["--limit"]); telemetry2.trackCliOptionNext(opts["--next"]); let paginationOptions; try { paginationOptions = getPaginationOpts(opts); } catch (err) { output_manager_default.prettyError(err); return 1; } const lsStamp = stamp_default(); const { certs, pagination } = await getCerts(client2, ...paginationOptions); const { contextName } = await getScope(client2); output_manager_default.log( `${certs.length > 0 ? "Certificates" : "No certificates"} found under ${import_chalk63.default.bold(contextName)} ${lsStamp()}` ); if (certs.length > 0) { client2.stdout.write(formatCertsTable(certs)); } if (pagination && pagination.count === 20) { const flags = getCommandFlags(opts, ["_", "--next"]); output_manager_default.log( `To display the next page run ${getCommandName( `certs ls${flags} --next ${pagination.next}` )}` ); } return 0; } function formatCertsTable(certsList) { return `${table( [formatCertsTableHead(), ...formatCertsTableBody(certsList)], { align: ["l", "l", "r", "c", "r"], hsep: 2 } ).replace(/^(.*)/gm, " $1")} `; } function formatCertsTableHead() { return [ import_chalk63.default.dim("id"), import_chalk63.default.dim("cns"), import_chalk63.default.dim("expiration"), import_chalk63.default.dim("renew"), import_chalk63.default.dim("age") ]; } function formatCertsTableBody(certsList) { const now = /* @__PURE__ */ new Date(); return certsList.reduce( (result, cert) => result.concat(formatCert(now, cert)), [] ); } function formatCert(time, cert) { return cert.cns.map( (cn, idx) => idx === 0 ? formatCertFirstCn(time, cert, cn, cert.cns.length > 1) : formatCertNonFirstCn(cn, cert.cns.length > 1) ); } function formatCertNonFirstCn(cn, multiple) { return ["", formatCertCn(cn, multiple), "", "", ""]; } function formatCertCn(cn, multiple) { return multiple ? `${import_chalk63.default.gray("-")} ${import_chalk63.default.bold(cn)}` : import_chalk63.default.bold(cn); } function formatCertFirstCn(time, cert, cn, multiple) { return [ cert.uid, formatCertCn(cn, multiple), formatExpirationDate(new Date(cert.expiration)), cert.autoRenew ? "yes" : "no", import_chalk63.default.gray((0, import_ms7.default)(time.getTime() - new Date(cert.created).getTime())) ]; } function formatExpirationDate(date) { const diff = date.getTime() - Date.now(); return diff < 0 ? import_chalk63.default.gray(`${(0, import_ms7.default)(-diff)} ago`) : import_chalk63.default.gray(`in ${(0, import_ms7.default)(diff)}`); } var import_chalk63, import_ms7, ls_default; var init_ls3 = __esm({ "src/commands/certs/ls.ts"() { "use strict"; import_chalk63 = __toESM3(require_source(), 1); import_ms7 = __toESM3(require_ms(), 1); init_table(); init_get_scope(); init_get_pagination_opts(); init_stamp(); init_get_certs(); init_get_command_flags(); init_pkg_name(); init_output_manager(); init_ls2(); init_command6(); init_get_flags_specification(); init_get_args(); init_error2(); init_validate_ls_args(); ls_default = ls2; } }); // src/util/certs/delete-cert-by-id.ts async function deleteCertById(client2, id) { return client2.fetch(`/v5/certs/${id}`, { method: "DELETE" }); } var init_delete_cert_by_id = __esm({ "src/util/certs/delete-cert-by-id.ts"() { "use strict"; } }); // src/util/certs/get-cert-by-id.ts async function getCertById(client2, id) { try { return await client2.fetch(`/v6/certs/${id}`); } catch (err) { if (isAPIError(err) && err.code === "cert_not_found") { return new CertNotFound(id); } throw err; } } var init_get_cert_by_id = __esm({ "src/util/certs/get-cert-by-id.ts"() { "use strict"; init_errors_ts(); } }); // src/util/certs/get-custom-certs-for-domain.ts import { stringify } from "querystring"; async function getCustomCertsForDomain(client2, context, domain) { try { const { certs } = await client2.fetch( `/v5/now/certs?${stringify({ domain, custom: true })}` ); return certs; } catch (err) { if (isAPIError(err) && err.code === "forbidden") { return new CertsPermissionDenied(context, domain); } throw err; } } var init_get_custom_certs_for_domain = __esm({ "src/util/certs/get-custom-certs-for-domain.ts"() { "use strict"; init_errors_ts(); } }); // src/util/telemetry/commands/certs/remove.ts var CertsRemoveTelemetryClient; var init_remove2 = __esm({ "src/util/telemetry/commands/certs/remove.ts"() { "use strict"; init_telemetry(); CertsRemoveTelemetryClient = class extends TelemetryClient { trackCliArgumentId(v) { if (v) { this.trackCliArgument({ arg: "id", value: this.redactedValue }); } } }; } }); // src/commands/certs/rm.ts async function rm2(client2, argv) { const rmStamp = stamp_default(); const { telemetryEventStore } = client2; const telemetry2 = new CertsRemoveTelemetryClient({ opts: { store: telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(removeSubcommand2.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2 } = parsedArgs; const id = args2[0]; telemetry2.trackCliArgumentId(id); if (args2.length !== 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk64.default.cyan( `${getCommandName("certs rm ")}` )}` ); return 1; } const { contextName } = await getScope(client2); const certs = await getCertsToDelete(client2, contextName, id); if (certs instanceof CertsPermissionDenied) { output_manager_default.error( `You don't have access to ${param(id)}'s certs under ${contextName}.` ); return 1; } if (certs.length === 0) { if (id.includes(".")) { output_manager_default.error( `No custom certificates found for "${id}" under ${import_chalk64.default.bold( contextName )}` ); } else { output_manager_default.error( `No certificates found by id "${id}" under ${import_chalk64.default.bold(contextName)}` ); } return 1; } const yes = await readConfirmation( client2, "The following certificates will be removed permanently", certs ); if (!yes) { return 0; } await Promise.all(certs.map((cert) => deleteCertById(client2, cert.uid))); output_manager_default.success( `${import_chalk64.default.bold( (0, import_pluralize7.default)("Certificate", certs.length, true) )} removed ${rmStamp()}` ); return 0; } async function getCertsToDelete(client2, contextName, id) { const cert = await getCertById(client2, id); if (cert instanceof CertNotFound) { const certs = await getCustomCertsForDomain(client2, contextName, id); if (certs instanceof CertsPermissionDenied) { return certs; } return certs; } return [cert]; } function readConfirmation(client2, msg, certs) { return new Promise((resolve14) => { output_manager_default.log(msg); output_manager_default.print( `${table(certs.map(formatCertRow), { align: ["l", "r", "l"], hsep: 6 }).replace(/^(.*)/gm, " $1")} ` ); output_manager_default.print( `${import_chalk64.default.bold.red("> Are you sure?")} ${import_chalk64.default.gray("(y/N) ")}` ); client2.stdin.on("data", (d) => { process.stdin.pause(); resolve14(d.toString().trim().toLowerCase() === "y"); }).resume(); }); } function formatCertRow(cert) { return [ cert.uid, import_chalk64.default.bold(cert.cns ? cert.cns.join(", ") : "\u2013"), ...cert.created ? [import_chalk64.default.gray(`${(0, import_ms8.default)(Date.now() - new Date(cert.created).getTime())} ago`)] : [] ]; } var import_chalk64, import_ms8, import_pluralize7, rm_default; var init_rm2 = __esm({ "src/commands/certs/rm.ts"() { "use strict"; import_chalk64 = __toESM3(require_source(), 1); import_ms8 = __toESM3(require_ms(), 1); import_pluralize7 = __toESM3(require_pluralize(), 1); init_table(); init_errors_ts(); init_delete_cert_by_id(); init_get_cert_by_id(); init_get_custom_certs_for_domain(); init_get_scope(); init_stamp(); init_param(); init_pkg_name(); init_output_manager(); init_remove2(); init_command6(); init_get_flags_specification(); init_get_args(); init_error2(); rm_default = rm2; } }); // src/util/telemetry/commands/certs/index.ts var CertsTelemetryClient; var init_certs = __esm({ "src/util/telemetry/commands/certs/index.ts"() { "use strict"; init_telemetry(); CertsTelemetryClient = class extends TelemetryClient { trackCliSubcommandIssue(actual) { this.trackCliSubcommand({ subcommand: "issue", value: actual }); } trackCliSubcommandAdd(actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "remove", value: actual }); } trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } }; } }); // src/commands/certs/index.ts var certs_exports = {}; __export3(certs_exports, { default: () => main5 }); async function main5(client2) { const { telemetryEventStore } = client2; const telemetry2 = new CertsTelemetryClient({ opts: { store: telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(certsCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const { subcommand, subcommandOriginal, args: args2 } = getSubcommand( parsedArgs.args.slice(1), COMMAND_CONFIG5 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("certs", subcommand); output_manager_default.print(help(certsCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: certsCommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "issue": if (needHelp) { telemetry2.trackCliFlagHelp("certs", subcommandOriginal); printHelp(issueSubcommand); return 2; } telemetry2.trackCliSubcommandIssue(subcommandOriginal); return issue(client2, args2); case "ls": if (needHelp) { telemetry2.trackCliFlagHelp("certs", subcommandOriginal); printHelp(listSubcommand3); return 2; } telemetry2.trackCliSubcommandList(subcommandOriginal); return ls_default(client2, args2); case "rm": if (needHelp) { telemetry2.trackCliFlagHelp("certs", subcommandOriginal); printHelp(removeSubcommand2); return 2; } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return rm_default(client2, args2); case "add": if (needHelp) { telemetry2.trackCliFlagHelp("certs", subcommandOriginal); printHelp(addSubcommand); return 2; } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return add_default(client2, args2); default: output_manager_default.error("Please specify a valid subcommand: ls | issue | rm"); output_manager_default.print(help(certsCommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG5; var init_certs2 = __esm({ "src/commands/certs/index.ts"() { "use strict"; init_error2(); init_get_args(); init_get_subcommand(); init_add2(); init_issue2(); init_ls3(); init_rm2(); init_command6(); init_help(); init_get_flags_specification(); init_output_manager(); init_certs(); init_commands(); COMMAND_CONFIG5 = { add: getCommandAliases(addSubcommand), issue: getCommandAliases(issueSubcommand), ls: getCommandAliases(listSubcommand3), rm: getCommandAliases(removeSubcommand2) }; } }); // src/commands/curl/utils.ts var requoteArgs; var init_utils4 = __esm({ "src/commands/curl/utils.ts"() { "use strict"; requoteArgs = (arg2) => { if (arg2.includes(" ")) { if (arg2.includes('"')) { return `'${arg2}'`; } else { return `"${arg2}"`; } } return arg2; }; } }); // src/util/telemetry/commands/curl/index.ts var CurlTelemetryClient; var init_curl = __esm({ "src/util/telemetry/commands/curl/index.ts"() { "use strict"; init_telemetry(); CurlTelemetryClient = class extends TelemetryClient { trackCliArgumentPath(path11) { if (path11) { const value = path11.startsWith("/") ? "slash" : "no-slash"; this.trackCliArgument({ arg: "path", value }); } } trackCliOptionDeployment(deploymentId) { if (deploymentId) { const value = deploymentId.startsWith("http://") || deploymentId.startsWith("https://") ? "url" : deploymentId.startsWith("dpl_") ? "dpl_" : "no-prefix"; this.trackCliOption({ option: "deployment", value }); } } trackCliOptionProtectionBypass(secret) { if (secret) { this.trackCliOption({ option: "protection-bypass", value: this.redactedValue }); } } }; } }); // src/commands/curl/bypass-token.ts async function createDeploymentProtectionToken(client2, projectId, orgId) { if (!client2.authConfig.token) { output_manager_default.debug( "No auth token available, skipping deployment protection token" ); throw new Error( "Authentication required to create protection bypass token" ); } try { const response = await client2.fetch(`/v1/projects/${projectId}/protection-bypass`, { method: "PATCH", body: "{}", headers: { "Content-Type": "application/json" }, accountId: orgId }); const { protectionBypass } = response; output_manager_default.log( `You require a deployment protection bypass token to access this deployment... Generating one now...` ); output_manager_default.log( `Successfully generated deployment protection bypass token for project ${import_chalk65.default.bold(projectId)} ` ); output_manager_default.debug(`Protection Bypass Response: ${protectionBypass}`); await sleep(1e3); return getAutomationBypassToken(protectionBypass); } catch (error3) { output_manager_default.debug( `Failed to generate deployment protection bypass token: ${error3}` ); output_manager_default.note( 'To bypass deployment protection, create a "Protection Bypass for Automation" secret in your project settings:' ); output_manager_default.log(` 1. Visit ${import_chalk65.default.cyan("https://vercel.com/dashboard")}`); output_manager_default.log(` 2. Go to your project settings \u2192 Deployment Protection`); output_manager_default.log(` 3. Generate a "Protection Bypass for Automation" secret`); output_manager_default.log( ` 4. Use it with ${import_chalk65.default.cyan( "--protection-bypass" )} flag or set ${import_chalk65.default.cyan("VERCEL_AUTOMATION_BYPASS_SECRET")} env var` ); output_manager_default.log(""); throw new Error("Failed to create deployment protection bypass token"); } } function getAutomationBypassToken(protectionBypass) { if (!protectionBypass) { throw new Error("No protection bypass tokens found"); } const token = Object.keys(protectionBypass).find( (key) => protectionBypass[key].scope === "automation-bypass" ); if (!token) { throw new Error( "No automation bypass token found in protection bypass settings" ); } return token; } async function getOrCreateDeploymentProtectionToken(client2, { project, org }) { if (process.env.VERCEL_AUTOMATION_BYPASS_SECRET) { output_manager_default.debug("Using protection bypass secret from environment variable"); return process.env.VERCEL_AUTOMATION_BYPASS_SECRET; } if (project.protectionBypass && Object.values(project.protectionBypass).length) { const protectionBypass = getAutomationBypassToken(project.protectionBypass); if (protectionBypass) { output_manager_default.debug( `Using existing protection bypass token from project settings: ${protectionBypass}` ); return protectionBypass; } } const token = await createDeploymentProtectionToken( client2, project.id, org.id ); return token; } var import_chalk65; var init_bypass_token = __esm({ "src/commands/curl/bypass-token.ts"() { "use strict"; init_output_manager(); import_chalk65 = __toESM3(require_source(), 1); init_sleep(); } }); // src/commands/curl/deployment-url.ts async function getDeploymentUrlById(client2, deploymentIdOrUrl, accountId) { try { if (deploymentIdOrUrl.startsWith("http://") || deploymentIdOrUrl.startsWith("https://")) { try { const url3 = new URL(deploymentIdOrUrl); return url3.origin; } catch (err) { output_manager_default.debug(`Invalid deployment URL provided: ${deploymentIdOrUrl}`); return null; } } if (deploymentIdOrUrl.includes("vercel.app")) { return `https://${deploymentIdOrUrl}`; } let fullDeploymentId = deploymentIdOrUrl; if (!fullDeploymentId.startsWith("dpl_")) { fullDeploymentId = `dpl_${deploymentIdOrUrl}`; } const deployment = await client2.fetch( `/v13/deployments/${fullDeploymentId}`, { accountId } ); if (!deployment || !deployment.url) { return null; } return `https://${deployment.url}`; } catch (error3) { output_manager_default.debug(`Failed to fetch deployment by ID: ${error3}`); return null; } } var init_deployment_url = __esm({ "src/commands/curl/deployment-url.ts"() { "use strict"; init_output_manager(); } }); // src/commands/curl/shared.ts function setupCurlLikeCommand(client2, command, telemetryClient) { const { print } = output_manager_default; let parsedArgs = null; const flagsSpecification = getFlagsSpecification(command.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (err) { printError(err); return 1; } const { flags } = parsedArgs; if (parsedArgs.flags["--help"]) { print(help(command, { columns: client2.stderr.columns })); return 2; } if (parsedArgs.args[0] === command.name) { parsedArgs.args.shift(); } const separatorIndex = process.argv.indexOf("--"); const path11 = parsedArgs.args[0]; telemetryClient.trackCliArgumentPath(path11); const deploymentFlag = flags["--deployment"]; if (deploymentFlag) { telemetryClient.trackCliOptionDeployment(deploymentFlag); } const protectionBypassFlag = flags["--protection-bypass"]; if (protectionBypassFlag) { telemetryClient.trackCliOptionProtectionBypass(protectionBypassFlag); } if (!path11 || path11 === "--" || path11.startsWith("-")) { output_manager_default.error( `${getCommandName(`${command.name} `)} requires an API path (e.g., '/' or '/api/hello' or 'api/hello')` ); print(help(command, { columns: client2.stderr.columns })); return 1; } if (path11.startsWith("http://") || path11.startsWith("https://")) { output_manager_default.error( `The argument must be a relative API path (e.g., '/' or '/api/hello'), not a full URL.` ); output_manager_default.print( `To target a specific deployment within the currently linked project, use the --deployment flag.` ); print(help(command, { columns: client2.stderr.columns })); return 1; } const toolFlags = separatorIndex !== -1 ? process.argv.slice(separatorIndex + 1) : []; output_manager_default.debug( `${command.name} flags (${toolFlags.length} args): ${JSON.stringify(toolFlags)}` ); return { path: path11, deploymentFlag, protectionBypassFlag, toolFlags }; } async function getDeploymentUrlAndToken(client2, commandName, path11, options) { const { deploymentFlag, protectionBypassFlag } = options; let link4; let scope; try { scope = await getScope(client2); } catch (err) { if ((0, import_error_utils18.isErrnoException)(err) && (err.code === "NOT_AUTHORIZED" || err.code === "TEAM_DELETED")) { output_manager_default.error(err.message); return 1; } throw err; } try { link4 = await ensureLink(commandName, client2, client2.cwd); } catch (err) { if ((0, import_error_utils18.isErrnoException)(err) && err.code === "NOT_AUTHORIZED") { output_manager_default.error(err.message); return 1; } throw err; } if (typeof link4 === "number") { return link4; } const { project } = link4; const linkedProject = await getLinkedProject(client2, client2.cwd); if (linkedProject.status !== "linked") { output_manager_default.error("This command requires a linked project. Please run:"); output_manager_default.print(" vercel link"); return 1; } if (!linkedProject.project || !linkedProject.org) { output_manager_default.error("Failed to get project information"); return 1; } const preferredAlias = linkedProject.project.targets?.production?.alias?.[0]; const backupAlias = linkedProject.project.latestDeployments?.[0]?.url; const target = preferredAlias || backupAlias; let baseUrl; if (deploymentFlag) { const accountId = scope.team?.id || scope.user.id; const deploymentUrl = await getDeploymentUrlById( client2, deploymentFlag, accountId ); if (!deploymentUrl) { output_manager_default.error(`No deployment found for ID "${deploymentFlag}"`); return 1; } baseUrl = deploymentUrl; } else if (target) { baseUrl = `https://${target}`; } else { throw new Error("No deployment URL found for the project"); } const fullUrl = `${baseUrl}${path11.startsWith("/") ? path11 : `/${path11}`}`; output_manager_default.debug(`${import_chalk66.default.cyan("Target URL:")} ${import_chalk66.default.bold(fullUrl)}`); let deploymentProtectionToken = null; if (project.id) { try { deploymentProtectionToken = protectionBypassFlag ?? await getOrCreateDeploymentProtectionToken(client2, link4); } catch (err) { output_manager_default.error( `Failed to get deployment protection bypass token: ${err instanceof Error ? err.message : String(err)}` ); return 1; } } return { fullUrl, deploymentProtectionToken, link: link4 }; } var import_chalk66, import_error_utils18; var init_shared = __esm({ "src/commands/curl/shared.ts"() { "use strict"; import_chalk66 = __toESM3(require_source(), 1); import_error_utils18 = __toESM3(require_dist2(), 1); init_output_manager(); init_ensure_link(); init_get_scope(); init_bypass_token(); init_link2(); init_deployment_url(); init_get_args(); init_get_flags_specification(); init_error2(); init_help(); init_pkg_name(); } }); // src/commands/curl/index.ts var curl_exports = {}; __export3(curl_exports, { default: () => curl }); import { spawn as spawn4 } from "child_process"; async function curl(client2) { const telemetryClient = new CurlTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const setup = setupCurlLikeCommand(client2, curlCommand, telemetryClient); if (typeof setup === "number") { return setup; } const { path: path11, deploymentFlag, protectionBypassFlag, toolFlags } = setup; const result = await getDeploymentUrlAndToken(client2, "curl", path11, { deploymentFlag, protectionBypassFlag }); if (typeof result === "number") { return result; } const { fullUrl, deploymentProtectionToken } = result; const curlFlags = [...toolFlags]; if (deploymentProtectionToken) { curlFlags.unshift( "--header", `x-vercel-protection-bypass: ${deploymentProtectionToken}` ); } curlFlags.unshift("--url", fullUrl); output_manager_default.debug(`Executing: curl ${curlFlags.map(requoteArgs).join(" ")}`); return new Promise((resolve14) => { const curlProcess = spawn4("curl", curlFlags, { stdio: "inherit", shell: false }); curlProcess.on("error", (err) => { if ("code" in err && err.code === "ENOENT") { output_manager_default.error("curl command not found. Please install curl."); resolve14(1); } else { output_manager_default.error(`Failed to execute curl: ${err.message}`); resolve14(1); } }); curlProcess.on("close", (code2) => { resolve14(code2 ?? 1); }); }); } var init_curl2 = __esm({ "src/commands/curl/index.ts"() { "use strict"; init_command7(); init_output_manager(); init_utils4(); init_curl(); init_shared(); } }); // ../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/lib/parser.js var require_parser2 = __commonJS2({ "../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/lib/parser.js"(exports2, module2) { var Transform = __require("stream").Transform; function Parser(options) { if (!(this instanceof Parser)) { throw new TypeError("Cannot call a class as a function"); } options = options || {}; Transform.call(this, { objectMode: true }); this._memory = ""; this._emitInvalidLines = options.emitInvalidLines || false; } Parser.prototype = Object.create(Transform.prototype); Parser.prototype._handleLines = function(lines3, cb) { for (var i = 0; i < lines3.length; i++) { if (lines3[i] === "") continue; var err = null; var json = null; try { json = JSON.parse(lines3[i]); } catch (_err) { _err.source = lines3[i]; err = _err; } if (err) { if (this._emitInvalidLines) { this.emit("invalid-line", err); } else { return cb(err); } } else { this.push(json); } } cb(null); }; Parser.prototype._transform = function(chunk, encoding, cb) { var lines3 = (this._memory + chunk.toString()).split("\n"); this._memory = lines3.pop(); this._handleLines(lines3, cb); }; Parser.prototype._flush = function(cb) { if (!this._memory) return cb(null); var line = this._memory; this._memory = ""; this._handleLines([line], cb); }; module2.exports = Parser; } }); // ../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/lib/stringifier.js var require_stringifier = __commonJS2({ "../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/lib/stringifier.js"(exports2, module2) { var Transform = __require("stream").Transform; function Stringifier() { if (!(this instanceof Stringifier)) { throw new TypeError("Cannot call a class as a function"); } Transform.call(this, { objectMode: true }); } Stringifier.prototype = Object.create(Transform.prototype); Stringifier.prototype._transform = function(data, _, cb) { var value; try { value = JSON.stringify(data); } catch (err) { err.source = data; return cb(err); } cb(null, value + "\n"); }; module2.exports = Stringifier; } }); // ../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/index.js var require_jsonlines = __commonJS2({ "../../node_modules/.pnpm/jsonlines@0.1.1/node_modules/jsonlines/index.js"(exports2) { var Parser = require_parser2(); var Stringifier = require_stringifier(); exports2.parse = function parse11(options) { return new Parser(options); }; exports2.stringify = function stringify2() { return new Stringifier(); }; } }); // ../../node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js var require_split2 = __commonJS2({ "../../node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js"(exports2, module2) { "use strict"; var { Transform } = __require("stream"); var { StringDecoder } = __require("string_decoder"); var kLast = Symbol("last"); var kDecoder = Symbol("decoder"); function transform(chunk, enc, cb) { let list10; if (this.overflow) { const buf = this[kDecoder].write(chunk); list10 = buf.split(this.matcher); if (list10.length === 1) return cb(); list10.shift(); this.overflow = false; } else { this[kLast] += this[kDecoder].write(chunk); list10 = this[kLast].split(this.matcher); } this[kLast] = list10.pop(); for (let i = 0; i < list10.length; i++) { try { push(this, this.mapper(list10[i])); } catch (error3) { return cb(error3); } } this.overflow = this[kLast].length > this.maxLength; if (this.overflow && !this.skipOverflow) { cb(new Error("maximum buffer reached")); return; } cb(); } function flush2(cb) { this[kLast] += this[kDecoder].end(); if (this[kLast]) { try { push(this, this.mapper(this[kLast])); } catch (error3) { return cb(error3); } } cb(); } function push(self2, val) { if (val !== void 0) { self2.push(val); } } function noop(incoming) { return incoming; } function split4(matcher, mapper, options) { matcher = matcher || /\r?\n/; mapper = mapper || noop; options = options || {}; switch (arguments.length) { case 1: if (typeof matcher === "function") { mapper = matcher; matcher = /\r?\n/; } else if (typeof matcher === "object" && !(matcher instanceof RegExp) && !matcher[Symbol.split]) { options = matcher; matcher = /\r?\n/; } break; case 2: if (typeof matcher === "function") { options = mapper; mapper = matcher; matcher = /\r?\n/; } else if (typeof mapper === "object") { options = mapper; mapper = noop; } } options = Object.assign({}, options); options.autoDestroy = true; options.transform = transform; options.flush = flush2; options.readableObjectMode = true; const stream = new Transform(options); stream[kLast] = ""; stream[kDecoder] = new StringDecoder("utf8"); stream.matcher = matcher; stream.mapper = mapper; stream.maxLength = options.maxLength; stream.skipOverflow = options.skipOverflow || false; stream.overflow = false; stream._destroy = function(err, cb) { this._writableState.errorEmitted = false; cb(err); }; return stream; } module2.exports = split4; } }); // src/util/events.ts import { URLSearchParams as URLSearchParams5 } from "url"; async function printEvents(client2, urlOrDeploymentId, { mode, onEvent, quiet, findOpts }, abortController) { const { log: log2, debug: debug2 } = output_manager_default; const { contextName } = await getScope(client2); let o = 0; await (0, import_async_retry4.default)( async (bail, attemptNumber) => { if (attemptNumber > 1) { debug2("Retrying events"); } const query = new URLSearchParams5({ direction: findOpts.direction, follow: findOpts.follow ? "1" : "", format: "lines" }); if (findOpts.limit) query.set("limit", String(findOpts.limit)); if (findOpts.since) query.set("since", String(findOpts.since)); if (findOpts.until) query.set("until", String(findOpts.until)); const eventsUrl = `/v3/now/deployments/${urlOrDeploymentId}/events?${query}`; try { const eventsRes = await client2.fetch(eventsUrl, { json: false, // @ts-expect-error: typescript is getting confused with the signal types from node (web & server) and node-fetch (server only) signal: abortController?.signal }); if (eventsRes.ok) { const readable = eventsRes.body; return new Promise((resolve14, reject) => { const stream = readable.pipe(import_jsonlines.default.parse()); let poller; if (mode === "deploy") { poller = function startPoller() { return setTimeout(async () => { try { const json = await getDeployment( client2, contextName, urlOrDeploymentId ); if (json.readyState === "READY") { stream.end(); finish(); return; } poller = startPoller(); } catch (err2) { stream.end(); finish(err2); } }, 5e3); }(); } let finishCalled = false; function finish(err2) { if (finishCalled) return; finishCalled = true; clearTimeout(poller); if (err2) { reject(err2); } else { resolve14(); } } let latestLogDate = 0; const onData = (data) => { const { event, payload, date } = data; if (event === "state" && payload.value === "READY") { if (mode === "deploy") { stream.end(); finish(); } } else { latestLogDate = Math.max(latestLogDate, date); onEvent(data); } }; let onErrorCalled = false; const onError = (err2) => { if (finishCalled || onErrorCalled) return; if (err2.name === "AbortError") { finish(); return; } onErrorCalled = true; o++; const errorMessage = `Deployment event stream error: ${err2.message}`; if (!findOpts.follow) { log2(errorMessage); return; } debug2(errorMessage); clearTimeout(poller); stream.destroy(err2); const retryFindOpts = { ...findOpts, since: latestLogDate }; setTimeout(() => { if (abortController?.signal.aborted) return; printEvents(client2, urlOrDeploymentId, { mode, onEvent, quiet, findOpts: retryFindOpts }).then(resolve14, reject); }, 2e3); }; stream.on("end", finish); stream.on("data", onData); stream.on("error", onError); readable.on("error", onError); }); } const err = new Error(`Deployment events status ${eventsRes.status}`); if (eventsRes.status < 500) { bail(err); } else { throw err; } } catch (err) { if (err instanceof Error && err.name === "AbortError") { return; } throw err; } }, { retries: 4, onRetry: (err) => { if (!quiet && o) { process.stdout.write((0, import_ansi_escapes8.eraseLines)(o + 1)); o = 0; } log2(`Deployment events polling error: ${err.message}`); } } ); } var import_async_retry4, import_jsonlines, import_ansi_escapes8, events_default; var init_events = __esm({ "src/util/events.ts"() { "use strict"; import_async_retry4 = __toESM3(require_dist5(), 1); import_jsonlines = __toESM3(require_jsonlines(), 1); import_ansi_escapes8 = __toESM3(require_ansi_escapes(), 1); init_get_deployment(); init_get_scope(); init_output_manager(); events_default = printEvents; } }); // src/util/logs.ts import { URLSearchParams as URLSearchParams6 } from "url"; function displayBuildLogs(client2, deployment, follow = true) { const abortController = new AbortController(); const promise = events_default( client2, deployment.id, { mode: "logs", onEvent: (event) => printBuildLog(event, output_manager_default.print), quiet: false, findOpts: { direction: "forward", follow } }, abortController ); return { promise, abortController }; } async function displayBuildLogsUntilFinalError(client2, deployment, error3) { const abortController = new AbortController(); return events_default( client2, deployment.id, { mode: "logs", onEvent: (event) => { printBuildLog(event, output_manager_default.print); if (event.level === "error" && event.text?.includes(error3)) { abortController.abort(); } }, quiet: false, findOpts: { direction: "forward", follow: true } }, abortController ); } async function displayRuntimeLogs(client2, options, abortController) { const { log: log2, debug: debug2, print, spinner, stopSpinner, warn } = output_manager_default; const { projectId, deploymentId, parse: parse11 } = options; const query = new URLSearchParams6({ format: "lines" }); const url3 = `/v1/projects/${projectId}/deployments/${deploymentId}/runtime-logs?${query}`; spinner(runtimeLogSpinnerMessage); const timeout = setTimeout(() => { abortController.abort(); warn( `${import_chalk67.default.bold( `Command automatically interrupted after ${CommandTimeout}.` )} ` ); }, (0, import_ms9.default)(CommandTimeout)); const response = await client2.fetch(url3, { json: false, // @ts-expect-error: typescipt is getting confused with the signal types from node (web & server) and node-fetch (server only) signal: abortController.signal, retry: { retries: 3, onRetry: (err) => { log2(`Runtime logs error: ${err.message}`); if (err instanceof Error && err.name === "AbortError") { return; } throw err; } } }); return new Promise((resolve14, reject) => { const stream = response.body.pipe(parse11 ? import_jsonlines2.default.parse() : (0, import_split2.default)()); let finished = false; let errored = false; function finish(err) { if (finished) return; clearTimeout(timeout); stopSpinner(); finished = true; if (err) { reject(err); } else { resolve14(abortController.signal.aborted ? 1 : 0); } } const handleData = (data) => { const log3 = parse11 ? data : JSON.parse(data); stopSpinner(); if (isRuntimeLimitDelimiter(log3)) { abortController.abort(); warn(`${import_chalk67.default.bold(log3.message)} `); return; } parse11 ? prettyPrintLogline(log3, print) : printRawLogLine(data, client2); spinner(runtimeLogSpinnerMessage); }; const handleError = (err) => { if (finished || errored) return; if (err.name === "AbortError") { finish(); return; } stream.destroy(); errored = true; debug2(`Runtime logs stream error: ${err.message ?? err}`); setTimeout(() => { if (abortController.signal.aborted) return; displayRuntimeLogs(client2, options, abortController).then( resolve14, reject ); }, 2e3); }; stream.on("end", finish); stream.on("data", handleData); stream.on("error", handleError); response.body.on("error", handleError); }); } function printBuildLog(log2, print) { if (!log2.created) return; const date = new Date(log2.created).toISOString(); const cleanText = parseLogLines(log2).join("\n"); for (const line of colorize(cleanText, log2).split("\n")) { print(`${import_chalk67.default.dim(date)} ${line} `); } } function isRuntimeLimitDelimiter(log2) { return log2.rowId === "" && log2.level === "error" && log2.source === "delimiter"; } function printRawLogLine(data, client2) { client2.stdout.write(`${data} `); } function prettyPrintLogline({ level, domain, requestPath: path11, responseStatusCode: status3, requestMethod: method, message: message2, messageTruncated, timestampInMs, source }, print) { const date = (0, import_date_fns2.format)(timestampInMs, dateTimeFormat); const levelIcon = getLevelIcon(level); const sourceIcon = getSourceIcon(source); const detailsLine = `${import_chalk67.default.dim(date)} ${levelIcon} ${import_chalk67.default.bold( method )} ${import_chalk67.default.grey(status3 <= 0 ? "---" : status3)} ${import_chalk67.default.dim( domain )} ${sourceIcon} ${path11}`; print( `${detailsLine} ${"-".repeat( [ date.length, levelIcon.length, method.length, statusWidth, domain.length, sourceIcon.length, path11.length ].reduce((sum, length) => sum + 2 + length) )} ` ); print( `${message2.replace(/\n$/, "")}${messageTruncated ? moreSymbol : ""} ` ); } function getLevelIcon(level) { return level === "error" ? "\u{1F6AB}" : level === "warning" ? "\u26A0\uFE0F" : "\u2139\uFE0F"; } function getSourceIcon(source) { if (source === "edge-function") return "\u0D28"; if (source === "edge-middleware") return "\u025B"; if (source === "serverless") return "\u0192"; return " "; } function sanitize(log2) { return (0, import_strip_ansi5.default)(log2.text || "").replace(/\n$/, "").replace(/^\n/, ""); } function parseLogLines(log2) { const text = sanitize(log2); return text.split("\n").map((line) => line.replace("[now-builder-debug] ", "").trim()); } function colorize(text, log2) { if (log2.level === "error") { return import_chalk67.default.red(text); } else if (log2.level === "warning") { return import_chalk67.default.yellow(text); } return text; } var import_chalk67, import_date_fns2, import_ms9, import_jsonlines2, import_split2, import_strip_ansi5, runtimeLogSpinnerMessage, dateTimeFormat, moreSymbol, statusWidth; var init_logs = __esm({ "src/util/logs.ts"() { "use strict"; import_chalk67 = __toESM3(require_source(), 1); import_date_fns2 = __toESM3(require_date_fns(), 1); import_ms9 = __toESM3(require_ms(), 1); import_jsonlines2 = __toESM3(require_jsonlines(), 1); import_split2 = __toESM3(require_split2(), 1); init_events(); init_command25(); init_output_manager(); import_strip_ansi5 = __toESM3(require_strip_ansi2(), 1); runtimeLogSpinnerMessage = `waiting for new logs...`; dateTimeFormat = "HH:mm:ss.SS"; moreSymbol = "\u2026"; statusWidth = 3; } }); // src/util/output/progress.ts function progress(current, total, opts = {}) { const { width = 20, complete = "=", incomplete = "-" } = opts; if (total <= 0 || current < 0 || current > total) { return null; } const unit = total / width; const pos = Math.floor(current / unit); return `${complete.repeat(pos)}${incomplete.repeat(width - pos)}`; } var init_progress = __esm({ "src/util/output/progress.ts"() { "use strict"; } }); // src/util/deploy/process-deployment.ts function printInspectUrl(inspectorUrl, deployStamp) { if (!inspectorUrl) { return; } output_manager_default.print( prependEmoji( `Inspect: ${import_chalk68.default.bold(inspectorUrl)} ${deployStamp()}`, emoji("inspect") ) + ` ` ); } async function processDeployment({ org, projectName, isSettingUpProject, archive, skipAutoDetectionConfirmation, noWait, withFullLogs, agent, ...args2 }) { const { now, path: path11, requestBody, deployStamp, force, withCache, quiet, prebuilt, vercelOutputDir, rootDirectory, bulkRedirectsPath } = args2; const client2 = now._client; const { env = {} } = requestBody; const token = now._token; if (!token) { throw new Error("Missing authentication token"); } const clientOptions = { teamId: org.type === "team" ? org.id : void 0, apiUrl: now._apiUrl, token, debug: output_manager_default.isDebugEnabled(), userAgent: ua_default, path: path11, force, withCache, prebuilt, vercelOutputDir, rootDirectory, skipAutoDetectionConfirmation, archive, agent, projectName, bulkRedirectsPath }; const deployingSpinnerVal = isSettingUpProject ? "Setting up project" : `Deploying ${import_chalk68.default.bold(`${org.slug}/${projectName}`)}`; output_manager_default.spinner(deployingSpinnerVal, 0); const indications = []; let abortController; function stopSpinner() { abortController?.abort(); output_manager_default.stopSpinner(); } let rollingRelease2; let project; let latestLogMessage = ""; try { for await (const event of (0, import_client7.createDeployment)(clientOptions, requestBody)) { if (["tip", "notice", "warning"].includes(event.type)) { indications.push(event); } if (event.type === "file-count") { const { total, missing, uploads } = event.payload; output_manager_default.debug(`Total files ${total.size}, ${missing.length} changed`); const missingSize = missing.map((sha) => total.get(sha).data.length).reduce((a, b) => a + b, 0); const totalSizeHuman = import_bytes4.default.format(missingSize, { decimalPlaces: 1 }); let nextStep = 0; const stepSize = now._client.stderr.isTTY ? 0 : 0.25; const updateProgress = () => { const uploadedBytes = uploads.reduce((acc, e2) => { return acc + e2.bytesUploaded; }, 0); const bar = progress(uploadedBytes, missingSize); if (!bar) { output_manager_default.spinner(deployingSpinnerVal, 0); } else { const uploadedHuman = import_bytes4.default.format(uploadedBytes, { decimalPlaces: 1, fixedDecimals: true }); const percent = uploadedBytes / missingSize; if (percent >= nextStep) { output_manager_default.spinner( `Uploading ${import_chalk68.default.reset( `[${bar}] (${uploadedHuman}/${totalSizeHuman})` )}`, 0 ); nextStep += stepSize; } } }; uploads.forEach((e2) => e2.on("progress", updateProgress)); updateProgress(); } if (event.type === "file-uploaded") { output_manager_default.debug( `Uploaded: ${event.payload.file.names.join(" ")} (${(0, import_bytes4.default)( event.payload.file.data.length )})` ); } if (event.type === "created") { const deployment = event.payload; now.url = deployment.url; stopSpinner(); printInspectUrl(deployment.inspectorUrl, deployStamp); const isProdDeployment = deployment.target === "production"; const previewUrl = `https://${deployment.url}`; output_manager_default.print( prependEmoji( `${isProdDeployment ? "Production" : "Preview"}: ${import_chalk68.default.bold( previewUrl )} ${deployStamp()}`, emoji(withFullLogs ? "link" : "loading") ) + ` ` ); if (quiet || process.env.FORCE_TTY === "1") { process.stdout.write(`https://${event.payload.url}`); } if (noWait) { return deployment; } latestLogMessage = deployment.readyState === "QUEUED" ? "Queued..." : "Building..."; if (withFullLogs) { let promise; ({ abortController, promise } = displayBuildLogs( client2, deployment, true )); promise.catch( (error3) => output_manager_default.warn(`Failed to read build logs: ${error3}`) ); } else { abortController = new AbortController(); const promise = events_default( client2, deployment.id, { mode: "logs", onEvent: (event2) => { if (!event2.created) return; const lines3 = parseLogLines(event2); const message2 = lines3[0]; if (message2) { latestLogMessage = `Building: ${message2}`; output_manager_default.spinner(latestLogMessage, 0); } }, quiet: false, findOpts: { direction: "forward", follow: true } }, abortController ); promise.catch( (error3) => output_manager_default.warn(`Failed to read build logs: ${error3}`) ); } output_manager_default.spinner(latestLogMessage, 0); } if (event.type === "building" && !withFullLogs) { output_manager_default.spinner(latestLogMessage || "Building...", 0); } if (event.type === "canceled") { stopSpinner(); return event.payload; } if (project === void 0) { project = await getProjectByNameOrId(client2, projectName); rollingRelease2 = project?.rollingRelease; } if (event.type === "ready" && rollingRelease2) { output_manager_default.spinner("Releasing...", 0); stopSpinner(); return event.payload; } if (event.type === "ready" && (event.payload.checksState ? event.payload.checksState === "completed" : true) && !withFullLogs) { stopSpinner(); process.stderr.write(eraseLines(2)); const isProdDeployment = event.payload.target === "production"; const previewUrl = `https://${event.payload.url}`; output_manager_default.print( prependEmoji( `${isProdDeployment ? "Production" : "Preview"}: ${import_chalk68.default.bold( previewUrl )} ${deployStamp()}`, emoji("success") ) + ` ` ); output_manager_default.spinner("Completing...", 0); } if (event.type === "checks-running" && !withFullLogs) { output_manager_default.spinner("Running Checks...", 0); } if (event.type === "checks-conclusion-failed") { stopSpinner(); return event.payload; } if (event.type === "error") { stopSpinner(); if (!archive) { const maybeError = handleErrorSolvableWithArchive(event.payload); if (maybeError) { throw maybeError; } } const error3 = await now.handleDeploymentError(event.payload, { env }); if (error3.code === "missing_project_settings") { return error3; } if (error3.code === "forbidden") { return error3; } throw error3; } if (event.type === "alias-assigned") { stopSpinner(); if (event.payload.target === "production" && event.payload.alias && event.payload.alias.length > 0) { const primaryDomain = event.payload.alias[0]; const prodUrl = `https://${primaryDomain}`; output_manager_default.print( prependEmoji( `Aliased: ${import_chalk68.default.bold(prodUrl)} ${deployStamp()}`, emoji("link") ) + "\n" ); } event.payload.indications = indications; return event.payload; } } } catch (err) { stopSpinner(); throw err; } } function handleErrorSolvableWithArchive(error3) { if ((0, import_error_utils19.isErrorLike)(error3)) { const isUploadRateLimit = "errorName" in error3 && typeof error3.errorName === "string" && error3.errorName.startsWith("api-upload-"); const isTooManyFilesLimit = "code" in error3 && error3.code === "too_many_files"; if (isUploadRateLimit || isTooManyFilesLimit) { return new UploadErrorMissingArchive( `${error3.message} ${archiveSuggestionText}` ); } } } var import_client7, import_error_utils19, import_bytes4, import_chalk68, archiveSuggestionText, UploadErrorMissingArchive; var init_process_deployment = __esm({ "src/util/deploy/process-deployment.ts"() { "use strict"; import_client7 = __toESM3(require_dist7(), 1); import_error_utils19 = __toESM3(require_dist2(), 1); import_bytes4 = __toESM3(require_bytes(), 1); import_chalk68 = __toESM3(require_source(), 1); init_emoji(); init_logs(); init_progress(); init_ua(); init_output_manager(); init_erase_lines(); init_get_project_by_id_or_name(); init_events(); archiveSuggestionText = "Try using `--archive=tgz` to limit the amount of files you upload."; UploadErrorMissingArchive = class extends Error { constructor() { super(...arguments); this.link = "https://vercel.com/docs/cli/deploy#archive"; } }; } }); // src/util/index.ts import qs from "querystring"; import { parse as parseUrl } from "url"; var import_async_retry5, import_ms10, import_node_fetch4, import_bytes5, import_chalk69, Now; var init_util = __esm({ "src/util/index.ts"() { "use strict"; import_async_retry5 = __toESM3(require_dist5(), 1); import_ms10 = __toESM3(require_ms(), 1); import_node_fetch4 = __toESM3(require_lib7(), 1); import_bytes5 = __toESM3(require_bytes(), 1); import_chalk69 = __toESM3(require_source(), 1); init_ua(); init_process_deployment(); init_error2(); init_stamp(); init_errors_ts(); init_print_indications(); init_client(); init_output_manager(); init_sleep(); Now = class { constructor({ client: client2, url: url3 = null, currentTeam = null, forceNew = false, withCache = false }) { this.url = url3; this._client = client2; this._forceNew = forceNew; this._withCache = withCache; this._onRetry = this._onRetry.bind(this); this.currentTeam = currentTeam; } get _apiUrl() { return this._client.apiUrl; } get _token() { return this._client.authConfig.token; } async create(path11, { // Legacy nowConfig = {}, // Latest name, project, prebuilt = false, vercelOutputDir, rootDirectory, wantsPublic, meta, gitMetadata, regions, quiet = false, env, build: build2, forceNew = false, withCache = false, target = null, deployStamp, projectSettings, skipAutoDetectionConfirmation, noWait, withFullLogs, autoAssignCustomDomains }, org, isSettingUpProject, archive) { const hashes = {}; const uploadStamp = stamp_default(); const requestBody = { ...nowConfig, env, build: build2, public: wantsPublic || nowConfig.public, name, project, meta, gitMetadata, regions, target: target || void 0, projectSettings, source: "cli", autoAssignCustomDomains }; delete requestBody.scope; delete requestBody.github; const deployment = await processDeployment({ now: this, agent: this._client.agent, path: path11, requestBody, uploadStamp, deployStamp, quiet, force: forceNew, withCache, org, projectName: name, isSettingUpProject, archive, skipAutoDetectionConfirmation, prebuilt, vercelOutputDir, rootDirectory, noWait, withFullLogs, bulkRedirectsPath: nowConfig.bulkRedirectsPath }); if (deployment && deployment.warnings) { let sizeExceeded = 0; const { log: log2, warn } = output_manager_default; deployment.warnings.forEach((warning) => { if (warning.reason === "size_limit_exceeded") { const { sha, limit } = warning; const n = hashes[sha].names.pop(); warn(`Skipping file ${n} (size exceeded ${(0, import_bytes5.default)(limit)}`); hashes[sha].names.unshift(n); sizeExceeded++; } else if (warning.reason === "node_version_not_found") { warn(`Requested node version ${warning.wanted} is not available`); } }); if (sizeExceeded > 0) { warn(`${sizeExceeded} of the files exceeded the limit for your plan.`); log2( `Please upgrade your plan here: ${import_chalk69.default.cyan( "https://vercel.com/account/plan" )}` ); } } return deployment; } async handleDeploymentError(error3, { env }) { if (error3.status === 429) { if (error3.code === "builds_rate_limited") { const err2 = Object.create(APIError.prototype); err2.message = error3.message; err2.status = error3.status; err2.retryAfterMs = "never"; err2.code = error3.code; return err2; } let msg = "You have been creating deployments at a very fast pace. "; if (error3.limit && error3.limit.reset) { const { reset } = error3.limit; const difference = reset * 1e3 - Date.now(); msg += `Please retry in ${(0, import_ms10.default)(difference, { long: true })}.`; } else { msg += "Please slow down."; } const err = Object.create(APIError.prototype); err.message = msg; err.status = error3.status; err.retryAfterMs = "never"; return err; } if (error3.status === 400 && error3.code === "cert_missing") { return responseError2(error3, null, error3); } if (error3.status === 400 && error3.code === "missing_files") { this._missing = error3.missing || []; return error3; } if (error3.status === 404 && error3.code === "not_found") { return error3; } if (error3.status >= 400 && error3.status < 500) { const err = new Error(); const { code: code2 } = error3; if (code2 === "env_value_invalid_type") { const { key } = error3; err.message = `The env key ${key} has an invalid type: ${typeof env[key]}. Please supply a String or a Number (https://err.sh/vercel/env-value-invalid-type)`; } else { Object.assign(err, error3); } return err; } if (error3.id && error3.id.startsWith("bld_")) { return new BuildError({ message: "Build failed", meta: { entrypoint: error3.entrypoint } }); } if (error3.errorCode === "BUILD_FAILED" || error3.errorCode === "UNEXPECTED_ERROR" || error3.errorCode?.includes("BUILD_UTILS_SPAWN_")) { return new BuildError({ message: error3.errorMessage, meta: {} }); } return new Error(error3.message || error3.errorMessage); } async remove(deploymentId, { hard = false }) { const url3 = `/now/deployments/${deploymentId}?hard=${hard ? 1 : 0}`; await this.retry(async (bail) => { const res = await this._fetch(url3, { method: "DELETE" }); if (res.status === 200) { } else { const error3 = await responseError2(res, "Failed to remove deployment"); if (typeof error3.retryAfterMs === "number") { const randomSkewMs = 3e4 * Math.random(); await sleep(error3.retryAfterMs + randomSkewMs); throw error3; } if (res.status > 200 && res.status < 500) { return bail(error3); } else { throw error3; } } }); return true; } retry(fn2, { retries = 3, maxTimeout = Infinity } = {}) { return (0, import_async_retry5.default)(fn2, { retries, maxTimeout, onRetry: this._onRetry }); } _onRetry(err) { output_manager_default.debug(`Retrying: ${err} ${err.stack}`); } async _fetch(_url, opts = {}) { if (opts.useCurrentTeam !== false && this.currentTeam) { const parsedUrl = parseUrl(_url, true); const query = parsedUrl.query; query.teamId = this.currentTeam; _url = `${parsedUrl.pathname}?${qs.stringify(query)}`; delete opts.useCurrentTeam; } opts.headers = new import_node_fetch4.Headers(opts.headers); opts.headers.set("accept", "application/json"); if (this._token) { opts.headers.set("authorization", `Bearer ${this._token}`); } opts.headers.set("user-agent", ua_default); let body; if (isJSONObject(opts.body)) { body = JSON.stringify(opts.body); opts.headers.set("content-type", "application/json; charset=utf8"); } else { body = opts.body; } const res = await output_manager_default.time( `${opts.method || "GET"} ${this._apiUrl}${_url} ${opts.body || ""}`, (0, import_node_fetch4.default)(`${this._apiUrl}${_url}`, { ...opts, body }) ); printIndications(res); return res; } // public fetch with built-in retrying that can be // used from external utilities. it optionally // receives a `retry` object in the opts that is // passed to the retry utility // it accepts a `json` option, which defaults to `true` // which automatically returns the json response body // if the response is ok and content-type json // it does the same for JSON` body` in opts async fetch(url3, opts = {}) { return this.retry(async (bail) => { if (opts.json !== false && opts.body && typeof opts.body === "object") { opts = Object.assign({}, opts, { body: JSON.stringify(opts.body), headers: Object.assign({}, opts.headers, { "Content-Type": "application/json" }) }); } const res = await this._fetch(url3, opts); if (res.ok) { if (opts.json === false) { return res; } if (!res.headers.get("content-type")) { return null; } return res.headers.get("content-type")?.includes("application/json") ? res.json() : res; } const err = await responseError2(res); if (typeof err.retryAfterMs === "number") { const randomSkewMs = 3e4 * Math.random(); await sleep(err.retryAfterMs + randomSkewMs); throw err; } if (res.status >= 400 && res.status < 500) { return bail(err); } throw err; }, opts.retry); } }; } }); // src/util/deploy/generate-cert-for-deploy.ts async function generateCertForDeploy(client2, contextName, deployURL) { const parsedDomain = (0, import_tldts5.parse)(deployURL); const { domain } = parsedDomain; if (!domain) { return new InvalidDomain(deployURL); } output_manager_default.spinner(`Setting custom suffix domain ${domain}`); const result = await setupDomain(client2, domain, contextName); output_manager_default.stopSpinner(); if (result instanceof NowError) { return result; } output_manager_default.spinner(`Generating a wildcard certificate for ${domain}`); const cert = await createCertForCns( client2, [domain, `*.${domain}`], contextName ); output_manager_default.stopSpinner(); if (cert instanceof NowError) { return cert; } } var import_tldts5; var init_generate_cert_for_deploy = __esm({ "src/util/deploy/generate-cert-for-deploy.ts"() { "use strict"; import_tldts5 = __toESM3(require_cjs7(), 1); init_now_error(); init_create_cert_for_cns(); init_setup_domain(); init_errors_ts(); init_output_manager(); } }); // src/util/deploy/create-deploy.ts async function createDeploy(client2, now, contextName, path11, createArgs, org, isSettingUpProject, archive) { try { return await now.create(path11, createArgs, org, isSettingUpProject, archive); } catch (err) { if (isAPIError(err)) { if (err.code === "rate_limited") { throw new DeploymentsRateLimited(err.message); } if (err.code === "domain_missing") { throw new DomainNotFound(err.value); } if (err.code === "domain_not_found" && err.domain) { throw new DomainNotFound(err.domain); } if (err.code === "domain_not_verified" && err.domain) { throw new DomainNotVerified(err.domain); } if (err.code === "domain_not_verified" && err.value) { throw new DomainVerificationFailed(err.value); } if (err.code === "not_domain_owner") { throw new NotDomainOwner(err.message); } if (err.code === "builds_rate_limited") { throw new BuildsRateLimited(err.message); } if (err.code === "forbidden") { throw new DomainPermissionDenied(err.value, contextName); } if (err.code === "bad_request" && err.keyword) { throw new SchemaValidationFailed( err.message, err.keyword, err.dataPath, err.params ); } if (err.code === "domain_configured") { throw new AliasDomainConfigured(err); } if (err.code === "missing_build_script") { throw new MissingBuildScript(err); } if (err.code === "conflicting_file_path") { throw new ConflictingFilePath(err); } if (err.code === "conflicting_path_segment") { throw new ConflictingPathSegment(err); } if (err.code === "cert_missing") { const result = await generateCertForDeploy( client2, contextName, err.value ); if (result instanceof NowError) { return result; } return createDeploy( client2, now, contextName, path11, createArgs, org, isSettingUpProject ); } if (err.code === "not_found") { throw new DeploymentNotFound({ context: contextName }); } const certError = mapCertError(err); if (certError) { return certError; } } throw err; } } var init_create_deploy = __esm({ "src/util/deploy/create-deploy.ts"() { "use strict"; init_generate_cert_for_deploy(); init_errors_ts(); init_now_error(); init_map_cert_error(); } }); // src/util/deploy/get-deployment-checks.ts async function getDeploymentChecks(client2, deploymentId) { const checksResponse = await client2.fetch( `/v1/deployments/${encodeURIComponent(deploymentId)}/checks` ); return checksResponse; } var init_get_deployment_checks = __esm({ "src/util/deploy/get-deployment-checks.ts"() { "use strict"; } }); // src/util/deploy/get-prebuilt-json.ts import { join as join18 } from "path"; async function getPrebuiltJson(directory) { try { return await import_fs_extra19.default.readJSON(join18(directory, "builds.json")); } catch (error3) { } return null; } var import_fs_extra19; var init_get_prebuilt_json = __esm({ "src/util/deploy/get-prebuilt-json.ts"() { "use strict"; import_fs_extra19 = __toESM3(require_lib(), 1); } }); // src/util/deploy/is-deploying.ts function isDeploying(readyState) { return deploymentInProgressStates.includes(readyState); } var deploymentInProgressStates; var init_is_deploying = __esm({ "src/util/deploy/is-deploying.ts"() { "use strict"; deploymentInProgressStates = [ "QUEUED", "BUILDING", "INITIALIZING" ]; } }); // src/util/suggest-next-commands.ts function suggestNextCommands(commands2) { output_manager_default.print( import_chalk70.default.dim( [ `Common next commands:`, ...commands2.map((command) => `- ${command}`) ].join("\n") ) ); output_manager_default.print("\n"); } var import_chalk70; var init_suggest_next_commands = __esm({ "src/util/suggest-next-commands.ts"() { "use strict"; init_output_manager(); import_chalk70 = __toESM3(require_source(), 1); } }); // src/util/deploy/print-deployment-status.ts async function printDeploymentStatus({ readyState, aliasError, indications, aliasWarning, url: url3, target }, deployStamp, noWait, guidanceMode) { indications = indications || []; let isStillBuilding = false; if (noWait) { if (isDeploying(readyState)) { isStillBuilding = true; output_manager_default.print( prependEmoji( "Note: Deployment is still processing...", emoji("notice") ) + "\n" ); } } if (!isStillBuilding && readyState !== "READY") { output_manager_default.error( `Your deployment failed. Please retry later. More: https://err.sh/vercel/deployment-error` ); return 1; } if (aliasError) { output_manager_default.warn( `Failed to assign aliases${aliasError.message ? `: ${aliasError.message}` : ""}` ); } if (aliasWarning?.message) { indications.push({ type: "warning", payload: aliasWarning.message, link: aliasWarning.link, action: aliasWarning.action }); } const newline = "\n"; for (const indication of indications) { const message2 = prependEmoji(import_chalk71.default.dim(indication.payload), emoji(indication.type)) + newline; let link4 = ""; if (indication.link) link4 = import_chalk71.default.dim( `${indication.action || "Learn More"}: ${link_default(indication.link)}` ) + newline; output_manager_default.print(message2 + link4); } if (guidanceMode) { output_manager_default.print("\n"); suggestNextCommands( [ getCommandName(`inspect ${url3} --logs`), getCommandName(`redeploy ${url3}`), target !== "production" ? getCommandName(`deploy --prod`) : false ].filter(Boolean) ); } return 0; } var import_chalk71; var init_print_deployment_status = __esm({ "src/util/deploy/print-deployment-status.ts"() { "use strict"; import_chalk71 = __toESM3(require_source(), 1); init_is_deploying(); init_link(); init_emoji(); init_output_manager(); init_pkg_name(); init_suggest_next_commands(); } }); // src/util/deploy/validate-archive-format.ts function isValidArchive(archive) { return validArchiveFormats.has(archive); } var import_client9, validArchiveFormats; var init_validate_archive_format = __esm({ "src/util/deploy/validate-archive-format.ts"() { "use strict"; import_client9 = __toESM3(require_dist7(), 1); validArchiveFormats = new Set(import_client9.VALID_ARCHIVE_FORMATS); } }); // src/util/get-project-name.ts import { basename as basename8 } from "path"; function getProjectName({ nameParam, nowConfig = {}, paths = [] }) { if (nameParam) { return nameParam; } if (nowConfig.name) { return nowConfig.name; } return basename8(paths[0] || ""); } var init_get_project_name = __esm({ "src/util/get-project-name.ts"() { "use strict"; } }); // src/util/parse-meta.ts function parseMeta(meta) { if (!meta) { return {}; } if (typeof meta === "string") { meta = [meta]; } const parsed = {}; for (const item of meta) { const [key, ...rest] = item.split("="); parsed[key] = rest.join("="); } return parsed; } var init_parse_meta = __esm({ "src/util/parse-meta.ts"() { "use strict"; } }); // src/util/telemetry/commands/deploy/index.ts var import_client10, DeployTelemetryClient; var init_deploy = __esm({ "src/util/telemetry/commands/deploy/index.ts"() { "use strict"; init_telemetry(); init_command8(); import_client10 = __toESM3(require_dist7(), 1); DeployTelemetryClient = class extends TelemetryClient { trackCliArgumentProjectPath(projectPaths) { if (projectPaths) { this.trackCliArgument({ arg: "project-path", value: this.redactedValue }); } } trackCliOptionArchive(format8) { if (format8) { const allowedFormat = [ ...import_client10.VALID_ARCHIVE_FORMATS, deprecatedArchiveSplitTgz ].includes(format8) ? format8 : this.redactedValue; this.trackCliOption({ option: "archive", value: allowedFormat }); } } trackCliOptionBuildEnv(buildEnv) { if (buildEnv && buildEnv.length > 0) { this.trackCliOption({ option: "build-env", value: this.redactedValue }); } } trackCliOptionEnv(env) { if (env && env.length > 0) { this.trackCliOption({ option: "env", value: this.redactedValue }); } } trackCliOptionMeta(meta) { if (meta && meta.length > 0) { this.trackCliOption({ option: "meta", value: this.redactedValue }); } } trackCliOptionName(name) { if (name) { this.trackCliOption({ option: "name", value: this.redactedValue }); } } trackCliOptionRegions(regions) { if (regions) { this.trackCliOption({ option: "regions", // consider revisiting once we come up with a way to query the list of regions value: this.redactedValue }); } } trackCliOptionTarget(target) { if (target) { this.trackCliOption({ option: "target", value: this.redactedTargetName(target) }); } } trackCliFlagConfirm(flag) { if (flag) { this.trackCliFlag("confirm"); } } trackCliFlagForce(flag) { if (flag) { this.trackCliFlag("force"); } } trackCliFlagLogs(flag) { if (flag) { this.trackCliFlag("logs"); } } trackCliFlagNoLogs(flag) { if (flag) { this.trackCliFlag("no-logs"); } } trackCliFlagGuidance(flag) { if (flag) { this.trackCliFlag("guidance"); } } trackCliFlagNoClipboard(flag) { if (flag) { this.trackCliFlag("no-clipboard"); } } trackCliFlagNoWait(flag) { if (flag) { this.trackCliFlag("no-wait"); } } trackCliFlagPrebuilt(flag) { if (flag) { this.trackCliFlag("prebuilt"); } } trackCliFlagProd(flag) { if (flag) { this.trackCliFlag("prod"); } } trackCliFlagPublic(flag) { if (flag) { this.trackCliFlag("public"); } } trackCliFlagSkipDomain(flag) { if (flag) { this.trackCliFlag("skip-domain"); } } trackCliFlagWithCache(flag) { if (flag) { this.trackCliFlag("with-cache"); } } trackCliFlagYes(flag) { if (flag) { this.trackCliFlag("yes"); } } }; } }); // src/commands/deploy/index.ts var deploy_exports = {}; __export3(deploy_exports, { default: () => deploy_default }); import { getPrettyError as getPrettyError2, getSupportedNodeVersion, scanParentDirs as scanParentDirs3 } from "@vercel/build-utils"; import { join as join19, resolve as resolve11 } from "path"; import { determineAgent } from "@vercel/detect-agent"; function handleCreateDeployError(error3, localConfig) { if (error3 instanceof InvalidDomain) { output_manager_default.error(`The domain ${error3.meta.domain} is not valid`); return 1; } if (error3 instanceof DomainVerificationFailed) { output_manager_default.error( `The domain used as a suffix ${import_chalk72.default.underline( error3.meta.domain )} is not verified and can't be used as custom suffix.` ); return 1; } if (error3 instanceof DomainPermissionDenied) { output_manager_default.error( `You don't have permissions to access the domain used as a suffix ${import_chalk72.default.underline( error3.meta.domain )}.` ); return 1; } if (error3 instanceof SchemaValidationFailed) { const niceError = getPrettyError2(error3.meta); const fileName = localConfig[import_client11.fileNameSymbol] || "vercel.json"; niceError.message = `Invalid ${fileName} - ${niceError.message}`; output_manager_default.prettyError(niceError); return 1; } if (error3 instanceof TooManyRequests) { output_manager_default.error( `Too many requests detected for ${error3.meta.api} API. Try again in ${(0, import_ms11.default)( error3.meta.retryAfterMs, { long: true } )}.` ); return 1; } if (error3 instanceof DomainNotVerified) { output_manager_default.error( `The domain used as an alias ${import_chalk72.default.underline( error3.meta.domain )} is not verified yet. Please verify it.` ); return 1; } if (error3 instanceof BuildsRateLimited) { output_manager_default.error(error3.message); output_manager_default.note( `Run ${getCommandName("upgrade")} to increase your builds limit.` ); return 1; } if (error3 instanceof DeploymentNotFound || error3 instanceof NotDomainOwner || error3 instanceof DeploymentsRateLimited || error3 instanceof AliasDomainConfigured || error3 instanceof MissingBuildScript || error3 instanceof ConflictingFilePath || error3 instanceof ConflictingPathSegment || error3 instanceof ConflictingConfigFiles) { output_manager_default.error(error3.message); return 1; } return error3; } var import_client11, import_error_utils20, import_bytes6, import_chalk72, import_fs_extra20, import_ms11, deploy_default, addProcessEnv; var init_deploy2 = __esm({ "src/commands/deploy/index.ts"() { "use strict"; import_client11 = __toESM3(require_dist7(), 1); import_error_utils20 = __toESM3(require_dist2(), 1); import_bytes6 = __toESM3(require_bytes(), 1); import_chalk72 = __toESM3(require_source(), 1); import_fs_extra20 = __toESM3(require_lib(), 1); import_ms11 = __toESM3(require_ms(), 1); init_util(); init_files(); init_compile_vercel_config(); init_create_git_meta(); init_create_deploy(); init_get_deployment_checks(); init_get_prebuilt_json(); init_print_deployment_status(); init_validate_archive_format(); init_purchase_domain_if_available(); init_emoji(); init_error2(); init_errors_ts(); init_errors_ts(); init_get_args(); init_get_deployment(); init_get_flags_specification(); init_get_project_name(); init_code(); init_highlight(); init_param(); init_stamp(); init_parse_env(); init_parse_meta(); init_pkg_name(); init_project_settings(); init_validate_paths(); init_help(); init_command8(); init_parse_target(); init_deploy(); init_output_manager(); init_ensure_link(); init_process_deployment(); init_logs(); deploy_default = async (client2) => { const telemetryClient = new DeployTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments = null; const flagsSpecification = getFlagsSpecification(deployCommand.options); try { parsedArguments = parseArguments(client2.argv.slice(2), flagsSpecification); telemetryClient.trackCliOptionArchive(parsedArguments.flags["--archive"]); telemetryClient.trackCliOptionEnv(parsedArguments.flags["--env"]); telemetryClient.trackCliOptionBuildEnv( parsedArguments.flags["--build-env"] ); telemetryClient.trackCliOptionMeta(parsedArguments.flags["--meta"]); telemetryClient.trackCliFlagPrebuilt(parsedArguments.flags["--prebuilt"]); telemetryClient.trackCliOptionRegions(parsedArguments.flags["--regions"]); telemetryClient.trackCliFlagNoWait(parsedArguments.flags["--no-wait"]); telemetryClient.trackCliFlagYes(parsedArguments.flags["--yes"]); telemetryClient.trackCliOptionTarget(parsedArguments.flags["--target"]); telemetryClient.trackCliFlagProd(parsedArguments.flags["--prod"]); telemetryClient.trackCliFlagSkipDomain( parsedArguments.flags["--skip-domain"] ); telemetryClient.trackCliFlagPublic(parsedArguments.flags["--public"]); telemetryClient.trackCliFlagLogs(parsedArguments.flags["--logs"]); telemetryClient.trackCliFlagNoLogs(parsedArguments.flags["--no-logs"]); telemetryClient.trackCliFlagGuidance(parsedArguments.flags["--guidance"]); telemetryClient.trackCliFlagForce(parsedArguments.flags["--force"]); telemetryClient.trackCliFlagWithCache( parsedArguments.flags["--with-cache"] ); if ("--confirm" in parsedArguments.flags) { telemetryClient.trackCliFlagConfirm(parsedArguments.flags["--confirm"]); output_manager_default.warn("`--confirm` is deprecated, please use `--yes` instead"); parsedArguments.flags["--yes"] = parsedArguments.flags["--confirm"]; } if ("--no-logs" in parsedArguments.flags) { output_manager_default.warn("`--no-logs` is deprecated and now the default behavior."); } } catch (error4) { printError(error4); return 1; } if (parsedArguments.flags["--help"]) { telemetryClient.trackCliFlagHelp("deploy"); output_manager_default.print(help(deployCommand, { columns: client2.stderr.columns })); return 2; } if (parsedArguments.args[0] === deployCommand.name) { parsedArguments.args.shift(); } let paths; if (parsedArguments.args.length > 0) { paths = parsedArguments.args.map((item) => resolve11(client2.cwd, item)); telemetryClient.trackCliArgumentProjectPath(paths[0]); } else { paths = [client2.cwd]; } const pathValidation = await validatePaths(client2, paths); if (!pathValidation.valid) { return pathValidation.exitCode; } await compileVercelConfig(paths[0]); let localConfig = client2.localConfig || readLocalConfig(paths[0]); if (localConfig) { client2.localConfig = localConfig; const { version: version2 } = localConfig; const file = highlight(localConfig[import_client11.fileNameSymbol]); const prop = code("version"); if (version2) { if (typeof version2 === "number") { if (version2 !== 2) { const two = code(String(2)); output_manager_default.error( `The value of the ${prop} property within ${file} can only be ${two}.` ); return 1; } } else { output_manager_default.error( `The ${prop} property inside your ${file} file must be a number.` ); return 1; } } } const { log: log2, debug: debug2, error: error3, prettyError } = output_manager_default; const quiet = !client2.stdout.isTTY; let { path: cwd } = pathValidation; const autoConfirm = parsedArguments.flags["--yes"]; if (parsedArguments.flags["--name"]) { output_manager_default.print( `${prependEmoji( `The ${param( "--name" )} option is deprecated (https://vercel.link/name-flag)`, emoji("warning") )} ` ); telemetryClient.trackCliOptionName(parsedArguments.flags["--name"]); } if (parsedArguments.flags["--no-clipboard"]) { output_manager_default.print( `${prependEmoji( `The ${param( "--no-clipboard" )} option was ignored because it is the default behavior. Please remove it.`, emoji("warning") )} ` ); telemetryClient.trackCliFlagNoClipboard(true); } const target = parseTarget({ flagName: "target", flags: parsedArguments.flags }); const parsedArchive = parsedArguments.flags["--archive"]; if (typeof parsedArchive === "string" && !(isValidArchive(parsedArchive) || parsedArchive === deprecatedArchiveSplitTgz)) { output_manager_default.error(`Format must be one of: ${import_client11.VALID_ARCHIVE_FORMATS.join(", ")}`); return 1; } if (parsedArchive === deprecatedArchiveSplitTgz) { output_manager_default.print( `${prependEmoji( `${param("--archive=tgz")} now has the same behavior as ${param( "--archive=split-tgz" )}. Please use ${param("--archive=tgz")} instead.`, emoji("warning") )} ` ); } const link4 = await ensureLink("deploy", client2, cwd, { autoConfirm, setupMsg: "Set up and deploy", projectName: getProjectName({ nameParam: parsedArguments.flags["--name"], nowConfig: localConfig, paths }) }); if (typeof link4 === "number") { return link4; } const { org, project } = link4; const rootDirectory = project.rootDirectory; const sourceFilesOutsideRootDirectory = project.sourceFilesOutsideRootDirectory ?? true; if (link4.repoRoot) { cwd = link4.repoRoot; } let vercelOutputDir; if (parsedArguments.flags["--prebuilt"]) { vercelOutputDir = join19(cwd, ".vercel/output"); if (link4.repoRoot && link4.project.rootDirectory) { vercelOutputDir = join19(cwd, link4.project.rootDirectory, ".vercel/output"); } const prebuiltExists = await import_fs_extra20.default.pathExists(vercelOutputDir); if (!prebuiltExists) { error3( `The ${param( "--prebuilt" )} option was used, but no prebuilt output found in ".vercel/output". Run ${getCommandName( "build" )} to generate a local build.` ); return 1; } const prebuiltBuild = await getPrebuiltJson(vercelOutputDir); const prebuiltError = prebuiltBuild?.error || prebuiltBuild?.builds?.find((build2) => "error" in build2)?.error; if (prebuiltError) { output_manager_default.log( `Prebuilt deployment cannot be created because ${getCommandName( "build" )} failed with error: ` ); prettyError(prebuiltError); return 1; } const assumedTarget = target || "preview"; if (prebuiltBuild?.target && prebuiltBuild.target !== assumedTarget) { let specifyTarget = ""; if (prebuiltBuild.target === "production") { specifyTarget = ` --prod`; } prettyError({ message: `The ${param( "--prebuilt" )} option was used with the target environment "${assumedTarget}", but the prebuilt output found in ".vercel/output" was built with target environment "${prebuiltBuild.target}". Please run ${getCommandName(`--prebuilt${specifyTarget}`)}.`, link: "https://vercel.link/prebuilt-environment-mismatch" }); return 1; } } const contextName = org.slug; client2.config.currentTeam = org.type === "team" ? org.id : void 0; if (rootDirectory && await validateRootDirectory( cwd, join19(cwd, rootDirectory), project ? `To change your Project Settings, go to https://vercel.com/${org?.slug}/${project.name}/settings` : "" ) === false) { return 1; } if (rootDirectory) { const rootDirectoryPath = join19(cwd, rootDirectory); await compileVercelConfig(rootDirectoryPath); const rootDirectoryConfig = readLocalConfig(rootDirectoryPath); if (rootDirectoryConfig) { debug2(`Read local config from root directory (${rootDirectory})`); localConfig = rootDirectoryConfig; } else if (localConfig) { output_manager_default.print( `${prependEmoji( `The ${highlight( localConfig[import_client11.fileNameSymbol] )} file should be inside of the provided root directory.`, emoji("warning") )} ` ); } } localConfig = localConfig || {}; if (localConfig.name) { output_manager_default.print( `${prependEmoji( `The ${code("name")} property in ${highlight( localConfig[import_client11.fileNameSymbol] )} is deprecated (https://vercel.link/name-prop)`, emoji("warning") )} ` ); } const isObject2 = (item) => Object.prototype.toString.call(item) === "[object Object]"; if (typeof localConfig.env !== "undefined" && !isObject2(localConfig.env)) { error3( `The ${code("env")} property in ${highlight( localConfig[import_client11.fileNameSymbol] )} needs to be an object` ); return 1; } if (typeof localConfig.build !== "undefined") { if (!isObject2(localConfig.build)) { error3( `The ${code("build")} property in ${highlight( localConfig[import_client11.fileNameSymbol] )} needs to be an object` ); return 1; } if (typeof localConfig.build.env !== "undefined" && !isObject2(localConfig.build.env)) { error3( `The ${code("build.env")} property in ${highlight( localConfig[import_client11.fileNameSymbol] )} needs to be an object` ); return 1; } } const meta = Object.assign( {}, parseMeta(localConfig.meta), parseMeta(parsedArguments.flags["--meta"]) ); const gitMetadata = await createGitMeta(cwd, project); const deploymentEnv = Object.assign( {}, parseEnv(localConfig.env), parseEnv(parsedArguments.flags["--env"]) ); const deploymentBuildEnv = Object.assign( {}, parseEnv(localConfig.build && localConfig.build.env), parseEnv(parsedArguments.flags["--build-env"]) ); try { await addProcessEnv(log2, deploymentEnv); await addProcessEnv(log2, deploymentBuildEnv); } catch (err) { error3((0, import_error_utils20.errorToString)(err)); return 1; } const regionFlag = (parsedArguments.flags["--regions"] || "").split(",").map((s) => s.trim()).filter(Boolean); const regions = regionFlag.length > 0 ? regionFlag : localConfig.regions; const currentTeam = org.type === "team" ? org.id : void 0; const now = new Now({ client: client2, currentTeam }); const deployStamp = stamp_default(); let deployment = null; const noWait = !!parsedArguments.flags["--no-wait"]; const withFullLogs = parsedArguments.flags["--logs"] ? true : false; const localConfigurationOverrides = pickOverrides(localConfig); const name = project.name; if (!name) { throw new Error( "`name` not found on project or provided by existing project" ); } try { const autoAssignCustomDomains = parsedArguments.flags["--skip-domain"] ? false : void 0; const createArgs = { name, env: deploymentEnv, build: { env: deploymentBuildEnv }, forceNew: parsedArguments.flags["--force"], withCache: parsedArguments.flags["--with-cache"], prebuilt: parsedArguments.flags["--prebuilt"], vercelOutputDir, rootDirectory, quiet, wantsPublic: Boolean( parsedArguments.flags["--public"] || localConfig.public ), nowConfig: { ...localConfig, // `images` is allowed in "vercel.json" and processed // by `vc build`, but don't send it to the API endpoint images: void 0 }, regions, meta, gitMetadata, deployStamp, target, skipAutoDetectionConfirmation: autoConfirm, noWait, withFullLogs, autoAssignCustomDomains }; if (!localConfig.builds || localConfig.builds.length === 0) { createArgs.projectSettings = { sourceFilesOutsideRootDirectory, rootDirectory, ...localConfigurationOverrides }; } const { packageJson } = await scanParentDirs3( join19(cwd, project?.rootDirectory ?? ""), true, cwd ); let nodeVersion; if (packageJson?.engines?.node) { try { const { range } = await getSupportedNodeVersion( packageJson.engines.node ); nodeVersion = range; } catch (error4) { if (error4 instanceof Error) { output_manager_default.warn(error4.message); } } } if (!createArgs.projectSettings) createArgs.projectSettings = {}; createArgs.projectSettings.nodeVersion = nodeVersion; deployment = await createDeploy( client2, now, contextName, cwd, createArgs, org, !project, parsedArchive ? "tgz" : void 0 ); if (deployment instanceof NotDomainOwner) { output_manager_default.error(deployment.message); return 1; } if (deployment instanceof Error) { output_manager_default.error( deployment.message || "An unexpected error occurred while deploying your project", void 0, "https://vercel.link/help", "Contact Support" ); return 1; } if (deployment.readyState === "CANCELED") { output_manager_default.print("The deployment has been canceled.\n"); return 1; } if (deployment.checksConclusion === "failed") { const { checks } = await getDeploymentChecks(client2, deployment.id); const counters = /* @__PURE__ */ new Map(); checks.forEach((c) => { counters.set(c.conclusion, (counters.get(c.conclusion) ?? 0) + 1); }); const counterList = Array.from(counters).map(([name2, no]) => `${no} ${name2}`).join(", "); output_manager_default.error(`Running Checks: ${counterList}`); return 1; } if (!noWait) { await getDeployment(client2, contextName, deployment.id); } if (deployment === null) { error3("Uploading failed. Please try again."); return 1; } } catch (err) { if ((0, import_error_utils20.isError)(err)) { debug2(`Error: ${err} ${err.stack}`); } if (err instanceof UploadErrorMissingArchive) { output_manager_default.prettyError(err); return 1; } if (err instanceof NotDomainOwner) { output_manager_default.error(err.message); return 1; } if (err instanceof DomainNotFound && err.meta && err.meta.domain) { output_manager_default.debug( `The domain ${err.meta.domain} was not found, trying to purchase it` ); const purchase = await purchaseDomainIfAvailable( client2, err.meta.domain, contextName ); if (purchase === true) { output_manager_default.success(`Successfully purchased the domain ${err.meta.domain}!`); return 0; } if (purchase === false || purchase instanceof UserAborted) { handleCreateDeployError(deployment, localConfig); return 1; } handleCreateDeployError(purchase, localConfig); return 1; } if (err instanceof DomainNotFound || err instanceof DomainNotVerified || err instanceof NotDomainOwner || err instanceof DomainPermissionDenied || err instanceof DomainVerificationFailed || err instanceof SchemaValidationFailed || err instanceof InvalidDomain || err instanceof DeploymentNotFound || err instanceof BuildsRateLimited || err instanceof DeploymentsRateLimited || err instanceof AliasDomainConfigured || err instanceof MissingBuildScript || err instanceof ConflictingFilePath || err instanceof ConflictingPathSegment || err instanceof ConflictingConfigFiles) { handleCreateDeployError(err, localConfig); return 1; } if (err instanceof BuildError) { if (withFullLogs === false) { try { if (now.url) { const failedDeployment = await getDeployment( client2, contextName, now.url ); await displayBuildLogsUntilFinalError( client2, failedDeployment, err.message ); } } catch (_) { output_manager_default.log( `To check build logs run: ${getCommandName( `inspect ${now.url} --logs` )}` ); output_manager_default.log( `Or inspect them in your browser at https://${now.url}/_logs` ); } } return 1; } if (isAPIError(err) && err.code === "size_limit_exceeded") { const { sizeLimit = 0 } = err; const message2 = `File size limit exceeded (${(0, import_bytes6.default)(sizeLimit)})`; error3(message2); return 1; } printError(err); return 1; } const { isAgent } = await determineAgent(); const guidanceMode = parsedArguments.flags["--guidance"] ?? isAgent; return printDeploymentStatus(deployment, deployStamp, noWait, guidanceMode); }; addProcessEnv = async (log2, env) => { let val; for (const key of Object.keys(env)) { if (typeof env[key] !== "undefined") { continue; } val = process.env[key]; if (typeof val === "string") { log2( `Reading ${import_chalk72.default.bold( `"${import_chalk72.default.bold(key)}"` )} from your env (as no value was specified)` ); env[key] = val.replace(/^@/, "\\@"); } else { throw new Error( `No value specified for env variable ${import_chalk72.default.bold( `"${import_chalk72.default.bold(key)}"` )} and it was not found in your env. If you meant to specify an environment to deploy to, use ${param("--target")}` ); } } }; } }); // ../../node_modules/.pnpm/bytes@3.1.0/node_modules/bytes/index.js var require_bytes2 = __commonJS2({ "../../node_modules/.pnpm/bytes@3.1.0/node_modules/bytes/index.js"(exports2, module2) { "use strict"; module2.exports = bytes9; module2.exports.format = format8; module2.exports.parse = parse11; 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 bytes9(value, options) { if (typeof value === "string") { return parse11(value); } if (typeof value === "number") { return format8(value, options); } return null; } function format8(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.replace(formatThousandsRegExp, thousandsSeparator); } return str + unitSeparator + unit; } function parse11(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(); } return Math.floor(map[unit] * floatValue); } } }); // ../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/callsite-tostring.js var require_callsite_tostring = __commonJS2({ "../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/callsite-tostring.js"(exports2, module2) { "use strict"; module2.exports = callSiteToString2; function callSiteFileLocation(callSite) { var fileName; var fileLocation = ""; if (callSite.isNative()) { fileLocation = "native"; } else if (callSite.isEval()) { fileName = callSite.getScriptNameOrSourceURL(); if (!fileName) { fileLocation = callSite.getEvalOrigin(); } } else { fileName = callSite.getFileName(); } if (fileName) { fileLocation += fileName; var lineNumber = callSite.getLineNumber(); if (lineNumber != null) { fileLocation += ":" + lineNumber; var columnNumber = callSite.getColumnNumber(); if (columnNumber) { fileLocation += ":" + columnNumber; } } } return fileLocation || "unknown source"; } function callSiteToString2(callSite) { var addSuffix = true; var fileLocation = callSiteFileLocation(callSite); var functionName = callSite.getFunctionName(); var isConstructor = callSite.isConstructor(); var isMethodCall = !(callSite.isToplevel() || isConstructor); var line = ""; if (isMethodCall) { var methodName = callSite.getMethodName(); var typeName = getConstructorName(callSite); if (functionName) { if (typeName && functionName.indexOf(typeName) !== 0) { line += typeName + "."; } line += functionName; if (methodName && functionName.lastIndexOf("." + methodName) !== functionName.length - methodName.length - 1) { line += " [as " + methodName + "]"; } } else { line += typeName + "." + (methodName || ""); } } else if (isConstructor) { line += "new " + (functionName || ""); } else if (functionName) { line += functionName; } else { addSuffix = false; line += fileLocation; } if (addSuffix) { line += " (" + fileLocation + ")"; } return line; } function getConstructorName(obj) { var receiver = obj.receiver; return receiver.constructor && receiver.constructor.name || null; } } }); // ../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/event-listener-count.js var require_event_listener_count = __commonJS2({ "../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/event-listener-count.js"(exports2, module2) { "use strict"; module2.exports = eventListenerCount2; function eventListenerCount2(emitter, type) { return emitter.listeners(type).length; } } }); // ../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/index.js var require_compat = __commonJS2({ "../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/index.js"(exports2, module2) { "use strict"; var EventEmitter2 = __require("events").EventEmitter; lazyProperty(module2.exports, "callSiteToString", function callSiteToString2() { var limit = Error.stackTraceLimit; var obj = {}; var prep = Error.prepareStackTrace; function prepareObjectStackTrace2(obj2, stack3) { return stack3; } Error.prepareStackTrace = prepareObjectStackTrace2; Error.stackTraceLimit = 2; Error.captureStackTrace(obj); var stack2 = obj.stack.slice(); Error.prepareStackTrace = prep; Error.stackTraceLimit = limit; return stack2[0].toString ? toString2 : require_callsite_tostring(); }); lazyProperty(module2.exports, "eventListenerCount", function eventListenerCount2() { return EventEmitter2.listenerCount || require_event_listener_count(); }); function lazyProperty(obj, prop, getter) { function get() { var val = getter(); Object.defineProperty(obj, prop, { configurable: true, enumerable: true, value: val }); return val; } Object.defineProperty(obj, prop, { configurable: true, enumerable: true, get }); } function toString2(obj) { return obj.toString(); } } }); // ../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/index.js var require_depd = __commonJS2({ "../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/index.js"(exports, module) { var callSiteToString = require_compat().callSiteToString; var eventListenerCount = require_compat().eventListenerCount; var relative = __require("path").relative; module.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, message2) { var descriptor2 = Object.getOwnPropertyDescriptor(obj, prop); var value = descriptor2.value; descriptor2.get = function getter() { return value; }; if (descriptor2.writable) { descriptor2.set = function setter(val) { return value = val; }; } delete descriptor2.value; delete descriptor2.writable; Object.defineProperty(obj, prop, descriptor2); return descriptor2; } function createArgumentsString(arity) { var str = ""; for (var i = 0; i < arity; i++) { str += ", arg" + i; } return str.substr(2); } function createStackString(stack2) { var str = this.name + ": " + this.namespace; if (this.message) { str += " deprecated " + this.message; } for (var i = 0; i < stack2.length; i++) { str += "\n at " + callSiteToString(stack2[i]); } return str; } function depd(namespace) { if (!namespace) { throw new TypeError("argument namespace is required"); } var stack2 = getStack(); var site2 = callSiteLocation(stack2[1]); var file = site2[0]; function deprecate2(message2) { log.call(deprecate2, message2); } deprecate2._file = file; deprecate2._ignored = isignored(namespace); deprecate2._namespace = namespace; deprecate2._traced = istraced(namespace); deprecate2._warned = /* @__PURE__ */ Object.create(null); deprecate2.function = wrapfunction; deprecate2.property = wrapproperty; return deprecate2; } 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(message2, site2) { var haslisteners = eventListenerCount(process, "deprecation") !== 0; if (!haslisteners && this._ignored) { return; } var caller; var callFile; var callSite; var depSite; var i = 0; var seen = false; var stack2 = getStack(); var file = this._file; if (site2) { depSite = site2; callSite = callSiteLocation(stack2[1]); callSite.name = depSite.name; file = callSite[0]; } else { i = 2; depSite = callSiteLocation(stack2[i]); callSite = depSite; } for (; i < stack2.length; i++) { caller = callSiteLocation(stack2[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 = message2; if (!msg) { msg = callSite === depSite || !callSite.name ? defaultMessage(depSite) : defaultMessage(callSite); } if (haslisteners) { var err = DeprecationError(this._namespace, msg, stack2.slice(i)); process.emit("deprecation", err); return; } var format8 = process.stderr.isTTY ? formatColor : formatPlain; var output2 = format8.call(this, msg, caller, stack2.slice(i)); process.stderr.write(output2 + "\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 site2 = [file, line, colm]; site2.callSite = callSite; site2.name = callSite.getFunctionName(); return site2; } function defaultMessage(site2) { var callSite = site2.callSite; var funcName = site2.name; if (!funcName) { funcName = ""; } var context = callSite.getThis(); var typeName = context && callSite.getTypeName(); if (typeName === "Object") { typeName = void 0; } if (typeName === "Function") { typeName = context.name || typeName; } return typeName && callSite.getMethodName() ? typeName + "." + funcName : funcName; } function formatPlain(msg, caller, stack2) { var timestamp = (/* @__PURE__ */ new Date()).toUTCString(); var formatted = timestamp + " " + this._namespace + " deprecated " + msg; if (this._traced) { for (var i = 0; i < stack2.length; i++) { formatted += "\n at " + callSiteToString(stack2[i]); } return formatted; } if (caller) { formatted += " at " + formatLocation(caller); } return formatted; } function formatColor(msg, caller, stack2) { 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 < stack2.length; i++) { formatted += "\n \x1B[36mat " + callSiteToString(stack2[i]) + "\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 stack2 = obj.stack.slice(1); Error.prepareStackTrace = prep; Error.stackTraceLimit = limit; return stack2; } function prepareObjectStackTrace(obj, stack2) { return stack2; } function wrapfunction(fn, message) { if (typeof fn !== "function") { throw new TypeError("argument fn must be a function"); } var args = createArgumentsString(fn.length); var deprecate = this; var stack = getStack(); var site = callSiteLocation(stack[1]); site.name = fn.name; var deprecatedfn = eval("(function (" + args + ') {\n"use strict"\nlog.call(deprecate, message, site)\nreturn fn.apply(this, arguments)\n})'); return deprecatedfn; } function wrapproperty(obj, prop, message2) { if (!obj || typeof obj !== "object" && typeof obj !== "function") { throw new TypeError("argument obj must be object"); } var descriptor2 = Object.getOwnPropertyDescriptor(obj, prop); if (!descriptor2) { throw new TypeError("must call property on owner object"); } if (!descriptor2.configurable) { throw new TypeError("property must be configurable"); } var deprecate2 = this; var stack2 = getStack(); var site2 = callSiteLocation(stack2[1]); site2.name = prop; if ("value" in descriptor2) { descriptor2 = convertDataDescriptorToAccessor(obj, prop, message2); } var get = descriptor2.get; var set2 = descriptor2.set; if (typeof get === "function") { descriptor2.get = function getter() { log.call(deprecate2, message2, site2); return get.apply(this, arguments); }; } if (typeof set2 === "function") { descriptor2.set = function setter() { log.call(deprecate2, message2, site2); return set2.apply(this, arguments); }; } Object.defineProperty(obj, prop, descriptor2); } function DeprecationError(namespace, message2, stack2) { var error3 = new Error(); var stackString; Object.defineProperty(error3, "constructor", { value: DeprecationError }); Object.defineProperty(error3, "message", { configurable: true, enumerable: false, value: message2, writable: true }); Object.defineProperty(error3, "name", { enumerable: false, configurable: true, value: "DeprecationError", writable: true }); Object.defineProperty(error3, "namespace", { configurable: true, enumerable: false, value: namespace, writable: true }); Object.defineProperty(error3, "stack", { configurable: true, enumerable: false, get: function() { if (stackString !== void 0) { return stackString; } return stackString = createStackString.call(this, stack2); }, set: function setter(val) { stackString = val; } }); return error3; } } }); // ../../node_modules/.pnpm/setprototypeof@1.1.1/node_modules/setprototypeof/index.js var require_setprototypeof = __commonJS2({ "../../node_modules/.pnpm/setprototypeof@1.1.1/node_modules/setprototypeof/index.js"(exports2, module2) { "use strict"; 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 (!obj.hasOwnProperty(prop)) { obj[prop] = proto[prop]; } } return obj; } } }); // ../../node_modules/.pnpm/statuses@1.5.0/node_modules/statuses/codes.json var require_codes = __commonJS2({ "../../node_modules/.pnpm/statuses@1.5.0/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", "306": "(Unused)", "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": "Unordered Collection", "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" }; } }); // ../../node_modules/.pnpm/statuses@1.5.0/node_modules/statuses/index.js var require_statuses = __commonJS2({ "../../node_modules/.pnpm/statuses@1.5.0/node_modules/statuses/index.js"(exports2, module2) { "use strict"; var codes = require_codes(); module2.exports = status3; status3.STATUS_CODES = codes; status3.codes = populateStatusesMap(status3, codes); status3.redirect = { 300: true, 301: true, 302: true, 303: true, 305: true, 307: true, 308: true }; status3.empty = { 204: true, 205: true, 304: true }; status3.retry = { 502: true, 503: true, 504: true }; function populateStatusesMap(statuses, codes2) { var arr = []; Object.keys(codes2).forEach(function forEachCode(code2) { var message2 = codes2[code2]; var status4 = Number(code2); statuses[status4] = message2; statuses[message2] = status4; statuses[message2.toLowerCase()] = status4; arr.push(status4); }); return arr; } function status3(code2) { if (typeof code2 === "number") { if (!status3[code2]) throw new Error("invalid status code: " + code2); return code2; } if (typeof code2 !== "string") { throw new TypeError("code must be a number or string"); } var n = parseInt(code2, 10); if (!isNaN(n)) { if (!status3[n]) throw new Error("invalid status code: " + n); return n; } n = status3[code2.toLowerCase()]; if (!n) throw new Error('invalid status message: "' + code2 + '"'); return n; } } }); // ../../node_modules/.pnpm/toidentifier@1.0.0/node_modules/toidentifier/index.js var require_toidentifier = __commonJS2({ "../../node_modules/.pnpm/toidentifier@1.0.0/node_modules/toidentifier/index.js"(exports2, module2) { 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, ""); } } }); // ../../node_modules/.pnpm/http-errors@1.7.3/node_modules/http-errors/index.js var require_http_errors = __commonJS2({ "../../node_modules/.pnpm/http-errors@1.7.3/node_modules/http-errors/index.js"(exports2, module2) { "use strict"; var deprecate2 = require_depd()("http-errors"); var setPrototypeOf = require_setprototypeof(); var statuses = require_statuses(); var inherits = require_inherits(); var toIdentifier = require_toidentifier(); module2.exports = createError; module2.exports.HttpError = createHttpErrorConstructor(); populateConstructorExports(module2.exports, statuses.codes, module2.exports.HttpError); function codeClass(status3) { return Number(String(status3).charAt(0) + "00"); } function createError() { var err; var msg; var status3 = 500; var props = {}; for (var i = 0; i < arguments.length; i++) { var arg2 = arguments[i]; if (arg2 instanceof Error) { err = arg2; status3 = err.status || err.statusCode || status3; continue; } switch (typeof arg2) { case "string": msg = arg2; break; case "number": status3 = arg2; if (i !== 0) { deprecate2("non-first-argument status code; replace with createError(" + arg2 + ", ...)"); } break; case "object": props = arg2; break; } } if (typeof status3 === "number" && (status3 < 400 || status3 >= 600)) { deprecate2("non-error status code; use only 4xx or 5xx status codes"); } if (typeof status3 !== "number" || !statuses[status3] && (status3 < 400 || status3 >= 600)) { status3 = 500; } var HttpError = createError[status3] || createError[codeClass(status3)]; if (!err) { err = HttpError ? new HttpError(msg) : new Error(msg || statuses[status3]); Error.captureStackTrace(err, createError); } if (!HttpError || !(err instanceof HttpError) || err.status !== status3) { err.expose = status3 < 500; err.status = err.statusCode = status3; } 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, code2) { var className = name.match(/Error$/) ? name : name + "Error"; function ClientError(message2) { var msg = message2 != null ? message2 : statuses[code2]; 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 = code2; ClientError.prototype.statusCode = code2; ClientError.prototype.expose = true; return ClientError; } function createServerErrorConstructor(HttpError, name, code2) { var className = name.match(/Error$/) ? name : name + "Error"; function ServerError(message2) { var msg = message2 != null ? message2 : statuses[code2]; 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 = code2; ServerError.prototype.statusCode = code2; 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(code2) { var CodeError; var name = toIdentifier(statuses[code2]); switch (codeClass(code2)) { case 400: CodeError = createClientErrorConstructor(HttpError, name, code2); break; case 500: CodeError = createServerErrorConstructor(HttpError, name, code2); break; } if (CodeError) { exports3[code2] = CodeError; exports3[name] = CodeError; } }); exports3["I'mateapot"] = deprecate2.function( exports3.ImATeapot, `"I'mateapot"; use "ImATeapot" instead` ); } } }); // ../../node_modules/.pnpm/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js var require_safer = __commonJS2({ "../../node_modules/.pnpm/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js"(exports2, module2) { "use strict"; 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 (e2) { } } if (!safer.constants) { safer.constants = { MAX_LENGTH: safer.kMaxLength }; if (safer.kStringMaxLength) { safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength; } } module2.exports = safer; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/lib/bom-handling.js var require_bom_handling = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/lib/bom-handling.js"(exports2) { "use strict"; var BOMChar = "\uFEFF"; exports2.PrependBOM = PrependBOMWrapper; function PrependBOMWrapper(encoder, options) { this.encoder = encoder; 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(); }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/internal.js var require_internal = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/internal.js"(exports2, module2) { "use strict"; 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; }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/utf16.js var require_utf16 = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/utf16.js"(exports2) { "use strict"; 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; } } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/utf7.js var require_utf7 = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/utf7.js"(exports2) { "use strict"; 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; }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/sbcs-codec.js var require_sbcs_codec = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) { "use strict"; 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() { }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/sbcs-data.js var require_sbcs_data = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) { "use strict"; 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" }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/sbcs-data-generated.js var require_sbcs_data_generated = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) { "use strict"; 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" } }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/dbcs-codec.js var require_dbcs_codec = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) { "use strict"; 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 bytes9 = []; for (; addr > 0; addr >>= 8) bytes9.push(addr & 255); if (bytes9.length == 0) bytes9.push(0); var node = this.decodeTables[0]; for (var i2 = bytes9.length - 1; i2 > 0; i2--) { var val = node[bytes9[i2]]; if (val == UNASSIGNED) { node[bytes9[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 code2 = part.charCodeAt(l++); if (55296 <= code2 && code2 < 56320) { var codeTrail = part.charCodeAt(l++); if (56320 <= codeTrail && codeTrail < 57344) writeTable[curAddr++] = 65536 + (code2 - 55296) * 1024 + (codeTrail - 56320); else throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); } else if (4080 < code2 && code2 <= 4095) { var len = 4095 - code2 + 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++] = code2; } } 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(table2, val) { if (table2[0] > val) return -1; var l = 0, r = table2.length; while (l < r - 1) { var mid = l + Math.floor((r - l + 1) / 2); if (table2[mid] <= val) l = mid; else r = mid; } return l; } } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/tables/shiftjis.json var require_shiftjis = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/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"] ]; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/tables/eucjp.json var require_eucjp = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/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"] ]; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/tables/cp936.json var require_cp936 = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/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"] ]; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/tables/gbk-added.json var require_gbk_added = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/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] ]; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json var require_gb18030_ranges = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/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] }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/tables/cp949.json var require_cp949 = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/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"] ]; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/tables/cp950.json var require_cp950 = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/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"] ]; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/tables/big5-added.json var require_big5_added = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/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"] ]; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/dbcs-data.js var require_dbcs_data = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) { "use strict"; 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" }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/index.js var require_encodings = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/encodings/index.js"(exports2, module2) { "use strict"; 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; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/lib/streams.js var require_streams = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/lib/streams.js"(exports2, module2) { "use strict"; 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 (e2) { done(e2); } }; IconvLiteEncoderStream.prototype._flush = function(done) { try { var res = this.conv.end(); if (res && res.length) this.push(res); done(); } catch (e2) { done(e2); } }; 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 (e2) { done(e2); } }; IconvLiteDecoderStream.prototype._flush = function(done) { try { var res = this.conv.end(); if (res && res.length) this.push(res, this.encoding); done(); } catch (e2) { done(e2); } }; 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; }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/lib/extend-node.js var require_extend_node = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/lib/extend-node.js"(exports2, module2) { "use strict"; 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; }; }; } }); // ../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/lib/index.js var require_lib15 = __commonJS2({ "../../node_modules/.pnpm/iconv-lite@0.4.24/node_modules/iconv-lite/lib/index.js"(exports2, module2) { "use strict"; 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 encoder = iconv.getEncoder(encoding, options); var res = encoder.write(str); var trail = encoder.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 (e2) { 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), encoder = new codec.encoder(options, codec); if (codec.bomAware && options && options.addBOM) encoder = new bomHandling.PrependBOM(encoder, options); return encoder; }; 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."); } } }); // ../../node_modules/.pnpm/unpipe@1.0.0/node_modules/unpipe/index.js var require_unpipe = __commonJS2({ "../../node_modules/.pnpm/unpipe@1.0.0/node_modules/unpipe/index.js"(exports2, module2) { "use strict"; 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); } } } }); // ../../node_modules/.pnpm/raw-body@2.4.1/node_modules/raw-body/index.js var require_raw_body = __commonJS2({ "../../node_modules/.pnpm/raw-body@2.4.1/node_modules/raw-body/index.js"(exports2, module2) { "use strict"; var bytes9 = require_bytes2(); var createError = require_http_errors(); var iconv = require_lib15(); 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 (e2) { if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e2.message)) throw e2; throw createError(415, "specified encoding unsupported", { encoding, type: "encoding.unsupported" }); } } function getRawBody(stream, options, callback) { var done = callback; var opts = options || {}; 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 = bytes9.parse(opts.limit); var length = opts.length != null && !isNaN(opts.length) ? parseInt(opts.length, 10) : null; if (done) { return readStream(stream, encoding, length, limit, done); } return new Promise(function executor(resolve14, reject) { readStream(stream, encoding, length, limit, function onRead(err, buf) { if (err) return reject(err); resolve14(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(createError(413, "request entity too large", { expected: length, length, limit, type: "entity.too.large" })); } var state = stream._readableState; if (stream._decoder || state && (state.encoding || state.decoder)) { return done(createError(500, "stream encoding should not be set", { type: "stream.encoding.set" })); } 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 args2 = new Array(arguments.length); for (var i = 0; i < args2.length; i++) { args2[i] = arguments[i]; } complete = true; if (sync) { process.nextTick(invokeCallback); } else { invokeCallback(); } function invokeCallback() { cleanup(); if (args2[0]) { halt(stream); } callback.apply(null, args2); } } function onAborted() { if (complete) return; done(createError(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(createError(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(createError(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); } } } }); // ../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js var require_eventemitter3 = __commonJS2({ "../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(exports2, module2) { "use strict"; var has = Object.prototype.hasOwnProperty; var prefix = "~"; function Events() { } if (Object.create) { Events.prototype = /* @__PURE__ */ Object.create(null); if (!new Events().__proto__) prefix = false; } function EE(fn2, context, once2) { this.fn = fn2; this.context = context; this.once = once2 || false; } function addListener(emitter, event, fn2, context, once2) { if (typeof fn2 !== "function") { throw new TypeError("The listener must be a function"); } var listener = new EE(fn2, context || emitter, once2), evt = prefix ? prefix + event : event; if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); else emitter._events[evt] = [emitter._events[evt], listener]; return emitter; } function clearEvent(emitter, evt) { if (--emitter._eventsCount === 0) emitter._events = new Events(); else delete emitter._events[evt]; } function EventEmitter2() { this._events = new Events(); this._eventsCount = 0; } EventEmitter2.prototype.eventNames = function eventNames() { var names = [], events, name; if (this._eventsCount === 0) return names; for (name in events = this._events) { if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); } if (Object.getOwnPropertySymbols) { return names.concat(Object.getOwnPropertySymbols(events)); } return names; }; EventEmitter2.prototype.listeners = function listeners(event) { var evt = prefix ? prefix + event : event, handlers = this._events[evt]; if (!handlers) return []; if (handlers.fn) return [handlers.fn]; for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { ee[i] = handlers[i].fn; } return ee; }; EventEmitter2.prototype.listenerCount = function listenerCount(event) { var evt = prefix ? prefix + event : event, listeners = this._events[evt]; if (!listeners) return 0; if (listeners.fn) return 1; return listeners.length; }; EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { var evt = prefix ? prefix + event : event; if (!this._events[evt]) return false; var listeners = this._events[evt], len = arguments.length, args2, i; if (listeners.fn) { if (listeners.once) this.removeListener(event, listeners.fn, void 0, true); switch (len) { case 1: return listeners.fn.call(listeners.context), true; case 2: return listeners.fn.call(listeners.context, a1), true; case 3: return listeners.fn.call(listeners.context, a1, a2), true; case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; } for (i = 1, args2 = new Array(len - 1); i < len; i++) { args2[i - 1] = arguments[i]; } listeners.fn.apply(listeners.context, args2); } else { var length = listeners.length, j; for (i = 0; i < length; i++) { if (listeners[i].once) this.removeListener(event, listeners[i].fn, void 0, true); switch (len) { case 1: listeners[i].fn.call(listeners[i].context); break; case 2: listeners[i].fn.call(listeners[i].context, a1); break; case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; default: if (!args2) for (j = 1, args2 = new Array(len - 1); j < len; j++) { args2[j - 1] = arguments[j]; } listeners[i].fn.apply(listeners[i].context, args2); } } } return true; }; EventEmitter2.prototype.on = function on(event, fn2, context) { return addListener(this, event, fn2, context, false); }; EventEmitter2.prototype.once = function once2(event, fn2, context) { return addListener(this, event, fn2, context, true); }; EventEmitter2.prototype.removeListener = function removeListener(event, fn2, context, once2) { var evt = prefix ? prefix + event : event; if (!this._events[evt]) return this; if (!fn2) { clearEvent(this, evt); return this; } var listeners = this._events[evt]; if (listeners.fn) { if (listeners.fn === fn2 && (!once2 || listeners.once) && (!context || listeners.context === context)) { clearEvent(this, evt); } } else { for (var i = 0, events = [], length = listeners.length; i < length; i++) { if (listeners[i].fn !== fn2 || once2 && !listeners[i].once || context && listeners[i].context !== context) { events.push(listeners[i]); } } if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; else clearEvent(this, evt); } return this; }; EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) { var evt; if (event) { evt = prefix ? prefix + event : event; if (this._events[evt]) clearEvent(this, evt); } else { this._events = new Events(); this._eventsCount = 0; } return this; }; EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener; EventEmitter2.prototype.addListener = EventEmitter2.prototype.on; EventEmitter2.prefixed = prefix; EventEmitter2.EventEmitter = EventEmitter2; if ("undefined" !== typeof module2) { module2.exports = EventEmitter2; } } }); // ../../node_modules/.pnpm/requires-port@1.0.0/node_modules/requires-port/index.js var require_requires_port = __commonJS2({ "../../node_modules/.pnpm/requires-port@1.0.0/node_modules/requires-port/index.js"(exports2, module2) { "use strict"; module2.exports = function required(port, protocol) { protocol = protocol.split(":")[0]; port = +port; if (!port) return false; switch (protocol) { case "http": case "ws": return port !== 80; case "https": case "wss": return port !== 443; case "ftp": return port !== 21; case "gopher": return port !== 70; case "file": return false; } return port !== 0; }; } }); // ../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/common.js var require_common12 = __commonJS2({ "../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/common.js"(exports2) { var common2 = exports2; var url3 = __require("url"); var extend = Object.assign; var required = require_requires_port(); var upgradeHeader = /(^|,)\s*upgrade\s*($|,)/i; var isSSL = /^https|wss/; common2.isSSL = isSSL; common2.setupOutgoing = function(outgoing, options, req, forward) { outgoing.port = options[forward || "target"].port || (isSSL.test(options[forward || "target"].protocol) ? 443 : 80); [ "host", "hostname", "socketPath", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "secureProtocol" ].forEach( function(e2) { outgoing[e2] = options[forward || "target"][e2]; } ); outgoing.method = options.method || req.method; outgoing.headers = extend({}, req.headers); if (options.headers) { extend(outgoing.headers, options.headers); } if (options.auth) { outgoing.auth = options.auth; } if (options.ca) { outgoing.ca = options.ca; } if (isSSL.test(options[forward || "target"].protocol)) { outgoing.rejectUnauthorized = typeof options.secure === "undefined" ? true : options.secure; } outgoing.agent = options.agent || false; outgoing.localAddress = options.localAddress; if (!outgoing.agent) { outgoing.headers = outgoing.headers || {}; if (typeof outgoing.headers.connection !== "string" || !upgradeHeader.test(outgoing.headers.connection)) { outgoing.headers.connection = "close"; } } var target = options[forward || "target"]; var targetPath = target && options.prependPath !== false ? target.path || "" : ""; var outgoingPath = !options.toProxy ? url3.parse(req.url).path || "" : req.url; outgoingPath = !options.ignorePath ? outgoingPath : ""; outgoing.path = common2.urlJoin(targetPath, outgoingPath); if (options.changeOrigin) { outgoing.headers.host = required(outgoing.port, options[forward || "target"].protocol) && !hasPort(outgoing.host) ? outgoing.host + ":" + outgoing.port : outgoing.host; } return outgoing; }; common2.setupSocket = function(socket) { socket.setTimeout(0); socket.setNoDelay(true); socket.setKeepAlive(true, 0); return socket; }; common2.getPort = function(req) { var res = req.headers.host ? req.headers.host.match(/:(\d+)/) : ""; return res ? res[1] : common2.hasEncryptedConnection(req) ? "443" : "80"; }; common2.hasEncryptedConnection = function(req) { return Boolean(req.connection.encrypted || req.connection.pair); }; common2.urlJoin = function() { var args2 = Array.prototype.slice.call(arguments), queryParams = [], queryParamRaw = "", retSegs; args2.forEach((url4, index) => { var qpStart = url4.indexOf("?"); if (qpStart !== -1) { queryParams.push(url4.substring(qpStart + 1)); args2[index] = url4.substring(0, qpStart); } }); queryParamRaw = queryParams.filter(Boolean).join("&"); retSegs = args2.filter(Boolean).join("/").replace(/\/+/g, "/").replace("http:/", "http://").replace("https:/", "https://"); return queryParamRaw ? retSegs + "?" + queryParamRaw : retSegs; }; common2.rewriteCookieProperty = function rewriteCookieProperty(header, config2, property) { if (Array.isArray(header)) { return header.map(function(headerElement) { return rewriteCookieProperty(headerElement, config2, property); }); } return header.replace(new RegExp("(;\\s*" + property + "=)([^;]+)", "i"), function(match, prefix, previousValue) { var newValue; if (previousValue in config2) { newValue = config2[previousValue]; } else if ("*" in config2) { newValue = config2["*"]; } else { return match; } if (newValue) { return prefix + newValue; } else { return ""; } }); }; function hasPort(host) { return !!~host.indexOf(":"); } } }); // ../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/passes/web-outgoing.js var require_web_outgoing = __commonJS2({ "../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/passes/web-outgoing.js"(exports2, module2) { var url3 = __require("url"); var common2 = require_common12(); var redirectRegex = /^201|30(1|2|7|8)$/; module2.exports = { // <-- /** * If is a HTTP 1.0 request, remove chunk headers * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object * @param {proxyResponse} Res Response object from the proxy request * * @api private */ removeChunked: function removeChunked(req, res, proxyRes) { if (req.httpVersion === "1.0") { delete proxyRes.headers["transfer-encoding"]; } }, /** * If is a HTTP 1.0 request, set the correct connection header * or if connection header not present, then use `keep-alive` * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object * @param {proxyResponse} Res Response object from the proxy request * * @api private */ setConnection: function setConnection(req, res, proxyRes) { if (req.httpVersion === "1.0") { proxyRes.headers.connection = req.headers.connection || "close"; } else if (req.httpVersion !== "2.0" && !proxyRes.headers.connection) { proxyRes.headers.connection = req.headers.connection || "keep-alive"; } }, setRedirectHostRewrite: function setRedirectHostRewrite(req, res, proxyRes, options) { if ((options.hostRewrite || options.autoRewrite || options.protocolRewrite) && proxyRes.headers["location"] && redirectRegex.test(proxyRes.statusCode)) { var target = url3.parse(options.target); var u = url3.parse(proxyRes.headers["location"]); if (target.host != u.host) { return; } if (options.hostRewrite) { u.host = options.hostRewrite; } else if (options.autoRewrite) { u.host = req.headers["host"]; } if (options.protocolRewrite) { u.protocol = options.protocolRewrite; } proxyRes.headers["location"] = u.format(); } }, /** * Copy headers from proxyResponse to response * set each header in response object. * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object * @param {proxyResponse} Res Response object from the proxy request * @param {Object} Options options.cookieDomainRewrite: Config to rewrite cookie domain * * @api private */ writeHeaders: function writeHeaders(req, res, proxyRes, options) { var rewriteCookieDomainConfig = options.cookieDomainRewrite, rewriteCookiePathConfig = options.cookiePathRewrite, preserveHeaderKeyCase = options.preserveHeaderKeyCase, rawHeaderKeyMap, setHeader = function(key2, header) { if (header == void 0) return; if (rewriteCookieDomainConfig && key2.toLowerCase() === "set-cookie") { header = common2.rewriteCookieProperty(header, rewriteCookieDomainConfig, "domain"); } if (rewriteCookiePathConfig && key2.toLowerCase() === "set-cookie") { header = common2.rewriteCookieProperty(header, rewriteCookiePathConfig, "path"); } res.setHeader(String(key2).trim(), header); }; if (typeof rewriteCookieDomainConfig === "string") { rewriteCookieDomainConfig = { "*": rewriteCookieDomainConfig }; } if (typeof rewriteCookiePathConfig === "string") { rewriteCookiePathConfig = { "*": rewriteCookiePathConfig }; } if (preserveHeaderKeyCase && proxyRes.rawHeaders != void 0) { rawHeaderKeyMap = {}; for (var i = 0; i < proxyRes.rawHeaders.length; i += 2) { var key = proxyRes.rawHeaders[i]; rawHeaderKeyMap[key.toLowerCase()] = key; } } Object.keys(proxyRes.headers).forEach(function(key2) { var header = proxyRes.headers[key2]; if (preserveHeaderKeyCase && rawHeaderKeyMap) { key2 = rawHeaderKeyMap[key2] || key2; } setHeader(key2, header); }); }, /** * Set the statusCode from the proxyResponse * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object * @param {proxyResponse} Res Response object from the proxy request * * @api private */ writeStatusCode: function writeStatusCode(req, res, proxyRes) { if (proxyRes.statusMessage) { res.statusCode = proxyRes.statusCode; res.statusMessage = proxyRes.statusMessage; } else { res.statusCode = proxyRes.statusCode; } } }; } }); // ../../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js var require_ms3 = __commonJS2({ "../../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js"(exports2, module2) { 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 parse11(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 parse11(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(ms34) { if (ms34 >= d) { return Math.round(ms34 / d) + "d"; } if (ms34 >= h) { return Math.round(ms34 / h) + "h"; } if (ms34 >= m) { return Math.round(ms34 / m) + "m"; } if (ms34 >= s) { return Math.round(ms34 / s) + "s"; } return ms34 + "ms"; } function fmtLong(ms34) { return plural15(ms34, d, "day") || plural15(ms34, h, "hour") || plural15(ms34, m, "minute") || plural15(ms34, s, "second") || ms34 + " ms"; } function plural15(ms34, n, name) { if (ms34 < n) { return; } if (ms34 < n * 1.5) { return Math.floor(ms34 / n) + " " + name; } return Math.ceil(ms34 / n) + " " + name + "s"; } } }); // ../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/debug.js var require_debug4 = __commonJS2({ "../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/debug.js"(exports2, module2) { exports2 = module2.exports = createDebug.debug = createDebug["default"] = createDebug; exports2.coerce = coerce; exports2.disable = disable3; exports2.enable = enable3; exports2.enabled = enabled; exports2.humanize = require_ms3(); exports2.instances = []; exports2.names = []; exports2.skips = []; exports2.formatters = {}; function selectColor(namespace) { var hash = 0, i; for (i in namespace) { hash = (hash << 5) - hash + namespace.charCodeAt(i); hash |= 0; } return exports2.colors[Math.abs(hash) % exports2.colors.length]; } function createDebug(namespace) { var prevTime; function debug2() { if (!debug2.enabled) return; var self2 = debug2; var curr = +/* @__PURE__ */ new Date(); var ms34 = curr - (prevTime || curr); self2.diff = ms34; self2.prev = prevTime; self2.curr = curr; prevTime = curr; var args2 = new Array(arguments.length); for (var i = 0; i < args2.length; i++) { args2[i] = arguments[i]; } args2[0] = exports2.coerce(args2[0]); if ("string" !== typeof args2[0]) { args2.unshift("%O"); } var index = 0; args2[0] = args2[0].replace(/%([a-zA-Z%])/g, function(match, format8) { if (match === "%%") return match; index++; var formatter = exports2.formatters[format8]; if ("function" === typeof formatter) { var val = args2[index]; match = formatter.call(self2, val); args2.splice(index, 1); index--; } return match; }); exports2.formatArgs.call(self2, args2); var logFn = debug2.log || exports2.log || console.log.bind(console); logFn.apply(self2, args2); } debug2.namespace = namespace; debug2.enabled = exports2.enabled(namespace); debug2.useColors = exports2.useColors(); debug2.color = selectColor(namespace); debug2.destroy = destroy; if ("function" === typeof exports2.init) { exports2.init(debug2); } exports2.instances.push(debug2); return debug2; } function destroy() { var index = exports2.instances.indexOf(this); if (index !== -1) { exports2.instances.splice(index, 1); return true; } else { return false; } } function enable3(namespaces) { exports2.save(namespaces); exports2.names = []; exports2.skips = []; var i; var split4 = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); var len = split4.length; for (i = 0; i < len; i++) { if (!split4[i]) continue; namespaces = split4[i].replace(/\*/g, ".*?"); if (namespaces[0] === "-") { exports2.skips.push(new RegExp("^" + namespaces.substr(1) + "$")); } else { exports2.names.push(new RegExp("^" + namespaces + "$")); } } for (i = 0; i < exports2.instances.length; i++) { var instance = exports2.instances[i]; instance.enabled = exports2.enabled(instance.namespace); } } function disable3() { exports2.enable(""); } function enabled(name) { if (name[name.length - 1] === "*") { return true; } 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/.pnpm/debug@3.1.0/node_modules/debug/src/browser.js var require_browser4 = __commonJS2({ "../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/browser.js"(exports2, module2) { exports2 = module2.exports = require_debug4(); exports2.log = log2; exports2.formatArgs = formatArgs; exports2.save = save; exports2.load = load3; exports2.useColors = useColors; exports2.storage = "undefined" != typeof chrome && "undefined" != typeof chrome.storage ? chrome.storage.local : localstorage(); exports2.colors = [ "#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33" ]; function useColors() { if (typeof window !== "undefined" && window.process && window.process.type === "renderer") { return true; } if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } 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(args2) { var useColors2 = this.useColors; args2[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args2[0] + (useColors2 ? "%c " : " ") + "+" + exports2.humanize(this.diff); if (!useColors2) return; var c = "color: " + this.color; args2.splice(1, 0, c, "color: inherit"); var index = 0; var lastC = 0; args2[0].replace(/%[a-zA-Z%]/g, function(match) { if ("%%" === match) return; index++; if ("%c" === match) { lastC = index; } }); args2.splice(lastC, 0, c); } function log2() { return "object" === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments); } function save(namespaces) { try { if (null == namespaces) { exports2.storage.removeItem("debug"); } else { exports2.storage.debug = namespaces; } } catch (e2) { } } function load3() { var r; try { r = exports2.storage.debug; } catch (e2) { } if (!r && typeof process !== "undefined" && "env" in process) { r = process.env.DEBUG; } return r; } exports2.enable(load3()); function localstorage() { try { return window.localStorage; } catch (e2) { } } } }); // ../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/node.js var require_node6 = __commonJS2({ "../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/node.js"(exports2, module2) { var tty = __require("tty"); var util = __require("util"); exports2 = module2.exports = require_debug4(); exports2.init = init2; exports2.log = log2; exports2.formatArgs = formatArgs; exports2.save = save; exports2.load = load3; exports2.useColors = useColors; exports2.colors = [6, 2, 3, 4, 5, 1]; try { supportsColor = require_supports_color(); if (supportsColor && supportsColor.level >= 2) { exports2.colors = [ 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221 ]; } } catch (err) { } var supportsColor; 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; }, {}); function useColors() { return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(process.stderr.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(args2) { var name = this.namespace; var useColors2 = this.useColors; if (useColors2) { var c = this.color; var colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); var prefix = " " + colorCode + ";1m" + name + " \x1B[0m"; args2[0] = prefix + args2[0].split("\n").join("\n" + prefix); args2.push(colorCode + "m+" + exports2.humanize(this.diff) + "\x1B[0m"); } else { args2[0] = getDate() + name + " " + args2[0]; } } function getDate() { if (exports2.inspectOpts.hideDate) { return ""; } else { return (/* @__PURE__ */ new Date()).toISOString() + " "; } } function log2() { return process.stderr.write(util.format.apply(util, arguments) + "\n"); } function save(namespaces) { if (null == namespaces) { delete process.env.DEBUG; } else { process.env.DEBUG = namespaces; } } function load3() { return process.env.DEBUG; } function init2(debug2) { debug2.inspectOpts = {}; var keys = Object.keys(exports2.inspectOpts); for (var i = 0; i < keys.length; i++) { debug2.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]]; } } exports2.enable(load3()); } }); // ../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/index.js var require_src3 = __commonJS2({ "../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/index.js"(exports2, module2) { if (typeof process === "undefined" || process.type === "renderer") { module2.exports = require_browser4(); } else { module2.exports = require_node6(); } } }); // ../../node_modules/.pnpm/follow-redirects@1.15.9_debug@3.1.0/node_modules/follow-redirects/debug.js var require_debug5 = __commonJS2({ "../../node_modules/.pnpm/follow-redirects@1.15.9_debug@3.1.0/node_modules/follow-redirects/debug.js"(exports2, module2) { var debug2; module2.exports = function() { if (!debug2) { try { debug2 = require_src3()("follow-redirects"); } catch (error3) { } if (typeof debug2 !== "function") { debug2 = function() { }; } } debug2.apply(null, arguments); }; } }); // ../../node_modules/.pnpm/follow-redirects@1.15.9_debug@3.1.0/node_modules/follow-redirects/index.js var require_follow_redirects = __commonJS2({ "../../node_modules/.pnpm/follow-redirects@1.15.9_debug@3.1.0/node_modules/follow-redirects/index.js"(exports2, module2) { var url3 = __require("url"); var URL11 = url3.URL; var http3 = __require("http"); var https = __require("https"); var Writable = __require("stream").Writable; var assert = __require("assert"); var debug2 = require_debug5(); (function detectUnsupportedEnvironment() { var looksLikeNode = typeof process !== "undefined"; var looksLikeBrowser = typeof window !== "undefined" && typeof document !== "undefined"; var looksLikeV8 = isFunction(Error.captureStackTrace); if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) { console.warn("The follow-redirects package should be excluded from browser builds."); } })(); var useNativeURL = false; try { assert(new URL11("")); } catch (error3) { useNativeURL = error3.code === "ERR_INVALID_URL"; } var preservedUrlFields = [ "auth", "host", "hostname", "href", "path", "pathname", "port", "protocol", "query", "search", "hash" ]; var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; var eventHandlers = /* @__PURE__ */ Object.create(null); events.forEach(function(event) { eventHandlers[event] = function(arg1, arg2, arg3) { this._redirectable.emit(event, arg1, arg2, arg3); }; }); var InvalidUrlError = createErrorType( "ERR_INVALID_URL", "Invalid URL", TypeError ); var RedirectionError = createErrorType( "ERR_FR_REDIRECTION_FAILURE", "Redirected request failed" ); var TooManyRedirectsError = createErrorType( "ERR_FR_TOO_MANY_REDIRECTS", "Maximum number of redirects exceeded", RedirectionError ); var MaxBodyLengthExceededError = createErrorType( "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", "Request body larger than maxBodyLength limit" ); var WriteAfterEndError = createErrorType( "ERR_STREAM_WRITE_AFTER_END", "write after end" ); var destroy = Writable.prototype.destroy || noop; function RedirectableRequest(options, responseCallback) { Writable.call(this); this._sanitizeOptions(options); this._options = options; this._ended = false; this._ending = false; this._redirectCount = 0; this._redirects = []; this._requestBodyLength = 0; this._requestBodyBuffers = []; if (responseCallback) { this.on("response", responseCallback); } var self2 = this; this._onNativeResponse = function(response) { try { self2._processResponse(response); } catch (cause) { self2.emit("error", cause instanceof RedirectionError ? cause : new RedirectionError({ cause })); } }; this._performRequest(); } RedirectableRequest.prototype = Object.create(Writable.prototype); RedirectableRequest.prototype.abort = function() { destroyRequest(this._currentRequest); this._currentRequest.abort(); this.emit("abort"); }; RedirectableRequest.prototype.destroy = function(error3) { destroyRequest(this._currentRequest, error3); destroy.call(this, error3); return this; }; RedirectableRequest.prototype.write = function(data, encoding, callback) { if (this._ending) { throw new WriteAfterEndError(); } if (!isString(data) && !isBuffer(data)) { throw new TypeError("data should be a string, Buffer or Uint8Array"); } if (isFunction(encoding)) { callback = encoding; encoding = null; } if (data.length === 0) { if (callback) { callback(); } return; } if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { this._requestBodyLength += data.length; this._requestBodyBuffers.push({ data, encoding }); this._currentRequest.write(data, encoding, callback); } else { this.emit("error", new MaxBodyLengthExceededError()); this.abort(); } }; RedirectableRequest.prototype.end = function(data, encoding, callback) { if (isFunction(data)) { callback = data; data = encoding = null; } else if (isFunction(encoding)) { callback = encoding; encoding = null; } if (!data) { this._ended = this._ending = true; this._currentRequest.end(null, null, callback); } else { var self2 = this; var currentRequest = this._currentRequest; this.write(data, encoding, function() { self2._ended = true; currentRequest.end(null, null, callback); }); this._ending = true; } }; RedirectableRequest.prototype.setHeader = function(name, value) { this._options.headers[name] = value; this._currentRequest.setHeader(name, value); }; RedirectableRequest.prototype.removeHeader = function(name) { delete this._options.headers[name]; this._currentRequest.removeHeader(name); }; RedirectableRequest.prototype.setTimeout = function(msecs, callback) { var self2 = this; function destroyOnTimeout(socket) { socket.setTimeout(msecs); socket.removeListener("timeout", socket.destroy); socket.addListener("timeout", socket.destroy); } function startTimer(socket) { if (self2._timeout) { clearTimeout(self2._timeout); } self2._timeout = setTimeout(function() { self2.emit("timeout"); clearTimer(); }, msecs); destroyOnTimeout(socket); } function clearTimer() { if (self2._timeout) { clearTimeout(self2._timeout); self2._timeout = null; } self2.removeListener("abort", clearTimer); self2.removeListener("error", clearTimer); self2.removeListener("response", clearTimer); self2.removeListener("close", clearTimer); if (callback) { self2.removeListener("timeout", callback); } if (!self2.socket) { self2._currentRequest.removeListener("socket", startTimer); } } if (callback) { this.on("timeout", callback); } if (this.socket) { startTimer(this.socket); } else { this._currentRequest.once("socket", startTimer); } this.on("socket", destroyOnTimeout); this.on("abort", clearTimer); this.on("error", clearTimer); this.on("response", clearTimer); this.on("close", clearTimer); return this; }; [ "flushHeaders", "getHeader", "setNoDelay", "setSocketKeepAlive" ].forEach(function(method) { RedirectableRequest.prototype[method] = function(a, b) { return this._currentRequest[method](a, b); }; }); ["aborted", "connection", "socket"].forEach(function(property) { Object.defineProperty(RedirectableRequest.prototype, property, { get: function() { return this._currentRequest[property]; } }); }); RedirectableRequest.prototype._sanitizeOptions = function(options) { if (!options.headers) { options.headers = {}; } if (options.host) { if (!options.hostname) { options.hostname = options.host; } delete options.host; } if (!options.pathname && options.path) { var searchPos = options.path.indexOf("?"); if (searchPos < 0) { options.pathname = options.path; } else { options.pathname = options.path.substring(0, searchPos); options.search = options.path.substring(searchPos); } } }; RedirectableRequest.prototype._performRequest = function() { var protocol = this._options.protocol; var nativeProtocol = this._options.nativeProtocols[protocol]; if (!nativeProtocol) { throw new TypeError("Unsupported protocol " + protocol); } if (this._options.agents) { var scheme = protocol.slice(0, -1); this._options.agent = this._options.agents[scheme]; } var request = this._currentRequest = nativeProtocol.request(this._options, this._onNativeResponse); request._redirectable = this; for (var event of events) { request.on(event, eventHandlers[event]); } this._currentUrl = /^\//.test(this._options.path) ? url3.format(this._options) : ( // When making a request to a proxy, […] // a client MUST send the target URI in absolute-form […]. this._options.path ); if (this._isRedirect) { var i = 0; var self2 = this; var buffers = this._requestBodyBuffers; (function writeNext(error3) { if (request === self2._currentRequest) { if (error3) { self2.emit("error", error3); } else if (i < buffers.length) { var buffer = buffers[i++]; if (!request.finished) { request.write(buffer.data, buffer.encoding, writeNext); } } else if (self2._ended) { request.end(); } } })(); } }; RedirectableRequest.prototype._processResponse = function(response) { var statusCode = response.statusCode; if (this._options.trackRedirects) { this._redirects.push({ url: this._currentUrl, headers: response.headers, statusCode }); } var location = response.headers.location; if (!location || this._options.followRedirects === false || statusCode < 300 || statusCode >= 400) { response.responseUrl = this._currentUrl; response.redirects = this._redirects; this.emit("response", response); this._requestBodyBuffers = []; return; } destroyRequest(this._currentRequest); response.destroy(); if (++this._redirectCount > this._options.maxRedirects) { throw new TooManyRedirectsError(); } var requestHeaders; var beforeRedirect = this._options.beforeRedirect; if (beforeRedirect) { requestHeaders = Object.assign({ // The Host header was set by nativeProtocol.request Host: response.req.getHeader("host") }, this._options.headers); } var method = this._options.method; if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || // RFC7231§6.4.4: The 303 (See Other) status code indicates that // the server is redirecting the user agent to a different resource […] // A user agent can perform a retrieval request targeting that URI // (a GET or HEAD request if using HTTP) […] statusCode === 303 && !/^(?:GET|HEAD)$/.test(this._options.method)) { this._options.method = "GET"; this._requestBodyBuffers = []; removeMatchingHeaders(/^content-/i, this._options.headers); } var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); var currentUrlParts = parseUrl2(this._currentUrl); var currentHost = currentHostHeader || currentUrlParts.host; var currentUrl = /^\w+:/.test(location) ? this._currentUrl : url3.format(Object.assign(currentUrlParts, { host: currentHost })); var redirectUrl = resolveUrl(location, currentUrl); debug2("redirecting to", redirectUrl.href); this._isRedirect = true; spreadUrlObject(redirectUrl, this._options); if (redirectUrl.protocol !== currentUrlParts.protocol && redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) { removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); } if (isFunction(beforeRedirect)) { var responseDetails = { headers: response.headers, statusCode }; var requestDetails = { url: currentUrl, method, headers: requestHeaders }; beforeRedirect(this._options, responseDetails, requestDetails); this._sanitizeOptions(this._options); } this._performRequest(); }; function wrap(protocols) { var exports3 = { maxRedirects: 21, maxBodyLength: 10 * 1024 * 1024 }; var nativeProtocols = {}; Object.keys(protocols).forEach(function(scheme) { var protocol = scheme + ":"; var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; var wrappedProtocol = exports3[scheme] = Object.create(nativeProtocol); function request(input, options, callback) { if (isURL2(input)) { input = spreadUrlObject(input); } else if (isString(input)) { input = spreadUrlObject(parseUrl2(input)); } else { callback = options; options = validateUrl(input); input = { protocol }; } if (isFunction(options)) { callback = options; options = null; } options = Object.assign({ maxRedirects: exports3.maxRedirects, maxBodyLength: exports3.maxBodyLength }, input, options); options.nativeProtocols = nativeProtocols; if (!isString(options.host) && !isString(options.hostname)) { options.hostname = "::1"; } assert.equal(options.protocol, protocol, "protocol mismatch"); debug2("options", options); return new RedirectableRequest(options, callback); } function get(input, options, callback) { var wrappedRequest = wrappedProtocol.request(input, options, callback); wrappedRequest.end(); return wrappedRequest; } Object.defineProperties(wrappedProtocol, { request: { value: request, configurable: true, enumerable: true, writable: true }, get: { value: get, configurable: true, enumerable: true, writable: true } }); }); return exports3; } function noop() { } function parseUrl2(input) { var parsed; if (useNativeURL) { parsed = new URL11(input); } else { parsed = validateUrl(url3.parse(input)); if (!isString(parsed.protocol)) { throw new InvalidUrlError({ input }); } } return parsed; } function resolveUrl(relative8, base) { return useNativeURL ? new URL11(relative8, base) : parseUrl2(url3.resolve(base, relative8)); } function validateUrl(input) { if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) { throw new InvalidUrlError({ input: input.href || input }); } if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) { throw new InvalidUrlError({ input: input.href || input }); } return input; } function spreadUrlObject(urlObject, target) { var spread = target || {}; for (var key of preservedUrlFields) { spread[key] = urlObject[key]; } if (spread.hostname.startsWith("[")) { spread.hostname = spread.hostname.slice(1, -1); } if (spread.port !== "") { spread.port = Number(spread.port); } spread.path = spread.search ? spread.pathname + spread.search : spread.pathname; return spread; } function removeMatchingHeaders(regex, headers) { var lastValue; for (var header in headers) { if (regex.test(header)) { lastValue = headers[header]; delete headers[header]; } } return lastValue === null || typeof lastValue === "undefined" ? void 0 : String(lastValue).trim(); } function createErrorType(code2, message2, baseClass) { function CustomError(properties) { if (isFunction(Error.captureStackTrace)) { Error.captureStackTrace(this, this.constructor); } Object.assign(this, properties || {}); this.code = code2; this.message = this.cause ? message2 + ": " + this.cause.message : message2; } CustomError.prototype = new (baseClass || Error)(); Object.defineProperties(CustomError.prototype, { constructor: { value: CustomError, enumerable: false }, name: { value: "Error [" + code2 + "]", enumerable: false } }); return CustomError; } function destroyRequest(request, error3) { for (var event of events) { request.removeListener(event, eventHandlers[event]); } request.on("error", noop); request.destroy(error3); } function isSubdomain(subdomain, domain) { assert(isString(subdomain) && isString(domain)); var dot = subdomain.length - domain.length - 1; return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); } function isString(value) { return typeof value === "string" || value instanceof String; } function isFunction(value) { return typeof value === "function"; } function isBuffer(value) { return typeof value === "object" && "length" in value; } function isURL2(value) { return URL11 && value instanceof URL11; } module2.exports = wrap({ http: http3, https }); module2.exports.wrap = wrap; } }); // ../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/passes/web-incoming.js var require_web_incoming = __commonJS2({ "../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/passes/web-incoming.js"(exports2, module2) { var httpNative = __require("http"); var httpsNative = __require("https"); var web_o = require_web_outgoing(); var common2 = require_common12(); var followRedirects = require_follow_redirects(); web_o = Object.keys(web_o).map(function(pass) { return web_o[pass]; }); var nativeAgents = { http: httpNative, https: httpsNative }; var supportsAbortedEvent = function() { var ver = process.versions.node.split(".").map(Number); return ver[0] <= 14 || ver[0] === 15 && ver[1] <= 4; }(); module2.exports = { /** * Sets `content-length` to '0' if request is of DELETE type. * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object * @param {Object} Options Config object passed to the proxy * * @api private */ deleteLength: function deleteLength(req, res, options) { if ((req.method === "DELETE" || req.method === "OPTIONS") && !req.headers["content-length"]) { req.headers["content-length"] = "0"; delete req.headers["transfer-encoding"]; } }, /** * Sets timeout in request socket if it was specified in options. * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object * @param {Object} Options Config object passed to the proxy * * @api private */ timeout: function timeout(req, res, options) { if (options.timeout) { req.socket.setTimeout(options.timeout); } }, /** * Sets `x-forwarded-*` headers if specified in config. * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object * @param {Object} Options Config object passed to the proxy * * @api private */ XHeaders: function XHeaders(req, res, options) { if (!options.xfwd) return; var encrypted = req.isSpdy || common2.hasEncryptedConnection(req); var values = { for: req.connection.remoteAddress || req.socket.remoteAddress, port: common2.getPort(req), proto: encrypted ? "https" : "http" }; ["for", "port", "proto"].forEach(function(header) { req.headers["x-forwarded-" + header] = (req.headers["x-forwarded-" + header] || "") + (req.headers["x-forwarded-" + header] ? "," : "") + values[header]; }); req.headers["x-forwarded-host"] = req.headers["x-forwarded-host"] || req.headers["host"] || ""; }, /** * Does the actual proxying. If `forward` is enabled fires up * a ForwardStream, same happens for ProxyStream. The request * just dies otherwise. * * @param {ClientRequest} Req Request object * @param {IncomingMessage} Res Response object * @param {Object} Options Config object passed to the proxy * * @api private */ stream: function stream(req, res, options, _, server, clb) { server.emit("start", req, res, options.target || options.forward); var agents = options.followRedirects ? followRedirects : nativeAgents; var http3 = agents.http; var https = agents.https; if (options.forward) { var forwardReq = (options.forward.protocol === "https:" ? https : http3).request( common2.setupOutgoing(options.ssl || {}, options, req, "forward") ); var forwardError = createErrorHandler(forwardReq, options.forward); req.on("error", forwardError); forwardReq.on("error", forwardError); (options.buffer || req).pipe(forwardReq); if (!options.target) { return res.end(); } } var proxyReq = (options.target.protocol === "https:" ? https : http3).request( common2.setupOutgoing(options.ssl || {}, options, req) ); proxyReq.on("socket", function(socket) { if (server && !proxyReq.getHeader("expect")) { server.emit("proxyReq", proxyReq, req, res, options); } }); if (options.proxyTimeout) { proxyReq.setTimeout(options.proxyTimeout, function() { proxyReq.abort(); }); } if (supportsAbortedEvent) { req.on("aborted", function() { proxyReq.abort(); }); } else { res.on("close", function() { var aborted = !res.writableFinished; if (aborted) { proxyReq.abort(); } }); } var proxyError = createErrorHandler(proxyReq, options.target); req.on("error", proxyError); proxyReq.on("error", proxyError); function createErrorHandler(proxyReq2, url3) { return function proxyError2(err) { if (req.socket.destroyed && err.code === "ECONNRESET") { server.emit("econnreset", err, req, res, url3); return proxyReq2.abort(); } if (clb) { clb(err, req, res, url3); } else { server.emit("error", err, req, res, url3); } }; } (options.buffer || req).pipe(proxyReq); proxyReq.on("response", function(proxyRes) { if (server) { server.emit("proxyRes", proxyRes, req, res); } if (!res.headersSent && !options.selfHandleResponse) { for (var i = 0; i < web_o.length; i++) { if (web_o[i](req, res, proxyRes, options)) { break; } } } if (!res.finished) { proxyRes.on("end", function() { if (server) server.emit("end", req, res, proxyRes); }); if (!options.selfHandleResponse) proxyRes.pipe(res); } else { if (server) server.emit("end", req, res, proxyRes); } }); } }; } }); // ../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/passes/ws-incoming.js var require_ws_incoming = __commonJS2({ "../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/passes/ws-incoming.js"(exports2, module2) { var http3 = __require("http"); var https = __require("https"); var common2 = require_common12(); module2.exports = { /** * WebSocket requests must have the `GET` method and * the `upgrade:websocket` header * * @param {ClientRequest} Req Request object * @param {Socket} Websocket * * @api private */ checkMethodAndHeader: function checkMethodAndHeader(req, socket) { if (req.method !== "GET" || !req.headers.upgrade) { socket.destroy(); return true; } if (req.headers.upgrade.toLowerCase() !== "websocket") { socket.destroy(); return true; } }, /** * Sets `x-forwarded-*` headers if specified in config. * * @param {ClientRequest} Req Request object * @param {Socket} Websocket * @param {Object} Options Config object passed to the proxy * * @api private */ XHeaders: function XHeaders(req, socket, options) { if (!options.xfwd) return; var values = { for: req.connection.remoteAddress || req.socket.remoteAddress, port: common2.getPort(req), proto: common2.hasEncryptedConnection(req) ? "wss" : "ws" }; ["for", "port", "proto"].forEach(function(header) { req.headers["x-forwarded-" + header] = (req.headers["x-forwarded-" + header] || "") + (req.headers["x-forwarded-" + header] ? "," : "") + values[header]; }); }, /** * Does the actual proxying. Make the request and upgrade it * send the Switching Protocols request and pipe the sockets. * * @param {ClientRequest} Req Request object * @param {Socket} Websocket * @param {Object} Options Config object passed to the proxy * * @api private */ stream: function stream(req, socket, options, head, server, clb) { var createHttpHeader = function(line, headers) { return Object.keys(headers).reduce(function(head2, key) { var value = headers[key]; if (!Array.isArray(value)) { head2.push(key + ": " + value); return head2; } for (var i = 0; i < value.length; i++) { head2.push(key + ": " + value[i]); } return head2; }, [line]).join("\r\n") + "\r\n\r\n"; }; common2.setupSocket(socket); if (head && head.length) socket.unshift(head); var proxyReq = (common2.isSSL.test(options.target.protocol) ? https : http3).request( common2.setupOutgoing(options.ssl || {}, options, req) ); if (server) { server.emit("proxyReqWs", proxyReq, req, socket, options, head); } proxyReq.on("error", onOutgoingError); proxyReq.on("response", function(res) { if (!res.upgrade) { socket.write(createHttpHeader("HTTP/" + res.httpVersion + " " + res.statusCode + " " + res.statusMessage, res.headers)); res.pipe(socket); } }); proxyReq.on("upgrade", function(proxyRes, proxySocket, proxyHead) { proxySocket.on("error", onOutgoingError); proxySocket.on("end", function() { server.emit("close", proxyRes, proxySocket, proxyHead); }); socket.on("error", function() { proxySocket.destroy(); }); common2.setupSocket(proxySocket); if (proxyHead && proxyHead.length) proxySocket.unshift(proxyHead); socket.write(createHttpHeader("HTTP/1.1 101 Switching Protocols", proxyRes.headers)); proxySocket.pipe(socket).pipe(proxySocket); server.emit("open", proxySocket); server.emit("proxySocket", proxySocket); }); return proxyReq.end(); function onOutgoingError(err) { if (clb) { clb(err, req, socket); } else { server.emit("error", err, req, socket); } socket.end(); } } }; } }); // ../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/index.js var require_http_proxy = __commonJS2({ "../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/index.js"(exports2, module2) { var httpProxy2 = module2.exports; var extend = Object.assign; var parse_url = __require("url").parse; var EE3 = require_eventemitter3(); var http3 = __require("http"); var https = __require("https"); var web = require_web_incoming(); var ws = require_ws_incoming(); httpProxy2.Server = ProxyServer; function createRightProxy(type) { return function(options) { return function(req, res) { var passes = type === "ws" ? this.wsPasses : this.webPasses, args2 = [].slice.call(arguments), cntr = args2.length - 1, head, cbl; if (typeof args2[cntr] === "function") { cbl = args2[cntr]; cntr--; } var requestOptions = options; if (!(args2[cntr] instanceof Buffer) && args2[cntr] !== res) { requestOptions = extend({}, options); extend(requestOptions, args2[cntr]); cntr--; } if (args2[cntr] instanceof Buffer) { head = args2[cntr]; } ["target", "forward"].forEach(function(e2) { if (typeof requestOptions[e2] === "string") requestOptions[e2] = parse_url(requestOptions[e2]); }); if (!requestOptions.target && !requestOptions.forward) { return this.emit("error", new Error("Must provide a proper URL as target")); } for (var i = 0; i < passes.length; i++) { if (passes[i](req, res, requestOptions, head, this, cbl)) { break; } } }; }; } httpProxy2.createRightProxy = createRightProxy; function ProxyServer(options) { EE3.call(this); options = options || {}; options.prependPath = options.prependPath === false ? false : true; this.web = this.proxyRequest = createRightProxy("web")(options); this.ws = this.proxyWebsocketRequest = createRightProxy("ws")(options); this.options = options; this.webPasses = Object.keys(web).map(function(pass) { return web[pass]; }); this.wsPasses = Object.keys(ws).map(function(pass) { return ws[pass]; }); this.on("error", this.onError, this); } __require("util").inherits(ProxyServer, EE3); ProxyServer.prototype.onError = function(err) { if (this.listeners("error").length === 1) { throw err; } }; ProxyServer.prototype.listen = function(port, hostname3) { var self2 = this, closure = function(req, res) { self2.web(req, res); }; this._server = this.options.ssl ? https.createServer(this.options.ssl, closure) : http3.createServer(closure); if (this.options.ws) { this._server.on("upgrade", function(req, socket, head) { self2.ws(req, socket, head); }); } this._server.listen(port, hostname3); return this; }; ProxyServer.prototype.close = function(callback) { var self2 = this; if (this._server) { this._server.close(done); } function done() { self2._server = null; if (callback) { callback.apply(null, arguments); } } ; }; ProxyServer.prototype.before = function(type, passName, callback) { if (type !== "ws" && type !== "web") { throw new Error("type must be `web` or `ws`"); } var passes = type === "ws" ? this.wsPasses : this.webPasses, i = false; passes.forEach(function(v, idx) { if (v.name === passName) i = idx; }); if (i === false) throw new Error("No such pass"); passes.splice(i, 0, callback); }; ProxyServer.prototype.after = function(type, passName, callback) { if (type !== "ws" && type !== "web") { throw new Error("type must be `web` or `ws`"); } var passes = type === "ws" ? this.wsPasses : this.webPasses, i = false; passes.forEach(function(v, idx) { if (v.name === passName) i = idx; }); if (i === false) throw new Error("No such pass"); passes.splice(i++, 0, callback); }; } }); // ../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy.js var require_http_proxy2 = __commonJS2({ "../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy.js"(exports2, module2) { var ProxyServer = require_http_proxy().Server; function createProxyServer(options) { return new ProxyServer(options); } ProxyServer.createProxyServer = createProxyServer; ProxyServer.createServer = createProxyServer; ProxyServer.createProxy = createProxyServer; module2.exports = ProxyServer; } }); // ../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/index.js var require_http_proxy_node16 = __commonJS2({ "../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/index.js"(exports2, module2) { module2.exports = require_http_proxy2(); } }); // ../../node_modules/.pnpm/fast-url-parser@1.1.3/node_modules/fast-url-parser/src/urlparser.js var require_urlparser = __commonJS2({ "../../node_modules/.pnpm/fast-url-parser@1.1.3/node_modules/fast-url-parser/src/urlparser.js"(exports2, module2) { "use strict"; function Url() { this._protocol = null; this._href = ""; this._port = -1; this._query = null; this.auth = null; this.slashes = null; this.host = null; this.hostname = null; this.hash = null; this.search = null; this.pathname = null; this._prependSlash = false; } var querystring = __require("querystring"); Url.queryString = querystring; Url.prototype.parse = function Url$parse(str, parseQueryString2, hostDenotesSlash, disableAutoEscapeChars) { if (typeof str !== "string") { throw new TypeError("Parameter 'url' must be a string, not " + typeof str); } var start = 0; var end = str.length - 1; while (str.charCodeAt(start) <= 32) start++; while (str.charCodeAt(end) <= 32) end--; start = this._parseProtocol(str, start, end); if (this._protocol !== "javascript") { start = this._parseHost(str, start, end, hostDenotesSlash); var proto = this._protocol; if (!this.hostname && (this.slashes || proto && !slashProtocols[proto])) { this.hostname = this.host = ""; } } if (start <= end) { var ch = str.charCodeAt(start); if (ch === 47 || ch === 92) { this._parsePath(str, start, end, disableAutoEscapeChars); } else if (ch === 63) { this._parseQuery(str, start, end, disableAutoEscapeChars); } else if (ch === 35) { this._parseHash(str, start, end, disableAutoEscapeChars); } else if (this._protocol !== "javascript") { this._parsePath(str, start, end, disableAutoEscapeChars); } else { this.pathname = str.slice(start, end + 1); } } if (!this.pathname && this.hostname && this._slashProtocols[this._protocol]) { this.pathname = "/"; } if (parseQueryString2) { var search = this.search; if (search == null) { search = this.search = ""; } if (search.charCodeAt(0) === 63) { search = search.slice(1); } this.query = Url.queryString.parse(search); } }; Url.prototype.resolve = function Url$resolve(relative8) { return this.resolveObject(Url.parse(relative8, false, true)).format(); }; Url.prototype.format = function Url$format() { var auth = this.auth || ""; if (auth) { auth = encodeURIComponent(auth); auth = auth.replace(/%3A/i, ":"); auth += "@"; } var protocol = this.protocol || ""; var pathname = this.pathname || ""; var hash = this.hash || ""; var search = this.search || ""; var query = ""; var hostname3 = this.hostname || ""; var port = this.port || ""; var host = false; var scheme = ""; var q = this.query; if (q && typeof q === "object") { query = Url.queryString.stringify(q); } if (!search) { search = query ? "?" + query : ""; } if (protocol && protocol.charCodeAt(protocol.length - 1) !== 58) protocol += ":"; if (this.host) { host = auth + this.host; } else if (hostname3) { var ip6 = hostname3.indexOf(":") > -1; if (ip6) hostname3 = "[" + hostname3 + "]"; host = auth + hostname3 + (port ? ":" + port : ""); } var slashes = this.slashes || (!protocol || slashProtocols[protocol]) && host !== false; if (protocol) scheme = protocol + (slashes ? "//" : ""); else if (slashes) scheme = "//"; if (slashes && pathname && pathname.charCodeAt(0) !== 47) { pathname = "/" + pathname; } if (search && search.charCodeAt(0) !== 63) search = "?" + search; if (hash && hash.charCodeAt(0) !== 35) hash = "#" + hash; pathname = escapePathName(pathname); search = escapeSearch(search); return scheme + (host === false ? "" : host) + pathname + search + hash; }; Url.prototype.resolveObject = function Url$resolveObject(relative8) { if (typeof relative8 === "string") relative8 = Url.parse(relative8, false, true); var result = this._clone(); result.hash = relative8.hash; if (!relative8.href) { result._href = ""; return result; } if (relative8.slashes && !relative8._protocol) { relative8._copyPropsTo(result, true); if (slashProtocols[result._protocol] && result.hostname && !result.pathname) { result.pathname = "/"; } result._href = ""; return result; } if (relative8._protocol && relative8._protocol !== result._protocol) { if (!slashProtocols[relative8._protocol]) { relative8._copyPropsTo(result, false); result._href = ""; return result; } result._protocol = relative8._protocol; if (!relative8.host && relative8._protocol !== "javascript") { var relPath = (relative8.pathname || "").split("/"); while (relPath.length && !(relative8.host = relPath.shift())) ; if (!relative8.host) relative8.host = ""; if (!relative8.hostname) relative8.hostname = ""; if (relPath[0] !== "") relPath.unshift(""); if (relPath.length < 2) relPath.unshift(""); result.pathname = relPath.join("/"); } else { result.pathname = relative8.pathname; } result.search = relative8.search; result.host = relative8.host || ""; result.auth = relative8.auth; result.hostname = relative8.hostname || relative8.host; result._port = relative8._port; result.slashes = result.slashes || relative8.slashes; result._href = ""; return result; } var isSourceAbs = result.pathname && result.pathname.charCodeAt(0) === 47; var isRelAbs = relative8.host || relative8.pathname && relative8.pathname.charCodeAt(0) === 47; var mustEndAbs = isRelAbs || isSourceAbs || result.host && relative8.pathname; var removeAllDots = mustEndAbs; var srcPath = result.pathname && result.pathname.split("/") || []; var relPath = relative8.pathname && relative8.pathname.split("/") || []; var psychotic = result._protocol && !slashProtocols[result._protocol]; if (psychotic) { result.hostname = ""; result._port = -1; if (result.host) { if (srcPath[0] === "") srcPath[0] = result.host; else srcPath.unshift(result.host); } result.host = ""; if (relative8._protocol) { relative8.hostname = ""; relative8._port = -1; if (relative8.host) { if (relPath[0] === "") relPath[0] = relative8.host; else relPath.unshift(relative8.host); } relative8.host = ""; } mustEndAbs = mustEndAbs && (relPath[0] === "" || srcPath[0] === ""); } if (isRelAbs) { result.host = relative8.host ? relative8.host : result.host; result.hostname = relative8.hostname ? relative8.hostname : result.hostname; result.search = relative8.search; srcPath = relPath; } else if (relPath.length) { if (!srcPath) srcPath = []; srcPath.pop(); srcPath = srcPath.concat(relPath); result.search = relative8.search; } else if (relative8.search) { if (psychotic) { result.hostname = result.host = srcPath.shift(); var authInHost = result.host && result.host.indexOf("@") > 0 ? result.host.split("@") : false; if (authInHost) { result.auth = authInHost.shift(); result.host = result.hostname = authInHost.shift(); } } result.search = relative8.search; result._href = ""; return result; } if (!srcPath.length) { result.pathname = null; result._href = ""; return result; } var last = srcPath.slice(-1)[0]; var hasTrailingSlash = (result.host || relative8.host) && (last === "." || last === "..") || last === ""; var up = 0; for (var i2 = srcPath.length; i2 >= 0; i2--) { last = srcPath[i2]; if (last === ".") { srcPath.splice(i2, 1); } else if (last === "..") { srcPath.splice(i2, 1); up++; } else if (up) { srcPath.splice(i2, 1); up--; } } if (!mustEndAbs && !removeAllDots) { for (; up--; up) { srcPath.unshift(".."); } } if (mustEndAbs && srcPath[0] !== "" && (!srcPath[0] || srcPath[0].charCodeAt(0) !== 47)) { srcPath.unshift(""); } if (hasTrailingSlash && srcPath.join("/").substr(-1) !== "/") { srcPath.push(""); } var isAbsolute2 = srcPath[0] === "" || srcPath[0] && srcPath[0].charCodeAt(0) === 47; if (psychotic) { result.hostname = result.host = isAbsolute2 ? "" : srcPath.length ? srcPath.shift() : ""; var authInHost = result.host && result.host.indexOf("@") > 0 ? result.host.split("@") : false; if (authInHost) { result.auth = authInHost.shift(); result.host = result.hostname = authInHost.shift(); } } mustEndAbs = mustEndAbs || result.host && srcPath.length; if (mustEndAbs && !isAbsolute2) { srcPath.unshift(""); } result.pathname = srcPath.length === 0 ? null : srcPath.join("/"); result.auth = relative8.auth || result.auth; result.slashes = result.slashes || relative8.slashes; result._href = ""; return result; }; var punycode = __require("punycode"); Url.prototype._hostIdna = function Url$_hostIdna(hostname3) { return punycode.toASCII(hostname3); }; var escapePathName = Url.prototype._escapePathName = function Url$_escapePathName(pathname) { if (!containsCharacter2( pathname, 35, 63 /*'?'*/ )) { return pathname; } return _escapePath(pathname); }; var escapeSearch = Url.prototype._escapeSearch = function Url$_escapeSearch(search) { if (!containsCharacter2(search, 35, -1)) return search; return _escapeSearch(search); }; Url.prototype._parseProtocol = function Url$_parseProtocol(str, start, end) { var doLowerCase = false; var protocolCharacters = this._protocolCharacters; for (var i2 = start; i2 <= end; ++i2) { var ch = str.charCodeAt(i2); if (ch === 58) { var protocol = str.slice(start, i2); if (doLowerCase) protocol = protocol.toLowerCase(); this._protocol = protocol; return i2 + 1; } else if (protocolCharacters[ch] === 1) { if (ch < 97) doLowerCase = true; } else { return start; } } return start; }; Url.prototype._parseAuth = function Url$_parseAuth(str, start, end, decode) { var auth = str.slice(start, end + 1); if (decode) { auth = decodeURIComponent(auth); } this.auth = auth; }; Url.prototype._parsePort = function Url$_parsePort(str, start, end) { var port = 0; var hadChars = false; var validPort = true; for (var i2 = start; i2 <= end; ++i2) { var ch = str.charCodeAt(i2); if (48 <= ch && ch <= 57) { port = 10 * port + (ch - 48); hadChars = true; } else { validPort = false; if (ch === 92 || ch === 47) { validPort = true; } break; } } if (port === 0 && !hadChars || !validPort) { if (!validPort) { this._port = -2; } return 0; } this._port = port; return i2 - start; }; Url.prototype._parseHost = function Url$_parseHost(str, start, end, slashesDenoteHost) { var hostEndingCharacters = this._hostEndingCharacters; var first = str.charCodeAt(start); var second = str.charCodeAt(start + 1); if ((first === 47 || first === 92) && (second === 47 || second === 92)) { this.slashes = true; if (start === 0) { if (end < 2) return start; var hasAuth = containsCharacter(str, 64, 2, hostEndingCharacters); if (!hasAuth && !slashesDenoteHost) { this.slashes = null; return start; } } start += 2; } else if (!this._protocol || //2. there was a protocol that requires slashes //e.g. in 'http:asd' 'asd' is not a hostname slashProtocols[this._protocol]) { return start; } var doLowerCase = false; var idna = false; var hostNameStart = start; var hostNameEnd = end; var lastCh = -1; var portLength = 0; var charsAfterDot = 0; var authNeedsDecoding = false; var j = -1; for (var i2 = start; i2 <= end; ++i2) { var ch = str.charCodeAt(i2); if (ch === 64) { j = i2; } else if (ch === 37) { authNeedsDecoding = true; } else if (hostEndingCharacters[ch] === 1) { break; } } if (j > -1) { this._parseAuth(str, start, j - 1, authNeedsDecoding); start = hostNameStart = j + 1; } if (str.charCodeAt(start) === 91) { for (var i2 = start + 1; i2 <= end; ++i2) { var ch = str.charCodeAt(i2); if (ch === 93) { if (str.charCodeAt(i2 + 1) === 58) { portLength = this._parsePort(str, i2 + 2, end) + 1; } var hostname3 = str.slice(start + 1, i2).toLowerCase(); this.hostname = hostname3; this.host = this._port > 0 ? "[" + hostname3 + "]:" + this._port : "[" + hostname3 + "]"; this.pathname = "/"; return i2 + portLength + 1; } } return start; } for (var i2 = start; i2 <= end; ++i2) { if (charsAfterDot > 62) { this.hostname = this.host = str.slice(start, i2); return i2; } var ch = str.charCodeAt(i2); if (ch === 58) { portLength = this._parsePort(str, i2 + 1, end) + 1; hostNameEnd = i2 - 1; break; } else if (ch < 97) { if (ch === 46) { charsAfterDot = -1; } else if (65 <= ch && ch <= 90) { doLowerCase = true; } else if (!(ch === 45 || ch === 95 || ch === 43 || 48 <= ch && ch <= 57)) { if (hostEndingCharacters[ch] === 0 && this._noPrependSlashHostEnders[ch] === 0) { this._prependSlash = true; } hostNameEnd = i2 - 1; break; } } else if (ch >= 123) { if (ch <= 126) { if (this._noPrependSlashHostEnders[ch] === 0) { this._prependSlash = true; } hostNameEnd = i2 - 1; break; } idna = true; } lastCh = ch; charsAfterDot++; } if (hostNameEnd + 1 !== start && hostNameEnd - hostNameStart <= 256) { var hostname3 = str.slice(hostNameStart, hostNameEnd + 1); if (doLowerCase) hostname3 = hostname3.toLowerCase(); if (idna) hostname3 = this._hostIdna(hostname3); this.hostname = hostname3; this.host = this._port > 0 ? hostname3 + ":" + this._port : hostname3; } return hostNameEnd + 1 + portLength; }; Url.prototype._copyPropsTo = function Url$_copyPropsTo(input, noProtocol) { if (!noProtocol) { input._protocol = this._protocol; } input._href = this._href; input._port = this._port; input._prependSlash = this._prependSlash; input.auth = this.auth; input.slashes = this.slashes; input.host = this.host; input.hostname = this.hostname; input.hash = this.hash; input.search = this.search; input.pathname = this.pathname; }; Url.prototype._clone = function Url$_clone() { var ret = new Url(); ret._protocol = this._protocol; ret._href = this._href; ret._port = this._port; ret._prependSlash = this._prependSlash; ret.auth = this.auth; ret.slashes = this.slashes; ret.host = this.host; ret.hostname = this.hostname; ret.hash = this.hash; ret.search = this.search; ret.pathname = this.pathname; return ret; }; Url.prototype._getComponentEscaped = function Url$_getComponentEscaped(str, start, end, isAfterQuery) { var cur = start; var i2 = start; var ret = ""; var autoEscapeMap2 = isAfterQuery ? this._afterQueryAutoEscapeMap : this._autoEscapeMap; for (; i2 <= end; ++i2) { var ch = str.charCodeAt(i2); var escaped = autoEscapeMap2[ch]; if (escaped !== "" && escaped !== void 0) { if (cur < i2) ret += str.slice(cur, i2); ret += escaped; cur = i2 + 1; } } if (cur < i2 + 1) ret += str.slice(cur, i2); return ret; }; Url.prototype._parsePath = function Url$_parsePath(str, start, end, disableAutoEscapeChars) { var pathStart = start; var pathEnd = end; var escape2 = false; var autoEscapeCharacters = this._autoEscapeCharacters; var prePath = this._port === -2 ? "/:" : ""; for (var i2 = start; i2 <= end; ++i2) { var ch = str.charCodeAt(i2); if (ch === 35) { this._parseHash(str, i2, end, disableAutoEscapeChars); pathEnd = i2 - 1; break; } else if (ch === 63) { this._parseQuery(str, i2, end, disableAutoEscapeChars); pathEnd = i2 - 1; break; } else if (!disableAutoEscapeChars && !escape2 && autoEscapeCharacters[ch] === 1) { escape2 = true; } } if (pathStart > pathEnd) { this.pathname = prePath === "" ? "/" : prePath; return; } var path11; if (escape2) { path11 = this._getComponentEscaped(str, pathStart, pathEnd, false); } else { path11 = str.slice(pathStart, pathEnd + 1); } this.pathname = prePath === "" ? this._prependSlash ? "/" + path11 : path11 : prePath + path11; }; Url.prototype._parseQuery = function Url$_parseQuery(str, start, end, disableAutoEscapeChars) { var queryStart = start; var queryEnd = end; var escape2 = false; var autoEscapeCharacters = this._autoEscapeCharacters; for (var i2 = start; i2 <= end; ++i2) { var ch = str.charCodeAt(i2); if (ch === 35) { this._parseHash(str, i2, end, disableAutoEscapeChars); queryEnd = i2 - 1; break; } else if (!disableAutoEscapeChars && !escape2 && autoEscapeCharacters[ch] === 1) { escape2 = true; } } if (queryStart > queryEnd) { this.search = ""; return; } var query; if (escape2) { query = this._getComponentEscaped(str, queryStart, queryEnd, true); } else { query = str.slice(queryStart, queryEnd + 1); } this.search = query; }; Url.prototype._parseHash = function Url$_parseHash(str, start, end, disableAutoEscapeChars) { if (start > end) { this.hash = ""; return; } this.hash = disableAutoEscapeChars ? str.slice(start, end + 1) : this._getComponentEscaped(str, start, end, true); }; Object.defineProperty(Url.prototype, "port", { get: function() { if (this._port >= 0) { return "" + this._port; } return null; }, set: function(v) { if (v == null) { this._port = -1; } else { this._port = parseInt(v, 10); } } }); Object.defineProperty(Url.prototype, "query", { get: function() { var query = this._query; if (query != null) { return query; } var search = this.search; if (search) { if (search.charCodeAt(0) === 63) { search = search.slice(1); } if (search !== "") { this._query = search; return search; } } return search; }, set: function(v) { this._query = v; } }); Object.defineProperty(Url.prototype, "path", { get: function() { var p = this.pathname || ""; var s = this.search || ""; if (p || s) { return p + s; } return p == null && s ? "/" + s : null; }, set: function() { } }); Object.defineProperty(Url.prototype, "protocol", { get: function() { var proto = this._protocol; return proto ? proto + ":" : proto; }, set: function(v) { if (typeof v === "string") { var end = v.length - 1; if (v.charCodeAt(end) === 58) { this._protocol = v.slice(0, end); } else { this._protocol = v; } } else if (v == null) { this._protocol = null; } } }); Object.defineProperty(Url.prototype, "href", { get: function() { var href = this._href; if (!href) { href = this._href = this.format(); } return href; }, set: function(v) { this._href = v; } }); Url.parse = function Url$Parse(str, parseQueryString2, hostDenotesSlash, disableAutoEscapeChars) { if (str instanceof Url) return str; var ret = new Url(); ret.parse(str, !!parseQueryString2, !!hostDenotesSlash, !!disableAutoEscapeChars); return ret; }; Url.format = function Url$Format(obj) { if (typeof obj === "string") { obj = Url.parse(obj); } if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); } return obj.format(); }; Url.resolve = function Url$Resolve(source, relative8) { return Url.parse(source, false, true).resolve(relative8); }; Url.resolveObject = function Url$ResolveObject(source, relative8) { if (!source) return relative8; return Url.parse(source, false, true).resolveObject(relative8); }; function _escapePath(pathname) { return pathname.replace(/[?#]/g, function(match) { return encodeURIComponent(match); }); } function _escapeSearch(search) { return search.replace(/#/g, function(match) { return encodeURIComponent(match); }); } function containsCharacter(string, char1, fromIndex, stopCharacterTable) { var len2 = string.length; for (var i2 = fromIndex; i2 < len2; ++i2) { var ch = string.charCodeAt(i2); if (ch === char1) { return true; } else if (stopCharacterTable[ch] === 1) { return false; } } return false; } function containsCharacter2(string, char1, char2) { for (var i2 = 0, len2 = string.length; i2 < len2; ++i2) { var ch = string.charCodeAt(i2); if (ch === char1 || ch === char2) return true; } return false; } function makeAsciiTable(spec) { var ret = new Uint8Array(128); spec.forEach(function(item) { if (typeof item === "number") { ret[item] = 1; } else { var start = item[0]; var end = item[1]; for (var j = start; j <= end; ++j) { ret[j] = 1; } } }); return ret; } var autoEscape = [ "<", ">", '"', "`", " ", "\r", "\n", " ", "{", "}", "|", "\\", "^", "`", "'" ]; var autoEscapeMap = new Array(128); for (i = 0, len = autoEscapeMap.length; i < len; ++i) { autoEscapeMap[i] = ""; } var i; var len; for (i = 0, len = autoEscape.length; i < len; ++i) { c = autoEscape[i]; esc = encodeURIComponent(c); if (esc === c) { esc = escape(c); } autoEscapeMap[c.charCodeAt(0)] = esc; } var c; var esc; var i; var len; var afterQueryAutoEscapeMap = autoEscapeMap.slice(); autoEscapeMap[ 92 /*'\'*/ ] = "/"; var slashProtocols = Url.prototype._slashProtocols = { http: true, https: true, gopher: true, file: true, ftp: true, "http:": true, "https:": true, "gopher:": true, "file:": true, "ftp:": true }; function f() { } f.prototype = slashProtocols; Url.prototype._protocolCharacters = makeAsciiTable([ [ 97, 122 /*'z'*/ ], [ 65, 90 /*'Z'*/ ], 46, 43, 45 /*'-'*/ ]); Url.prototype._hostEndingCharacters = makeAsciiTable([ 35, 63, 47, 92 /*'\'*/ ]); Url.prototype._autoEscapeCharacters = makeAsciiTable( autoEscape.map(function(v) { return v.charCodeAt(0); }) ); Url.prototype._noPrependSlashHostEnders = makeAsciiTable( [ "<", ">", "'", "`", " ", "\r", "\n", " ", "{", "}", "|", "^", "`", '"', "%", ";" ].map(function(v) { return v.charCodeAt(0); }) ); Url.prototype._autoEscapeMap = autoEscapeMap; Url.prototype._afterQueryAutoEscapeMap = afterQueryAutoEscapeMap; module2.exports = Url; Url.replace = function Url$Replace() { __require.cache.url = { exports: Url }; }; } }); // ../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/glob-slash.js var require_glob_slash = __commonJS2({ "../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/glob-slash.js"(exports2, module2) { var path11 = __require("path"); var normalize4 = (value) => path11.posix.normalize(path11.posix.join("/", value)); module2.exports = (value) => value.charAt(0) === "!" ? `!${normalize4(value.substr(1))}` : normalize4(value); module2.exports.normalize = normalize4; } }); // ../../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js var require_minimatch3 = __commonJS2({ "../../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js"(exports2, module2) { module2.exports = minimatch5; minimatch5.Minimatch = Minimatch; var path11 = { sep: "/" }; try { path11 = __require("path"); } catch (er) { } var GLOBSTAR = minimatch5.GLOBSTAR = Minimatch.GLOBSTAR = {}; var expand = require_brace_expansion2(); var plTypes = { "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, "?": { open: "(?:", close: ")?" }, "+": { open: "(?:", close: ")+" }, "*": { open: "(?:", close: ")*" }, "@": { open: "(?:", close: ")" } }; var qmark = "[^/]"; var star = qmark + "*?"; var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; var reSpecials = charSet("().*{}+?[]^$\\!"); function charSet(s) { return s.split("").reduce(function(set2, c) { set2[c] = true; return set2; }, {}); } var slashSplit = /\/+/; minimatch5.filter = filter; function filter(pattern, options) { options = options || {}; return function(p, i, list10) { return minimatch5(p, pattern, options); }; } function ext(a, b) { a = a || {}; b = b || {}; var t = {}; Object.keys(b).forEach(function(k) { t[k] = b[k]; }); Object.keys(a).forEach(function(k) { t[k] = a[k]; }); return t; } minimatch5.defaults = function(def) { if (!def || !Object.keys(def).length) return minimatch5; var orig = minimatch5; var m = function minimatch6(p, pattern, options) { return orig.minimatch(p, pattern, ext(def, options)); }; m.Minimatch = function Minimatch2(pattern, options) { return new orig.Minimatch(pattern, ext(def, options)); }; return m; }; Minimatch.defaults = function(def) { if (!def || !Object.keys(def).length) return Minimatch; return minimatch5.defaults(def).Minimatch; }; function minimatch5(p, pattern, options) { if (typeof pattern !== "string") { throw new TypeError("glob pattern string required"); } if (!options) options = {}; if (!options.nocomment && pattern.charAt(0) === "#") { return false; } if (pattern.trim() === "") return p === ""; return new Minimatch(pattern, options).match(p); } function Minimatch(pattern, options) { if (!(this instanceof Minimatch)) { return new Minimatch(pattern, options); } if (typeof pattern !== "string") { throw new TypeError("glob pattern string required"); } if (!options) options = {}; pattern = pattern.trim(); if (path11.sep !== "/") { pattern = pattern.split(path11.sep).join("/"); } this.options = options; this.set = []; this.pattern = pattern; this.regexp = null; this.negate = false; this.comment = false; this.empty = false; this.make(); } Minimatch.prototype.debug = function() { }; Minimatch.prototype.make = make; function make() { if (this._made) return; var pattern = this.pattern; var options = this.options; if (!options.nocomment && pattern.charAt(0) === "#") { this.comment = true; return; } if (!pattern) { this.empty = true; return; } this.parseNegate(); var set2 = this.globSet = this.braceExpand(); if (options.debug) this.debug = console.error; this.debug(this.pattern, set2); set2 = this.globParts = set2.map(function(s) { return s.split(slashSplit); }); this.debug(this.pattern, set2); set2 = set2.map(function(s, si, set3) { return s.map(this.parse, this); }, this); this.debug(this.pattern, set2); set2 = set2.filter(function(s) { return s.indexOf(false) === -1; }); this.debug(this.pattern, set2); this.set = set2; } Minimatch.prototype.parseNegate = parseNegate; function parseNegate() { var pattern = this.pattern; var negate = false; var options = this.options; var negateOffset = 0; if (options.nonegate) return; for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === "!"; i++) { negate = !negate; negateOffset++; } if (negateOffset) this.pattern = pattern.substr(negateOffset); this.negate = negate; } minimatch5.braceExpand = function(pattern, options) { return braceExpand(pattern, options); }; Minimatch.prototype.braceExpand = braceExpand; function braceExpand(pattern, options) { if (!options) { if (this instanceof Minimatch) { options = this.options; } else { options = {}; } } pattern = typeof pattern === "undefined" ? this.pattern : pattern; if (typeof pattern === "undefined") { throw new TypeError("undefined pattern"); } if (options.nobrace || !pattern.match(/\{.*\}/)) { return [pattern]; } return expand(pattern); } Minimatch.prototype.parse = parse11; var SUBPARSE = {}; function parse11(pattern, isSub) { if (pattern.length > 1024 * 64) { throw new TypeError("pattern is too long"); } var options = this.options; if (!options.noglobstar && pattern === "**") return GLOBSTAR; if (pattern === "") return ""; var re = ""; var hasMagic = !!options.nocase; var escaping = false; var patternListStack = []; var negativeLists = []; var stateChar; var inClass = false; var reClassStart = -1; var classStart = -1; var patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; var self2 = this; function clearStateChar() { if (stateChar) { switch (stateChar) { case "*": re += star; hasMagic = true; break; case "?": re += qmark; hasMagic = true; break; default: re += "\\" + stateChar; break; } self2.debug("clearStateChar %j %j", stateChar, re); stateChar = false; } } for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) { this.debug("%s %s %s %j", pattern, i, re, c); if (escaping && reSpecials[c]) { re += "\\" + c; escaping = false; continue; } switch (c) { case "/": return false; case "\\": clearStateChar(); escaping = true; continue; case "?": case "*": case "+": case "@": case "!": this.debug("%s %s %s %j <-- stateChar", pattern, i, re, c); if (inClass) { this.debug(" in class"); if (c === "!" && i === classStart + 1) c = "^"; re += c; continue; } self2.debug("call clearStateChar %j", stateChar); clearStateChar(); stateChar = c; if (options.noext) clearStateChar(); continue; case "(": if (inClass) { re += "("; continue; } if (!stateChar) { re += "\\("; continue; } patternListStack.push({ type: stateChar, start: i - 1, reStart: re.length, open: plTypes[stateChar].open, close: plTypes[stateChar].close }); re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; this.debug("plType %j %j", stateChar, re); stateChar = false; continue; case ")": if (inClass || !patternListStack.length) { re += "\\)"; continue; } clearStateChar(); hasMagic = true; var pl = patternListStack.pop(); re += pl.close; if (pl.type === "!") { negativeLists.push(pl); } pl.reEnd = re.length; continue; case "|": if (inClass || !patternListStack.length || escaping) { re += "\\|"; escaping = false; continue; } clearStateChar(); re += "|"; continue; case "[": clearStateChar(); if (inClass) { re += "\\" + c; continue; } inClass = true; classStart = i; reClassStart = re.length; re += c; continue; case "]": if (i === classStart + 1 || !inClass) { re += "\\" + c; escaping = false; continue; } if (inClass) { var cs = pattern.substring(classStart + 1, i); try { RegExp("[" + cs + "]"); } catch (er) { var sp = this.parse(cs, SUBPARSE); re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; hasMagic = hasMagic || sp[1]; inClass = false; continue; } } hasMagic = true; inClass = false; re += c; continue; default: clearStateChar(); if (escaping) { escaping = false; } else if (reSpecials[c] && !(c === "^" && inClass)) { re += "\\"; } re += c; } } if (inClass) { cs = pattern.substr(classStart + 1); sp = this.parse(cs, SUBPARSE); re = re.substr(0, reClassStart) + "\\[" + sp[0]; hasMagic = hasMagic || sp[1]; } for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { var tail = re.slice(pl.reStart + pl.open.length); this.debug("setting tail", re, pl); tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function(_, $1, $2) { if (!$2) { $2 = "\\"; } return $1 + $1 + $2 + "|"; }); this.debug("tail=%j\n %s", tail, tail, pl, re); var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; hasMagic = true; re = re.slice(0, pl.reStart) + t + "\\(" + tail; } clearStateChar(); if (escaping) { re += "\\\\"; } var addPatternStart = false; switch (re.charAt(0)) { case ".": case "[": case "(": addPatternStart = true; } for (var n = negativeLists.length - 1; n > -1; n--) { var nl = negativeLists[n]; var nlBefore = re.slice(0, nl.reStart); var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); var nlAfter = re.slice(nl.reEnd); nlLast += nlAfter; var openParensBefore = nlBefore.split("(").length - 1; var cleanAfter = nlAfter; for (i = 0; i < openParensBefore; i++) { cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); } nlAfter = cleanAfter; var dollar = ""; if (nlAfter === "" && isSub !== SUBPARSE) { dollar = "$"; } var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; re = newRe; } if (re !== "" && hasMagic) { re = "(?=.)" + re; } if (addPatternStart) { re = patternStart + re; } if (isSub === SUBPARSE) { return [re, hasMagic]; } if (!hasMagic) { return globUnescape(pattern); } var flags = options.nocase ? "i" : ""; try { var regExp = new RegExp("^" + re + "$", flags); } catch (er) { return new RegExp("$."); } regExp._glob = pattern; regExp._src = re; return regExp; } minimatch5.makeRe = function(pattern, options) { return new Minimatch(pattern, options || {}).makeRe(); }; Minimatch.prototype.makeRe = makeRe; function makeRe() { if (this.regexp || this.regexp === false) return this.regexp; var set2 = this.set; if (!set2.length) { this.regexp = false; return this.regexp; } var options = this.options; var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; var flags = options.nocase ? "i" : ""; var re = set2.map(function(pattern) { return pattern.map(function(p) { return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; }).join("\\/"); }).join("|"); re = "^(?:" + re + ")$"; if (this.negate) re = "^(?!" + re + ").*$"; try { this.regexp = new RegExp(re, flags); } catch (ex) { this.regexp = false; } return this.regexp; } minimatch5.match = function(list10, pattern, options) { options = options || {}; var mm = new Minimatch(pattern, options); list10 = list10.filter(function(f) { return mm.match(f); }); if (mm.options.nonull && !list10.length) { list10.push(pattern); } return list10; }; Minimatch.prototype.match = match; function match(f, partial) { this.debug("match", f, this.pattern); if (this.comment) return false; if (this.empty) return f === ""; if (f === "/" && partial) return true; var options = this.options; if (path11.sep !== "/") { f = f.split(path11.sep).join("/"); } f = f.split(slashSplit); this.debug(this.pattern, "split", f); var set2 = this.set; this.debug(this.pattern, "set", set2); var filename; var i; for (i = f.length - 1; i >= 0; i--) { filename = f[i]; if (filename) break; } for (i = 0; i < set2.length; i++) { var pattern = set2[i]; var file = f; if (options.matchBase && pattern.length === 1) { file = [filename]; } var hit = this.matchOne(file, pattern, partial); if (hit) { if (options.flipNegate) return true; return !this.negate; } } if (options.flipNegate) return false; return this.negate; } Minimatch.prototype.matchOne = function(file, pattern, partial) { var options = this.options; this.debug( "matchOne", { "this": this, file, pattern } ); this.debug("matchOne", file.length, pattern.length); for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { this.debug("matchOne loop"); var p = pattern[pi]; var f = file[fi]; this.debug(pattern, p, f); if (p === false) return false; if (p === GLOBSTAR) { this.debug("GLOBSTAR", [pattern, p, f]); var fr = fi; var pr = pi + 1; if (pr === pl) { this.debug("** at the end"); for (; fi < fl; fi++) { if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") return false; } return true; } while (fr < fl) { var swallowee = file[fr]; this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { this.debug("globstar found match!", fr, fl, swallowee); return true; } else { if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { this.debug("dot detected!", file, fr, pattern, pr); break; } this.debug("globstar swallow a segment, and continue"); fr++; } } if (partial) { this.debug("\n>>> no match, partial?", file, fr, pattern, pr); if (fr === fl) return true; } return false; } var hit; if (typeof p === "string") { if (options.nocase) { hit = f.toLowerCase() === p.toLowerCase(); } else { hit = f === p; } this.debug("string match", p, f, hit); } else { hit = f.match(p); this.debug("pattern match", p, f, hit); } if (!hit) return false; } if (fi === fl && pi === pl) { return true; } else if (fi === fl) { return partial; } else if (pi === pl) { var emptyFileEnd = fi === fl - 1 && file[fi] === ""; return emptyFileEnd; } throw new Error("wtf?"); }; function globUnescape(s) { return s.replace(/\\(.)/g, "$1"); } function regExpEscape(s) { return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } } }); // ../../node_modules/.pnpm/path-to-regexp@2.2.1/node_modules/path-to-regexp/index.js var require_path_to_regexp = __commonJS2({ "../../node_modules/.pnpm/path-to-regexp@2.2.1/node_modules/path-to-regexp/index.js"(exports2, module2) { module2.exports = pathToRegexp; module2.exports.parse = parse11; module2.exports.compile = compile; module2.exports.tokensToFunction = tokensToFunction; module2.exports.tokensToRegExp = tokensToRegExp; var DEFAULT_DELIMITER = "/"; var DEFAULT_DELIMITERS = "./"; var PATH_REGEXP = new RegExp([ // Match escaped characters that would otherwise appear in future matches. // This allows the user to escape special characters that won't transform. "(\\\\.)", // Match Express-style parameters and un-named parameters with a prefix // and optional suffixes. Matches appear as: // // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?"] // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined] "(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?" ].join("|"), "g"); function parse11(str, options) { var tokens = []; var key = 0; var index = 0; var path11 = ""; var defaultDelimiter = options && options.delimiter || DEFAULT_DELIMITER; var delimiters = options && options.delimiters || DEFAULT_DELIMITERS; var pathEscaped = false; var res; while ((res = PATH_REGEXP.exec(str)) !== null) { var m = res[0]; var escaped = res[1]; var offset = res.index; path11 += str.slice(index, offset); index = offset + m.length; if (escaped) { path11 += escaped[1]; pathEscaped = true; continue; } var prev = ""; var next = str[index]; var name = res[2]; var capture = res[3]; var group = res[4]; var modifier = res[5]; if (!pathEscaped && path11.length) { var k = path11.length - 1; if (delimiters.indexOf(path11[k]) > -1) { prev = path11[k]; path11 = path11.slice(0, k); } } if (path11) { tokens.push(path11); path11 = ""; pathEscaped = false; } var partial = prev !== "" && next !== void 0 && next !== prev; var repeat2 = modifier === "+" || modifier === "*"; var optional = modifier === "?" || modifier === "*"; var delimiter3 = prev || defaultDelimiter; var pattern = capture || group; tokens.push({ name: name || key++, prefix: prev, delimiter: delimiter3, optional, repeat: repeat2, partial, pattern: pattern ? escapeGroup(pattern) : "[^" + escapeString(delimiter3) + "]+?" }); } if (path11 || index < str.length) { tokens.push(path11 + str.substr(index)); } return tokens; } function compile(str, options) { return tokensToFunction(parse11(str, options)); } function tokensToFunction(tokens) { var matches = new Array(tokens.length); for (var i = 0; i < tokens.length; i++) { if (typeof tokens[i] === "object") { matches[i] = new RegExp("^(?:" + tokens[i].pattern + ")$"); } } return function(data, options) { var path11 = ""; var encode = options && options.encode || encodeURIComponent; for (var i2 = 0; i2 < tokens.length; i2++) { var token = tokens[i2]; if (typeof token === "string") { path11 += token; continue; } var value = data ? data[token.name] : void 0; var segment; if (Array.isArray(value)) { if (!token.repeat) { throw new TypeError('Expected "' + token.name + '" to not repeat, but got array'); } if (value.length === 0) { if (token.optional) continue; throw new TypeError('Expected "' + token.name + '" to not be empty'); } for (var j = 0; j < value.length; j++) { segment = encode(value[j], token); if (!matches[i2].test(segment)) { throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '"'); } path11 += (j === 0 ? token.prefix : token.delimiter) + segment; } continue; } if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { segment = encode(String(value), token); if (!matches[i2].test(segment)) { throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but got "' + segment + '"'); } path11 += token.prefix + segment; continue; } if (token.optional) { if (token.partial) path11 += token.prefix; continue; } throw new TypeError('Expected "' + token.name + '" to be ' + (token.repeat ? "an array" : "a string")); } return path11; }; } function escapeString(str) { return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); } function escapeGroup(group) { return group.replace(/([=!:$/()])/g, "\\$1"); } function flags(options) { return options && options.sensitive ? "" : "i"; } function regexpToRegexp(path11, keys) { if (!keys) return path11; var groups = path11.source.match(/\((?!\?)/g); if (groups) { for (var i = 0; i < groups.length; i++) { keys.push({ name: i, prefix: null, delimiter: null, optional: false, repeat: false, partial: false, pattern: null }); } } return path11; } function arrayToRegexp(path11, keys, options) { var parts = []; for (var i = 0; i < path11.length; i++) { parts.push(pathToRegexp(path11[i], keys, options).source); } return new RegExp("(?:" + parts.join("|") + ")", flags(options)); } function stringToRegexp(path11, keys, options) { return tokensToRegExp(parse11(path11, options), keys, options); } function tokensToRegExp(tokens, keys, options) { options = options || {}; var strict = options.strict; var end = options.end !== false; var delimiter3 = escapeString(options.delimiter || DEFAULT_DELIMITER); var delimiters = options.delimiters || DEFAULT_DELIMITERS; var endsWith = [].concat(options.endsWith || []).map(escapeString).concat("$").join("|"); var route = ""; var isEndDelimited = tokens.length === 0; for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (typeof token === "string") { route += escapeString(token); isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1; } else { var prefix = escapeString(token.prefix); var capture = token.repeat ? "(?:" + token.pattern + ")(?:" + prefix + "(?:" + token.pattern + "))*" : token.pattern; if (keys) keys.push(token); if (token.optional) { if (token.partial) { route += prefix + "(" + capture + ")?"; } else { route += "(?:" + prefix + "(" + capture + "))?"; } } else { route += prefix + "(" + capture + ")"; } } } if (end) { if (!strict) route += "(?:" + delimiter3 + ")?"; route += endsWith === "$" ? "$" : "(?=" + endsWith + ")"; } else { if (!strict) route += "(?:" + delimiter3 + "(?=" + endsWith + "))?"; if (!isEndDelimited) route += "(?=" + delimiter3 + "|" + endsWith + ")"; } return new RegExp("^" + route, flags(options)); } function pathToRegexp(path11, keys, options) { if (path11 instanceof RegExp) { return regexpToRegexp(path11, keys); } if (Array.isArray(path11)) { return arrayToRegexp( /** @type {!Array} */ path11, keys, options ); } return stringToRegexp( /** @type {string} */ path11, keys, options ); } } }); // ../../node_modules/.pnpm/mime-db@1.33.0/node_modules/mime-db/db.json var require_db2 = __commonJS2({ "../../node_modules/.pnpm/mime-db@1.33.0/node_modules/mime-db/db.json"(exports2, module2) { module2.exports = { "application/1d-interleaved-parityfec": { source: "iana" }, "application/3gpdash-qoe-report+xml": { source: "iana" }, "application/3gpp-ims+xml": { source: "iana" }, "application/a2l": { source: "iana" }, "application/activemessage": { source: "iana" }, "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/aml": { source: "iana" }, "application/andrew-inset": { source: "iana", extensions: ["ez"] }, "application/applefile": { source: "iana" }, "application/applixware": { source: "apache", extensions: ["aw"] }, "application/atf": { source: "iana" }, "application/atfx": { source: "iana" }, "application/atom+xml": { source: "iana", compressible: true, extensions: ["atom"] }, "application/atomcat+xml": { source: "iana", extensions: ["atomcat"] }, "application/atomdeleted+xml": { source: "iana" }, "application/atomicmail": { source: "iana" }, "application/atomsvc+xml": { source: "iana", extensions: ["atomsvc"] }, "application/atxml": { source: "iana" }, "application/auth-policy+xml": { source: "iana" }, "application/bacnet-xdd+zip": { source: "iana" }, "application/batch-smtp": { source: "iana" }, "application/bdoc": { compressible: false, extensions: ["bdoc"] }, "application/beep+xml": { source: "iana" }, "application/calendar+json": { source: "iana", compressible: true }, "application/calendar+xml": { source: "iana" }, "application/call-completion": { source: "iana" }, "application/cals-1840": { source: "iana" }, "application/cbor": { source: "iana" }, "application/cccex": { source: "iana" }, "application/ccmp+xml": { source: "iana" }, "application/ccxml+xml": { source: "iana", extensions: ["ccxml"] }, "application/cdfx+xml": { source: "iana" }, "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" }, "application/cellml+xml": { source: "iana" }, "application/cfw": { source: "iana" }, "application/clue_info+xml": { source: "iana" }, "application/cms": { source: "iana" }, "application/cnrp+xml": { source: "iana" }, "application/coap-group+json": { source: "iana", compressible: true }, "application/coap-payload": { source: "iana" }, "application/commonground": { source: "iana" }, "application/conference-info+xml": { source: "iana" }, "application/cose": { source: "iana" }, "application/cose-key": { source: "iana" }, "application/cose-key-set": { source: "iana" }, "application/cpl+xml": { source: "iana" }, "application/csrattrs": { source: "iana" }, "application/csta+xml": { source: "iana" }, "application/cstadata+xml": { source: "iana" }, "application/csvm+json": { source: "iana", compressible: true }, "application/cu-seeme": { source: "apache", extensions: ["cu"] }, "application/cybercash": { source: "iana" }, "application/dart": { compressible: true }, "application/dash+xml": { source: "iana", extensions: ["mpd"] }, "application/dashdelta": { source: "iana" }, "application/davmount+xml": { source: "iana", extensions: ["davmount"] }, "application/dca-rft": { source: "iana" }, "application/dcd": { source: "iana" }, "application/dec-dx": { source: "iana" }, "application/dialog-info+xml": { source: "iana" }, "application/dicom": { source: "iana" }, "application/dicom+json": { source: "iana", compressible: true }, "application/dicom+xml": { source: "iana" }, "application/dii": { source: "iana" }, "application/dit": { source: "iana" }, "application/dns": { source: "iana" }, "application/docbook+xml": { source: "apache", extensions: ["dbk"] }, "application/dskpp+xml": { source: "iana" }, "application/dssc+der": { source: "iana", extensions: ["dssc"] }, "application/dssc+xml": { source: "iana", extensions: ["xdssc"] }, "application/dvcs": { source: "iana" }, "application/ecmascript": { source: "iana", compressible: true, extensions: ["ecma"] }, "application/edi-consent": { source: "iana" }, "application/edi-x12": { source: "iana", compressible: false }, "application/edifact": { source: "iana", compressible: false }, "application/efi": { source: "iana" }, "application/emergencycalldata.comment+xml": { source: "iana" }, "application/emergencycalldata.control+xml": { source: "iana" }, "application/emergencycalldata.deviceinfo+xml": { source: "iana" }, "application/emergencycalldata.ecall.msd": { source: "iana" }, "application/emergencycalldata.providerinfo+xml": { source: "iana" }, "application/emergencycalldata.serviceinfo+xml": { source: "iana" }, "application/emergencycalldata.subscriberinfo+xml": { source: "iana" }, "application/emergencycalldata.veds+xml": { source: "iana" }, "application/emma+xml": { source: "iana", extensions: ["emma"] }, "application/emotionml+xml": { source: "iana" }, "application/encaprtp": { source: "iana" }, "application/epp+xml": { source: "iana" }, "application/epub+zip": { source: "iana", extensions: ["epub"] }, "application/eshop": { source: "iana" }, "application/exi": { source: "iana", extensions: ["exi"] }, "application/fastinfoset": { source: "iana" }, "application/fastsoap": { source: "iana" }, "application/fdt+xml": { source: "iana" }, "application/fhir+xml": { source: "iana" }, "application/fido.trusted-apps+json": { compressible: true }, "application/fits": { source: "iana" }, "application/font-sfnt": { source: "iana" }, "application/font-tdpfr": { source: "iana", extensions: ["pfr"] }, "application/font-woff": { source: "iana", compressible: false, extensions: ["woff"] }, "application/framework-attributes+xml": { source: "iana" }, "application/geo+json": { source: "iana", compressible: true, extensions: ["geojson"] }, "application/geo+json-seq": { source: "iana" }, "application/geoxacml+xml": { source: "iana" }, "application/gml+xml": { source: "iana", extensions: ["gml"] }, "application/gpx+xml": { source: "apache", 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" }, "application/hjson": { extensions: ["hjson"] }, "application/http": { source: "iana" }, "application/hyperstudio": { source: "iana", extensions: ["stk"] }, "application/ibe-key-request+xml": { source: "iana" }, "application/ibe-pkg-reply+xml": { source: "iana" }, "application/ibe-pp-data": { source: "iana" }, "application/iges": { source: "iana" }, "application/im-iscomposing+xml": { source: "iana" }, "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", 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" }, "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/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" }, "application/kpml-response+xml": { source: "iana" }, "application/ld+json": { source: "iana", compressible: true, extensions: ["jsonld"] }, "application/lgr+xml": { source: "iana" }, "application/link-format": { source: "iana" }, "application/load-control+xml": { source: "iana" }, "application/lost+xml": { source: "iana", extensions: ["lostxml"] }, "application/lostsync+xml": { source: "iana" }, "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", extensions: ["mads"] }, "application/manifest+json": { charset: "UTF-8", compressible: true, extensions: ["webmanifest"] }, "application/marc": { source: "iana", extensions: ["mrc"] }, "application/marcxml+xml": { source: "iana", extensions: ["mrcx"] }, "application/mathematica": { source: "iana", extensions: ["ma", "nb", "mb"] }, "application/mathml+xml": { source: "iana", extensions: ["mathml"] }, "application/mathml-content+xml": { source: "iana" }, "application/mathml-presentation+xml": { source: "iana" }, "application/mbms-associated-procedure-description+xml": { source: "iana" }, "application/mbms-deregister+xml": { source: "iana" }, "application/mbms-envelope+xml": { source: "iana" }, "application/mbms-msk+xml": { source: "iana" }, "application/mbms-msk-response+xml": { source: "iana" }, "application/mbms-protection-description+xml": { source: "iana" }, "application/mbms-reception-report+xml": { source: "iana" }, "application/mbms-register+xml": { source: "iana" }, "application/mbms-register-response+xml": { source: "iana" }, "application/mbms-schedule+xml": { source: "iana" }, "application/mbms-user-service-description+xml": { source: "iana" }, "application/mbox": { source: "iana", extensions: ["mbox"] }, "application/media-policy-dataset+xml": { source: "iana" }, "application/media_control+xml": { source: "iana" }, "application/mediaservercontrol+xml": { source: "iana", extensions: ["mscml"] }, "application/merge-patch+json": { source: "iana", compressible: true }, "application/metalink+xml": { source: "apache", extensions: ["metalink"] }, "application/metalink4+xml": { source: "iana", extensions: ["meta4"] }, "application/mets+xml": { source: "iana", extensions: ["mets"] }, "application/mf4": { source: "iana" }, "application/mikey": { source: "iana" }, "application/mmt-usd+xml": { source: "iana" }, "application/mods+xml": { source: "iana", 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" }, "application/mrb-publish+xml": { source: "iana" }, "application/msc-ivr+xml": { source: "iana" }, "application/msc-mixer+xml": { source: "iana" }, "application/msword": { source: "iana", compressible: false, extensions: ["doc", "dot"] }, "application/mud+json": { source: "iana", compressible: true }, "application/mxf": { source: "iana", extensions: ["mxf"] }, "application/n-quads": { source: "iana" }, "application/n-triples": { source: "iana" }, "application/nasdata": { source: "iana" }, "application/news-checkgroups": { source: "iana" }, "application/news-groupinfo": { source: "iana" }, "application/news-transmission": { source: "iana" }, "application/nlsml+xml": { source: "iana" }, "application/node": { source: "iana" }, "application/nss": { 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/odx": { source: "iana" }, "application/oebps-package+xml": { source: "iana", extensions: ["opf"] }, "application/ogg": { source: "iana", compressible: false, extensions: ["ogx"] }, "application/omdoc+xml": { source: "apache", extensions: ["omdoc"] }, "application/onenote": { source: "apache", extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"] }, "application/oxps": { source: "iana", extensions: ["oxps"] }, "application/p2p-overlay+xml": { source: "iana" }, "application/parityfec": { source: "iana" }, "application/passport": { source: "iana" }, "application/patch-ops-error+xml": { source: "iana", extensions: ["xer"] }, "application/pdf": { source: "iana", compressible: false, extensions: ["pdf"] }, "application/pdx": { source: "iana" }, "application/pgp-encrypted": { source: "iana", compressible: false, extensions: ["pgp"] }, "application/pgp-keys": { source: "iana" }, "application/pgp-signature": { source: "iana", extensions: ["asc", "sig"] }, "application/pics-rules": { source: "apache", extensions: ["prf"] }, "application/pidf+xml": { source: "iana" }, "application/pidf-diff+xml": { source: "iana" }, "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", extensions: ["pls"] }, "application/poc-settings+xml": { source: "iana" }, "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" }, "application/provenance+xml": { source: "iana" }, "application/prs.alvestrand.titrax-sheet": { source: "iana" }, "application/prs.cww": { source: "iana", extensions: ["cww"] }, "application/prs.hpub+zip": { source: "iana" }, "application/prs.nprend": { source: "iana" }, "application/prs.plucker": { source: "iana" }, "application/prs.rdf-xml-crypt": { source: "iana" }, "application/prs.xsf+xml": { source: "iana" }, "application/pskc+xml": { source: "iana", extensions: ["pskcxml"] }, "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"] }, "application/reginfo+xml": { source: "iana", 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", extensions: ["rl"] }, "application/resource-lists-diff+xml": { source: "iana", extensions: ["rld"] }, "application/rfc+xml": { source: "iana" }, "application/riscos": { source: "iana" }, "application/rlmi+xml": { source: "iana" }, "application/rls-services+xml": { source: "iana", extensions: ["rs"] }, "application/route-apd+xml": { source: "iana" }, "application/route-s-tsid+xml": { source: "iana" }, "application/route-usd+xml": { source: "iana" }, "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", 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" }, "application/samlmetadata+xml": { source: "iana" }, "application/sbml+xml": { source: "iana", extensions: ["sbml"] }, "application/scaip+xml": { source: "iana" }, "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/sep+xml": { source: "iana" }, "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", extensions: ["shf"] }, "application/sieve": { source: "iana" }, "application/simple-filter+xml": { source: "iana" }, "application/simple-message-summary": { source: "iana" }, "application/simplesymbolcontainer": { source: "iana" }, "application/slate": { source: "iana" }, "application/smil": { source: "iana" }, "application/smil+xml": { source: "iana", 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", extensions: ["srx"] }, "application/spirits-event+xml": { source: "iana" }, "application/sql": { source: "iana" }, "application/srgs": { source: "iana", extensions: ["gram"] }, "application/srgs+xml": { source: "iana", extensions: ["grxml"] }, "application/sru+xml": { source: "iana", extensions: ["sru"] }, "application/ssdl+xml": { source: "apache", extensions: ["ssdl"] }, "application/ssml+xml": { source: "iana", extensions: ["ssml"] }, "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/tei+xml": { source: "iana", extensions: ["tei", "teicorpus"] }, "application/thraud+xml": { source: "iana", extensions: ["tfi"] }, "application/timestamp-query": { source: "iana" }, "application/timestamp-reply": { source: "iana" }, "application/timestamped-data": { source: "iana", extensions: ["tsd"] }, "application/tnauthlist": { source: "iana" }, "application/trig": { source: "iana" }, "application/ttml+xml": { source: "iana" }, "application/tve-trigger": { source: "iana" }, "application/ulpfec": { source: "iana" }, "application/urc-grpsheet+xml": { source: "iana" }, "application/urc-ressheet+xml": { source: "iana" }, "application/urc-targetdesc+xml": { source: "iana" }, "application/urc-uisocketdesc+xml": { source: "iana" }, "application/vcard+json": { source: "iana", compressible: true }, "application/vcard+xml": { source: "iana" }, "application/vemmi": { source: "iana" }, "application/vividence.scriptfile": { source: "apache" }, "application/vnd.1000minds.decision-model+xml": { source: "iana" }, "application/vnd.3gpp-prose+xml": { source: "iana" }, "application/vnd.3gpp-prose-pc3ch+xml": { source: "iana" }, "application/vnd.3gpp-v2x-local-service-information": { source: "iana" }, "application/vnd.3gpp.access-transfer-events+xml": { source: "iana" }, "application/vnd.3gpp.bsf+xml": { source: "iana" }, "application/vnd.3gpp.gmop+xml": { source: "iana" }, "application/vnd.3gpp.mcptt-affiliation-command+xml": { source: "iana" }, "application/vnd.3gpp.mcptt-floor-request+xml": { source: "iana" }, "application/vnd.3gpp.mcptt-info+xml": { source: "iana" }, "application/vnd.3gpp.mcptt-location-info+xml": { source: "iana" }, "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { source: "iana" }, "application/vnd.3gpp.mcptt-signed+xml": { source: "iana" }, "application/vnd.3gpp.mid-call+xml": { 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.sms": { source: "iana" }, "application/vnd.3gpp.sms+xml": { source: "iana" }, "application/vnd.3gpp.srvcc-ext+xml": { source: "iana" }, "application/vnd.3gpp.srvcc-info+xml": { source: "iana" }, "application/vnd.3gpp.state-and-event-info+xml": { source: "iana" }, "application/vnd.3gpp.ussd+xml": { source: "iana" }, "application/vnd.3gpp2.bcmcsinfo+xml": { source: "iana" }, "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", 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", extensions: ["xdp"] }, "application/vnd.adobe.xfdf": { source: "iana", extensions: ["xfdf"] }, "application/vnd.aether.imp": { source: "iana" }, "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" }, "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.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.apothekende.reservation+json": { source: "iana", compressible: true }, "application/vnd.apple.installer+xml": { source: "iana", extensions: ["mpkg"] }, "application/vnd.apple.mpegurl": { source: "iana", extensions: ["m3u8"] }, "application/vnd.apple.pkpass": { compressible: false, extensions: ["pkpass"] }, "application/vnd.arastra.swi": { source: "iana" }, "application/vnd.aristanetworks.swi": { source: "iana", extensions: ["swi"] }, "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" }, "application/vnd.balsamiq.bmml+xml": { source: "iana" }, "application/vnd.balsamiq.bmpr": { 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" }, "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.businessobjects": { source: "iana", extensions: ["rep"] }, "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", extensions: ["cdxml"] }, "application/vnd.chess-pgn": { source: "iana" }, "application/vnd.chipnuts.karaoke-mmd": { source: "iana", extensions: ["mmd"] }, "application/vnd.cinderella": { source: "iana", extensions: ["cdy"] }, "application/vnd.cirpack.isdn-ext": { source: "iana" }, "application/vnd.citationstyles.style+xml": { source: "iana" }, "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" }, "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", extensions: ["wbs"] }, "application/vnd.ctc-posml": { source: "iana", extensions: ["pml"] }, "application/vnd.ctct.ws+xml": { source: "iana" }, "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" }, "application/vnd.cybank": { source: "iana" }, "application/vnd.d2l.coursepackage1p0+zip": { 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.debian.binary-package": { source: "iana" }, "application/vnd.dece.data": { source: "iana", extensions: ["uvf", "uvvf", "uvd", "uvvd"] }, "application/vnd.dece.ttml+xml": { source: "iana", 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.desmume.movie": { source: "apache" }, "application/vnd.dir-bi.plate-dl-nosuffix": { source: "iana" }, "application/vnd.dm.delegation+xml": { source: "iana" }, "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.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" }, "application/vnd.dvb.notif-container+xml": { source: "iana" }, "application/vnd.dvb.notif-generic+xml": { source: "iana" }, "application/vnd.dvb.notif-ia-msglist+xml": { source: "iana" }, "application/vnd.dvb.notif-ia-registration-request+xml": { source: "iana" }, "application/vnd.dvb.notif-ia-registration-response+xml": { source: "iana" }, "application/vnd.dvb.notif-init+xml": { source: "iana" }, "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.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" }, "application/vnd.enliven": { source: "iana", extensions: ["nml"] }, "application/vnd.enphase.envoy": { source: "iana" }, "application/vnd.eprints.data+xml": { source: "iana" }, "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" }, "application/vnd.eszigno3+xml": { source: "iana", extensions: ["es3", "et3"] }, "application/vnd.etsi.aoc+xml": { source: "iana" }, "application/vnd.etsi.asic-e+zip": { source: "iana" }, "application/vnd.etsi.asic-s+zip": { source: "iana" }, "application/vnd.etsi.cug+xml": { source: "iana" }, "application/vnd.etsi.iptvcommand+xml": { source: "iana" }, "application/vnd.etsi.iptvdiscovery+xml": { source: "iana" }, "application/vnd.etsi.iptvprofile+xml": { source: "iana" }, "application/vnd.etsi.iptvsad-bc+xml": { source: "iana" }, "application/vnd.etsi.iptvsad-cod+xml": { source: "iana" }, "application/vnd.etsi.iptvsad-npvr+xml": { source: "iana" }, "application/vnd.etsi.iptvservice+xml": { source: "iana" }, "application/vnd.etsi.iptvsync+xml": { source: "iana" }, "application/vnd.etsi.iptvueprofile+xml": { source: "iana" }, "application/vnd.etsi.mcid+xml": { source: "iana" }, "application/vnd.etsi.mheg5": { source: "iana" }, "application/vnd.etsi.overload-control-policy-dataset+xml": { source: "iana" }, "application/vnd.etsi.pstn+xml": { source: "iana" }, "application/vnd.etsi.sci+xml": { source: "iana" }, "application/vnd.etsi.simservs+xml": { source: "iana" }, "application/vnd.etsi.timestamp-token": { source: "iana" }, "application/vnd.etsi.tsl+xml": { source: "iana" }, "application/vnd.etsi.tsl.der": { source: "iana" }, "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.ezpix-album": { source: "iana", extensions: ["ez2"] }, "application/vnd.ezpix-package": { source: "iana", extensions: ["ez3"] }, "application/vnd.f-secure.mobile": { source: "iana" }, "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.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.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.fuzzysheet": { source: "iana", extensions: ["fzs"] }, "application/vnd.genomatix.tuxedo": { source: "iana", extensions: ["txd"] }, "application/vnd.geo+json": { source: "iana", compressible: true }, "application/vnd.geocube+xml": { source: "iana" }, "application/vnd.geogebra.file": { source: "iana", extensions: ["ggb"] }, "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" }, "application/vnd.gov.sk.e-form+zip": { source: "iana" }, "application/vnd.gov.sk.xmldatacontainer+xml": { source: "iana" }, "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", extensions: ["hal"] }, "application/vnd.handheld-entertainment+xml": { source: "iana", 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.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-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" }, "application/vnd.imagemeter.image+zip": { source: "iana" }, "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" }, "application/vnd.informix-visionary": { source: "iana" }, "application/vnd.infotech.project": { source: "iana" }, "application/vnd.infotech.project+xml": { source: "iana" }, "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" }, "application/vnd.iptc.g2.conceptitem+xml": { source: "iana" }, "application/vnd.iptc.g2.knowledgeitem+xml": { source: "iana" }, "application/vnd.iptc.g2.newsitem+xml": { source: "iana" }, "application/vnd.iptc.g2.newsmessage+xml": { source: "iana" }, "application/vnd.iptc.g2.packageitem+xml": { source: "iana" }, "application/vnd.iptc.g2.planningitem+xml": { source: "iana" }, "application/vnd.ipunplugged.rcprofile": { source: "iana", extensions: ["rcprofile"] }, "application/vnd.irepository.package+xml": { source: "iana", extensions: ["irp"] }, "application/vnd.is-xpr": { source: "iana", extensions: ["xpr"] }, "application/vnd.isac.fcs": { source: "iana", extensions: ["fcs"] }, "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.las+json": { source: "iana", compressible: true }, "application/vnd.las.las+xml": { source: "iana", extensions: ["lasxml"] }, "application/vnd.liberty-request+xml": { source: "iana" }, "application/vnd.llamagraphics.life-balance.desktop": { source: "iana", extensions: ["lbd"] }, "application/vnd.llamagraphics.life-balance.exchange+xml": { source: "iana", extensions: ["lbe"] }, "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" }, "application/vnd.marlin.drm.actiontoken+xml": { source: "iana" }, "application/vnd.marlin.drm.conftoken+xml": { source: "iana" }, "application/vnd.marlin.drm.license+xml": { source: "iana" }, "application/vnd.marlin.drm.mdcf": { source: "iana" }, "application/vnd.mason+json": { source: "iana", compressible: true }, "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" }, "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" }, "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" }, "application/vnd.ms-printing.printticket+xml": { source: "apache" }, "application/vnd.ms-printschematicket+xml": { source: "iana" }, "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.ncd.control": { source: "iana" }, "application/vnd.ncd.reference": { source: "iana" }, "application/vnd.nearst.inv+json": { source: "iana", compressible: true }, "application/vnd.nervana": { source: "iana" }, "application/vnd.netfpx": { source: "iana" }, "application/vnd.neurolanguage.nlu": { source: "iana", extensions: ["nlu"] }, "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" }, "application/vnd.nokia.iptv.config+xml": { source: "iana" }, "application/vnd.nokia.isds-radio-presets": { source: "iana" }, "application/vnd.nokia.landmark+wbxml": { source: "iana" }, "application/vnd.nokia.landmark+xml": { source: "iana" }, "application/vnd.nokia.landmarkcollection+xml": { source: "iana" }, "application/vnd.nokia.n-gage.ac+xml": { source: "iana" }, "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" }, "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.oftn.l10n+json": { source: "iana", compressible: true }, "application/vnd.oipf.contentaccessdownload+xml": { source: "iana" }, "application/vnd.oipf.contentaccessstreaming+xml": { source: "iana" }, "application/vnd.oipf.cspg-hexbinary": { source: "iana" }, "application/vnd.oipf.dae.svg+xml": { source: "iana" }, "application/vnd.oipf.dae.xhtml+xml": { source: "iana" }, "application/vnd.oipf.mippvcontrolmessage+xml": { source: "iana" }, "application/vnd.oipf.pae.gem": { source: "iana" }, "application/vnd.oipf.spdiscovery+xml": { source: "iana" }, "application/vnd.oipf.spdlist+xml": { source: "iana" }, "application/vnd.oipf.ueprofile+xml": { source: "iana" }, "application/vnd.oipf.userprofile+xml": { source: "iana" }, "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" }, "application/vnd.oma.bcast.drm-trigger+xml": { source: "iana" }, "application/vnd.oma.bcast.imd+xml": { source: "iana" }, "application/vnd.oma.bcast.ltkm": { source: "iana" }, "application/vnd.oma.bcast.notification+xml": { source: "iana" }, "application/vnd.oma.bcast.provisioningtrigger": { source: "iana" }, "application/vnd.oma.bcast.sgboot": { source: "iana" }, "application/vnd.oma.bcast.sgdd+xml": { source: "iana" }, "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" }, "application/vnd.oma.bcast.sprov+xml": { source: "iana" }, "application/vnd.oma.bcast.stkm": { source: "iana" }, "application/vnd.oma.cab-address-book+xml": { source: "iana" }, "application/vnd.oma.cab-feature-handler+xml": { source: "iana" }, "application/vnd.oma.cab-pcc+xml": { source: "iana" }, "application/vnd.oma.cab-subs-invite+xml": { source: "iana" }, "application/vnd.oma.cab-user-prefs+xml": { source: "iana" }, "application/vnd.oma.dcd": { source: "iana" }, "application/vnd.oma.dcdc": { source: "iana" }, "application/vnd.oma.dd2+xml": { source: "iana", extensions: ["dd2"] }, "application/vnd.oma.drm.risd+xml": { source: "iana" }, "application/vnd.oma.group-usage-list+xml": { 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" }, "application/vnd.oma.poc.detailed-progress-report+xml": { source: "iana" }, "application/vnd.oma.poc.final-report+xml": { source: "iana" }, "application/vnd.oma.poc.groups+xml": { source: "iana" }, "application/vnd.oma.poc.invocation-descriptor+xml": { source: "iana" }, "application/vnd.oma.poc.optimized-progress-report+xml": { source: "iana" }, "application/vnd.oma.push": { source: "iana" }, "application/vnd.oma.scidm.messages+xml": { source: "iana" }, "application/vnd.oma.xcap-directory+xml": { source: "iana" }, "application/vnd.omads-email+xml": { source: "iana" }, "application/vnd.omads-file+xml": { source: "iana" }, "application/vnd.omads-folder+xml": { source: "iana" }, "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" }, "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" }, "application/vnd.openxmlformats-officedocument.custom-properties+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.drawing+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.extended-properties+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.presentation": { source: "iana", compressible: false, extensions: ["pptx"] }, "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.slide": { source: "iana", extensions: ["sldx"] }, "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { source: "iana", extensions: ["ppsx"] }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.template": { source: "iana", extensions: ["potx"] }, "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { source: "iana", compressible: false, extensions: ["xlsx"] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { source: "iana", extensions: ["xltx"] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.theme+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.themeoverride+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.vmldrawing": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { source: "iana", compressible: false, extensions: ["docx"] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { source: "iana", extensions: ["dotx"] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { source: "iana" }, "application/vnd.openxmlformats-package.core-properties+xml": { source: "iana" }, "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { source: "iana" }, "application/vnd.openxmlformats-package.relationships+xml": { source: "iana" }, "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" }, "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.paos.xml": { source: "apache" }, "application/vnd.patentdive": { 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" }, "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.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" }, "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" }, "application/vnd.radisys.msml+xml": { source: "iana" }, "application/vnd.radisys.msml-audit+xml": { source: "iana" }, "application/vnd.radisys.msml-audit-conf+xml": { source: "iana" }, "application/vnd.radisys.msml-audit-conn+xml": { source: "iana" }, "application/vnd.radisys.msml-audit-dialog+xml": { source: "iana" }, "application/vnd.radisys.msml-audit-stream+xml": { source: "iana" }, "application/vnd.radisys.msml-conf+xml": { source: "iana" }, "application/vnd.radisys.msml-dialog+xml": { source: "iana" }, "application/vnd.radisys.msml-dialog-base+xml": { source: "iana" }, "application/vnd.radisys.msml-dialog-fax-detect+xml": { source: "iana" }, "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { source: "iana" }, "application/vnd.radisys.msml-dialog-group+xml": { source: "iana" }, "application/vnd.radisys.msml-dialog-speech+xml": { source: "iana" }, "application/vnd.radisys.msml-dialog-transform+xml": { source: "iana" }, "application/vnd.rainstor.data": { source: "iana" }, "application/vnd.rapid": { source: "iana" }, "application/vnd.rar": { source: "iana" }, "application/vnd.realvnc.bed": { source: "iana", extensions: ["bed"] }, "application/vnd.recordare.musicxml": { source: "iana", extensions: ["mxl"] }, "application/vnd.recordare.musicxml+xml": { source: "iana", extensions: ["musicxml"] }, "application/vnd.renlearn.rlprint": { 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", 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.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.sema": { source: "iana", extensions: ["sema"] }, "application/vnd.semd": { source: "iana", extensions: ["semd"] }, "application/vnd.semf": { source: "iana", extensions: ["semf"] }, "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.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.software602.filler.form+xml": { source: "iana" }, "application/vnd.software602.filler.form-xml-zip": { source: "iana" }, "application/vnd.solent.sdkm+xml": { source: "iana", 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.symbian.install": { source: "apache", extensions: ["sis", "sisx"] }, "application/vnd.syncml+xml": { source: "iana", extensions: ["xsm"] }, "application/vnd.syncml.dm+wbxml": { source: "iana", extensions: ["bdm"] }, "application/vnd.syncml.dm+xml": { source: "iana", extensions: ["xdm"] }, "application/vnd.syncml.dm.notification": { source: "iana" }, "application/vnd.syncml.dmddf+wbxml": { source: "iana" }, "application/vnd.syncml.dmddf+xml": { source: "iana" }, "application/vnd.syncml.dmtnds+wbxml": { source: "iana" }, "application/vnd.syncml.dmtnds+xml": { source: "iana" }, "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.tmd.mediaflex.api+xml": { source: "iana" }, "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", 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.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", 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.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" }, "application/vnd.wv.ssp+xml": { source: "iana" }, "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" }, "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", 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", extensions: ["zaz"] }, "application/voicexml+xml": { source: "iana", extensions: ["vxml"] }, "application/voucher-cms+json": { source: "iana", compressible: true }, "application/vq-rtcpxr": { source: "iana" }, "application/wasm": { compressible: true, extensions: ["wasm"] }, "application/watcherinfo+xml": { source: "iana" }, "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", extensions: ["wsdl"] }, "application/wspolicy+xml": { source: "iana", 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", extensions: ["ncx"] }, "application/x-dtbook+xml": { source: "apache", extensions: ["dtb"] }, "application/x-dtbresource+xml": { source: "apache", 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-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-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-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: "apache", extensions: ["der", "crt", "pem"] }, "application/x-xfig": { source: "apache", extensions: ["fig"] }, "application/x-xliff+xml": { source: "apache", 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" }, "application/xaml+xml": { source: "apache", extensions: ["xaml"] }, "application/xcap-att+xml": { source: "iana" }, "application/xcap-caps+xml": { source: "iana" }, "application/xcap-diff+xml": { source: "iana", extensions: ["xdf"] }, "application/xcap-el+xml": { source: "iana" }, "application/xcap-error+xml": { source: "iana" }, "application/xcap-ns+xml": { source: "iana" }, "application/xcon-conference-info+xml": { source: "iana" }, "application/xcon-conference-info-diff+xml": { source: "iana" }, "application/xenc+xml": { source: "iana", extensions: ["xenc"] }, "application/xhtml+xml": { source: "iana", compressible: true, extensions: ["xhtml", "xht"] }, "application/xhtml-voice+xml": { source: "apache" }, "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" }, "application/xmpp+xml": { source: "iana" }, "application/xop+xml": { source: "iana", compressible: true, extensions: ["xop"] }, "application/xproc+xml": { source: "apache", extensions: ["xpl"] }, "application/xslt+xml": { source: "iana", extensions: ["xslt"] }, "application/xspf+xml": { source: "apache", extensions: ["xspf"] }, "application/xv+xml": { source: "iana", 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" }, "application/yang-patch+json": { source: "iana", compressible: true }, "application/yang-patch+xml": { source: "iana" }, "application/yin+xml": { source: "iana", extensions: ["yin"] }, "application/zip": { source: "iana", compressible: false, extensions: ["zip"] }, "application/zlib": { 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/ac3": { source: "iana" }, "audio/adpcm": { source: "apache", extensions: ["adp"] }, "audio/amr": { source: "iana" }, "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/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/midi": { source: "apache", extensions: ["mid", "midi", "kar", "rmi"] }, "audio/mobile-xmf": { source: "iana" }, "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"] }, "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/silk": { source: "apache", extensions: ["sil"] }, "audio/smv": { source: "iana" }, "audio/smv-qcp": { source: "iana" }, "audio/smv0": { 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/tone": { source: "iana" }, "audio/uemclip": { source: "iana" }, "audio/ulpfec": { 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.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", extensions: ["ttf"] }, "font/woff": { source: "iana", extensions: ["woff"] }, "font/woff2": { source: "iana", extensions: ["woff2"] }, "image/aces": { source: "iana" }, "image/apng": { compressible: false, extensions: ["apng"] }, "image/bmp": { source: "iana", compressible: true, extensions: ["bmp"] }, "image/cgm": { source: "iana", extensions: ["cgm"] }, "image/dicom-rle": { source: "iana" }, "image/emf": { source: "iana" }, "image/fits": { source: "iana" }, "image/g3fax": { source: "iana", extensions: ["g3"] }, "image/gif": { source: "iana", compressible: false, extensions: ["gif"] }, "image/ief": { source: "iana", extensions: ["ief"] }, "image/jls": { source: "iana" }, "image/jp2": { source: "iana", compressible: false, extensions: ["jp2", "jpg2"] }, "image/jpeg": { source: "iana", compressible: false, extensions: ["jpeg", "jpg", "jpe"] }, "image/jpm": { source: "iana", compressible: false, extensions: ["jpm"] }, "image/jpx": { source: "iana", compressible: false, extensions: ["jpx", "jpf"] }, "image/ktx": { source: "iana", extensions: ["ktx"] }, "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" }, "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" }, "image/tiff": { source: "iana", compressible: false, extensions: ["tiff", "tif"] }, "image/tiff-fx": { source: "iana" }, "image/vnd.adobe.photoshop": { source: "iana", compressible: true, extensions: ["psd"] }, "image/vnd.airzip.accelerator.azv": { source: "iana" }, "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" }, "image/vnd.mix": { source: "iana" }, "image/vnd.mozilla.apng": { source: "iana" }, "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.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" }, "image/vnd.valve.source.texture": { source: "iana" }, "image/vnd.wap.wbmp": { source: "iana", extensions: ["wbmp"] }, "image/vnd.xiff": { source: "iana", extensions: ["xif"] }, "image/vnd.zbrush.pcx": { source: "iana" }, "image/webp": { source: "apache", extensions: ["webp"] }, "image/wmf": { source: "iana" }, "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" }, "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/vnd.collada+xml": { source: "iana", 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" }, "model/vnd.mts": { source: "iana", extensions: ["mts"] }, "model/vnd.opengex": { source: "iana" }, "model/vnd.parasolid.transmit.binary": { source: "iana" }, "model/vnd.parasolid.transmit.text": { source: "iana" }, "model/vnd.rosette.annotated-data-model": { source: "iana" }, "model/vnd.valve.source.compiled-map": { source: "iana" }, "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" }, "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" }, "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", compressible: false }, "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/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/fwdred": { 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": { extensions: ["less"] }, "text/markdown": { source: "iana", compressible: true, extensions: ["markdown", "md"] }, "text/mathml": { source: "nginx", extensions: ["mml"] }, "text/mizar": { source: "iana" }, "text/n3": { source: "iana", compressible: true, extensions: ["n3"] }, "text/parameters": { source: "iana" }, "text/parityfec": { source: "iana" }, "text/plain": { source: "iana", compressible: true, extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] }, "text/provenance-notation": { source: "iana" }, "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/shex": { extensions: ["shex"] }, "text/slim": { extensions: ["slim", "slm"] }, "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", 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" }, "text/vnd.dmclientscript": { source: "iana" }, "text/vnd.dvb.subtitle": { source: "iana", extensions: ["sub"] }, "text/vnd.esmertec.theme-descriptor": { source: "iana" }, "text/vnd.fly": { source: "iana", extensions: ["fly"] }, "text/vnd.fmi.flexstor": { source: "iana", extensions: ["flx"] }, "text/vnd.graphviz": { source: "iana", extensions: ["gv"] }, "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.si.uricatalogue": { source: "iana" }, "text/vnd.sun.j2me.app-descriptor": { source: "iana", extensions: ["jad"] }, "text/vnd.trolltech.linguist": { source: "iana" }, "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": { 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": { 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/bmpeg": { source: "iana" }, "video/bt656": { source: "iana" }, "video/celb": { source: "iana" }, "video/dv": { source: "iana" }, "video/encaprtp": { 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" }, "video/jpeg": { source: "iana", extensions: ["jpgv"] }, "video/jpeg2000": { source: "iana" }, "video/jpm": { source: "apache", extensions: ["jpm", "jpgm"] }, "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/smpte291": { source: "iana" }, "video/smpte292m": { source: "iana" }, "video/ulpfec": { source: "iana" }, "video/vc1": { 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/vp8": { 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 } }; } }); // ../../node_modules/.pnpm/mime-db@1.33.0/node_modules/mime-db/index.js var require_mime_db2 = __commonJS2({ "../../node_modules/.pnpm/mime-db@1.33.0/node_modules/mime-db/index.js"(exports2, module2) { module2.exports = require_db2(); } }); // ../../node_modules/.pnpm/mime-types@2.1.18/node_modules/mime-types/index.js var require_mime_types2 = __commonJS2({ "../../node_modules/.pnpm/mime-types@2.1.18/node_modules/mime-types/index.js"(exports2) { "use strict"; var db = require_mime_db2(); var extname3 = __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 = contentType2; 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 contentType2(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(path11) { if (!path11 || typeof path11 !== "string") { return false; } var extension2 = extname3("x." + path11).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; } }); } } }); // ../../node_modules/.pnpm/content-disposition@0.5.2/node_modules/content-disposition/index.js var require_content_disposition = __commonJS2({ "../../node_modules/.pnpm/content-disposition@0.5.2/node_modules/content-disposition/index.js"(exports2, module2) { "use strict"; module2.exports = contentDisposition; module2.exports.parse = parse11; var basename11 = __require("path").basename; 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 params2 = createparams(filename, opts.fallback); return format8(new ContentDisposition(type, params2)); } function createparams(filename, fallback) { if (filename === void 0) { return; } var params2 = {}; 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 = basename11(filename); var isQuotedString = TEXT_REGEXP.test(name); var fallbackName = typeof fallback !== "string" ? fallback && getlatin1(name) : basename11(fallback); var hasFallback = typeof fallbackName === "string" && fallbackName !== name; if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) { params2["filename*"] = name; } if (isQuotedString || hasFallback) { params2.filename = hasFallback ? fallbackName : name; } return params2; } function format8(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 param2; var params2 = Object.keys(parameters).sort(); for (var i = 0; i < params2.length; i++) { param2 = params2[i]; var val = param2.substr(-1) === "*" ? ustring(parameters[param2]) : qstring(parameters[param2]); string += "; " + param2 + "=" + 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 = new Buffer(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 parse11(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 index = match[0].length; var type = match[1].toLowerCase(); var key; var names = []; var params2 = {}; var value; index = PARAM_REGEXP.lastIndex = match[0].substr(-1) === ";" ? index - 1 : index; while (match = PARAM_REGEXP.exec(string)) { if (match.index !== index) { throw new TypeError("invalid parameter format"); } index += 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); params2[key] = value; continue; } if (typeof params2[key] === "string") { continue; } if (value[0] === '"') { value = value.substr(1, value.length - 2).replace(QESC_REGEXP, "$1"); } params2[key] = value; } if (index !== -1 && index !== string.length) { throw new TypeError("invalid parameter format"); } return new ContentDisposition(type, params2); } function pdecode(str, hex) { return String.fromCharCode(parseInt(hex, 16)); } function pencode(char) { var hex = String(char).charCodeAt(0).toString(16).toUpperCase(); return hex.length === 1 ? "%0" + hex : "%" + hex; } 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; } } }); // ../../node_modules/.pnpm/path-is-inside@1.0.2/node_modules/path-is-inside/lib/path-is-inside.js var require_path_is_inside = __commonJS2({ "../../node_modules/.pnpm/path-is-inside@1.0.2/node_modules/path-is-inside/lib/path-is-inside.js"(exports2, module2) { "use strict"; var path11 = __require("path"); module2.exports = function(thePath, potentialParent) { thePath = stripTrailingSep(thePath); potentialParent = stripTrailingSep(potentialParent); if (process.platform === "win32") { thePath = thePath.toLowerCase(); potentialParent = potentialParent.toLowerCase(); } return thePath.lastIndexOf(potentialParent, 0) === 0 && (thePath[potentialParent.length] === path11.sep || thePath[potentialParent.length] === void 0); }; function stripTrailingSep(thePath) { if (thePath[thePath.length - 1] === path11.sep) { return thePath.slice(0, -1); } return thePath; } } }); // ../../node_modules/.pnpm/range-parser@1.2.0/node_modules/range-parser/index.js var require_range_parser = __commonJS2({ "../../node_modules/.pnpm/range-parser@1.2.0/node_modules/range-parser/index.js"(exports2, module2) { "use strict"; module2.exports = rangeParser; function rangeParser(size, str, options) { var index = str.indexOf("="); if (index === -1) { return -2; } var arr = str.slice(index + 1).split(","); var ranges = []; ranges.type = str.slice(0, index); 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, index) { return { start: range.start, end: range.end, index }; } 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; } } }); // ../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/directory.js var require_directory = __commonJS2({ "../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/directory.js"(exports2, module2) { (function() { function directory(it) { var encodeHTML6 = typeof _encodeHTML !== "undefined" ? _encodeHTML : function(doNotSkipEncoded) { var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" }, matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g; return function(code2) { return code2 ? code2.toString().replace(matchHTML, function(m) { return encodeHTMLRules[m] || m; }) : ""; }; }(); var out = ' Files within ' + encodeHTML6(it.directory) + `

Index of  `; var arr1 = it.paths; if (arr1) { var value, index = -1, l1 = arr1.length - 1; while (index < l1) { value = arr1[index += 1]; out += ' ' + encodeHTML6(value.name) + " "; } } out += '

    '; var arr2 = it.files; if (arr2) { var value, index = -1, l2 = arr2.length - 1; while (index < l2) { value = arr2[index += 1]; out += '
  • ' + encodeHTML6(value.base) + "
  • "; } } out += "
"; return out; } var itself = directory, _encodeHTML = function(doNotSkipEncoded) { var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" }, matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g; return function(code2) { return code2 ? code2.toString().replace(matchHTML, function(m) { return encodeHTMLRules[m] || m; }) : ""; }; }(); if (typeof module2 !== "undefined" && module2.exports) module2.exports = itself; else if (typeof define === "function") define(function() { return itself; }); else { window.render = window.render || {}; window.render["directory"] = itself; } })(); } }); // ../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/error.js var require_error4 = __commonJS2({ "../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/error.js"(exports2, module2) { (function() { function error3(it) { var out = '
' + it.statusCode + "

" + it.message + "

"; return out; } var itself = error3, _encodeHTML = function(doNotSkipEncoded) { var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" }, matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g; return function(code2) { return code2 ? code2.toString().replace(matchHTML, function(m) { return encodeHTMLRules[m] || m; }) : ""; }; }(); if (typeof module2 !== "undefined" && module2.exports) module2.exports = itself; else if (typeof define === "function") define(function() { return itself; }); else { window.render = window.render || {}; window.render["error"] = itself; } })(); } }); // ../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/index.js var require_src4 = __commonJS2({ "../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/index.js"(exports2, module2) { var { promisify: promisify3 } = __require("util"); var path11 = __require("path"); var { createHash } = __require("crypto"); var { realpath: realpath3, lstat: lstat3, createReadStream, readdir: readdir2 } = __require("fs"); var url3 = require_urlparser(); var slasher = require_glob_slash(); var minimatch5 = require_minimatch3(); var pathToRegExp = require_path_to_regexp(); var mime = require_mime_types2(); var bytes9 = require_bytes(); var contentDisposition = require_content_disposition(); var isPathInside = require_path_is_inside(); var parseRange = require_range_parser(); var directoryTemplate2 = require_directory(); var errorTemplate = require_error4(); var etags = /* @__PURE__ */ new Map(); var calculateSha = (handlers, absolutePath) => new Promise((resolve14, reject) => { const hash = createHash("sha1"); hash.update(path11.extname(absolutePath)); hash.update("-"); const rs = handlers.createReadStream(absolutePath); rs.on("error", reject); rs.on("data", (buf) => hash.update(buf)); rs.on("end", () => { const sha = hash.digest("hex"); resolve14(sha); }); }); var sourceMatches = (source, requestPath, allowSegments) => { const keys = []; const slashed = slasher(source); const resolvedPath = path11.posix.resolve(requestPath); let results = null; if (allowSegments) { const normalized = slashed.replace("*", "(.*)"); const expression = pathToRegExp(normalized, keys); results = expression.exec(resolvedPath); if (!results) { keys.length = 0; } } if (results || minimatch5(resolvedPath, slashed)) { return { keys, results }; } return null; }; var toTarget = (source, destination, previousPath) => { const matches = sourceMatches(source, previousPath, true); if (!matches) { return null; } const { keys, results } = matches; const props = {}; const { protocol } = url3.parse(destination); const normalizedDest = protocol ? destination : slasher(destination); const toPath = pathToRegExp.compile(normalizedDest); for (let index = 0; index < keys.length; index++) { const { name } = keys[index]; props[name] = results[index + 1]; } return toPath(props); }; var applyRewrites = (requestPath, rewrites = [], repetitive) => { const rewritesCopy = rewrites.slice(); const fallback = repetitive ? requestPath : null; if (rewritesCopy.length === 0) { return fallback; } for (let index = 0; index < rewritesCopy.length; index++) { const { source, destination } = rewrites[index]; const target = toTarget(source, destination, requestPath); if (target) { rewritesCopy.splice(index, 1); return applyRewrites(slasher(target), rewritesCopy, true); } } return fallback; }; var ensureSlashStart = (target) => target.startsWith("/") ? target : `/${target}`; var shouldRedirect = (decodedPath, { redirects = [], trailingSlash }, cleanUrl) => { const slashing = typeof trailingSlash === "boolean"; const defaultType = 301; const matchHTML = /(\.html|\/index)$/g; if (redirects.length === 0 && !slashing && !cleanUrl) { return null; } let cleanedUrl = false; if (cleanUrl && matchHTML.test(decodedPath)) { decodedPath = decodedPath.replace(matchHTML, ""); cleanedUrl = true; } if (slashing) { const { ext, name } = path11.parse(decodedPath); const isTrailed = decodedPath.endsWith("/"); const isDotfile = name.startsWith("."); let target = null; if (!trailingSlash && isTrailed) { target = decodedPath.slice(0, -1); } else if (trailingSlash && !isTrailed && !ext && !isDotfile) { target = `${decodedPath}/`; } if (decodedPath.indexOf("//") > -1) { target = decodedPath.replace(/\/+/g, "/"); } if (target) { return { target: ensureSlashStart(target), statusCode: defaultType }; } } if (cleanedUrl) { return { target: ensureSlashStart(decodedPath), statusCode: defaultType }; } for (let index = 0; index < redirects.length; index++) { const { source, destination, type } = redirects[index]; const target = toTarget(source, destination, decodedPath); if (target) { return { target, statusCode: type || defaultType }; } } return null; }; var appendHeaders = (target, source) => { for (let index = 0; index < source.length; index++) { const { key, value } = source[index]; target[key] = value; } }; var getHeaders = async (handlers, config2, current, absolutePath, stats) => { const { headers: customHeaders = [], etag = false } = config2; const related = {}; const { base } = path11.parse(absolutePath); const relativePath = path11.relative(current, absolutePath); if (customHeaders.length > 0) { for (let index = 0; index < customHeaders.length; index++) { const { source, headers: headers2 } = customHeaders[index]; if (sourceMatches(source, slasher(relativePath))) { appendHeaders(related, headers2); } } } let defaultHeaders = {}; if (stats) { defaultHeaders = { "Content-Length": stats.size, // Default to "inline", which always tries to render in the browser, // if that's not working, it will save the file. But to be clear: This // only happens if it cannot find a appropiate value. "Content-Disposition": contentDisposition(base, { type: "inline" }), "Accept-Ranges": "bytes" }; if (etag) { let [mtime, sha] = etags.get(absolutePath) || []; if (Number(mtime) !== Number(stats.mtime)) { sha = await calculateSha(handlers, absolutePath); etags.set(absolutePath, [stats.mtime, sha]); } defaultHeaders["ETag"] = `"${sha}"`; } else { defaultHeaders["Last-Modified"] = stats.mtime.toUTCString(); } const contentType2 = mime.contentType(base); if (contentType2) { defaultHeaders["Content-Type"] = contentType2; } } const headers = Object.assign(defaultHeaders, related); for (const key in headers) { if (headers.hasOwnProperty(key) && headers[key] === null) { delete headers[key]; } } return headers; }; var applicable = (decodedPath, configEntry) => { if (typeof configEntry === "boolean") { return configEntry; } if (Array.isArray(configEntry)) { for (let index = 0; index < configEntry.length; index++) { const source = configEntry[index]; if (sourceMatches(source, decodedPath)) { return true; } } return false; } return true; }; var getPossiblePaths = (relativePath, extension) => [ path11.join(relativePath, `index${extension}`), relativePath.endsWith("/") ? relativePath.replace(/\/$/g, extension) : relativePath + extension ].filter((item) => path11.basename(item) !== extension); var findRelated = async (current, relativePath, rewrittenPath, originalStat) => { const possible = rewrittenPath ? [rewrittenPath] : getPossiblePaths(relativePath, ".html"); let stats = null; for (let index = 0; index < possible.length; index++) { const related = possible[index]; const absolutePath = path11.join(current, related); try { stats = await originalStat(absolutePath); } catch (err) { if (err.code !== "ENOENT" && err.code !== "ENOTDIR") { throw err; } } if (stats) { return { stats, absolutePath }; } } return null; }; var canBeListed = (excluded, file) => { const slashed = slasher(file); let whether = true; for (let mark = 0; mark < excluded.length; mark++) { const source = excluded[mark]; if (sourceMatches(source, slashed)) { whether = false; break; } } return whether; }; var renderDirectory = async (current, acceptsJSON, handlers, methods, config2, paths) => { const { directoryListing, trailingSlash, unlisted = [], renderSingle } = config2; const slashSuffix = typeof trailingSlash === "boolean" ? trailingSlash ? "/" : "" : "/"; const { relativePath, absolutePath } = paths; const excluded = [ ".DS_Store", ".git", ...unlisted ]; if (!applicable(relativePath, directoryListing) && !renderSingle) { return {}; } let files = await handlers.readdir(absolutePath); const canRenderSingle = renderSingle && files.length === 1; for (let index = 0; index < files.length; index++) { const file = files[index]; const filePath = path11.resolve(absolutePath, file); const details = path11.parse(filePath); let stats = null; if (methods.lstat) { stats = await handlers.lstat(filePath, true); } else { stats = await handlers.lstat(filePath); } details.relative = path11.join(relativePath, details.base); if (stats.isDirectory()) { details.base += slashSuffix; details.relative += slashSuffix; details.type = "folder"; } else { if (canRenderSingle) { return { singleFile: true, absolutePath: filePath, stats }; } details.ext = details.ext.split(".")[1] || "txt"; details.type = "file"; details.size = bytes9(stats.size, { unitSeparator: " ", decimalPlaces: 0 }); } details.title = details.base; if (canBeListed(excluded, file)) { files[index] = details; } else { delete files[index]; } } const toRoot = path11.relative(current, absolutePath); const directory = path11.join(path11.basename(current), toRoot, slashSuffix); const pathParts = directory.split(path11.sep).filter(Boolean); files = files.sort((a, b) => { const aIsDir = a.type === "directory"; const bIsDir = b.type === "directory"; if (aIsDir && !bIsDir) { return -1; } if (bIsDir && !aIsDir || a.base > b.base) { return 1; } if (a.base < b.base) { return -1; } return 0; }).filter(Boolean); if (toRoot.length > 0) { const directoryPath = [...pathParts].slice(1); const relative8 = path11.join("/", ...directoryPath, "..", slashSuffix); files.unshift({ type: "directory", base: "..", relative: relative8, title: relative8, ext: "" }); } const subPaths = []; for (let index = 0; index < pathParts.length; index++) { const parents = []; const isLast = index === pathParts.length - 1; let before = 0; while (before <= index) { parents.push(pathParts[before]); before++; } parents.shift(); subPaths.push({ name: pathParts[index] + (isLast ? slashSuffix : "/"), url: index === 0 ? "" : parents.join("/") + slashSuffix }); } const spec = { files, directory, paths: subPaths }; const output2 = acceptsJSON ? JSON.stringify(spec) : directoryTemplate2(spec); return { directory: output2 }; }; var sendError = async (absolutePath, response, acceptsJSON, current, handlers, config2, spec) => { const { err: original, message: message2, code: code2, statusCode } = spec; if (original && process.env.NODE_ENV !== "test") { console.error(original); } response.statusCode = statusCode; if (acceptsJSON) { response.setHeader("Content-Type", "application/json; charset=utf-8"); response.end(JSON.stringify({ error: { code: code2, message: message2 } })); return; } let stats = null; const errorPage = path11.join(current, `${statusCode}.html`); try { stats = await handlers.lstat(errorPage); } catch (err) { if (err.code !== "ENOENT") { console.error(err); } } if (stats) { let stream = null; try { stream = await handlers.createReadStream(errorPage); const headers2 = await getHeaders(handlers, config2, current, errorPage, stats); response.writeHead(statusCode, headers2); stream.pipe(response); return; } catch (err) { console.error(err); } } const headers = await getHeaders(handlers, config2, current, absolutePath, null); headers["Content-Type"] = "text/html; charset=utf-8"; response.writeHead(statusCode, headers); response.end(errorTemplate({ statusCode, message: message2 })); }; var internalError = async (...args2) => { const lastIndex = args2.length - 1; const err = args2[lastIndex]; args2[lastIndex] = { statusCode: 500, code: "internal_server_error", message: "A server error has occurred", err }; return sendError(...args2); }; var getHandlers = (methods) => Object.assign({ lstat: promisify3(lstat3), realpath: promisify3(realpath3), createReadStream, readdir: promisify3(readdir2), sendError }, methods); module2.exports = async (request, response, config2 = {}, methods = {}) => { const cwd = process.cwd(); const current = config2.public ? path11.resolve(cwd, config2.public) : cwd; const handlers = getHandlers(methods); let relativePath = null; let acceptsJSON = null; if (request.headers.accept) { acceptsJSON = request.headers.accept.includes("application/json"); } try { relativePath = decodeURIComponent(url3.parse(request.url).pathname); } catch (err) { return sendError("/", response, acceptsJSON, current, handlers, config2, { statusCode: 400, code: "bad_request", message: "Bad Request" }); } let absolutePath = path11.join(current, relativePath); if (!isPathInside(absolutePath, current)) { return sendError(absolutePath, response, acceptsJSON, current, handlers, config2, { statusCode: 400, code: "bad_request", message: "Bad Request" }); } const cleanUrl = applicable(relativePath, config2.cleanUrls); const redirect2 = shouldRedirect(relativePath, config2, cleanUrl); if (redirect2) { response.writeHead(redirect2.statusCode, { Location: encodeURI(redirect2.target) }); response.end(); return; } let stats = null; if (path11.extname(relativePath) !== "") { try { stats = await handlers.lstat(absolutePath); } catch (err) { if (err.code !== "ENOENT" && err.code !== "ENOTDIR") { return internalError(absolutePath, response, acceptsJSON, current, handlers, config2, err); } } } const rewrittenPath = applyRewrites(relativePath, config2.rewrites); if (!stats && (cleanUrl || rewrittenPath)) { try { const related = await findRelated(current, relativePath, rewrittenPath, handlers.lstat); if (related) { ({ stats, absolutePath } = related); } } catch (err) { if (err.code !== "ENOENT" && err.code !== "ENOTDIR") { return internalError(absolutePath, response, acceptsJSON, current, handlers, config2, err); } } } if (!stats) { try { stats = await handlers.lstat(absolutePath); } catch (err) { if (err.code !== "ENOENT" && err.code !== "ENOTDIR") { return internalError(absolutePath, response, acceptsJSON, current, handlers, config2, err); } } } if (stats && stats.isDirectory()) { let directory = null; let singleFile = null; try { const related = await renderDirectory(current, acceptsJSON, handlers, methods, config2, { relativePath, absolutePath }); if (related.singleFile) { ({ stats, absolutePath, singleFile } = related); } else { ({ directory } = related); } } catch (err) { if (err.code !== "ENOENT") { return internalError(absolutePath, response, acceptsJSON, current, handlers, config2, err); } } if (directory) { const contentType2 = acceptsJSON ? "application/json; charset=utf-8" : "text/html; charset=utf-8"; response.statusCode = 200; response.setHeader("Content-Type", contentType2); response.end(directory); return; } if (!singleFile) { stats = null; } } const isSymLink = stats && stats.isSymbolicLink(); if (!stats || !config2.symlinks && isSymLink) { return handlers.sendError(absolutePath, response, acceptsJSON, current, handlers, config2, { statusCode: 404, code: "not_found", message: "The requested path could not be found" }); } if (isSymLink) { absolutePath = await handlers.realpath(absolutePath); stats = await handlers.lstat(absolutePath); } const streamOpts = {}; if (request.headers.range && stats.size) { const range = parseRange(stats.size, request.headers.range); if (typeof range === "object" && range.type === "bytes") { const { start, end } = range[0]; streamOpts.start = start; streamOpts.end = end; response.statusCode = 206; } else { response.statusCode = 416; response.setHeader("Content-Range", `bytes */${stats.size}`); } } let stream = null; try { stream = await handlers.createReadStream(absolutePath, streamOpts); } catch (err) { return internalError(absolutePath, response, acceptsJSON, current, handlers, config2, err); } const headers = await getHeaders(handlers, config2, current, absolutePath, stats); if (streamOpts.start !== void 0 && streamOpts.end !== void 0) { headers["Content-Range"] = `bytes ${streamOpts.start}-${streamOpts.end}/${stats.size}`; headers["Content-Length"] = streamOpts.end - streamOpts.start + 1; } if (request.headers.range == null && headers.ETag && headers.ETag === request.headers["if-none-match"]) { response.statusCode = 304; response.end(); return; } response.writeHead(response.statusCode || 200, headers); stream.pipe(response); }; } }); // ../../node_modules/.pnpm/@tootallnate+once@1.1.2/node_modules/@tootallnate/once/dist/index.js var require_dist24 = __commonJS2({ "../../node_modules/.pnpm/@tootallnate+once@1.1.2/node_modules/@tootallnate/once/dist/index.js"(exports2, module2) { "use strict"; function noop() { } function once2(emitter, name) { const o = once2.spread(emitter, name); const r = o.then((args2) => args2[0]); r.cancel = o.cancel; return r; } (function(once3) { function spread(emitter, name) { let c = null; const p = new Promise((resolve14, reject) => { function cancel() { emitter.removeListener(name, onEvent); emitter.removeListener("error", onError); p.cancel = noop; } function onEvent(...args2) { cancel(); resolve14(args2); } function onError(err) { cancel(); reject(err); } c = cancel; emitter.on(name, onEvent); emitter.on("error", onError); }); if (!c) { throw new TypeError("Could not get `cancel()` function"); } p.cancel = c; return p; } once3.spread = spread; })(once2 || (once2 = {})); module2.exports = once2; } }); // ../../node_modules/.pnpm/get-port@5.1.1/node_modules/get-port/index.js var require_get_port = __commonJS2({ "../../node_modules/.pnpm/get-port@5.1.1/node_modules/get-port/index.js"(exports2, module2) { "use strict"; var net = __require("net"); var Locked = class extends Error { constructor(port) { super(`${port} is locked`); } }; var lockedPorts = { old: /* @__PURE__ */ new Set(), young: /* @__PURE__ */ new Set() }; var releaseOldLockedPortsIntervalMs = 1e3 * 15; var interval; var getAvailablePort = (options) => new Promise((resolve14, reject) => { const server = net.createServer(); server.unref(); server.on("error", reject); server.listen(options, () => { const { port } = server.address(); server.close(() => { resolve14(port); }); }); }); var portCheckSequence = function* (ports) { if (ports) { yield* ports; } yield 0; }; module2.exports = async (options) => { let ports; if (options) { ports = typeof options.port === "number" ? [options.port] : options.port; } if (interval === void 0) { interval = setInterval(() => { lockedPorts.old = lockedPorts.young; lockedPorts.young = /* @__PURE__ */ new Set(); }, releaseOldLockedPortsIntervalMs); if (interval.unref) { interval.unref(); } } for (const port of portCheckSequence(ports)) { try { let availablePort = await getAvailablePort({ ...options, port }); while (lockedPorts.old.has(availablePort) || lockedPorts.young.has(availablePort)) { if (port !== 0) { throw new Locked(port); } availablePort = await getAvailablePort({ ...options, port }); } lockedPorts.young.add(availablePort); return availablePort; } catch (error3) { if (!["EADDRINUSE", "EACCES"].includes(error3.code) && !(error3 instanceof Locked)) { throw error3; } } } throw new Error("No available ports found"); }; module2.exports.makeRange = (from, to) => { if (!Number.isInteger(from) || !Number.isInteger(to)) { throw new TypeError("`from` and `to` must be integer numbers"); } if (from < 1024 || from > 65535) { throw new RangeError("`from` must be between 1024 and 65535"); } if (to < 1024 || to > 65536) { throw new RangeError("`to` must be between 1024 and 65536"); } if (to < from) { throw new RangeError("`to` must be greater than or equal to `from`"); } const generator = function* (from2, to2) { for (let port = from2; port <= to2; port++) { yield port; } }; return generator(from, to); }; } }); // ../../node_modules/.pnpm/is-port-reachable@3.1.0/node_modules/is-port-reachable/index.js var require_is_port_reachable = __commonJS2({ "../../node_modules/.pnpm/is-port-reachable@3.1.0/node_modules/is-port-reachable/index.js"(exports2, module2) { "use strict"; var net = __require("net"); module2.exports = async (port, { timeout = 1e3, host } = {}) => { const promise = new Promise((resolve14, reject) => { const socket = new net.Socket(); const onError = () => { socket.destroy(); reject(); }; socket.setTimeout(timeout); socket.once("error", onError); socket.once("timeout", onError); socket.connect(port, host, () => { socket.end(); resolve14(); }); }); try { await promise; return true; } catch (_) { return false; } }; } }); // src/util/path-helpers.ts import { relative as nativeRelative } from "path"; import { normalizePath as normalizePath4 } from "@vercel/build-utils"; function relative7(a, b) { return normalizePath4(nativeRelative(a, b)); } var init_path_helpers = __esm({ "src/util/path-helpers.ts"() { "use strict"; } }); // ../../node_modules/.pnpm/pcre-to-regexp@1.0.0/node_modules/pcre-to-regexp/dist/index.js var require_dist25 = __commonJS2({ "../../node_modules/.pnpm/pcre-to-regexp@1.0.0/node_modules/pcre-to-regexp/dist/index.js"(exports2, module2) { "use strict"; var characterClasses = { alnum: "[A-Za-z0-9]", word: "[A-Za-z0-9_]", alpha: "[A-Za-z]", blank: "[ \\t]", cntrl: "[\\x00-\\x1F\\x7F]", digit: "\\d", graph: "[\\x21-\\x7E]", lower: "[a-z]", print: "[\\x20-\\x7E]", punct: "[\\]\\[!\"#$%&'()*+,./:;<=>?@\\\\^_`{|}~-]", space: "\\s", upper: "[A-Z]", xdigit: "[A-Fa-f0-9]" }; function createPCRE(pattern, namedCaptures) { pattern = String(pattern || "").trim(); let originalPattern = pattern; let delim; let flags = ""; let hasDelim = /^[^a-zA-Z\\\s]/.test(pattern); if (hasDelim) { delim = pattern[0]; let lastDelimIndex = pattern.lastIndexOf(delim); flags += pattern.substring(lastDelimIndex + 1); pattern = pattern.substring(1, lastDelimIndex); } let numGroups = 0; pattern = replaceCaptureGroups(pattern, (group) => { if (/^\(\?[P<']/.test(group)) { let match = /^\(\?P?[<']([^>']+)[>']/.exec(group); if (!match) { throw new Error(`Failed to extract named captures from ${JSON.stringify(group)}`); } let capture = group.substring(match[0].length, group.length - 1); if (namedCaptures) { namedCaptures[numGroups] = match[1]; } numGroups++; return `(${capture})`; } if (group.substring(0, 3) === "(?:") { return group; } numGroups++; return group; }); pattern = pattern.replace(/\[:([^:]+):\]/g, (characterClass, name) => { return characterClasses[name] || characterClass; }); let regexp = new RegExp(pattern, flags); regexp.delimiter = delim; regexp.pcrePattern = originalPattern; regexp.pcreFlags = flags; return regexp; } function replaceCaptureGroups(pattern, fn2) { let start = 0; let depth = 0; let escaped = false; for (let i = 0; i < pattern.length; i++) { let cur = pattern[i]; if (escaped) { escaped = false; continue; } switch (cur) { case "(": if (depth === 0) { start = i; } depth++; break; case ")": if (depth > 0) { depth--; if (depth === 0) { let end = i + 1; let l = start === 0 ? "" : pattern.substring(0, start); let r = pattern.substring(end); let v = String(fn2(pattern.substring(start, end))); pattern = l + v + r; i = start; } } break; case "\\": escaped = true; break; default: break; } } return pattern; } createPCRE.characterClasses = characterClasses; module2.exports = createPCRE; } }); // src/util/dev/is-url.ts function isURL(str) { return typeof str === "string" && /^https?:\/\//.test(str); } var init_is_url = __esm({ "src/util/dev/is-url.ts"() { "use strict"; } }); // src/util/dev/parse-query-string.ts function parseQueryString(querystring) { const query = /* @__PURE__ */ Object.create(null); if (!querystring || !querystring.startsWith("?") || querystring === "?") { return query; } const params2 = querystring.slice(1).split("&"); for (const param2 of params2) { let [key, value] = param2.split("="); if (key !== void 0) { key = decodeURIComponent(key); } if (value !== void 0) { value = decodeURIComponent(value); } let existing = query[key]; if (!existing) { existing = []; query[key] = existing; } existing.push(value); } return query; } function formatQueryString(query) { if (!query) { return null; } let s = ""; let prefix = "?"; for (const [key, values] of Object.entries(query)) { for (const value of values) { s += prefix; s += encodeURIComponent(key); if (value !== void 0) { s += "="; s += encodeURIComponent(value); } prefix = "&"; } } return s || null; } var init_parse_query_string = __esm({ "src/util/dev/parse-query-string.ts"() { "use strict"; } }); // src/util/dev/router.ts import url from "url"; function resolveRouteParameters(str, match, keys) { return str.replace(/\$([1-9a-zA-Z]+)/g, (_, param2) => { let matchIndex = keys.indexOf(param2); if (matchIndex === -1) { matchIndex = parseInt(param2, 10); } else { matchIndex++; } return match[matchIndex] || ""; }); } function getRoutesTypes(routes2 = []) { const handleMap = /* @__PURE__ */ new Map(); let prevHandle = null; routes2.forEach((route) => { if ((0, import_routing_utils3.isHandler)(route)) { prevHandle = route.handle; } else { const routes3 = handleMap.get(prevHandle); if (!routes3) { handleMap.set(prevHandle, [route]); } else { routes3.push(route); } } }); return handleMap; } async function devRouter(reqUrl = "/", reqMethod, routes2, devServer, vercelConfig, previousHeaders, missRoutes, phase) { let result; let { pathname: reqPathname, search: reqSearch } = url.parse(reqUrl); reqPathname = reqPathname || "/"; const reqQuery = parseQueryString(reqSearch); const combinedHeaders = { ...previousHeaders }; let status3; let isContinue = false; if (routes2) { let idx = -1; for (const routeConfig of routes2) { idx++; isContinue = false; if ((0, import_routing_utils3.isHandler)(routeConfig)) { continue; } const { src, headers, methods } = routeConfig; if (Array.isArray(methods) && reqMethod && !methods.includes(reqMethod)) { continue; } const keys = []; const flags = devServer && devServer.isCaseSensitive() ? "" : "i"; const matcher = (0, import_pcre_to_regexp.default)(`%${src}%${flags}`, keys); const match = matcher.exec(reqPathname) || matcher.exec(reqPathname.substring(1)); if (match) { let destPath = reqPathname; if (routeConfig.dest) { destPath = resolveRouteParameters(routeConfig.dest, match, keys); } if (headers) { for (const originalKey of Object.keys(headers)) { const lowerKey = originalKey.toLowerCase(); if (previousHeaders && Object.prototype.hasOwnProperty.call(previousHeaders, lowerKey) && (phase === "hit" || phase === "miss")) { } else { const originalValue = headers[originalKey]; const value = resolveRouteParameters(originalValue, match, keys); combinedHeaders[lowerKey] = value; } } } if (routeConfig.continue) { if (routeConfig.status) { status3 = routeConfig.status; } reqPathname = destPath; isContinue = true; continue; } const isDestUrl = isURL(destPath); if (routeConfig.check && devServer && vercelConfig && phase !== "hit" && !isDestUrl) { let { pathname } = url.parse(destPath); pathname = pathname || "/"; const hasDestFile = await devServer.hasFilesystem( pathname, vercelConfig ); if (!hasDestFile) { if (routeConfig.status && phase !== "miss") { } else if (missRoutes && missRoutes.length > 0) { const missResult = await devRouter( destPath, reqMethod, missRoutes, devServer, vercelConfig, combinedHeaders, [], "miss" ); if (missResult.found) { return missResult; } else { reqPathname = destPath; continue; } } else { if (routeConfig.status && phase === "miss") { status3 = routeConfig.status; } reqPathname = destPath; continue; } } } if (isDestUrl) { result = { found: true, dest: destPath, continue: isContinue, userDest: false, isDestUrl, status: routeConfig.status || status3, headers: combinedHeaders, query: reqQuery, matched_route: routeConfig, matched_route_idx: idx, phase }; break; } else { if (!destPath.startsWith("/")) { destPath = `/${destPath}`; } let { pathname: destPathname, search: destSearch } = url.parse(destPath); destPathname = destPathname || "/"; const destQuery = parseQueryString(destSearch); Object.assign(destQuery, reqQuery); result = { found: true, dest: destPathname, continue: isContinue, userDest: Boolean(routeConfig.dest), isDestUrl, status: routeConfig.status || status3, headers: combinedHeaders, query: destQuery, matched_route: routeConfig, matched_route_idx: idx, phase }; break; } } } } if (!result) { result = { found: false, dest: reqPathname, continue: isContinue, status: status3, isDestUrl: false, query: reqQuery, headers: combinedHeaders, phase }; } return result; } var import_pcre_to_regexp, import_routing_utils3; var init_router = __esm({ "src/util/dev/router.ts"() { "use strict"; import_pcre_to_regexp = __toESM3(require_dist25(), 1); init_is_url(); import_routing_utils3 = __toESM3(require_dist23(), 1); init_parse_query_string(); } }); // src/util/dev/mime-type.ts import path7 from "path"; function getMimeType(fileName) { const extension = path7.extname(fileName); return (0, import_mime_types2.contentType)(extension) || "application/octet-stream"; } var import_mime_types2; var init_mime_type = __esm({ "src/util/dev/mime-type.ts"() { "use strict"; import_mime_types2 = __toESM3(require_mime_types(), 1); } }); // ../../node_modules/.pnpm/tree-kill@1.2.2/node_modules/tree-kill/index.js var require_tree_kill = __commonJS2({ "../../node_modules/.pnpm/tree-kill@1.2.2/node_modules/tree-kill/index.js"(exports2, module2) { "use strict"; var childProcess = __require("child_process"); var spawn6 = childProcess.spawn; var exec2 = childProcess.exec; module2.exports = function(pid, signal, callback) { if (typeof signal === "function" && callback === void 0) { callback = signal; signal = void 0; } pid = parseInt(pid); if (Number.isNaN(pid)) { if (callback) { return callback(new Error("pid must be a number")); } else { throw new Error("pid must be a number"); } } var tree = {}; var pidsToProcess = {}; tree[pid] = []; pidsToProcess[pid] = 1; switch (process.platform) { case "win32": exec2("taskkill /pid " + pid + " /T /F", callback); break; case "darwin": buildProcessTree(pid, tree, pidsToProcess, function(parentPid) { return spawn6("pgrep", ["-P", parentPid]); }, function() { killAll(tree, signal, callback); }); break; default: buildProcessTree(pid, tree, pidsToProcess, function(parentPid) { return spawn6("ps", ["-o", "pid", "--no-headers", "--ppid", parentPid]); }, function() { killAll(tree, signal, callback); }); break; } }; function killAll(tree, signal, callback) { var killed = {}; try { Object.keys(tree).forEach(function(pid) { tree[pid].forEach(function(pidpid) { if (!killed[pidpid]) { killPid(pidpid, signal); killed[pidpid] = 1; } }); if (!killed[pid]) { killPid(pid, signal); killed[pid] = 1; } }); } catch (err) { if (callback) { return callback(err); } else { throw err; } } if (callback) { return callback(); } } function killPid(pid, signal) { try { process.kill(parseInt(pid, 10), signal); } catch (err) { if (err.code !== "ESRCH") throw err; } } function buildProcessTree(parentPid, tree, pidsToProcess, spawnChildProcessesList, cb) { var ps = spawnChildProcessesList(parentPid); var allData = ""; ps.stdout.on("data", function(data) { var data = data.toString("ascii"); allData += data; }); var onClose = function(code2) { delete pidsToProcess[parentPid]; if (code2 != 0) { if (Object.keys(pidsToProcess).length == 0) { cb(); } return; } allData.match(/\d+/g).forEach(function(pid) { pid = parseInt(pid, 10); tree[parentPid].push(pid); tree[pid] = []; pidsToProcess[pid] = 1; buildProcessTree(pid, tree, pidsToProcess, spawnChildProcessesList, cb); }); }; ps.on("close", onClose); } } }); // src/util/tree-kill.ts import { promisify as promisify2 } from "util"; var import_tree_kill, treeKill; var init_tree_kill = __esm({ "src/util/tree-kill.ts"() { "use strict"; import_tree_kill = __toESM3(require_tree_kill(), 1); treeKill = promisify2(import_tree_kill.default); } }); // src/util/dev/builder.ts import { delimiter as delimiter2, dirname as dirname7, join as join20 } from "path"; import { fork as fork2 } from "child_process"; import { createFunction } from "@vercel/fun"; import { Lambda, FileBlob, FileFsRef as FileFsRef3, normalizePath as normalizePath5, isBackendFramework, isPythonFramework } from "@vercel/build-utils"; async function createBuildProcess(match, envConfigs, workPath) { output_manager_default.debug(`Creating build process for "${match.entrypoint}"`); const builderWorkerPath = join20(__dirname, "builder-worker.cjs"); const PATH = `${dirname7(process.execPath)}${delimiter2}${process.env.PATH}`; const env = { ...process.env, PATH, ...envConfigs.allEnv }; const buildProcess = fork2(builderWorkerPath, [], { cwd: workPath, execArgv: [], env }); match.buildProcess = buildProcess; buildProcess.on("close", (code2, signal) => { output_manager_default.debug( `Build process for "${match.entrypoint}" exited with ${signal || code2}` ); match.buildProcess = void 0; }); return new Promise((resolve14, reject) => { buildProcess.once("message", (data) => { if (data !== null && typeof data === "object" && data.type !== "ready") { reject(new Error('Did not get "ready" event from builder')); } else { resolve14(buildProcess); } }); }); } async function executeBuild(vercelConfig, devServer, files, match, requestPath, isInitialBuild, filesChanged, filesRemoved) { const { builderWithPkg: { path: requirePath, builder, pkg } } = match; const { entrypoint, use } = match; const isStatic = (0, import_fs_detectors5.isStaticRuntime)(use); const { envConfigs, cwd: workPath, devCacheDir } = devServer; const debug2 = output_manager_default.isDebugEnabled(); const startTime = Date.now(); const showBuildTimestamp = !isStatic && (!isInitialBuild || debug2); if (showBuildTimestamp) { output_manager_default.log(`Building ${use}:${entrypoint}`); output_manager_default.debug( `Using \`${pkg.name}${pkg.version ? `@${pkg.version}` : ""}\`` ); } const config2 = match.config || {}; let result; let { buildProcess } = match; if (!isStatic && !buildProcess) { buildProcess = await createBuildProcess(match, envConfigs, workPath); } const buildOptions = { files, entrypoint, workPath, repoRootPath: workPath, config: config2, meta: { isDev: true, requestPath, devCacheDir, filesChanged, filesRemoved, // This env distiniction is only necessary to maintain // backwards compatibility with the `@vercel/next` builder. env: { ...envConfigs.runEnv }, buildEnv: { ...envConfigs.buildEnv } } }; let buildResultOrOutputs; if (buildProcess) { buildProcess.send({ type: "build", requirePath, buildOptions }); buildResultOrOutputs = await new Promise((resolve14, reject) => { function onMessage({ type, result: result2, error: error3 }) { cleanup(); if (type === "buildResult") { if (result2) { resolve14(result2); } else if (error3) { reject(Object.assign(new Error(), error3)); } } else { reject(new Error(`Got unexpected message type: ${type}`)); } } function onExit2(code2, signal) { cleanup(); const err = new Error( `Builder exited with ${signal || code2} before sending build result` ); reject(err); } function cleanup() { buildProcess.removeListener("close", onExit2); buildProcess.removeListener("message", onMessage); } buildProcess.on("close", onExit2); buildProcess.on("message", onMessage); }); } else { buildResultOrOutputs = await builder.build(buildOptions); } if (!builder.version || builder.version === 1) { result = { output: buildResultOrOutputs, routes: [], watch: [] }; } else if (builder.version === 2) { result = buildResultOrOutputs; } else if (builder.version === 3) { const { output: output2, ...rest } = buildResultOrOutputs; if (!output2 || output2.type !== "Lambda") { throw new Error('The result of "builder.build()" must be a `Lambda`'); } if (output2.maxDuration) { throw new Error( 'The result of "builder.build()" must not contain `maxDuration`' ); } if (output2.memory) { throw new Error( 'The result of "builder.build()" must not contain `memory`' ); } for (const [src, func] of Object.entries(config2.functions || {})) { if (src === entrypoint || (0, import_minimatch3.default)(entrypoint, src)) { if (func.maxDuration) { output2.maxDuration = func.maxDuration; } if (func.memory) { output2.memory = func.memory; } break; } } result = { ...rest, output: { [entrypoint]: output2 } }; } else { throw new Error( `${getTitleName()} CLI does not support builder version ${builder.version}. Please run \`${await getUpdateCommand()}\` to update to the latest CLI.` ); } const normalized = (0, import_routing_utils4.normalizeRoutes)(result.routes); if (normalized.error) { throw new Error(normalized.error.message); } else { result.routes = normalized.routes || []; } const { output: buildOutput } = result; const { cleanUrls } = vercelConfig; for (const [originalPath, value] of Object.entries(buildOutput)) { let path11 = normalizePath5(originalPath); if (cleanUrls && path11.endsWith(".html")) { path11 = path11.slice(0, -5); if (value.type === "FileBlob" || value.type === "FileFsRef") { value.contentType = value.contentType || "text/html; charset=utf-8"; } } const extensionless = devServer.getExtensionlessFile(path11); if (extensionless) { path11 = extensionless; } buildOutput[path11] = value; } for (const name of Object.keys(buildOutput)) { const obj = buildOutput[name]; let lambda; let fileRef; let fileBlob; switch (obj.type) { case "FileFsRef": fileRef = Object.assign(Object.create(FileFsRef3.prototype), obj); buildOutput[name] = fileRef; break; case "FileBlob": fileBlob = Object.assign(Object.create(FileBlob.prototype), obj); fileBlob.data = Buffer.from(obj.data.data); buildOutput[name] = fileBlob; break; case "Lambda": lambda = Object.assign(Object.create(Lambda.prototype), obj); lambda.zipBuffer = Buffer.from(obj.zipBuffer.data); buildOutput[name] = lambda; break; default: throw new Error(`Unknown file type: ${obj.type}`); } } result.watch = (result.watch || []).map((w) => { if (w.startsWith("./")) { return w.substring(2); } return w; }); if (!result.watch.includes(entrypoint)) { result.watch.push(entrypoint); } const maxLambdaBytes = (0, import_bytes7.default)("50mb"); for (const asset of Object.values(result.output)) { if (asset.type === "Lambda" && !(typeof asset.runtime === "string" && asset.runtime.startsWith("python"))) { const size = asset.zipBuffer.length; if (size > maxLambdaBytes) { throw new LambdaSizeExceededError(size, maxLambdaBytes); } } } await Promise.all( Object.entries(result.output).map(async (entry) => { const path11 = entry[0]; const asset = entry[1]; if (asset.type === "Lambda") { const oldAsset = match.buildOutput && match.buildOutput[path11]; if (oldAsset && oldAsset.type === "Lambda" && oldAsset.fn) { await oldAsset.fn.destroy(); } const ZipFile = asset.zipBuffer || await asset.createZip(); asset.fn = await createFunction({ Code: { ZipFile }, Handler: asset.handler, Runtime: asset.runtime, MemorySize: asset.memory || 3009, Environment: { Variables: { ...vercelConfig.env, ...asset.environment, ...envConfigs.runEnv } } }); } match.buildTimestamp = Date.now(); }) ); match.buildResults.set(requestPath, result); Object.assign(match.buildOutput, result.output); if (showBuildTimestamp) { const endTime = Date.now(); output_manager_default.log(`Built ${use}:${entrypoint} [${(0, import_ms12.default)(endTime - startTime)}]`); } } async function getBuildMatches(vercelConfig, cwd, devServer, fileList) { const matches = []; if (fileList.length === 0) { return matches; } const noMatches = []; const builds = vercelConfig.builds || [{ src: "**", use: "@vercel/static" }]; const builderSpecs = new Set(builds.map((b) => b.use).filter(Boolean)); const buildersWithPkgs = await importBuilders(builderSpecs, cwd); for (const buildConfig of builds) { let { src = "**", use, config: config2 = {} } = buildConfig; if (!use) { continue; } if (src[0] === "/") { src = src.substring(1); } if (isBackendFramework(buildConfig.config?.framework)) { src = "package.json"; } if (buildConfig.config?.framework && isPythonFramework(buildConfig.config?.framework)) { const pythonManifestFiles = [ "pyproject.toml", "requirements.txt", "Pipfile" ]; const existing = pythonManifestFiles.filter((p) => fileList.includes(p)); if (existing.length > 0) { src = existing[0]; } } const mapToEntrypoint = /* @__PURE__ */ new Map(); const extensionless = devServer.getExtensionlessFile(src); if (extensionless) { mapToEntrypoint.set(extensionless, src); src = extensionless; } const files = fileList.filter((name) => name === src || (0, import_minimatch3.default)(name, src, { dot: true })).map((name) => join20(cwd, name)); if (files.length === 0) { noMatches.push(buildConfig); } for (const file of files) { src = relative7(cwd, file); const entrypoint = mapToEntrypoint.get(src) || src; if (config2.zeroConfig && config2.outputDirectory) { const outputMatch = config2.outputDirectory + "/"; if (src.startsWith(outputMatch)) { src = src.slice(outputMatch.length); } } const builderWithPkg = buildersWithPkgs.get(use); if (!builderWithPkg) { throw new Error(`Failed to load Builder "${use}"`); } matches.push({ ...buildConfig, src, entrypoint, builderWithPkg, buildOutput: {}, buildResults: /* @__PURE__ */ new Map(), buildTimestamp: 0 }); } } if (noMatches.length > 0) { output_manager_default.warn( `You defined ${(0, import_pluralize8.default)( "build", noMatches.length, true )} that did not match any source files (please ensure they are NOT defined in ${highlight( ".vercelignore" )}):` ); for (const buildConfig of noMatches) { output_manager_default.print(`- ${JSON.stringify(buildConfig)} `); } } return matches; } async function shutdownBuilder(match) { const ops = []; if (match.buildProcess) { const { pid } = match.buildProcess; output_manager_default.debug(`Killing builder sub-process with PID ${pid}`); const killPromise = treeKill(pid).then(() => { output_manager_default.debug(`Killed builder with PID ${pid}`); }).catch((err) => { output_manager_default.debug(`Failed to kill builder with PID ${pid}: ${err}`); }); ops.push(killPromise); delete match.buildProcess; } if (match.buildOutput) { for (const asset of Object.values(match.buildOutput)) { if (asset.type === "Lambda" && asset.fn) { output_manager_default.debug(`Shutting down Lambda function`); ops.push(asset.fn.destroy()); } } } await Promise.all(ops); } var import_ms12, import_bytes7, import_fs_detectors5, import_pluralize8, import_minimatch3, import_routing_utils4; var init_builder = __esm({ "src/util/dev/builder.ts"() { "use strict"; import_ms12 = __toESM3(require_ms(), 1); import_bytes7 = __toESM3(require_bytes(), 1); import_fs_detectors5 = __toESM3(require_dist8(), 1); import_pluralize8 = __toESM3(require_pluralize(), 1); import_minimatch3 = __toESM3(require_minimatch2(), 1); init_highlight(); init_tree_kill(); init_path_helpers(); init_errors_ts(); import_routing_utils4 = __toESM3(require_dist23(), 1); init_get_update_command(); init_pkg_name(); init_import_builders(); init_output_manager(); } }); // src/util/dev/errors.ts function generateErrorMessage(statusCode, errorCode) { if (statusCode === 404) { return pageNotFoundError; } if (statusCode === 502) { return appError; } return { title: errorMessageMap.get(statusCode) || "Error occurred", app_error: false }; } function generateHttpStatusDescription(statusCode) { return httpStatusDescriptionMap.get(statusCode) || "UNKNOWN_ERROR"; } var httpStatusDescriptionMap, errorMessageMap, appError, pageNotFoundError; var init_errors3 = __esm({ "src/util/dev/errors.ts"() { "use strict"; httpStatusDescriptionMap = /* @__PURE__ */ new Map([ [400, "BAD_REQUEST"], [402, "PAYMENT_REQUIRED"], [403, "FORBIDDEN"], [404, "NOT_FOUND"], [405, "NOT_ALLOWED"], [410, "GONE"], [413, "PAYLOAD_TOO_LARGE"], [429, "RATE_LIMITED"], [500, "INTERNAL_SERVER_ERROR"], [501, "NOT_IMPLEMENTED"], [502, "BAD_GATEWAY"], [503, "SERVICE_UNAVAILABLE"], [504, "GATEWAY_TIMEOUT"], [508, "INFINITE_LOOP"] ]); errorMessageMap = /* @__PURE__ */ new Map([ [400, "Bad request"], [402, "Payment required"], [403, "You don't have the required permissions"], [404, "The page could not be found"], [405, "Method not allowed"], [410, "The deployment has been removed"], [413, "Request Entity Too Large"], [429, "Rate limited"], [500, "A server error has occurred"], [501, "Not implemented"], [503, "The deployment is currently unavailable"], [504, "An error occurred with your deployment"], [508, "Infinite loop detected"] ]); appError = { title: "An error occurred with this application.", subtitle: "This is an error with the application itself, not the platform.", app_error: true }; pageNotFoundError = { title: "The page could not be found.", subtitle: "The page could not be found in the application.", app_error: true }; } }); // ../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js var require_escape_html = __commonJS2({ "../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js"(exports2, module2) { "use strict"; var matchHtmlRegExp = /["'&<>]/; module2.exports = escapeHtml; function escapeHtml(string) { var str = "" + string; var match = matchHtmlRegExp.exec(str); if (!match) { return str; } var escape2; var html = ""; var index = 0; var lastIndex = 0; for (index = match.index; index < str.length; index++) { switch (str.charCodeAt(index)) { case 34: escape2 = """; break; case 38: escape2 = "&"; break; case 39: escape2 = "'"; break; case 60: escape2 = "<"; break; case 62: escape2 = ">"; break; default: continue; } if (lastIndex !== index) { html += str.substring(lastIndex, index); } lastIndex = index + 1; html += escape2; } return lastIndex !== index ? html + str.substring(lastIndex, index) : html; } } }); // src/util/dev/templates/error.ts function error2(it) { let out = "
"; if (it.error_code == "EDGE_FUNCTION_INVOCATION_FAILED") { out += '

This Edge Function has crashed.

'; } out += " "; if (it.error_code == "FUNCTION_INVOCATION_FAILED") { out += '

This Serverless Function has crashed.

'; } out += '

' + it.http_status_code + ": " + (0, import_escape_html.default)(it.http_status_description) + " "; if (it.error_code) { out += ' Code: ' + (0, import_escape_html.default)(it.error_code) + " "; } out += ' ID: ' + (0, import_escape_html.default)(it.request_id) + "

  • Check the logs in your terminal window to see the application error.

"; return out; } var import_escape_html; var init_error3 = __esm({ "src/util/dev/templates/error.ts"() { "use strict"; import_escape_html = __toESM3(require_escape_html(), 1); } }); // src/util/dev/templates/error_base.ts function error_base(it) { let out = ' ' + it.http_status_code + ": " + (0, import_escape_html2.default)(it.http_status_description) + `
` + it.view + "
"; return out; } var import_escape_html2; var init_error_base = __esm({ "src/util/dev/templates/error_base.ts"() { "use strict"; import_escape_html2 = __toESM3(require_escape_html(), 1); } }); // src/util/dev/templates/error_404.ts function error_404(it) { let out = '

' + it.http_status_code + ": " + (0, import_escape_html3.default)(it.http_status_description) + " "; if (it.error_code) { out += ' Code: ' + (0, import_escape_html3.default)(it.error_code) + " "; } out += ' ID: ' + (0, import_escape_html3.default)(it.request_id) + "

"; return out; } var import_escape_html3; var init_error_404 = __esm({ "src/util/dev/templates/error_404.ts"() { "use strict"; import_escape_html3 = __toESM3(require_escape_html(), 1); } }); // src/util/dev/templates/error_502.ts function error_502(it) { let out = '

' + it.http_status_code + ": " + (0, import_escape_html4.default)(it.http_status_description) + " "; if (it.error_code) { out += ' Code: ' + (0, import_escape_html4.default)(it.error_code) + " "; } out += ' ID: ' + (0, import_escape_html4.default)(it.request_id) + "

  • Check the logs in your terminal window to see the application error.

"; return out; } var import_escape_html4; var init_error_502 = __esm({ "src/util/dev/templates/error_502.ts"() { "use strict"; import_escape_html4 = __toESM3(require_escape_html(), 1); } }); // src/util/dev/templates/redirect.ts function redirect(it) { let out = "

Redirecting (" + it.statusCode + ")

" + (0, import_escape_html5.default)(it.location) + ""; return out; } var import_escape_html5; var init_redirect = __esm({ "src/util/dev/templates/redirect.ts"() { "use strict"; import_escape_html5 = __toESM3(require_escape_html(), 1); } }); // src/util/dev/headers.ts function nodeHeadersToFetchHeaders(nodeHeaders) { const headers = new import_node_fetch5.Headers(); for (const [name, value] of Object.entries(nodeHeaders)) { if (Array.isArray(value)) { for (const val of value) { headers.append(name, val); } } else if (typeof value !== "undefined") { headers.set(name, String(value)); } } return headers; } function applyOverriddenHeaders(reqHeaders, respHeaders) { const overriddenHeaders = respHeaders.get("x-middleware-override-headers"); if (!overriddenHeaders) { return; } const overriddenKeys = /* @__PURE__ */ new Set(); for (const key of overriddenHeaders.split(",")) { overriddenKeys.add(key.trim()); } respHeaders.delete("x-middleware-override-headers"); for (const key of Object.keys(reqHeaders)) { if (!NONOVERRIDABLE_HEADERS.has(key) && !overriddenKeys.has(key)) { delete reqHeaders[key]; } } for (const key of overriddenKeys.keys()) { if (NONOVERRIDABLE_HEADERS.has(key)) { continue; } const valueKey = "x-middleware-request-" + key; const newValue = respHeaders.get(valueKey); const oldValue = reqHeaders[key]; if (oldValue !== newValue) { if (newValue) { reqHeaders[key] = newValue; } else { delete reqHeaders[key]; } } respHeaders.delete(valueKey); } } var import_node_fetch5, NONOVERRIDABLE_HEADERS; var init_headers = __esm({ "src/util/dev/headers.ts"() { "use strict"; import_node_fetch5 = __toESM3(require_lib7(), 1); NONOVERRIDABLE_HEADERS = /* @__PURE__ */ new Set([ "host", "connection", "content-length", "transfer-encoding", "keep-alive", "transfer-encoding", "te", "upgrade", "trailer" ]); } }); // src/util/dev/parse-listen.ts import { parse as parse8 } from "url"; function parseListen(str, defaultPort = 3e3) { let port = Number(str); if (!isNaN(port)) { return [port]; } const url3 = parse8(str); switch (url3.protocol) { case "pipe:": { const cutStr = str.replace(/^pipe:/, ""); if (cutStr.slice(0, 4) !== "\\\\.\\") { throw new Error(`Invalid Windows named pipe endpoint: ${str}`); } return [cutStr]; } case "unix:": if (!url3.pathname) { throw new Error(`Invalid UNIX domain socket endpoint: ${str}`); } return [url3.pathname]; case "tcp:": url3.port = url3.port || String(defaultPort); return [parseInt(url3.port, 10), url3.hostname ?? void 0]; default: if (!url3.slashes) { if (url3.protocol === null) { return [defaultPort, url3.pathname ?? void 0]; } port = Number(url3.hostname); if (url3.protocol && !isNaN(port)) { return [port, url3.protocol.substring(0, url3.protocol.length - 1)]; } } throw new Error( `Unknown \`--listen\` scheme (protocol): ${url3.protocol}` ); } } function replaceLocalhost(address) { return address.replace("[::]", "localhost").replace("0.0.0.0", "localhost"); } var init_parse_listen = __esm({ "src/util/dev/parse-listen.ts"() { "use strict"; } }); // src/util/dev/server.ts import url2, { URL as URL8 } from "url"; import http2 from "http"; import { randomBytes } from "crypto"; import { watch } from "chokidar"; import path8, { isAbsolute, basename as basename9, dirname as dirname8, extname as extname2, join as join21 } from "path"; import { cloneEnv as cloneEnv2, getNodeBinPaths, FileFsRef as FileFsRef4, spawnCommand, shouldUseExperimentalBackends as shouldUseExperimentalBackends2 } from "@vercel/build-utils"; function sortBuilders2(buildA, buildB) { if (buildA && buildA.use && (0, import_fs_detectors6.isOfficialRuntime)("static-build", buildA.use)) { return 1; } if (buildB && buildB.use && (0, import_fs_detectors6.isOfficialRuntime)("static-build", buildB.use)) { return -1; } return 0; } function proxyPass(req, res, dest, devServer, requestId, ignorePath = true) { return devServer.proxy.web( req, res, { target: dest, ignorePath }, (error3) => { output_manager_default.debug(`Failed to complete request to ${req.url}: ${error3}`); if (!res.headersSent) { devServer.sendError(req, res, requestId, "FUNCTION_INVOCATION_FAILED"); } } ); } function serveStaticFile(req, res, cwd, opts) { return (0, import_serve_handler.default)(req, res, { public: cwd, cleanUrls: false, etag: true, ...opts }); } function close(server) { return new Promise((resolve14, reject) => { server.close((err) => { if (err) { reject(err); } else { resolve14(); } }); }); } function generateRequestId(podId, isInvoke = false) { const invoke = isInvoke ? "dev1::" : ""; return `dev1::${invoke}${[ podId, Date.now(), randomBytes(6).toString("hex") ].join("-")}`; } function hasOwnProperty2(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } async function findBuildMatch(matches, files, requestPath, devServer, vercelConfig, isFilesystem = false) { requestPath = requestPath.replace(/^\//, ""); let bestIndexMatch; for (const match of matches.values()) { if (await shouldServe2( match, files, requestPath, devServer, vercelConfig, isFilesystem, !!bestIndexMatch )) { if (!isIndex(match.src)) { return match; } else { if (extname2(match.src) === ".html") { return match; } bestIndexMatch = match; } } } return bestIndexMatch || null; } async function shouldServe2(match, files, requestPath, devServer, vercelConfig, isFilesystem = false, hasMatched = false) { const { src, config: config2, builderWithPkg: { builder } } = match; if (config2?.middleware === true) { return false; } const cleanSrc = src.endsWith(".html") ? src.slice(0, -5) : src; const trimmedPath = requestPath.endsWith("/") ? requestPath.slice(0, -1) : requestPath; if (vercelConfig.cleanUrls && vercelConfig.trailingSlash && cleanSrc === trimmedPath) { return true; } else if (vercelConfig.cleanUrls && !vercelConfig.trailingSlash && cleanSrc === requestPath) { return true; } else if (!vercelConfig.cleanUrls && vercelConfig.trailingSlash && src === trimmedPath) { return true; } else if (typeof builder.shouldServe === "function") { const shouldServe3 = await builder.shouldServe({ entrypoint: src, files, config: config2 || {}, requestPath, workPath: devServer.cwd, hasMatched }); if (shouldServe3) { return true; } } else if (findAsset(match, requestPath, vercelConfig)) { return true; } else if (!isFilesystem && await findMatchingRoute(match, requestPath, devServer, vercelConfig)) { return true; } return false; } async function findMatchingRoute(match, requestPath, devServer, vercelConfig) { const reqUrl = `/${requestPath}`; for (const buildResult of match.buildResults.values()) { if (!Array.isArray(buildResult.routes)) continue; const route = await devRouter( reqUrl, void 0, buildResult.routes, devServer, vercelConfig ); if (route.found) { return route; } } } function findAsset(match, requestPath, vercelConfig) { if (!match.buildOutput) { return; } let assetKey = requestPath.replace(/\/$/, ""); let asset = match.buildOutput[requestPath]; if (vercelConfig.trailingSlash && requestPath.endsWith("/")) { asset = match.buildOutput[requestPath.slice(0, -1)]; } if (!asset) { for (const [name, a] of Object.entries(match.buildOutput)) { if (isIndex(name) && dirnameWithoutDot(name) === assetKey) { asset = a; assetKey = name; break; } } } if (asset) { return { asset, assetKey }; } } function dirnameWithoutDot(path11) { let dir = dirname8(path11); if (dir === ".") { dir = ""; } return dir; } function isIndex(path11) { const ext = extname2(path11); const name = basename9(path11, ext); return name === "index"; } function minimatches(files, pattern) { return files.some( (file) => file === pattern || (0, import_minimatch4.default)(file, pattern, { dot: true }) ); } function fileChanged(name, changed, removed) { changed.add(name); removed.delete(name); } function fileRemoved(name, files, changed, removed) { delete files[name]; changed.delete(name); removed.add(name); } function needsBlockingBuild(buildMatch) { const { builder } = buildMatch.builderWithPkg; return typeof builder.shouldServe !== "function"; } async function checkForPort(port, timeout) { let host; const start = Date.now(); while (!(host = await getReachableHostOnPort(port))) { if (Date.now() - start > timeout) { break; } await sleep(100); } if (!host) { throw new Error(`Detecting port ${port} timed out after ${timeout}ms`); } return host; } async function getReachableHostOnPort(port) { const optsIpv4 = { host: "127.0.0.1" }; const optsIpv6 = { host: "::1" }; const results = await Promise.all([ (0, import_is_port_reachable.default)(port, optsIpv6).then((r) => r && `[${optsIpv6.host}]`), (0, import_is_port_reachable.default)(port, optsIpv4).then((r) => r && optsIpv4.host) ]); return results.find(Boolean) || false; } function filterFrontendBuilds(build2) { const { name } = (0, import_npm_package_arg2.default)(build2.use); return !frontendRuntimeSet.has(name || ""); } function hasNewRoutingProperties(vercelConfig) { return typeof vercelConfig.cleanUrls !== void 0 || typeof vercelConfig.headers !== void 0 || typeof vercelConfig.redirects !== void 0 || typeof vercelConfig.rewrites !== void 0 || typeof vercelConfig.trailingSlash !== void 0; } function buildMatchEquals(a, b) { if (!a || !b) return false; if (a.src !== b.src) return false; if (a.use !== b.use) return false; if (!(0, import_fast_deep_equal.default)(a.config || {}, b.config || {})) return false; return true; } var import_fs_extra21, import_ms13, import_chalk73, import_node_fetch6, import_pluralize9, import_raw_body, import_async_listen3, import_minimatch4, import_http_proxy_node16, import_serve_handler, import_dotenv3, import_once, import_directory, import_get_port, import_is_port_reachable, import_fast_deep_equal, import_npm_package_arg2, import_json_parse_better_errors3, import_client12, import_routing_utils5, import_fs_detectors6, import_frameworks6, import_error_utils21, frontendRuntimeSet, DEV_SERVER_PORT_BIND_TIMEOUT, DevServer; var init_server = __esm({ "src/util/dev/server.ts"() { "use strict"; import_fs_extra21 = __toESM3(require_lib(), 1); import_ms13 = __toESM3(require_ms(), 1); import_chalk73 = __toESM3(require_source(), 1); import_node_fetch6 = __toESM3(require_lib7(), 1); import_pluralize9 = __toESM3(require_pluralize(), 1); import_raw_body = __toESM3(require_raw_body(), 1); import_async_listen3 = __toESM3(require_dist6(), 1); import_minimatch4 = __toESM3(require_minimatch2(), 1); import_http_proxy_node16 = __toESM3(require_http_proxy_node16(), 1); import_serve_handler = __toESM3(require_src4(), 1); import_dotenv3 = __toESM3(require_main(), 1); import_once = __toESM3(require_dist24(), 1); import_directory = __toESM3(require_directory(), 1); import_get_port = __toESM3(require_get_port(), 1); import_is_port_reachable = __toESM3(require_is_port_reachable(), 1); import_fast_deep_equal = __toESM3(require_fast_deep_equal(), 1); import_npm_package_arg2 = __toESM3(require_npa(), 1); import_json_parse_better_errors3 = __toESM3(require_json_parse_better_errors(), 1); import_client12 = __toESM3(require_dist7(), 1); import_routing_utils5 = __toESM3(require_dist23(), 1); import_fs_detectors6 = __toESM3(require_dist8(), 1); import_frameworks6 = __toESM3(require_frameworks(), 1); init_cmd(); init_link(); init_sleep(); init_path_helpers(); init_local_path(); init_errors_ts(); init_link2(); init_get_files(); init_validate_config(); init_router(); init_mime_type(); init_builder(); init_errors3(); init_output_manager(); init_error3(); init_error_base(); init_error_404(); init_error_502(); init_redirect(); init_tree_kill(); init_headers(); init_parse_query_string(); import_error_utils21 = __toESM3(require_dist2(), 1); init_is_url(); init_project_settings(); init_parse_listen(); frontendRuntimeSet = new Set( import_frameworks6.frameworkList.map((f) => f.useRuntime?.use || "@vercel/static-build") ); DEV_SERVER_PORT_BIND_TIMEOUT = (0, import_ms13.default)("5m"); DevServer = class { constructor(cwd, options) { this.clearVercelConfigPromise = () => { this.getVercelConfigPromise = null; }; this.getExtensionlessFile = (path11) => { const ext = extname2(path11); if (this.apiDir && path11.startsWith(this.apiDir + "/") && this.apiExtensions.has(ext)) { return path11.slice(0, -ext.length); } return null; }; /** * DevServer HTTP handler */ this.devServerHandler = async (req, res) => { await this.startPromise; const requestId = generateRequestId(this.podId); if (this.stopping) { res.setHeader("Connection", "close"); await this.send404(req, res, requestId); return; } const method = req.method || "GET"; output_manager_default.debug(`${import_chalk73.default.bold(method)} ${req.url}`); try { const vercelConfig = await this.getVercelConfig(); await this.serveProjectAsNowV2(req, res, requestId, vercelConfig); } catch (err) { console.error(err); if ((0, import_error_utils21.isError)(err) && typeof err.stack === "string") { output_manager_default.debug(err.stack); } if (!res.finished) { res.statusCode = 500; res.end((0, import_error_utils21.errorToString)(err)); } } }; /** * This is the equivalent to now-proxy exit_with_status() function. */ this.exitWithStatus = async (match, routeResult, phase, req, res, requestId) => { const { status: status3, headers, dest } = routeResult; const location = headers["location"] || dest; if (status3 && location && 300 <= status3 && status3 <= 399) { output_manager_default.debug(`Route found with redirect status code ${status3}`); await this.sendRedirect(req, res, requestId, location, status3); return true; } if (!match && status3 && phase !== "miss") { if (routeResult.userDest) { return false; } output_manager_default.debug(`Route found with with status code ${status3}`); await this.sendError(req, res, requestId, "", status3, headers); return true; } return false; }; /** * Serve project directory as a v2 deployment. */ this.serveProjectAsNowV2 = async (req, res, requestId, vercelConfig, routes2 = vercelConfig.routes, callLevel = 0) => { const { debug: debug2 } = output_manager_default; const parsed = url2.parse(req.url || "/"); if (typeof parsed.pathname === "string" && parsed.pathname.includes("//")) { let location = parsed.pathname.replace(/\/+/g, "/"); if (parsed.search) { location += parsed.search; } if (req.method === "GET") { await this.sendRedirect(req, res, requestId, location, 301); return; } debug2(`Rewriting URL from "${req.url}" to "${location}"`); req.url = location; } if (callLevel === 0) { await this.updateBuildMatches(vercelConfig); } if (this.blockingBuildsPromise) { debug2("Waiting for builds to complete before handling request"); await this.blockingBuildsPromise; } const getReqUrl = (rr) => { if (rr.dest) { if (rr.query) { const destParsed = url2.parse(rr.dest); const destQuery = parseQueryString(destParsed.search); Object.assign(destQuery, rr.query); destParsed.search = formatQueryString(destQuery); return url2.format(destParsed); } return rr.dest; } return req.url; }; const handleMap = getRoutesTypes(routes2); const missRoutes = handleMap.get("miss") || []; const hitRoutes = handleMap.get("hit") || []; const errorRoutes = handleMap.get("error") || []; const filesystemRoutes = handleMap.get("filesystem") || []; const phases = [null, "filesystem"]; let routeResult = null; let match = null; let statusCode; let prevUrl = req.url; let prevHeaders = {}; let middlewarePid; const middleware = [...this.buildMatches.values()].find( (m) => m.config?.middleware === true ); if (middleware) { let startMiddlewareResult; const { envConfigs, files, devCacheDir, cwd: workPath } = this; try { const { builder: builder2 } = middleware.builderWithPkg; if (builder2.version === 3) { startMiddlewareResult = await builder2.startDevServer?.({ files, entrypoint: middleware.entrypoint, workPath, repoRootPath: this.repoRoot, config: middleware.config || {}, meta: { isDev: true, devCacheDir, requestUrl: req.url, env: { ...envConfigs.runEnv }, buildEnv: { ...envConfigs.buildEnv } } }); } if (startMiddlewareResult) { const { port, pid, shutdown } = startMiddlewareResult; middlewarePid = pid; this.shutdownCallbacks.set(pid, shutdown); const middlewareReqHeaders = nodeHeadersToFetchHeaders(req.headers); const proxyHeaders = this.getProxyHeaders(req, requestId, true); for (const [name, value] of nodeHeadersToFetchHeaders(proxyHeaders)) { middlewareReqHeaders.set(name, value); } const middlewareRes = await (0, import_node_fetch6.default)( `http://127.0.0.1:${port}${parsed.path}`, { headers: middlewareReqHeaders, method: req.method, redirect: "manual" } ); const middlewareBody = await middlewareRes.buffer(); if (middlewareRes.status === 500 && middlewareBody.byteLength === 0) { await this.sendError( req, res, requestId, "EDGE_FUNCTION_INVOCATION_FAILED", 500 ); return; } res.statusCode = middlewareRes.status; let rewritePath = ""; let contentType2 = ""; let shouldContinue = false; const skipMiddlewareHeaders = /* @__PURE__ */ new Set([ "date", "connection", "content-length", "transfer-encoding" ]); applyOverriddenHeaders(req.headers, middlewareRes.headers); for (const [name, value] of middlewareRes.headers) { if (name === "x-middleware-next") { shouldContinue = value === "1"; } else if (name === "x-middleware-rewrite") { rewritePath = value; shouldContinue = true; } else if (name === "content-type") { contentType2 = value; } else if (!skipMiddlewareHeaders.has(name)) { res.setHeader(name, value); req.headers[name] = value; } } if (!shouldContinue) { this.setResponseHeaders(res, requestId); if (middlewareBody.length > 0) { res.setHeader("content-length", middlewareBody.length); if (contentType2) { res.setHeader("content-type", contentType2); } res.end(middlewareBody); } else { res.end(); } return; } if (rewritePath) { debug2(`Detected rewrite path from middleware: "${rewritePath}"`); prevUrl = rewritePath; const beforeRewriteUrl = req.url || "/"; if (isURL(rewritePath)) { const rewriteUrlParsed = new URL8(rewritePath); if (this.address.origin === rewriteUrlParsed.origin) { req.url = rewritePath.slice(rewriteUrlParsed.origin.length) || "/"; prevUrl = req.url; } else { debug2(`ProxyPass: ${rewritePath}`); this.setResponseHeaders(res, requestId); proxyPass(req, res, rewritePath, this, requestId); return; } } else { const rewriteUrlParsed = url2.parse(beforeRewriteUrl); rewriteUrlParsed.search = url2.parse(rewritePath).search; req.url = url2.format(rewriteUrlParsed); } debug2( `Rewrote incoming HTTP URL from "${beforeRewriteUrl}" to "${req.url}"` ); } } } catch (err) { if ((0, import_error_utils21.isSpawnError)(err) && err.code === "ENOENT") { err.message = `Command not found: ${import_chalk73.default.cyan( err.path, ...err.spawnargs )} Please ensure that ${cmd(err.path)} is properly installed`; err.link = "https://vercel.link/command-not-found"; } output_manager_default.prettyError(err); await this.sendError( req, res, requestId, "MIDDLEWARE_INVOCATION_FAILED", 500 ); return; } finally { if (middlewarePid) { this.killBuilderDevServer(middlewarePid); } } } for (const phase of phases) { statusCode = void 0; const phaseRoutes = handleMap.get(phase) || []; routeResult = await devRouter( prevUrl, req.method, phaseRoutes, this, vercelConfig, prevHeaders, missRoutes, phase ); if (routeResult.continue) { if (routeResult.dest) { prevUrl = getReqUrl(routeResult); } if (routeResult.headers) { prevHeaders = routeResult.headers; } } if (routeResult.isDestUrl) { const destParsed = url2.parse(routeResult.dest); const destQuery = parseQueryString(destParsed.search); Object.assign(destQuery, routeResult.query); destParsed.search = formatQueryString(destQuery); const destUrl = url2.format(destParsed); debug2(`ProxyPass: ${destUrl}`); this.setResponseHeaders(res, requestId); return proxyPass(req, res, destUrl, this, requestId); } match = await findBuildMatch( this.buildMatches, this.files, routeResult.dest, this, vercelConfig ); if (await this.exitWithStatus( match, routeResult, phase, req, res, requestId )) { return; } if (!match && missRoutes.length > 0) { routeResult = await devRouter( getReqUrl(routeResult), req.method, missRoutes, this, vercelConfig, routeResult.headers, [], "miss" ); match = await findBuildMatch( this.buildMatches, this.files, routeResult.dest, this, vercelConfig ); if (await this.exitWithStatus( match, routeResult, phase, req, res, requestId )) { return; } } else if (match && hitRoutes.length > 0) { const prevStatus = routeResult.status; routeResult = await devRouter( getReqUrl(routeResult), req.method, hitRoutes, this, vercelConfig, routeResult.headers, [], "hit" ); routeResult.status = prevStatus; } statusCode = routeResult.status; if (match) { break; } if (phase === null && filesystemRoutes.length === 0) { break; } } if (!match && routeResult && errorRoutes.length > 0) { const routeResultForError = await devRouter( getReqUrl(routeResult), req.method, errorRoutes, this, vercelConfig, routeResult.headers, [], "error" ); const { matched_route } = routeResultForError; const matchForError = await findBuildMatch( this.buildMatches, this.files, routeResultForError.dest, this, vercelConfig ); if (matchForError) { debug2(`Route match detected in error phase, breaking loop`); routeResult = routeResultForError; statusCode = routeResultForError.status; match = matchForError; } else if (matched_route && matched_route.src && !matched_route.dest) { debug2( "Route without `dest` detected in error phase, attempting to exit early" ); if (await this.exitWithStatus( matchForError, routeResultForError, "error", req, res, requestId )) { return; } } } if (!routeResult) { throw new Error("Expected Route Result but none was found."); } const { dest, query, headers } = routeResult; for (const [name, value] of Object.entries(headers)) { res.setHeader(name, value); } if (statusCode) { Object.defineProperty(res, "statusCode", { get() { return statusCode; }, /* eslint-disable @typescript-eslint/no-unused-vars */ set(_) { } }); } const requestPath = dest.replace(/^\//, ""); if (!match) { if (this.devProcessOrigin) { const upstream = this.devProcessOrigin; debug2(`Proxying to frontend dev server: ${upstream}`); const headers2 = this.getProxyHeaders(req, requestId, false); for (const [name, value] of Object.entries(headers2)) { req.headers[name] = value; } this.setResponseHeaders(res, requestId); const origUrl = url2.parse(req.url || "/"); const origQuery = parseQueryString(origUrl.search); origUrl.pathname = dest; Object.assign(origQuery, query); origUrl.search = formatQueryString(origQuery); req.url = url2.format(origUrl); return proxyPass(req, res, upstream, this, requestId, false); } if (statusCode === 404 && routeResult.phase === "miss" || !this.renderDirectoryListing(req, res, requestPath, requestId)) { await this.send404(req, res, requestId); } return; } const buildRequestPath = match.buildResults.has(null) ? null : requestPath; const buildResult = match.buildResults.get(buildRequestPath); if (buildResult && Array.isArray(buildResult.routes) && buildResult.routes.length > 0) { const origUrl = url2.parse(req.url || "/"); const origQuery = parseQueryString(origUrl.search); origUrl.pathname = dest; Object.assign(origQuery, query); origUrl.search = formatQueryString(origQuery); const newUrl = url2.format(origUrl); debug2( `Checking build result's ${buildResult.routes.length} \`routes\` to match ${newUrl}` ); const matchedRoute = await devRouter( newUrl, req.method, buildResult.routes, this, vercelConfig ); if (matchedRoute.found && callLevel === 0) { debug2(`Found matching route ${matchedRoute.dest} for ${newUrl}`); req.url = newUrl; await this.serveProjectAsNowV2( req, res, requestId, vercelConfig, buildResult.routes, callLevel + 1 ); return; } } const { builder, pkg: builderPkg } = match.builderWithPkg; if (builder.version === 3 && typeof builder.startDevServer === "function") { let devServerResult = null; try { const { envConfigs, files, devCacheDir, cwd: workPath } = this; devServerResult = await builder.startDevServer({ files, entrypoint: match.entrypoint, workPath, config: match.config || {}, repoRootPath: this.repoRoot, meta: { isDev: true, requestPath, devCacheDir, env: { ...envConfigs.runEnv, VERCEL_DEBUG_PREFIX: output_manager_default.debugEnabled ? "[builder]" : void 0 }, buildEnv: { ...envConfigs.buildEnv } } }); } catch (err) { if ((0, import_error_utils21.isSpawnError)(err) && err.code === "ENOENT") { err.message = `Command not found: ${import_chalk73.default.cyan( err.path, ...err.spawnargs )} Please ensure that ${cmd(err.path)} is properly installed`; err.link = "https://vercel.link/command-not-found"; } output_manager_default.prettyError(err); await this.sendError( req, res, requestId, "NO_RESPONSE_FROM_FUNCTION", 502 ); return; } if (devServerResult) { requestId = generateRequestId(this.podId, true); const { port, pid, shutdown } = devServerResult; this.shutdownCallbacks.set(pid, shutdown); res.once("close", () => { this.killBuilderDevServer(pid); }); debug2( `Proxying to "${builderPkg.name}" dev server (port=${port}, pid=${pid})` ); const origUrl = url2.parse(req.url || "/"); const origQuery = parseQueryString(origUrl.search); Object.assign(origQuery, query); origUrl.search = formatQueryString(origQuery); req.url = url2.format({ pathname: origUrl.pathname, search: origUrl.search }); const headers2 = this.getProxyHeaders(req, requestId, false); for (const [name, value] of Object.entries(headers2)) { req.headers[name] = value; } this.setResponseHeaders(res, requestId); return proxyPass( req, res, `http://127.0.0.1:${port}`, this, requestId, false ); } else { debug2(`Skipping \`startDevServer()\` for ${match.entrypoint}`); } } let foundAsset = findAsset(match, requestPath, vercelConfig); if (!foundAsset && callLevel === 0) { await this.triggerBuild(match, buildRequestPath, req, vercelConfig); foundAsset = findAsset(match, requestPath, vercelConfig); } if (this.devProcessOrigin && (!foundAsset || foundAsset && foundAsset.asset.type !== "Lambda")) { debug2("Proxying to frontend dev server"); const headers2 = this.getProxyHeaders(req, requestId, false); for (const [name, value] of Object.entries(headers2)) { req.headers[name] = value; } this.setResponseHeaders(res, requestId); return proxyPass(req, res, this.devProcessOrigin, this, requestId, false); } if (!foundAsset) { await this.send404(req, res, requestId); return; } const { asset, assetKey } = foundAsset; debug2( `Serving asset: [${asset.type}] ${assetKey} ${asset.contentType || ""}` ); switch (asset.type) { case "FileFsRef": this.setResponseHeaders(res, requestId); req.url = `/${basename9(asset.fsPath)}`; return serveStaticFile(req, res, dirname8(asset.fsPath), { headers: [ { source: "**/*", headers: [ { key: "Content-Type", value: asset.contentType || getMimeType(assetKey) } ] } ] }); case "FileBlob": const headers2 = { "Content-Length": asset.data.length, "Content-Type": asset.contentType || getMimeType(assetKey) }; this.setResponseHeaders(res, requestId, headers2); res.end(asset.data); return; case "Lambda": if (!asset.fn) { await this.sendError( req, res, requestId, "INTERNAL_LAMBDA_NOT_FOUND" ); return; } requestId = generateRequestId(this.podId, true); const origUrl = url2.parse(req.url || "/"); const origQuery = parseQueryString(origUrl.search); Object.assign(origQuery, query); origUrl.search = formatQueryString(origQuery); const path11 = url2.format({ pathname: origUrl.pathname, search: origUrl.search }); const body = await (0, import_raw_body.default)(req); const payload = { method: req.method || "GET", host: req.headers.host, path: path11, headers: { ...req.headers, ...this.getProxyHeaders(req, requestId, true) }, encoding: "base64", body: body.toString("base64") }; debug2(`Invoking lambda: "${assetKey}" with ${path11}`); let result; try { result = await asset.fn({ Action: "Invoke", body: JSON.stringify(payload) }); } catch (err) { console.error(err); await this.sendError( req, res, requestId, "NO_RESPONSE_FROM_FUNCTION", 502 ); return; } if (!statusCode) { res.statusCode = result.statusCode; } this.setResponseHeaders(res, requestId, result.headers); let resBody; if (result.encoding === "base64" && typeof result.body === "string") { resBody = Buffer.from(result.body, "base64"); } else { resBody = result.body; } return res.end(resBody); default: await this.sendError(req, res, requestId, "UNKNOWN_ASSET_TYPE"); } }; this.cwd = cwd; this.repoRoot = options.repoRoot ?? cwd; this.envConfigs = { buildEnv: {}, runEnv: {}, allEnv: {} }; this.envValues = options.envValues || {}; this.files = {}; this.originalProjectSettings = options.projectSettings; this.projectSettings = options.projectSettings; this.caseSensitive = false; this.apiDir = null; this.apiExtensions = /* @__PURE__ */ new Set(); this.proxy = import_http_proxy_node16.default.createProxyServer({ changeOrigin: true, ws: true, xfwd: true }); this.proxy.on("proxyRes", (proxyRes) => { proxyRes.headers["server"] = "Vercel"; }); this.server = http2.createServer(this.devServerHandler); this.server.timeout = 0; this.stopping = false; this.buildMatches = /* @__PURE__ */ new Map(); this.inProgressBuilds = /* @__PURE__ */ new Map(); this.devCacheDir = join21(getVercelDirectory(cwd), "cache"); this.vercelConfigWarning = false; this.getVercelConfigPromise = null; this.blockingBuildsPromise = null; this.startPromise = null; this.watchAggregationId = null; this.watchAggregationEvents = []; this.watchAggregationTimeout = 500; this.filter = (path11) => Boolean(path11); this.podId = Math.random().toString(32).slice(-5); this.shutdownCallbacks = /* @__PURE__ */ new Map(); } get address() { if (!this._address) { throw new Error( "Invalid access to `address` because `start` has not yet populated `this.address`." ); } return this._address; } async exit(code2 = 1) { await this.stop(code2); process.exit(code2); } enqueueFsEvent(type, path11) { this.watchAggregationEvents.push({ type, path: path11 }); if (this.watchAggregationId === null) { this.watchAggregationId = setTimeout(() => { const events = this.watchAggregationEvents.slice(); this.watchAggregationEvents.length = 0; this.watchAggregationId = null; this.handleFilesystemEvents(events); }, this.watchAggregationTimeout); } } async handleFilesystemEvents(events) { output_manager_default.debug(`Filesystem watcher notified of ${events.length} events`); const filesChanged = /* @__PURE__ */ new Set(); const filesRemoved = /* @__PURE__ */ new Set(); const distPaths = []; for (const buildMatch of this.buildMatches.values()) { for (const buildResult of buildMatch.buildResults.values()) { if (buildResult.distPath) { distPaths.push(buildResult.distPath); } } } events = events.filter( (event) => distPaths.every((distPath) => !event.path.startsWith(distPath)) ); for (const event of events) { if (event.type === "add") { await this.handleFileCreated(event.path, filesChanged, filesRemoved); } else if (event.type === "unlink") { this.handleFileDeleted(event.path, filesChanged, filesRemoved); } else if (event.type === "change") { await this.handleFileModified(event.path, filesChanged, filesRemoved); } } const vercelConfig = await this.getVercelConfig(); await this.updateBuildMatches(vercelConfig); const filesChangedArray = [...filesChanged]; const filesRemovedArray = [...filesRemoved]; const needsRebuild = /* @__PURE__ */ new Map(); for (const match of this.buildMatches.values()) { for (const [requestPath, result] of match.buildResults) { if (needsRebuild.has(result)) continue; if (Array.isArray(result.watch)) { for (const pattern of result.watch) { if (minimatches(filesChangedArray, pattern) || minimatches(filesRemovedArray, pattern)) { needsRebuild.set(result, [requestPath, match]); break; } } } } } if (needsRebuild.size > 0) { output_manager_default.debug(`Triggering ${needsRebuild.size} rebuilds`); if (filesChangedArray.length > 0) { output_manager_default.debug(`Files changed: ${filesChangedArray.join(", ")}`); } if (filesRemovedArray.length > 0) { output_manager_default.debug(`Files removed: ${filesRemovedArray.join(", ")}`); } for (const [result, [requestPath, match]] of needsRebuild) { if (requestPath === null || await shouldServe2( match, this.files, requestPath, this, vercelConfig )) { this.triggerBuild( match, requestPath, null, vercelConfig, result, filesChangedArray, filesRemovedArray ).catch((err) => { output_manager_default.warn(`An error occurred while rebuilding \`${match.src}\`:`); console.error(err.stack); }); } else { output_manager_default.debug( `Not rebuilding because \`shouldServe()\` returned \`false\` for "${match.use}" request path "${requestPath}"` ); } } } } async handleFileCreated(fsPath, changed, removed) { const name = relative7(this.cwd, fsPath); try { await this.getVercelConfig(); this.files[name] = await FileFsRef4.fromFsPath({ fsPath }); const extensionless = this.getExtensionlessFile(name); if (extensionless) { this.files[extensionless] = await FileFsRef4.fromFsPath({ fsPath }); } fileChanged(name, changed, removed); output_manager_default.debug(`File created: ${name}`); } catch (err) { if ((0, import_error_utils21.isErrnoException)(err) && err.code === "ENOENT") { output_manager_default.debug(`File created, but has since been deleted: ${name}`); fileRemoved(name, this.files, changed, removed); } else { throw err; } } } handleFileDeleted(fsPath, changed, removed) { const name = relative7(this.cwd, fsPath); output_manager_default.debug(`File deleted: ${name}`); fileRemoved(name, this.files, changed, removed); const extensionless = this.getExtensionlessFile(name); if (extensionless) { output_manager_default.debug(`File deleted: ${extensionless}`); fileRemoved(extensionless, this.files, changed, removed); } } async handleFileModified(fsPath, changed, removed) { const name = relative7(this.cwd, fsPath); try { this.files[name] = await FileFsRef4.fromFsPath({ fsPath }); fileChanged(name, changed, removed); output_manager_default.debug(`File modified: ${name}`); } catch (err) { if ((0, import_error_utils21.isErrnoException)(err) && err.code === "ENOENT") { output_manager_default.debug(`File modified, but has since been deleted: ${name}`); fileRemoved(name, this.files, changed, removed); } else { throw err; } } } async updateBuildMatches(vercelConfig, isInitial = false) { const fileList = this.resolveBuildFiles(this.files); const matches = await getBuildMatches( vercelConfig, this.cwd, this, fileList ); const sources = matches.map((m) => m.src); if (isInitial && fileList.length === 0) { output_manager_default.warn("There are no files inside your deployment."); } const ops = []; for (const src of this.buildMatches.keys()) { if (!sources.includes(src)) { output_manager_default.debug(`Removing build match for "${src}"`); const match = this.buildMatches.get(src); if (match) { ops.push(shutdownBuilder(match)); } this.buildMatches.delete(src); } } await Promise.all(ops); const blockingBuilds = []; for (const match of matches) { const currentMatch = this.buildMatches.get(match.src); if (!buildMatchEquals(currentMatch, match)) { output_manager_default.debug( `Adding build match for "${match.src}" with "${match.use}"` ); this.buildMatches.set(match.src, match); if (!isInitial && needsBlockingBuild(match)) { const buildPromise = executeBuild( vercelConfig, this, this.files, match, null, false ); blockingBuilds.push(buildPromise); } } } if (blockingBuilds.length > 0) { output_manager_default.debug(`Waiting for ${blockingBuilds.length} "blocking builds"`); this.blockingBuildsPromise = Promise.all(blockingBuilds).then(() => { output_manager_default.debug( `Cleaning up "blockingBuildsPromise" after successful resolve` ); this.blockingBuildsPromise = null; }).catch((err) => { output_manager_default.debug( `Cleaning up "blockingBuildsPromise" after error: ${err}` ); this.blockingBuildsPromise = null; if (err) { output_manager_default.prettyError(err); } }); } this.buildMatches = new Map( [...this.buildMatches.entries()].sort((matchA, matchB) => { return sortBuilders2(matchA[1], matchB[1]); }) ); } async getLocalEnv(fileName, base) { const filePath = join21(this.cwd, fileName); let env = {}; try { const dotenv2 = await import_fs_extra21.default.readFile(filePath, "utf8"); output_manager_default.debug(`Using local env: ${filePath}`); env = (0, import_dotenv3.parse)(dotenv2); env = this.injectSystemValuesInDotenv(env); } catch (err) { if (!(0, import_error_utils21.isErrnoException)(err) || err.code !== "ENOENT") { throw err; } } try { return { ...this.validateEnvConfig(fileName, base || {}, env) }; } catch (err) { if (err instanceof MissingDotenvVarsError) { output_manager_default.error(err.message); await this.exit(); } else { throw err; } } return {}; } getVercelConfig() { if (this.getVercelConfigPromise) { return this.getVercelConfigPromise; } this.getVercelConfigPromise = this._getVercelConfig(); const clear = this.clearVercelConfigPromise; this.getVercelConfigPromise.finally(clear); return this.getVercelConfigPromise; } get devCommand() { if (this.projectSettings?.devCommand) { return this.projectSettings.devCommand; } else if (this.projectSettings?.framework) { const frameworkSlug = this.projectSettings.framework; const framework = import_frameworks6.frameworkList.find((f) => f.slug === frameworkSlug); if (framework) { const defaults = framework.settings.devCommand.value; if (defaults) { return defaults; } } if (shouldUseExperimentalBackends2(frameworkSlug)) { return "npx @vercel/cervel dev"; } } return void 0; } async _getVercelConfig() { const { compileVercelConfig: compileVercelConfig2 } = await Promise.resolve().then(() => (init_compile_vercel_config(), compile_vercel_config_exports)); await compileVercelConfig2(this.cwd); const configPath = getLocalPathConfig(this.cwd); const [ pkg = null, // The default empty `vercel.json` is used to serve all // files as static when no `vercel.json` is present vercelConfig = { version: 2, [import_client12.fileNameSymbol]: "vercel.json" } ] = await Promise.all([ this.readJsonFile("package.json"), this.readJsonFile(configPath) ]); await this.validateVercelConfig(vercelConfig); if (vercelConfig.customErrorPage) { const errorPages = typeof vercelConfig.customErrorPage === "string" ? [vercelConfig.customErrorPage] : Object.values(vercelConfig.customErrorPage); for (const page of errorPages) { if (page && !import_fs_extra21.default.existsSync(join21(this.cwd, page))) { output_manager_default.warn( `The custom error page "${page}" was not found in "${this.cwd}". This will cause deployment to fail on Vercel.` ); } } } this.projectSettings = { ...this.originalProjectSettings, ...pickOverrides(vercelConfig) }; const { error: routeError, routes: maybeRoutes } = (0, import_routing_utils5.getTransformedRoutes)(vercelConfig); if (routeError) { output_manager_default.prettyError(routeError); await this.exit(); } vercelConfig.routes = maybeRoutes || []; if (!vercelConfig.builds || vercelConfig.builds.length === 0) { const featHandleMiss = true; const { projectSettings, cleanUrls, trailingSlash } = vercelConfig; const files = (await staticFiles(this.cwd, {})).map( (f) => relative7(this.cwd, f) ); let { builders, // eslint-disable-next-line prefer-const warnings, // eslint-disable-next-line prefer-const errors, // eslint-disable-next-line prefer-const defaultRoutes, // eslint-disable-next-line prefer-const redirectRoutes, // eslint-disable-next-line prefer-const rewriteRoutes, // eslint-disable-next-line prefer-const errorRoutes } = await (0, import_fs_detectors6.detectBuilders)(files, pkg, { tag: "latest", functions: vercelConfig.functions, projectSettings: projectSettings || this.projectSettings, featHandleMiss, cleanUrls, trailingSlash, workPath: this.cwd }); if (errors) { output_manager_default.error(errors[0].message); await this.exit(); } if (warnings?.length > 0) { warnings.forEach( (warning) => output_manager_default.warn(warning.message, null, warning.link, warning.action) ); } if (builders) { if (this.devCommand) { builders = builders.filter(filterFrontendBuilds); } vercelConfig.builds = vercelConfig.builds || []; vercelConfig.builds.push(...builders); delete vercelConfig.functions; } let routes2 = []; routes2.push(...redirectRoutes || []); routes2.push( ...(0, import_routing_utils5.appendRoutesToPhase)({ routes: vercelConfig.routes, newRoutes: rewriteRoutes, phase: "filesystem" }) ); routes2 = (0, import_routing_utils5.appendRoutesToPhase)({ routes: routes2, newRoutes: errorRoutes, phase: "error" }); routes2.push(...defaultRoutes || []); vercelConfig.routes = routes2; } if (Array.isArray(vercelConfig.builds)) { if (this.devCommand) { vercelConfig.builds = vercelConfig.builds.filter(filterFrontendBuilds); } vercelConfig.builds.sort(sortBuilders2); } await this.validateVercelConfig(vercelConfig); vercelConfig.routes = (vercelConfig.routes || []).filter((route) => { if ("has" in route) { if (!this.vercelConfigWarning) { this.vercelConfigWarning = true; output_manager_default.warn( `The "has" property in ${vercelConfig[import_client12.fileNameSymbol]} will be ignored during development. Deployments will work as expected.` ); } return false; } return true; }); this.caseSensitive = hasNewRoutingProperties(vercelConfig); this.apiDir = (0, import_fs_detectors6.detectApiDirectory)(vercelConfig.builds || []); this.apiExtensions = (0, import_fs_detectors6.detectApiExtensions)(vercelConfig.builds || []); let [runEnv, buildEnv] = await Promise.all([ this.getLocalEnv(".env", vercelConfig.env), this.getLocalEnv(".env.build", vercelConfig.build?.env) ]); let allEnv = { ...buildEnv, ...runEnv }; if (Object.keys(allEnv).length === 0) { const envValues = { ...this.envValues }; if (this.address.host) { envValues["VERCEL_URL"] = this.address.host; } allEnv = { ...envValues }; runEnv = { ...envValues }; buildEnv = { ...envValues }; } runEnv["NOW_REGION"] = "dev1"; buildEnv["NOW_REGION"] = "dev1"; allEnv["NOW_REGION"] = "dev1"; allEnv["VERCEL_ENV"] = "development"; allEnv["VERCEL"] = "1"; if (this.projectSettings?.autoExposeSystemEnvs) { runEnv["VERCEL_REGION"] = "dev1"; } this.envConfigs = { buildEnv, runEnv, allEnv }; await this.runDevCommand(); return vercelConfig; } async readJsonFile(filePath) { let rel, abs; if (isAbsolute(filePath)) { rel = path8.relative(this.cwd, filePath); abs = filePath; } else { rel = filePath; abs = join21(this.cwd, filePath); } output_manager_default.debug(`Reading \`${rel}\` file`); try { const raw = await import_fs_extra21.default.readFile(abs, "utf8"); const parsed = (0, import_json_parse_better_errors3.default)(raw); parsed[import_client12.fileNameSymbol] = rel; return parsed; } catch (err) { if ((0, import_error_utils21.isError)(err)) { if ((0, import_error_utils21.isErrnoException)(err) && err.code === "ENOENT") { output_manager_default.debug(`No \`${rel}\` file present`); } else if (err.name === "SyntaxError") { output_manager_default.warn( `There is a syntax error in the \`${rel}\` file: ${err.message}` ); } } else { throw err; } } } async tryValidateOrExit(config2, validate2) { const message2 = validate2(config2); if (message2) { output_manager_default.error(message2); await this.exit(1); } } async validateVercelConfig(config2) { if (config2.version === 1) { output_manager_default.error("Cannot run `version: 1` projects."); await this.exit(1); return; } const error3 = validateConfig(config2); if (error3) { output_manager_default.prettyError(error3); await this.exit(1); } } validateEnvConfig(type, env = {}, localEnv = {}) { const missing = Object.entries(env).filter( ([name, value]) => typeof value === "string" && value.startsWith("@") && !hasOwnProperty2(localEnv, name) ).map(([name]) => name); if (missing.length > 0) { throw new MissingDotenvVarsError(type, missing); } const merged = { ...env, ...localEnv }; let hasInvalidName = false; for (const key of Object.keys(merged)) { if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)) { output_manager_default.warn( `Ignoring ${type.split(".").slice(1).reverse().join(" ")} var ${JSON.stringify(key)} because name is invalid` ); hasInvalidName = true; delete merged[key]; } } if (hasInvalidName) { output_manager_default.log( "The name contains invalid characters. Only letters, digits, and underscores are allowed. Furthermore, the name should not start with a digit" ); } return merged; } injectSystemValuesInDotenv(env) { for (const name of Object.keys(env)) { if (name === "VERCEL_URL") { env["VERCEL_URL"] = this.address.host; } else if (name === "VERCEL_REGION") { env["VERCEL_REGION"] = "dev1"; } } return env; } /** * Create an array of from builder inputs * and filter them */ resolveBuildFiles(files) { return Object.keys(files).filter(this.filter); } start(...listenSpec) { if (!this.startPromise) { this.startPromise = this._start(...listenSpec).catch((err) => { this.stop(); throw err; }); } return this.startPromise; } /** * Launches the `vercel dev` server. */ async _start(...listenSpec) { if (!import_fs_extra21.default.existsSync(this.cwd)) { throw new Error(`${import_chalk73.default.bold(this.cwd)} doesn't exist`); } if (!import_fs_extra21.default.lstatSync(this.cwd).isDirectory()) { throw new Error(`${import_chalk73.default.bold(this.cwd)} is not a directory`); } const { ig } = await (0, import_client12.getVercelIgnore)(this.cwd); this.filter = ig.createFilter(); let address = null; while (typeof address !== "string") { try { address = (await (0, import_async_listen3.listen)(this.server, ...listenSpec)).toString(); } catch (err) { if ((0, import_error_utils21.isErrnoException)(err)) { output_manager_default.debug(`Got listen error: ${err.code}`); if (err.code === "EADDRINUSE") { if (typeof listenSpec[0] === "number") { output_manager_default.note( `Requested port ${import_chalk73.default.yellow( String(listenSpec[0]) )} is already in use` ); listenSpec[0]++; } else { output_manager_default.error( `Requested socket ${import_chalk73.default.cyan( listenSpec[0] )} is already in use` ); process.exit(1); } } } else { throw err; } } } this._address = new URL8(replaceLocalhost(address)); const vercelConfig = await this.getVercelConfig(); const devCommandPromise = this.runDevCommand(); const files = await staticFiles(this.cwd, {}); this.files = {}; for (const fsPath of files) { const path11 = relative7(this.cwd, fsPath); const { mode } = await import_fs_extra21.default.stat(fsPath); this.files[path11] = new FileFsRef4({ mode, fsPath }); const extensionless = this.getExtensionlessFile(path11); if (extensionless) { this.files[extensionless] = new FileFsRef4({ mode, fsPath }); } } await this.updateBuildMatches(vercelConfig, true); const blockingBuilds = Array.from(this.buildMatches.values()).filter( needsBlockingBuild ); if (blockingBuilds.length > 0) { output_manager_default.log(`Creating initial ${(0, import_pluralize9.default)("build", blockingBuilds.length)}`); for (const match of blockingBuilds) { await executeBuild(vercelConfig, this, this.files, match, null, true); } output_manager_default.success("Build completed"); } await import_fs_extra21.default.mkdirp(this.devCacheDir); this.watcher = watch(this.cwd, { ignored: (path11) => !this.filter(path11), ignoreInitial: true, usePolling: false, persistent: true }); this.watcher.on("add", (path11) => { this.enqueueFsEvent("add", path11); }); this.watcher.on("change", (path11) => { this.enqueueFsEvent("change", path11); }); this.watcher.on("unlink", (path11) => { this.enqueueFsEvent("unlink", path11); }); this.watcher.on("error", (err) => { output_manager_default.error(`Watcher error: ${err}`); }); await (0, import_once.default)(this.watcher, "ready"); this.server.on("upgrade", async (req, socket, head) => { await this.startPromise; if (!this.devProcessOrigin) { output_manager_default.debug( `Detected "upgrade" event, but closing socket because no frontend dev server is running` ); socket.destroy(); return; } const target = this.devProcessOrigin; output_manager_default.debug(`Detected "upgrade" event, proxying to ${target}`); this.proxy.ws(req, socket, head, { target }); }); await devCommandPromise; let addressFormatted = this.address.toString(); if (this.address.pathname === "/" && this.address.protocol === "http:") { addressFormatted = addressFormatted.replace(/\/$/, ""); } output_manager_default.ready(`Available at ${link_default(addressFormatted)}`); } /** * Shuts down the `vercel dev` server, and cleans up any temporary resources. */ async stop(exitCode2) { if (this.stopping) return; this.stopping = true; const { devProcess } = this; const { debug: debug2 } = output_manager_default; const ops = []; for (const match of this.buildMatches.values()) { ops.push(shutdownBuilder(match)); } if (devProcess) { ops.push(treeKill(devProcess.pid)); } ops.push(close(this.server)); if (this.watcher) { debug2(`Closing file watcher`); const closePromise = this.watcher.close(); if (closePromise) { ops.push(closePromise); } } for (const pid of this.shutdownCallbacks.keys()) { ops.push(this.killBuilderDevServer(pid)); } try { await Promise.all(ops); } catch (err) { if ((0, import_error_utils21.isErrnoException)(err) && err.code === "ERR_SERVER_NOT_RUNNING") { process.exit(exitCode2 || 0); } else { throw err; } } } async killBuilderDevServer(pid) { const { debug: debug2 } = output_manager_default; debug2(`Killing builder dev server with PID ${pid}`); const shutdownCb = this.shutdownCallbacks.get(pid); this.shutdownCallbacks.delete(pid); if (shutdownCb) { debug2(`Running shutdown callback for PID ${pid}`); await shutdownCb(); return; } try { await treeKill(pid); debug2(`Killed builder dev server with PID ${pid}`); } catch (err) { debug2(`Failed to kill builder dev server with PID ${pid}: ${err}`); } } async send404(req, res, requestId) { return this.sendError(req, res, requestId, "NOT_FOUND", 404); } async sendError(req, res, requestId, errorCode, statusCode = 500, headers = {}) { res.statusCode = statusCode; this.setResponseHeaders(res, requestId, headers); const http_status_description = generateHttpStatusDescription(statusCode); const error_code = errorCode || http_status_description; const errorMessage = generateErrorMessage(statusCode, error_code); let body; const { accept = "text/plain" } = req.headers; if (accept.includes("json")) { res.setHeader("content-type", "application/json"); const json = JSON.stringify({ error: { code: statusCode, message: errorMessage.title } }); body = `${json} `; } else if (accept.includes("html")) { res.setHeader("content-type", "text/html; charset=utf-8"); let view; if (statusCode === 404) { view = error_404({ ...errorMessage, http_status_code: statusCode, http_status_description, error_code, request_id: requestId }); } else if (statusCode === 502) { view = error_502({ ...errorMessage, http_status_code: statusCode, http_status_description, error_code, request_id: requestId }); } else { view = error2({ http_status_code: statusCode, http_status_description, error_code, request_id: requestId }); } body = error_base({ http_status_code: statusCode, http_status_description, view }); } else { res.setHeader("content-type", "text/plain; charset=utf-8"); body = `${errorMessage.title} ${error_code} `; } res.end(body); } async sendRedirect(req, res, requestId, location, statusCode = 302) { output_manager_default.debug(`Redirect ${statusCode}: ${location}`); res.statusCode = statusCode; this.setResponseHeaders(res, requestId, { location }); let body; const { accept = "text/plain" } = req.headers; if (accept.includes("json")) { res.setHeader("content-type", "application/json"); const json = JSON.stringify({ redirect: location, status: String(statusCode) }); body = `${json} `; } else if (accept.includes("html")) { res.setHeader("content-type", "text/html; charset=utf-8"); body = redirect({ location, statusCode }); } else { res.setHeader("content-type", "text/plain; charset=utf-8"); body = `Redirecting... `; } res.end(body); } getRequestIp(req) { return req.connection.remoteAddress || "127.0.0.1"; } /** * Sets the response `headers` including the platform headers to `res`. */ setResponseHeaders(res, requestId, headers = {}) { const allHeaders = { "cache-control": "public, max-age=0, must-revalidate", ...headers, server: "Vercel", "x-vercel-id": requestId, "x-vercel-cache": "MISS" }; for (const [name, value] of Object.entries(allHeaders)) { res.setHeader(name, value); } } /** * Returns the request `headers` that will be sent to the Lambda. */ getProxyHeaders(req, requestId, xfwd) { const ip = this.getRequestIp(req); const { host } = req.headers; const headers = { connection: "close", "x-real-ip": ip, "x-vercel-deployment-url": host, "x-vercel-forwarded-for": ip, "x-vercel-id": requestId }; if (xfwd) { headers["x-forwarded-host"] = host; headers["x-forwarded-proto"] = "http"; headers["x-forwarded-for"] = ip; } return headers; } async triggerBuild(match, requestPath, req, vercelConfig, previousBuildResult, filesChanged, filesRemoved) { const buildKey = requestPath === null ? match.entrypoint : `${match.entrypoint}-${requestPath}`; let buildPromise = this.inProgressBuilds.get(buildKey); if (buildPromise) { let msg = `De-duping build "${buildKey}"`; if (req) { msg += ` for "${req.method} ${req.url}"`; } output_manager_default.debug(msg); } else { if (previousBuildResult) { for (const [name] of Object.entries(previousBuildResult.output)) { output_manager_default.debug(`Removing asset "${name}"`); delete match.buildOutput[name]; } } let msg = `Building asset "${buildKey}"`; if (req) { msg += ` for "${req.method} ${req.url}"`; } output_manager_default.debug(msg); buildPromise = executeBuild( vercelConfig, this, this.files, match, requestPath, false, filesChanged, filesRemoved ); this.inProgressBuilds.set(buildKey, buildPromise); } try { await buildPromise; } finally { output_manager_default.debug(`Built asset ${buildKey}`); this.inProgressBuilds.delete(buildKey); } } renderDirectoryListing(_req, res, requestPath, requestId) { if (this.projectSettings?.directoryListing === false) { return false; } let prefix = requestPath; if (prefix.length > 0 && !prefix.endsWith("/")) { prefix += "/"; } const dirs = /* @__PURE__ */ new Set(); const files = Array.from(this.buildMatches.keys()).filter((p) => { const base = basename9(p); if (base === "now.json" || base === "vercel.json" || base === ".nowignore" || base === ".vercelignore" || !p.startsWith(prefix)) { return false; } const rel = relative7(prefix, p); if (rel.includes("/")) { const dir = rel.split("/")[0]; if (dirs.has(dir)) { return false; } dirs.add(dir); } return true; }).map((p) => { let base = basename9(p); let ext = ""; let type = "file"; let href; const rel = relative7(prefix, p); if (rel.includes("/")) { type = "folder"; base = rel.split("/")[0]; href = `/${prefix}${base}/`; } else { ext = extname2(p).substring(1); href = `/${prefix}${base}`; } return { type, relative: href, ext, title: href, base }; }); if (files.length === 0) { return false; } const directory = `/${prefix}`; const paths = [ { name: directory, url: requestPath } ]; const directoryHtml = (0, import_directory.default)({ files, paths, directory }); this.setResponseHeaders(res, requestId); res.setHeader("Content-Type", "text/html; charset=utf-8"); res.setHeader( "Content-Length", String(Buffer.byteLength(directoryHtml, "utf8")) ); res.end(directoryHtml); return true; } async hasFilesystem(dest, vercelConfig) { if (await findBuildMatch( this.buildMatches, this.files, dest, this, vercelConfig, true )) { return true; } return false; } isCaseSensitive() { return this.caseSensitive; } async runDevCommand(forceRestart = false) { const { devCommand: devCommand2, cwd } = this; if (devCommand2 === this.currentDevCommand && !forceRestart) { return; } this.currentDevCommand = devCommand2; if (!devCommand2) { return; } if (this.devProcess) { await treeKill(this.devProcess.pid); } output_manager_default.log(`Running Dev Command ${import_chalk73.default.cyan.bold(`\u201C${devCommand2}\u201D`)}`); const port = await (0, import_get_port.default)(); const env = cloneEnv2( { // Because of child process 'pipe' below, isTTY will be false. // Most frameworks use `chalk`/`supports-color` so we enable it anyway. FORCE_COLOR: process.stdout.isTTY ? "1" : "0", // Prevent framework dev servers from automatically opening a web // browser window, since it will not be the port that `vc dev` // is listening on and thus will be missing Vercel features. BROWSER: "none" }, process.env, this.envConfigs.allEnv, { PORT: `${port}` } ); const nodeBinPaths = getNodeBinPaths({ base: this.repoRoot, start: cwd }); const nodeBinPath = nodeBinPaths.join(path8.delimiter); env.PATH = `${nodeBinPath}${path8.delimiter}${env.PATH}`; const command = devCommand2.replace(/\$PORT/g, `${port}`).replace(/%PORT%/g, `${port}`); output_manager_default.debug( `Starting dev command with parameters: ${JSON.stringify({ cwd, command, port })}` ); output_manager_default.debug(`Spawning dev command: ${command}`); const proxyPort = new RegExp(port.toString(), "g"); const p = spawnCommand(command, { stdio: ["inherit", "pipe", "pipe"], cwd, env }); this.devProcess = p; if (!p.stdout || !p.stderr) { throw new Error("Expected child process to have stdout and stderr"); } p.stderr.pipe(process.stderr); p.stdout.setEncoding("utf8"); p.stdout.on("data", (data) => { process.stdout.write(data.replace(proxyPort, this.address.port)); }); p.on("exit", (code2, signal) => { output_manager_default.debug(`Dev command exited with "${signal || code2}"`); }); p.on("close", (code2, signal) => { output_manager_default.debug(`Dev command closed with "${signal || code2}"`); this.devProcessOrigin = void 0; }); const devProcessHost = await checkForPort( port, DEV_SERVER_PORT_BIND_TIMEOUT ); this.devProcessOrigin = `http://${devProcessHost}:${port}`; } }; } }); // src/util/env/constants.ts var VERCEL_OIDC_TOKEN; var init_constants3 = __esm({ "src/util/env/constants.ts"() { "use strict"; VERCEL_OIDC_TOKEN = "VERCEL_OIDC_TOKEN"; } }); // src/util/env/refresh-oidc-token.ts import { setTimeout as setTimeout2 } from "timers/promises"; import { decodeJwt } from "jose"; import { performance as performance2 } from "perf_hooks"; function getMs(defaultValue, overrideValue) { if (overrideValue) { const result = (0, import_ms14.default)(overrideValue); if (Number.isFinite(result) && result > 0) return result; } return defaultValue; } async function* refreshOidcToken(signal, client2, projectId, envValues, source, throttleMillis) { throttleMillis ??= THROTTLE_MILLIS; let lastPulledEnvAt = clock(); let refreshCount = 0; while (!signal.aborted) { const oidcToken = envValues[VERCEL_OIDC_TOKEN]; if (!oidcToken) { output_manager_default.debug(`${VERCEL_OIDC_TOKEN} is absent; disabling refreshes`); return; } const now = clock(); let expiresAfterMillis; try { const { exp } = decodeJwt(oidcToken); expiresAfterMillis = exp !== void 0 ? exp * 1e3 - now : void 0; } catch (error3) { } if (expiresAfterMillis === void 0 || !Number.isFinite(expiresAfterMillis)) { output_manager_default.debug(`${VERCEL_OIDC_TOKEN} is invalid; disabling refreshes`); return; } if (refreshCount++ > 0 && expiresAfterMillis > 0) { yield oidcToken; } let refreshAfterMillis = Math.max( 0, expiresAfterMillis - REFRESH_BEFORE_EXPIRY_MILLIS ); if (now + refreshAfterMillis - lastPulledEnvAt < throttleMillis) { refreshAfterMillis = throttleMillis; } const expiresAfterSecs = Math.abs( Math.round(millisToSecs(expiresAfterMillis)) ); const refreshAfterSecs = Math.round(millisToSecs(refreshAfterMillis)); if (expiresAfterMillis < 0) { output_manager_default.debug( `${VERCEL_OIDC_TOKEN} expired ${expiresAfterSecs}s ago; refreshing in ${refreshAfterSecs}s` ); } else { output_manager_default.debug( `${VERCEL_OIDC_TOKEN} expires in ${expiresAfterSecs}s; refreshing in ${refreshAfterSecs}s` ); } await setTimeout2(refreshAfterMillis, void 0, { signal }); const envValuesOrNull = await pullEnvValuesUntilSuccessful( signal, client2, projectId, source, throttleMillis ); if (!envValuesOrNull) return; envValues = envValuesOrNull; lastPulledEnvAt = clock(); } } async function pullEnvValuesUntilSuccessful(signal, client2, projectId, source, millis) { while (!signal.aborted) { try { return (await pullEnvRecords(client2, projectId, source)).env; } catch (error3) { output_manager_default.debug( `Failed to pull environment; trying again in ${Math.round(millisToSecs(millis))}s` ); await setTimeout2(millis, void 0, { signal }); } } return null; } function clock() { return performance2.timeOrigin + performance2.now(); } function millisToSecs(millis) { return millis / 1e3; } var import_ms14, REFRESH_BEFORE_EXPIRY_MILLIS, THROTTLE_MILLIS; var init_refresh_oidc_token = __esm({ "src/util/env/refresh-oidc-token.ts"() { "use strict"; import_ms14 = __toESM3(require_ms(), 1); init_output_manager(); init_get_env_records(); init_constants3(); REFRESH_BEFORE_EXPIRY_MILLIS = getMs( (0, import_ms14.default)("15m"), process.env.REFRESH_VERCEL_OIDC_TOKEN_BEFORE_EXPIRY_MILLIS ); THROTTLE_MILLIS = getMs( (0, import_ms14.default)("1m"), process.env.REFRESH_VERCEL_OIDC_TOKEN_THROTTLE_MILLIS ); } }); // src/commands/dev/dev.ts import { resolve as resolve12, join as join22 } from "path"; async function dev(client2, opts, args2, telemetry2) { const [dir = "."] = args2; let cwd = resolve12(dir); const listen4 = parseListen(opts["--listen"] || "3000"); let link4 = await getLinkedProject(client2, cwd); if (link4.status === "not_linked" && !process.env.__VERCEL_SKIP_DEV_CMD) { link4 = await setupAndLink(client2, cwd, { autoConfirm: opts["--yes"], link: link4, successEmoji: "link", setupMsg: "Set up and develop" }); if (link4.status === "not_linked") { return 0; } } if (link4.status === "error") { if (link4.reason === "HEADLESS") { output_manager_default.error( `Command ${getCommandName( "dev" )} requires confirmation. Use option ${param("--yes")} to confirm.` ); } return link4.exitCode; } let projectSettings; let envValues = {}; let repoRoot; if (link4.status === "linked") { const { project, org } = link4; if (link4.repoRoot) { repoRoot = cwd = link4.repoRoot; } client2.config.currentTeam = org.type === "team" ? org.id : void 0; projectSettings = project; if (project.rootDirectory) { cwd = join22(cwd, project.rootDirectory); } envValues = (await pullEnvRecords(client2, project.id, "vercel-cli:dev")).env; } const devServer = new DevServer(cwd, { projectSettings, envValues, repoRoot }); const controller = new AbortController(); const timeout = setTimeout(async () => { if (link4.status !== "linked") return; try { let refreshCount = 0; for await (const token of refreshOidcToken( controller.signal, client2, link4.project.id, envValues, "vercel-cli:dev" )) { output_manager_default.debug(`Refreshing ${import_chalk74.default.green(VERCEL_OIDC_TOKEN)}`); envValues[VERCEL_OIDC_TOKEN] = token; await devServer.runDevCommand(true); telemetry2.trackOidcTokenRefresh(++refreshCount); } } catch (error3) { if (!(error3 instanceof Error && error3.name === "AbortError")) { throw error3; } output_manager_default.debug("OIDC token refresh was aborted"); } }); process.on("SIGTERM", () => { clearTimeout(timeout); controller.abort(); devServer.stop(); }); if (!devServer.devCommand) { const outputDir = join22(cwd, OUTPUT_DIR); if (await import_fs_extra22.default.pathExists(outputDir)) { output_manager_default.log(`Removing ${OUTPUT_DIR}`); await import_fs_extra22.default.remove(outputDir); } } try { await devServer.start(...listen4); } finally { clearTimeout(timeout); controller.abort(); } } var import_chalk74, import_fs_extra22; var init_dev = __esm({ "src/commands/dev/dev.ts"() { "use strict"; import_chalk74 = __toESM3(require_source(), 1); import_fs_extra22 = __toESM3(require_lib(), 1); init_server(); init_parse_listen(); init_link2(); init_setup_and_link(); init_pkg_name(); init_param(); init_write_build_result(); init_get_env_records(); init_output_manager(); init_refresh_oidc_token(); init_constants3(); } }); // src/util/telemetry/commands/dev/index.ts var DevTelemetryClient; var init_dev2 = __esm({ "src/util/telemetry/commands/dev/index.ts"() { "use strict"; init_telemetry(); DevTelemetryClient = class extends TelemetryClient { trackCliArgumentDir(dir) { if (dir) { this.trackCliArgument({ arg: "dir", value: this.redactedValue }); } } trackCliOptionListen(uri) { if (uri) { this.trackCliOption({ option: "listen", value: this.redactedValue }); } } trackCliOptionPort(port) { if (port) { this.trackCliOption({ option: "port", value: this.redactedValue }); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } trackCliFlagConfirm(confirm) { if (confirm) { this.trackCliFlag("confirm"); } } trackOidcTokenRefresh(count) { super.trackOidcTokenRefresh(count); } }; } }); // src/commands/dev/index.ts var dev_exports = {}; __export3(dev_exports, { default: () => main6 }); import path9 from "path"; async function main6(client2) { if (process.env.__VERCEL_DEV_RUNNING) { output_manager_default.error( `${cmd( `${packageName} dev` )} must not recursively invoke itself. Check the Development Command in the Project Settings or the ${cmd( "dev" )} script in ${cmd("package.json")}` ); output_manager_default.error( `Learn More: https://vercel.link/recursive-invocation-of-commands` ); return 1; } else { process.env.__VERCEL_DEV_RUNNING = "1"; } const { telemetryEventStore } = client2; const telemetry2 = new DevTelemetryClient({ opts: { store: telemetryEventStore } }); let parsedArgs = null; const flagsSpecification = getFlagsSpecification(devCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } telemetry2.trackCliFlagConfirm(parsedArgs.flags["--confirm"]); telemetry2.trackCliFlagYes(parsedArgs.flags["--yes"]); telemetry2.trackCliOptionPort(parsedArgs.flags["--port"]); telemetry2.trackCliOptionListen(parsedArgs.flags["--listen"]); if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("dev"); output_manager_default.print(help(devCommand, { columns: client2.stderr.columns })); return 2; } const args2 = getSubcommand(parsedArgs.args.slice(1), COMMAND_CONFIG6).args; if ("--confirm" in parsedArgs.flags) { output_manager_default.warn("`--confirm` is deprecated, please use `--yes` instead"); parsedArgs.flags["--yes"] = parsedArgs.flags["--confirm"]; } if ("--port" in parsedArgs.flags) { output_manager_default.warn("`--port` is deprecated, please use `--listen` instead"); parsedArgs.flags["--listen"] = parsedArgs.flags["--port"]; } const [passedDir] = args2; telemetry2.trackCliArgumentDir(passedDir); const dir = passedDir || process.cwd(); const vercelConfig = await readConfig(dir); if (vercelConfig instanceof Error) { output_manager_default.prettyError(vercelConfig); return 1; } const hasBuilds = vercelConfig && "builds" in vercelConfig && vercelConfig.builds && vercelConfig.builds.length > 0; if (!vercelConfig || !hasBuilds) { const pkg = await readJSONFile(path9.join(dir, "package.json")); if (pkg instanceof CantParseJSONFile) { output_manager_default.error(pkg.message); return 1; } if (/\b(now|vercel)\b\W+\bdev\b/.test(pkg?.scripts?.dev || "")) { output_manager_default.error( `${cmd( `${packageName} dev` )} must not recursively invoke itself. Check the Development Command in the Project Settings or the ${cmd( "dev" )} script in ${cmd("package.json")}` ); output_manager_default.error( `Learn More: https://vercel.link/recursive-invocation-of-commands` ); return 1; } } if (parsedArgs.args.length > 2) { output_manager_default.error(`${getCommandName(`dev [dir]`)} accepts at most one argument`); return 1; } try { return await dev(client2, parsedArgs.flags, args2, telemetry2); } catch (err) { if ((0, import_error_utils22.isErrnoException)(err) && err.code === "ENOTFOUND") { const matches = /getaddrinfo ENOTFOUND (.*)$/.exec(err.message || ""); if (matches && matches[1]) { const hostname3 = matches[1]; output_manager_default.error( `The hostname ${highlight( hostname3 )} could not be resolved. Please verify your internet connectivity and DNS configuration.` ); } if (typeof err.stack === "string") { output_manager_default.debug(err.stack); } return 1; } output_manager_default.prettyError(err); output_manager_default.debug(stringifyError(err)); return 1; } } function stringifyError(err) { if (err instanceof NowError) { const errMeta = JSON.stringify(err.meta, null, 2).replace(/\\n/g, "\n"); return `${import_chalk75.default.red(err.code)} ${err.message} ${errMeta}`; } return err.stack; } var import_chalk75, import_error_utils22, COMMAND_CONFIG6; var init_dev3 = __esm({ "src/commands/dev/index.ts"() { "use strict"; import_chalk75 = __toESM3(require_source(), 1); init_get_args(); init_get_subcommand(); init_now_error(); init_error2(); init_cmd(); init_highlight(); init_dev(); init_read_config(); init_read_json_file(); init_pkg_name(); init_errors_ts(); import_error_utils22 = __toESM3(require_dist2(), 1); init_help(); init_command9(); init_get_flags_specification(); init_output_manager(); init_dev2(); COMMAND_CONFIG6 = { dev: ["dev"] }; } }); // src/util/dns/add-dns-record.ts async function addDNSRecord(client2, domain, recordData) { try { const record = await client2.fetch( `/v3/domains/${encodeURIComponent(domain)}/records`, { body: recordData, method: "POST" } ); return record; } catch (err) { if (isAPIError(err)) { if (err.status === 400 && err.code === "invalid_type") { return new DNSInvalidType(recordData.type); } if (err.status === 400 && err.message.includes("port")) { return new DNSInvalidPort(); } if (err.status === 400) { return err; } if (err.status === 403) { return new DNSPermissionDenied(domain); } if (err.status === 404) { return new DomainNotFound(domain); } if (err.status === 409) { const { oldId = "" } = err; return new DNSConflictingRecord(oldId); } } throw err; } } var init_add_dns_record = __esm({ "src/util/dns/add-dns-record.ts"() { "use strict"; init_errors_ts(); } }); // src/util/dns/parse-add-dns-record-args.ts function parseAddArgs(args2) { if (!args2 || args2.length < 1) { return null; } const [domain, ...rest] = args2; if (domain && rest.length === 0) { return { domain, data: null }; } const name = args2[1] === "@" ? "" : args2[1].toString(); const type = args2[2]; const value = args2[3]; if (!(domain && typeof name === "string" && type)) { return null; } if (type === "MX" && args2.length === 5) { return { domain, data: { name, type, value, mxPriority: Number(args2[4]) } }; } if (type === "SRV" && args2.length === 7) { return { domain, data: { name, type, srv: { priority: Number(value), weight: Number(args2[4]), port: Number(args2[5]), target: args2[6] } } }; } if (args2.length === 4) { return { domain, data: { name, type, value } }; } return null; } var init_parse_add_dns_record_args = __esm({ "src/util/dns/parse-add-dns-record-args.ts"() { "use strict"; } }); // src/util/dns/get-dns-data.ts async function getDNSData(client2, data) { if (data) { return data; } try { const possibleTypes = new Set(RECORD_TYPES); const type = (await client2.input.text({ message: `- Record type (${RECORD_TYPES.join(", ")}): `, validate: (v) => Boolean(v && possibleTypes.has(v.trim().toUpperCase())) })).trim().toUpperCase(); const name = await getRecordName(client2, type); if (type === "SRV") { const priority = await getNumber(client2, `- ${type} priority: `); const weight = await getNumber(client2, `- ${type} weight: `); const port = await getNumber(client2, `- ${type} port: `); const target = await getTrimmedString(client2, `- ${type} target: `); output_manager_default.log( `${import_chalk76.default.cyan(name)} ${import_chalk76.default.bold(type)} ${import_chalk76.default.cyan( `${priority}` )} ${import_chalk76.default.cyan(`${weight}`)} ${import_chalk76.default.cyan(`${port}`)} ${import_chalk76.default.cyan( target )}.` ); return await verifyData(client2) ? { name, type, srv: { priority, weight, port, target } } : null; } if (type === "MX") { const mxPriority = await getNumber(client2, `- ${type} priority: `); const value2 = await getTrimmedString(client2, `- ${type} host: `); output_manager_default.log( `${import_chalk76.default.cyan(name)} ${import_chalk76.default.bold(type)} ${import_chalk76.default.cyan( `${mxPriority}` )} ${import_chalk76.default.cyan(value2)}` ); return await verifyData(client2) ? { name, type, value: value2, mxPriority } : null; } const value = await getTrimmedString(client2, `- ${type} value: `); output_manager_default.log(`${import_chalk76.default.cyan(name)} ${import_chalk76.default.bold(type)} ${import_chalk76.default.cyan(value)}`); return await verifyData(client2) ? { name, type, value } : null; } catch (error3) { return null; } } async function verifyData(client2) { return client2.input.confirm("Is this correct?", false); } async function getRecordName(client2, type) { const input = await client2.input.text({ message: `- ${type} name: ` }); return input === "@" ? "" : input; } async function getNumber(client2, label) { return Number( await client2.input.text({ message: label, validate: (v) => Boolean(v && Number(v)) }) ); } async function getTrimmedString(client2, label) { const res = await client2.input.text({ message: label, validate: (v) => Boolean(v && v.trim().length > 0) }); return res.trim(); } var import_chalk76, RECORD_TYPES; var init_get_dns_data = __esm({ "src/util/dns/get-dns-data.ts"() { "use strict"; import_chalk76 = __toESM3(require_source(), 1); init_output_manager(); RECORD_TYPES = ["A", "AAAA", "ALIAS", "CAA", "CNAME", "MX", "SRV", "TXT"]; } }); // src/util/telemetry/commands/dns/add.ts var ALLOWED_RECORD_TYPES, DnsAddTelemetryClient; var init_add3 = __esm({ "src/util/telemetry/commands/dns/add.ts"() { "use strict"; init_telemetry(); ALLOWED_RECORD_TYPES = [ "A", "AAAA", "ALIAS", "CNAME", "TXT", "MX", "SRV" ]; DnsAddTelemetryClient = class extends TelemetryClient { trackCliArgumentDomain(domain) { if (domain) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } trackCliArgumentName(name) { if (name) { this.trackCliArgument({ arg: "name", value: this.redactedValue }); } } trackCliArgumentType(type) { if (type) { const allowedType = ALLOWED_RECORD_TYPES.includes(type) ? type : this.redactedValue; this.trackCliArgument({ arg: "type", value: allowedType }); } } trackCliArgumentValues(values) { if (values?.length) { this.trackCliArgument({ arg: "values", value: this.redactedValue }); } } }; } }); // src/commands/dns/add.ts async function add2(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification(addSubcommand2.options); try { parsedArgs = parseArguments(argv, flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const { args: args2 } = parsedArgs; const parsedParams = parseAddArgs(args2); if (!parsedParams) { output_manager_default.error( `Invalid number of arguments. See: ${import_chalk77.default.cyan( `${getCommandName("dns --help")}` )} for usage.` ); return 1; } const addStamp = stamp_default(); const { domain, data: argData } = parsedParams; const valueArgs = args2.slice(3); const telemetryClient = new DnsAddTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetryClient.trackCliArgumentDomain(domain); telemetryClient.trackCliArgumentName(parsedParams.data?.name); telemetryClient.trackCliArgumentType(parsedParams.data?.type); telemetryClient.trackCliArgumentValues(valueArgs); const data = await getDNSData(client2, argData); if (!data) { output_manager_default.log(`Canceled`); return 1; } const { contextName } = await getScope(client2); const record = await addDNSRecord(client2, domain, data); if (record instanceof DomainNotFound) { output_manager_default.error( `The domain ${domain} can't be found under ${import_chalk77.default.bold( contextName )} ${import_chalk77.default.gray(addStamp())}` ); return 1; } if (record instanceof DNSPermissionDenied) { output_manager_default.error( `You don't have permissions to add records to domain ${domain} under ${import_chalk77.default.bold( contextName )} ${import_chalk77.default.gray(addStamp())}` ); return 1; } if (record instanceof DNSInvalidPort) { output_manager_default.error( `Invalid parameter. A number was expected ${import_chalk77.default.gray( addStamp() )}` ); return 1; } if (record instanceof DNSInvalidType) { output_manager_default.error( `Invalid parameter "${record.meta.type}". Expected one of A, AAAA, ALIAS, CAA, CNAME, MX, SRV, TXT ${import_chalk77.default.gray( addStamp() )}` ); return 1; } if (record instanceof Error) { output_manager_default.error(record.message); return 1; } output_manager_default.success( `DNS record for domain ${import_chalk77.default.bold(domain)} ${import_chalk77.default.gray( `(${record.uid})` )} created under ${import_chalk77.default.bold(contextName)} ${import_chalk77.default.gray(addStamp())}` ); return 0; } var import_chalk77; var init_add4 = __esm({ "src/commands/dns/add.ts"() { "use strict"; import_chalk77 = __toESM3(require_source(), 1); init_errors_ts(); init_add_dns_record(); init_get_scope(); init_parse_add_dns_record_args(); init_stamp(); init_get_dns_data(); init_pkg_name(); init_output_manager(); init_add3(); init_command10(); init_get_args(); init_get_flags_specification(); init_error2(); } }); // src/util/dns/import-zonefile.ts import { readFileSync as readFileSync2 } from "fs"; import { resolve as resolve13 } from "path"; async function importZonefile(client2, contextName, domain, zonefilePath) { output_manager_default.spinner( `Importing Zone file for domain ${domain} under ${import_chalk78.default.bold(contextName)}` ); const zonefile = readFileSync2(resolve13(zonefilePath), "utf8"); try { const res = await client2.fetch( `/v3/domains/${encodeURIComponent(domain)}/records`, { headers: { "Content-Type": "text/dns" }, body: zonefile, method: "PUT", json: false } ); const { recordIds } = await res.json(); return recordIds; } catch (err) { if (isAPIError(err)) { if (err.code === "not_found") { return new DomainNotFound(domain, contextName); } if (err.code === "invalid_domain") { return new InvalidDomain(domain); } } throw err; } } var import_chalk78; var init_import_zonefile = __esm({ "src/util/dns/import-zonefile.ts"() { "use strict"; import_chalk78 = __toESM3(require_source(), 1); init_errors_ts(); init_output_manager(); } }); // src/util/telemetry/commands/dns/import.ts var DnsImportTelemetryClient; var init_import = __esm({ "src/util/telemetry/commands/dns/import.ts"() { "use strict"; init_telemetry(); DnsImportTelemetryClient = class extends TelemetryClient { trackCliArgumentDomain(domain) { if (domain) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } trackCliArgumentZonefile(path11) { if (path11) { this.trackCliArgument({ arg: "zoneFilePath", value: this.redactedValue }); } } }; } }); // src/commands/dns/import.ts async function importZone(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification(importSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const { args: args2 } = parsedArgs; const { telemetryEventStore } = client2; const { contextName } = await getScope(client2); const telemetry2 = new DnsImportTelemetryClient({ opts: { store: telemetryEventStore } }); if (args2.length !== 2) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk79.default.cyan( `${getCommandName("dns import ")}` )}` ); return 1; } const addStamp = stamp_default(); const [domain, zonefilePath] = args2; telemetry2.trackCliArgumentDomain(domain); telemetry2.trackCliArgumentZonefile(zonefilePath); const recordIds = await importZonefile( client2, contextName, domain, zonefilePath ); if (recordIds instanceof DomainNotFound) { output_manager_default.error( `The domain ${domain} can't be found under ${import_chalk79.default.bold( contextName )} ${import_chalk79.default.gray(addStamp())}` ); return 1; } if (recordIds instanceof InvalidDomain) { output_manager_default.error( `The domain ${domain} doesn't match with the one found in the Zone file ${import_chalk79.default.gray( addStamp() )}` ); return 1; } output_manager_default.success( `${recordIds.length} DNS records for domain ${import_chalk79.default.bold( domain )} created under ${import_chalk79.default.bold(contextName)} ${import_chalk79.default.gray(addStamp())}` ); return 0; } var import_chalk79; var init_import2 = __esm({ "src/commands/dns/import.ts"() { "use strict"; import_chalk79 = __toESM3(require_source(), 1); init_get_scope(); init_errors_ts(); init_stamp(); init_import_zonefile(); init_pkg_name(); init_output_manager(); init_import(); init_command10(); init_get_args(); init_get_flags_specification(); init_error2(); } }); // src/util/strlen.ts function strlen(str) { return (0, import_strip_ansi6.default)(str).length; } var import_strip_ansi6; var init_strlen = __esm({ "src/util/strlen.ts"() { "use strict"; import_strip_ansi6 = __toESM3(require_strip_ansi2(), 1); } }); // src/util/format-table.ts function formatTable(header, align, blocks) { const nrCols = header.length; const padding2 = []; let out = "\n"; for (let i = 0; i < nrCols; i++) { padding2[i] = blocks.reduce((acc, block) => { const maxLen = Math.max(...block.rows.map((row) => strlen(`${row[i]}`))); return Math.max(acc, Math.ceil(maxLen / 8)); }, 1); } for (const block of blocks) { if (block.name) { out += `${block.name} `; } const rows = [header.map((s) => import_chalk80.default.dim(s))].concat(block.rows); if (rows.length > 0) { rows[0][0] = ` ${rows[0][0]}`; for (let i = 1; i < rows.length; i++) { const row = rows[i].slice(0); row[0] = ` ${row[0]}`; for (let j = 0; j < nrCols; j++) { const col = `${row[j]}`; const al = align[j] || "l"; const repeat2 = padding2[j] > 1 ? padding2[j] * 8 - strlen(col) : 0; const pad = repeat2 > 0 ? " ".repeat(repeat2) : ""; rows[i][j] = al === "l" ? col + pad : pad + col; } } out += table(rows, { align, hsep: 4 }); } out += "\n\n"; } return out.slice(0, -1); } var import_chalk80; var init_format_table = __esm({ "src/util/format-table.ts"() { "use strict"; import_chalk80 = __toESM3(require_source(), 1); init_table(); init_strlen(); } }); // src/util/dns/get-domain-dns-records.ts async function getDomainDNSRecords(client2, domain, apiVersion = 3, nextTimestamp, limit = 20) { output_manager_default.debug(`Fetching for DNS records of domain ${domain}`); try { let url3 = `/v${apiVersion}/domains/${encodeURIComponent( domain )}/records?limit=${limit}`; if (nextTimestamp) { url3 += `&until=${nextTimestamp}`; } const data = await client2.fetch(url3); return data; } catch (err) { if (isAPIError(err) && err.code === "not_found") { return new DomainNotFound(domain); } throw err; } } var init_get_domain_dns_records = __esm({ "src/util/dns/get-domain-dns-records.ts"() { "use strict"; init_errors_ts(); init_output_manager(); } }); // src/util/domains/get-domains.ts async function getDomains(client2, next, limit = 20) { let domainUrl = `/v5/domains?limit=${limit}`; if (next) { domainUrl += `&until=${next}`; } return await client2.fetch(domainUrl); } var init_get_domains = __esm({ "src/util/domains/get-domains.ts"() { "use strict"; } }); // src/util/dns/get-dns-records.ts async function getDNSRecords(client2, contextName, next) { const { domainNames, pagination } = await getDomainNames( client2, contextName, next ); const domainsRecords = await Promise.all( domainNames.map(createGetDomainRecords(client2)) ); const onlyRecords = domainsRecords.map( (item) => item instanceof DomainNotFound ? [] : item ); return { records: onlyRecords.reduce(getAddDomainName(domainNames), []), pagination }; } function createGetDomainRecords(client2) { return async (domainName) => { const data = await getDomainDNSRecords(client2, domainName); if (data instanceof DomainNotFound) { return []; } return data.records; }; } function getAddDomainName(domainNames) { return (prev, item, idx) => [ ...prev, { domainName: domainNames[idx], records: item } ]; } async function getDomainNames(client2, contextName, next) { output_manager_default.spinner(`Fetching domains under ${import_chalk81.default.bold(contextName)}`); const { domains: domains2, pagination } = await getDomains(client2, next); return { domainNames: domains2.map((domain) => domain.name), pagination }; } var import_chalk81; var init_get_dns_records = __esm({ "src/util/dns/get-dns-records.ts"() { "use strict"; init_errors_ts(); init_get_domain_dns_records(); init_get_domains(); import_chalk81 = __toESM3(require_source(), 1); init_output_manager(); } }); // src/util/telemetry/commands/dns/ls.ts var DnsLsTelemetryClient; var init_ls4 = __esm({ "src/util/telemetry/commands/dns/ls.ts"() { "use strict"; init_telemetry(); DnsLsTelemetryClient = class extends TelemetryClient { trackCliArgumentDomain(domainName) { if (domainName) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } trackCliOptionLimit(limit) { if (limit) { this.trackCliOption({ option: "limit", value: this.redactedValue }); } } trackCliOptionNext(next) { if (next) { this.trackCliOption({ option: "next", value: this.redactedValue }); } } }; } }); // src/commands/dns/ls.ts async function ls3(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification(listSubcommand4.options); try { parsedArgs = parseArguments(argv, flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArgs; const validationResult = validateLsArgs({ commandName: "dns ls [domain]", args: args2, maxArgs: 1, exitCode: 1 }); if (validationResult !== 0) { return validationResult; } const { telemetryEventStore } = client2; const { contextName } = await getScope(client2); const telemetry2 = new DnsLsTelemetryClient({ opts: { store: telemetryEventStore } }); const [domainName] = args2; const lsStamp = stamp_default(); telemetry2.trackCliArgumentDomain(domainName); telemetry2.trackCliOptionLimit(opts["--limit"]); telemetry2.trackCliOptionNext(opts["--next"]); let paginationOptions; try { paginationOptions = getPaginationOpts(opts); } catch (err) { output_manager_default.prettyError(err); return 1; } if (domainName) { const data = await getDomainDNSRecords( client2, domainName, 4, ...paginationOptions ); if (data instanceof DomainNotFound) { output_manager_default.error( `The domain ${domainName} can't be found under ${import_chalk82.default.bold( contextName )} ${import_chalk82.default.gray(lsStamp())}` ); return 1; } const { records, pagination: pagination2 } = data; output_manager_default.log( `${records.length > 0 ? "Records" : "No records"} found under ${import_chalk82.default.bold(contextName)} ${import_chalk82.default.gray(lsStamp())}` ); client2.stdout.write(getDNSRecordsTable([{ domainName, records }])); if (pagination2 && pagination2.count === 20) { const flags = getCommandFlags(opts, ["_", "--next"]); output_manager_default.log( `To display the next page run ${getCommandName( `dns ls ${domainName}${flags} --next ${pagination2.next}` )}` ); } return 0; } const { records: dnsRecords, pagination } = await getDNSRecords( client2, contextName, ...paginationOptions ); const nRecords = dnsRecords.reduce((p, r) => r.records.length + p, 0); output_manager_default.log( `${nRecords > 0 ? "Records" : "No records"} found under ${import_chalk82.default.bold( contextName )} ${import_chalk82.default.gray(lsStamp())}` ); output_manager_default.log(getDNSRecordsTable(dnsRecords)); if (pagination && pagination.count === 20) { const flags = getCommandFlags(opts, ["_", "--next"]); output_manager_default.log( `To display the next page run ${getCommandName( `dns ls${flags} --next ${pagination.next}` )}` ); } return 0; } function getDNSRecordsTable(dnsRecords) { return formatTable( ["", "id", "name", "type", "value", "created"], ["l", "r", "l", "l", "l", "l"], dnsRecords.map(({ domainName, records }) => ({ name: import_chalk82.default.bold(domainName), rows: records.map(getDNSRecordRow) })) ); } function getDNSRecordRow(record) { const isSystemRecord = record.creator === "system"; const createdAt = `${(0, import_ms15.default)( Date.now() - new Date(Number(record.createdAt)).getTime() )} ago`; const priority = record.mxPriority || record.priority || null; return [ "", !isSystemRecord ? record.id : "", record.name, record.type, priority ? `${priority} ${record.value}` : record.value, import_chalk82.default.gray(isSystemRecord ? "default" : createdAt) ]; } var import_chalk82, import_ms15; var init_ls5 = __esm({ "src/commands/dns/ls.ts"() { "use strict"; import_chalk82 = __toESM3(require_source(), 1); import_ms15 = __toESM3(require_ms(), 1); init_errors_ts(); init_format_table(); init_get_dns_records(); init_get_domain_dns_records(); init_get_scope(); init_get_pagination_opts(); init_stamp(); init_get_command_flags(); init_pkg_name(); init_output_manager(); init_ls4(); init_command10(); init_get_args(); init_get_flags_specification(); init_error2(); init_validate_ls_args(); } }); // src/util/dns/delete-dns-record-by-id.ts async function deleteDNSRecordById(client2, domain, recordId) { return client2.fetch( `/v3/domains/${encodeURIComponent(domain)}/records/${recordId}`, { method: "DELETE" } ); } var init_delete_dns_record_by_id = __esm({ "src/util/dns/delete-dns-record-by-id.ts"() { "use strict"; } }); // src/util/dns/get-dns-record-by-id.ts async function getDNSRecordById(client2, id) { return client2.fetch(`/v5/domains/records/${id}`); } var init_get_dns_record_by_id = __esm({ "src/util/dns/get-dns-record-by-id.ts"() { "use strict"; } }); // src/util/telemetry/commands/dns/rm.ts var DnsRmTelemetryClient; var init_rm3 = __esm({ "src/util/telemetry/commands/dns/rm.ts"() { "use strict"; init_telemetry(); DnsRmTelemetryClient = class extends TelemetryClient { trackCliArgumentId(recordId) { if (recordId) { this.trackCliArgument({ arg: "recordId", value: this.redactedValue }); } } }; } }); // src/commands/dns/rm.ts async function rm3(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification(removeSubcommand3.options); try { parsedArgs = parseArguments(argv, flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const { args: args2 } = parsedArgs; const { telemetryEventStore } = client2; const telemetry2 = new DnsRmTelemetryClient({ opts: { store: telemetryEventStore } }); await getScope(client2); const [recordId] = args2; if (args2.length !== 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk83.default.cyan( `${getCommandName("dns rm ")}` )}` ); return 1; } telemetry2.trackCliArgumentId(recordId); const record = await getDNSRecordById(client2, recordId); if (!record) { output_manager_default.error("DNS record not found"); return 1; } const { domain: domainName } = record; const yes = await readConfirmation2( client2, "The following record will be removed permanently", domainName, record ); if (!yes) { output_manager_default.error(`User canceled.`); return 0; } const rmStamp = stamp_default(); await deleteDNSRecordById(client2, domainName, record.id); output_manager_default.success( `Record ${import_chalk83.default.gray(`${record.id}`)} removed ${import_chalk83.default.gray(rmStamp())}` ); return 0; } function readConfirmation2(client2, msg, domainName, record) { return new Promise((resolve14) => { output_manager_default.log(msg); output_manager_default.print( `${table([getDeleteTableRow(domainName, record)], { align: ["l", "r", "l"], hsep: 6 }).replace(/^(.*)/gm, " $1")} ` ); output_manager_default.print( `${import_chalk83.default.bold.red("> Are you sure?")} ${import_chalk83.default.gray("(y/N) ")}` ); client2.stdin.on("data", (d) => { process.stdin.pause(); resolve14(d.toString().trim().toLowerCase() === "y"); }).resume(); }); } function getDeleteTableRow(domainName, record) { const recordName = `${record.name.length > 0 ? `${record.name}.` : ""}${domainName}`; return [ record.id, import_chalk83.default.bold( `${recordName} ${record.type} ${record.value} ${record.mxPriority || ""}` ), import_chalk83.default.gray( `${(0, import_ms16.default)(Date.now() - new Date(Number(record.createdAt)).getTime())} ago` ) ]; } var import_chalk83, import_ms16; var init_rm4 = __esm({ "src/commands/dns/rm.ts"() { "use strict"; import_chalk83 = __toESM3(require_source(), 1); import_ms16 = __toESM3(require_ms(), 1); init_table(); init_delete_dns_record_by_id(); init_get_dns_record_by_id(); init_get_scope(); init_stamp(); init_pkg_name(); init_output_manager(); init_rm3(); init_command10(); init_get_args(); init_get_flags_specification(); init_error2(); } }); // src/util/telemetry/commands/dns/index.ts var DnsTelemetryClient; var init_dns = __esm({ "src/util/telemetry/commands/dns/index.ts"() { "use strict"; init_telemetry(); DnsTelemetryClient = class extends TelemetryClient { trackCliSubcommandAdd(actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "remove", value: actual }); } trackCliSubcommandImport(actual) { this.trackCliSubcommand({ subcommand: "import", value: actual }); } trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } }; } }); // src/commands/dns/index.ts var dns_exports = {}; __export3(dns_exports, { default: () => dns }); async function dns(client2) { const { telemetryEventStore } = client2; let parsedArgs; const flagsSpecification = getFlagsSpecification(dnsCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const telemetry2 = new DnsTelemetryClient({ opts: { store: telemetryEventStore } }); const { subcommand, subcommandOriginal, args: args2 } = getSubcommand( parsedArgs.args.slice(1), COMMAND_CONFIG7 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("dns", subcommand); output_manager_default.print(help(dnsCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: dnsCommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "add": if (needHelp) { telemetry2.trackCliFlagHelp("dns", subcommandOriginal); printHelp(addSubcommand2); return 2; } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return add2(client2, args2); case "import": if (needHelp) { telemetry2.trackCliFlagHelp("dns", subcommandOriginal); printHelp(importSubcommand); return 2; } telemetry2.trackCliSubcommandImport(subcommandOriginal); return importZone(client2, args2); case "rm": if (needHelp) { telemetry2.trackCliFlagHelp("dns", subcommandOriginal); printHelp(removeSubcommand3); return 2; } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return rm3(client2, args2); default: if (needHelp) { telemetry2.trackCliFlagHelp("dns", subcommandOriginal); printHelp(listSubcommand4); return 2; } telemetry2.trackCliSubcommandList(subcommandOriginal); return ls3(client2, args2); } } var COMMAND_CONFIG7; var init_dns2 = __esm({ "src/commands/dns/index.ts"() { "use strict"; init_get_args(); init_get_subcommand(); init_error2(); init_add4(); init_import2(); init_ls5(); init_rm4(); init_command10(); init_help(); init_get_flags_specification(); init_output_manager(); init_dns(); init_commands(); COMMAND_CONFIG7 = { add: getCommandAliases(addSubcommand2), import: getCommandAliases(importSubcommand), ls: getCommandAliases(listSubcommand4), rm: getCommandAliases(removeSubcommand3) }; } }); // src/util/output/chars.ts var chars, chars_default; var init_chars = __esm({ "src/util/output/chars.ts"() { "use strict"; chars = { tick: process.platform === "win32" ? "\u221A" : "\u2714", cross: process.platform === "win32" ? "\u2613" : "\u2718" }; chars_default = chars; } }); // src/util/format-ns-table.ts function formatNSTable(intendedNameservers, currentNameservers, { extraSpace = "" } = {}) { const sortedIntended = intendedNameservers.sort(); const sortedCurrent = currentNameservers.sort(); const maxLength = Math.max( intendedNameservers.length, currentNameservers.length ); const rows = []; for (let i = 0; i < maxLength; i++) { rows.push([ sortedIntended[i] || import_chalk84.default.gray("-"), sortedCurrent[i] || import_chalk84.default.gray("-"), sortedIntended[i] === sortedCurrent[i] ? import_chalk84.default.green(chars_default.tick) : import_chalk84.default.red(chars_default.cross) ]); } return table( [ [ import_chalk84.default.gray("Intended Nameservers"), import_chalk84.default.gray("Current Nameservers"), "" ], ...rows ], { hsep: 4 } ).replace(/^(.*)/gm, `${extraSpace}$1`); } var import_chalk84; var init_format_ns_table = __esm({ "src/util/format-ns-table.ts"() { "use strict"; import_chalk84 = __toESM3(require_source(), 1); init_table(); init_chars(); } }); // src/util/domains/is-public-suffix.ts function isPublicSuffix(domainName) { return domainName.endsWith(".vercel.app") || domainName.endsWith(".now.sh"); } var init_is_public_suffix = __esm({ "src/util/domains/is-public-suffix.ts"() { "use strict"; } }); // src/util/domains/get-domain-config.ts async function getDomainConfig(client2, domainName) { try { const config2 = await client2.fetch( `/v4/domains/${domainName}/config` ); return config2; } catch (err) { if (isAPIError(err) && err.status < 500) { return err; } throw err; } } var init_get_domain_config = __esm({ "src/util/domains/get-domain-config.ts"() { "use strict"; init_errors_ts(); } }); // src/util/projects/add-domain-to-project.ts async function addDomainToProject(client2, projectNameOrId, domain) { output_manager_default.spinner( `Adding domain ${domain} to project ${import_chalk85.default.bold(projectNameOrId)}` ); try { const response = await client2.fetch( `/projects/${encodeURIComponent(projectNameOrId)}/alias`, { method: "POST", body: JSON.stringify({ target: "PRODUCTION", domain }) } ); const aliasTarget = response.find( (aliasTarget2) => aliasTarget2.domain === domain ); if (!aliasTarget) { throw new Error( `Unexpected error when adding the domain "${domain}" to project "${projectNameOrId}".` ); } return aliasTarget; } catch (err) { if (isAPIError(err) && err.status < 500) { return err; } throw err; } } var import_chalk85; var init_add_domain_to_project = __esm({ "src/util/projects/add-domain-to-project.ts"() { "use strict"; import_chalk85 = __toESM3(require_source(), 1); init_errors_ts(); init_output_manager(); } }); // src/util/projects/remove-domain-from-project.ts async function removeDomainFromProject(client2, projectNameOrId, domain) { output_manager_default.spinner( `Removing domain ${domain} from project ${import_chalk86.default.bold(projectNameOrId)}` ); try { const response = await client2.fetch( `/projects/${encodeURIComponent( projectNameOrId )}/alias?domain=${encodeURIComponent(domain)}`, { method: "DELETE" } ); return response; } catch (err) { if (isAPIError(err) && err.status < 500) { return err; } throw err; } } var import_chalk86; var init_remove_domain_from_project = __esm({ "src/util/projects/remove-domain-from-project.ts"() { "use strict"; import_chalk86 = __toESM3(require_source(), 1); init_errors_ts(); init_output_manager(); } }); // src/util/telemetry/commands/domains/add.ts var DomainsAddTelemetryClient; var init_add5 = __esm({ "src/util/telemetry/commands/domains/add.ts"() { "use strict"; init_telemetry(); DomainsAddTelemetryClient = class extends TelemetryClient { trackCliFlagForce(force) { if (force) { this.trackCliFlag("force"); } } trackCliArgumentDomain(domainName) { if (domainName) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } trackCliArgumentProject(projectName) { if (projectName) { this.trackCliArgument({ arg: "project", value: this.redactedValue }); } } }; } }); // src/commands/domains/add.ts async function add3(client2, argv) { const telemetry2 = new DomainsAddTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(addSubcommand3.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2, flags: opts } = parsedArgs; const force = opts["--force"]; telemetry2.trackCliFlagForce(force); const { contextName } = await getScope(client2); const project = await getLinkedProject(client2).then((result) => { if (result.status === "linked") { return result.project; } return null; }); if (project && args2.length !== 1) { output_manager_default.error( `${getCommandName("domains add ")} expects one argument.` ); return 1; } if (!project && args2.length !== 2) { output_manager_default.error( `${getCommandName( "domains add " )} expects two arguments.` ); return 1; } const domainName = String(args2[0]); const projectName = project ? project.name : String(args2[1]); telemetry2.trackCliArgumentDomain(domainName); telemetry2.trackCliArgumentProject(args2[1]); const addStamp = stamp_default(); let aliasTarget = await addDomainToProject(client2, projectName, domainName); if (aliasTarget instanceof Error) { if (aliasTarget instanceof APIError && aliasTarget.code === "ALIAS_DOMAIN_EXIST" && aliasTarget.project && aliasTarget.project.id) { if (force) { const removeResponse = await removeDomainFromProject( client2, aliasTarget.project.id, domainName ); if (removeResponse instanceof Error) { output_manager_default.prettyError(removeResponse); return 1; } aliasTarget = await addDomainToProject(client2, projectName, domainName); } } if (aliasTarget instanceof Error) { output_manager_default.prettyError(aliasTarget); return 1; } } output_manager_default.success( `Domain ${import_chalk87.default.bold(domainName)} added to project ${import_chalk87.default.bold( projectName )}. ${addStamp()}` ); if (isPublicSuffix(domainName)) { output_manager_default.log( "The domain will automatically get assigned to your latest production deployment." ); return 0; } const domainResponse = await getDomain(client2, contextName, domainName); if (domainResponse instanceof Error) { output_manager_default.prettyError(domainResponse); return 1; } const domainConfig = await getDomainConfig(client2, domainName); if (domainConfig.misconfigured) { output_manager_default.warn( "This domain is not configured properly. To configure it you should either:" ); output_manager_default.print( ` ${import_chalk87.default.grey("a)")} Set the following record on your DNS provider to continue: ${code(`A ${domainName} 76.76.21.21`)} ${import_chalk87.default.grey("[recommended]")} ` ); output_manager_default.print( ` ${import_chalk87.default.grey("b)")} Change your Domains's nameservers to the intended set` ); output_manager_default.print( ` ${formatNSTable( domainResponse.intendedNameservers, domainResponse.nameservers, { extraSpace: " " } )} ` ); output_manager_default.print( " We will run a verification for you and you will receive an email upon completion.\n" ); output_manager_default.print(" Read more: https://vercel.link/domain-configuration\n\n"); } else { output_manager_default.log( "The domain will automatically get assigned to your latest production deployment." ); } return 0; } var import_chalk87; var init_add6 = __esm({ "src/commands/domains/add.ts"() { "use strict"; import_chalk87 = __toESM3(require_source(), 1); init_errors_ts(); init_format_ns_table(); init_get_scope(); init_stamp(); init_pkg_name(); init_get_domain(); init_link2(); init_is_public_suffix(); init_get_domain_config(); init_add_domain_to_project(); init_remove_domain_from_project(); init_code(); init_output_manager(); init_add5(); init_command11(); init_get_args(); init_get_flags_specification(); init_error2(); } }); // src/util/telemetry/commands/domains/buy.ts var DomainsBuyTelemetryClient; var init_buy = __esm({ "src/util/telemetry/commands/domains/buy.ts"() { "use strict"; init_telemetry(); DomainsBuyTelemetryClient = class extends TelemetryClient { trackCliArgumentDomain(v) { if (v) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } }; } }); // src/commands/domains/buy.ts async function buy(client2, argv) { const telemetry2 = new DomainsBuyTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(buySubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2 } = parsedArgs; const [domainName] = args2; const skipConfirmation = !!process.env.CI; telemetry2.trackCliArgumentDomain(domainName); if (!domainName) { output_manager_default.error( `Missing domain name. Run ${getCommandName(`domains --help`)}` ); return 1; } const { contextName } = await getScope(client2); const parsedDomain = (0, import_tldts6.parse)(domainName); const { domain: rootDomain, subdomain } = parsedDomain; if (subdomain || !rootDomain) { output_manager_default.error( `Invalid domain name "${domainName}". Run ${getCommandName( `domains --help` )}` ); return 1; } const availableStamp = stamp_default(); const domainPrice = await getDomainPrice(client2, domainName); if (domainPrice instanceof Error) { output_manager_default.prettyError(domainPrice); return 1; } const { years, purchasePrice, renewalPrice } = domainPrice; if (purchasePrice === null || renewalPrice === null) { output_manager_default.error("Domain price not found"); return 1; } if (!(await getDomainStatus(client2, domainName)).available) { output_manager_default.error( `The domain ${param(domainName)} is ${import_chalk88.default.underline( "unavailable" )}! ${availableStamp()}` ); return 1; } output_manager_default.log( `The domain ${param(domainName)} is ${import_chalk88.default.underline( "available" )} to buy under ${import_chalk88.default.bold(contextName)}! ${availableStamp()}` ); if (skipConfirmation) { output_manager_default.error( "Domain purchase in CI mode is not supported. Please run this command interactively to provide contact information." ); return 1; } if (!await client2.input.confirm( `Buy now for ${import_chalk88.default.bold(`$${purchasePrice}`)} (${`${years}yr${years > 1 ? "s" : ""}`})?`, false )) { return 0; } const autoRenew = await client2.input.confirm( years === 1 ? `Auto renew yearly for ${import_chalk88.default.bold(`$${renewalPrice}`)}?` : `Auto renew every ${years} years for ${import_chalk88.default.bold( `$${renewalPrice}` )}?`, true ); const contactInformation = await collectContactInformation(client2); let buyResult; const purchaseStamp = stamp_default(); output_manager_default.spinner("Purchasing"); try { buyResult = await purchaseDomain( client2, domainName, purchasePrice, years, autoRenew, contactInformation ); } catch (err) { output_manager_default.error( "An unexpected error occurred while purchasing your domain. Please try again later." ); output_manager_default.debug(`Server response: ${(0, import_error_utils23.errorToString)(err)}`); return 1; } output_manager_default.stopSpinner(); if (buyResult instanceof UnsupportedTLD) { output_manager_default.error( `The TLD for domain name ${buyResult.meta.domain} is not supported.` ); return 1; } if (buyResult instanceof TLDNotSupportedViaCLI) { output_manager_default.error( `Purchased for the TLD for domain name ${buyResult.meta.domain} are not supported via the CLI. Use the REST API or the dashboard to purchase.` ); return 1; } if (buyResult instanceof InvalidDomain) { output_manager_default.error(`The domain ${buyResult.meta.domain} is not valid.`); return 1; } if (buyResult instanceof DomainNotAvailable) { output_manager_default.error(`The domain ${buyResult.meta.domain} is not available.`); return 1; } if (buyResult instanceof UnexpectedDomainPurchaseError) { output_manager_default.error(`An unexpected error happened while performing the purchase.`); return 1; } if (buyResult instanceof DomainPaymentError) { output_manager_default.error(`Your card was declined.`); return 1; } output_manager_default.success(`Domain ${param(domainName)} purchased ${purchaseStamp()}`); output_manager_default.note( `You may now use your domain as an alias to your deployments. Run ${getCommandName( `alias --help` )}` ); return 0; } var import_chalk88, import_tldts6, import_error_utils23; var init_buy2 = __esm({ "src/commands/domains/buy.ts"() { "use strict"; import_chalk88 = __toESM3(require_source(), 1); import_tldts6 = __toESM3(require_cjs7(), 1); import_error_utils23 = __toESM3(require_dist2(), 1); init_errors_ts(); init_get_domain_price(); init_get_domain_status(); init_get_scope(); init_param(); init_purchase_domain(); init_stamp(); init_pkg_name(); init_output_manager(); init_buy(); init_command11(); init_get_args(); init_get_flags_specification(); init_error2(); init_collect_contact_information(); } }); // src/util/domains/transfer-in-domain.ts async function transferInDomain(client2, name, authCode, expectedPrice, years) { const { team } = await getScope(client2); const teamParam = team ? `?teamId=${team.slug}` : ""; try { const { orderId } = await client2.fetch( `/v1/registrar/domains/${name}/transfer${teamParam}`, { body: { authCode, autoRenew: true, years, expectedPrice, contactInformation: { firstName: "Vercel", lastName: "Whois", email: "domains@registrar.vercel.com", phone: "+14153985463", address1: "100 First Street, Suite 2400", city: "San Fransisco", state: "CA", zip: "94105", country: "US", companyName: "Vercel Inc." } }, method: "POST" } ); const order = await pollForOrder(client2, orderId); if (order === null) { return new UnexpectedDomainTransferError(name); } if (order.status === "completed") { const domain = order.domains.find((domain2) => domain2.domainName === name); if (domain?.status === "completed") { return { ok: true }; } } if (order.error?.code === "payment_failed") { return new DomainPaymentError(); } return new UnexpectedDomainTransferError(name); } catch (err) { if (isAPIError(err)) { if (err.code === "invalid_name") { return new InvalidDomain(name); } if (err.code === "tld_not_supported") { return new UnsupportedTLD(name); } if (err.code === "domain_not_available") { return new DomainNotAvailable(name); } } throw err; } } var init_transfer_in_domain = __esm({ "src/util/domains/transfer-in-domain.ts"() { "use strict"; init_errors_ts(); init_get_scope(); init_get_order(); } }); // src/util/domains/get-auth-code.ts async function getAuthCode(client2, code2) { if (isValidAuthCode(code2)) { return code2; } return client2.input.text({ message: `- Transfer auth code: `, validate: isValidAuthCode }); } function isValidAuthCode(code2) { return !!(code2 && code2.length > 0); } var init_get_auth_code = __esm({ "src/util/domains/get-auth-code.ts"() { "use strict"; } }); // src/util/is-root-domain.ts function isRootDomain(domainName) { const parsedDomain = (0, import_tldts7.parse)(domainName); const { domain: rootDomain, subdomain } = parsedDomain; return Boolean(!subdomain && rootDomain); } var import_tldts7; var init_is_root_domain = __esm({ "src/util/is-root-domain.ts"() { "use strict"; import_tldts7 = __toESM3(require_cjs7(), 1); } }); // src/util/telemetry/commands/domains/transfer-in.ts var DomainsTransferInTelemetryClient; var init_transfer_in = __esm({ "src/util/telemetry/commands/domains/transfer-in.ts"() { "use strict"; init_telemetry(); DomainsTransferInTelemetryClient = class extends TelemetryClient { trackCliOptionCode(code2) { if (code2) { this.trackCliOption({ option: "code", value: this.redactedValue }); } } trackCliArgumentDomain(domainName) { if (domainName) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } }; } }); // src/commands/domains/transfer-in.ts async function transferIn(client2, argv) { const telemetry2 = new DomainsTransferInTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification( transferInSubcommand.options ); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2, flags: opts } = parsedArgs; telemetry2.trackCliOptionCode(opts["--code"]); const [domainName] = args2; if (!domainName) { output_manager_default.error( `Missing domain name. Run ${getCommandName(`domains --help`)}` ); return 1; } telemetry2.trackCliArgumentDomain(domainName); if (!isRootDomain(domainName)) { output_manager_default.error( `Invalid domain name ${param(domainName)}. Run ${getCommandName( `domains --help` )}` ); return 1; } const availableStamp = stamp_default(); const domainPrice = await getDomainPrice(client2, domainName); if (domainPrice instanceof Error) { output_manager_default.prettyError(domainPrice); return 1; } const { transferPrice, years } = domainPrice; if (transferPrice === null) { output_manager_default.error(`The domain ${param(domainName)} is not transferable.`); return 1; } const { contextName } = await getScope(client2); output_manager_default.log( `The domain ${param(domainName)} is ${import_chalk89.default.underline( "available" )} to transfer under ${import_chalk89.default.bold(contextName)}! ${availableStamp()}` ); const authCode = await getAuthCode(client2, opts["--code"]); const shouldTransfer = await client2.input.confirm( `Transfer now with 1yr renewal for ${import_chalk89.default.bold(`$${transferPrice}`)}?`, false ); if (!shouldTransfer) { return 0; } const transferStamp = stamp_default(); output_manager_default.spinner(`Initiating transfer for domain ${domainName}`); const transferInResult = await transferInDomain( client2, domainName, authCode, transferPrice, years ); if (transferInResult instanceof InvalidDomain) { output_manager_default.error(`The domain ${transferInResult.meta.domain} is not valid.`); return 1; } if (transferInResult instanceof DomainNotAvailable) { output_manager_default.error( `The domain "${transferInResult.meta.domain}" is not transferable.` ); return 1; } if (transferInResult instanceof UnsupportedTLD) { output_manager_default.error( `The TLD for domain name ${transferInResult.meta.domain} is not supported.` ); return 1; } if (transferInResult instanceof DomainPaymentError) { output_manager_default.error(`Your card was declined.`); return 1; } if (transferInResult instanceof UnexpectedDomainTransferError) { output_manager_default.error(`An unexpected error happened while initiating the transfer.`); return 1; } output_manager_default.success( `Domain ${param(domainName)} transfer started ${transferStamp()}` ); output_manager_default.print( ` To finalize the transfer, we are waiting for approval from your current registrar. ` ); output_manager_default.print(` You will receive an email upon completion. `); output_manager_default.warn( `Once transferred, your domain ${param( domainName )} will be using Vercel DNS. ` ); output_manager_default.print( ` To transfer with previous DNS records, export the zone file from your previous registrar. ` ); output_manager_default.print(` Then import it to Vercel DNS by using: `); output_manager_default.print( ` ${getCommandName(`dns import ${domainName} `)} ` ); return 0; } var import_chalk89; var init_transfer_in2 = __esm({ "src/commands/domains/transfer-in.ts"() { "use strict"; import_chalk89 = __toESM3(require_source(), 1); init_errors_ts(); init_get_scope(); init_param(); init_transfer_in_domain(); init_stamp(); init_get_auth_code(); init_get_domain_price(); init_is_root_domain(); init_pkg_name(); init_transfer_in(); init_output_manager(); init_command11(); init_get_args(); init_get_flags_specification(); init_error2(); } }); // src/util/projects/find-projects-for-domain.ts async function findProjectsForDomain(client2, domainName) { try { const result = []; for await (const chunk of client2.fetchPaginated( "/v9/projects" )) { for (const project of chunk.projects) { if (project.targets?.production?.alias?.some?.( (alias2) => alias2.endsWith(domainName) )) { result.push(project); } } } return result; } catch (err) { if (isAPIError(err) && err.status < 500) { return err; } throw err; } } var init_find_projects_for_domain = __esm({ "src/util/projects/find-projects-for-domain.ts"() { "use strict"; init_errors_ts(); } }); // src/util/domains/get-domain-registrar.ts function getDomainRegistrar(domain) { if (domain.boughtAt) { return "Vercel"; } if (typeof domain.orderedAt === "number" && !domain.boughtAt) { return "Purchase in Process"; } return "Third Party"; } var init_get_domain_registrar = __esm({ "src/util/domains/get-domain-registrar.ts"() { "use strict"; } }); // src/util/telemetry/commands/domains/inspect.ts var DomainsInspectTelemetryClient; var init_inspect = __esm({ "src/util/telemetry/commands/domains/inspect.ts"() { "use strict"; init_telemetry(); DomainsInspectTelemetryClient = class extends TelemetryClient { trackCliArgumentDomain(name) { if (name) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } }; } }); // src/commands/domains/inspect.ts async function inspect2(client2, argv) { const telemetry2 = new DomainsInspectTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(inspectSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2 } = parsedArgs; const [domainName] = args2; const inspectStamp = stamp_default(); if (!domainName) { output_manager_default.error( `${getCommandName(`domains inspect `)} expects one argument` ); return 1; } telemetry2.trackCliArgumentDomain(domainName); if (args2.length !== 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk90.default.cyan( `${getCommandName("domains inspect ")}` )}` ); return 1; } output_manager_default.debug(`Fetching domain info`); const { contextName } = await getScope(client2); output_manager_default.spinner( `Fetching Domain ${domainName} under ${import_chalk90.default.bold(contextName)}` ); const information = await fetchInformation({ client: client2, contextName, domainName }); if (typeof information === "number") { return information; } const { domain, projects, renewalPrice, domainConfig } = information; output_manager_default.log( `Domain ${domainName} found under ${import_chalk90.default.bold(contextName)} ${import_chalk90.default.gray( inspectStamp() )}` ); output_manager_default.print("\n"); output_manager_default.print(import_chalk90.default.bold(" General\n\n")); output_manager_default.print(` ${import_chalk90.default.cyan("Name")} ${domain.name} `); output_manager_default.print( ` ${import_chalk90.default.cyan("Registrar")} ${getDomainRegistrar(domain)} ` ); output_manager_default.print( ` ${import_chalk90.default.cyan("Expiration Date")} ${formatDate(domain.expiresAt)} ` ); output_manager_default.print( ` ${import_chalk90.default.cyan("Creator")} ${domain.creator.username} ` ); output_manager_default.print( ` ${import_chalk90.default.cyan("Created At")} ${formatDate(domain.createdAt)} ` ); output_manager_default.print(` ${import_chalk90.default.cyan("Edge Network")} yes `); output_manager_default.print( ` ${import_chalk90.default.cyan("Renewal Price")} ${domain.boughtAt && renewalPrice ? `$${renewalPrice} USD` : import_chalk90.default.gray("-")} ` ); output_manager_default.print("\n"); output_manager_default.print(import_chalk90.default.bold(" Nameservers\n\n")); output_manager_default.print( `${formatNSTable(domain.intendedNameservers, domain.nameservers, { extraSpace: " " })} ` ); output_manager_default.print("\n"); if (Array.isArray(projects) && projects.length > 0) { output_manager_default.print(import_chalk90.default.bold(" Projects\n")); const table2 = formatTable( ["Project", "Domains"], ["l", "l"], [ { rows: projects.map((project) => { const name = project.name; const domains2 = (project.targets?.production?.alias || []).filter( (alias2) => alias2.endsWith(domainName) ); const cols = domains2.length ? domains2.join(", ") : "-"; return [name, cols]; }) } ] ); output_manager_default.print( table2.split("\n").map((line) => ` ${line}`).join("\n") ); output_manager_default.print("\n"); } if (domainConfig.misconfigured) { output_manager_default.warn( `This Domain is not configured properly. To configure it you should either:`, null, null, null ); output_manager_default.print( ` ${import_chalk90.default.grey("a)")} Set the following record on your DNS provider to continue: ${code(`A ${domainName} 76.76.21.21`)} ${import_chalk90.default.grey("[recommended]")} ` ); output_manager_default.print( ` ${import_chalk90.default.grey("b)")} Change your Domains's nameservers to the intended set detailed above. ` ); output_manager_default.print( ` We will run a verification for you and you will receive an email upon completion. ` ); const contextNameConst = contextName; const projectNames = Array.from( new Set(projects.map((project) => project.name)) ); if (projectNames.length) { projectNames.forEach((name, index) => { const prefix = index === 0 ? " Read more:" : " ".repeat(12); output_manager_default.print( `${prefix} https://vercel.com/${contextNameConst}/${name}/settings/domains ` ); }); } else { output_manager_default.print(` Read more: https://vercel.link/domain-configuration `); } output_manager_default.print("\n"); } return null; } async function fetchInformation({ client: client2, contextName, domainName }) { const [domain, renewalPrice] = await Promise.all([ getDomainByName(client2, contextName, domainName, { ignoreWait: true }), getDomainPrice(client2, domainName).then((res) => res instanceof Error ? null : res.renewalPrice).catch(() => null) ]); if (domain instanceof DomainNotFound) { output_manager_default.prettyError(domain); return 1; } if (domain instanceof DomainPermissionDenied) { output_manager_default.prettyError(domain); output_manager_default.log(`Run ${getCommandName(`domains ls`)} to see your domains.`); return 1; } const projects = await findProjectsForDomain(client2, domainName); if (projects instanceof Error) { output_manager_default.prettyError(projects); return 1; } const domainConfig = await getDomainConfig(client2, domainName); return { domain, projects, renewalPrice, domainConfig }; } var import_chalk90; var init_inspect2 = __esm({ "src/commands/domains/inspect.ts"() { "use strict"; import_chalk90 = __toESM3(require_source(), 1); init_errors_ts(); init_stamp(); init_format_date(); init_format_ns_table(); init_get_domain_by_name(); init_get_scope(); init_format_table(); init_find_projects_for_domain(); init_get_domain_price(); init_pkg_name(); init_get_domain_config(); init_code(); init_get_domain_registrar(); init_inspect(); init_output_manager(); init_command11(); init_get_args(); init_get_flags_specification(); init_error2(); } }); // src/util/telemetry/commands/domains/ls.ts var DomainsLsTelemetryClient; var init_ls6 = __esm({ "src/util/telemetry/commands/domains/ls.ts"() { "use strict"; init_telemetry(); DomainsLsTelemetryClient = class extends TelemetryClient { trackCliOptionLimit(limit) { if (limit) { this.trackCliOption({ option: "limit", value: this.redactedValue }); } } trackCliOptionNext(next) { if (next) { this.trackCliOption({ option: "next", value: this.redactedValue }); } } }; } }); // src/commands/domains/ls.ts async function ls4(client2, argv) { const telemetry2 = new DomainsLsTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(listSubcommand5.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2, flags: opts } = parsedArgs; const validationResult = validateLsArgs({ commandName: "domains ls", args: args2, maxArgs: 0, exitCode: 2 }); if (validationResult !== 0) { return validationResult; } telemetry2.trackCliOptionLimit(opts["--limit"]); telemetry2.trackCliOptionNext(opts["--next"]); telemetry2.trackCliOptionFormat(opts["--format"]); const formatResult = validateJsonOutput(opts); if (!formatResult.valid) { output_manager_default.error(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; let paginationOptions; try { paginationOptions = getPaginationOpts(opts); } catch (err) { output_manager_default.prettyError(err); return 1; } const { contextName } = await getScope(client2); const lsStamp = stamp_default(); output_manager_default.spinner(`Fetching Domains under ${import_chalk91.default.bold(contextName)}`); const { domains: domains2, pagination } = await getDomains( client2, ...paginationOptions ); if (asJson) { output_manager_default.stopSpinner(); const jsonOutput = { domains: domains2.map((domain) => ({ name: domain.name, registrar: getDomainRegistrar(domain), nameservers: isDomainExternal(domain) ? "external" : "vercel", expiresAt: domain.expiresAt, createdAt: domain.createdAt, creator: domain.creator.username })), pagination }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } else { output_manager_default.log( `${(0, import_pluralize10.default)("Domain", domains2.length, true)} found under ${import_chalk91.default.bold( contextName )} ${import_chalk91.default.gray(lsStamp())}` ); if (domains2.length > 0) { output_manager_default.print( formatDomainsTable(domains2).replace(/^(.*)/gm, `${" ".repeat(1)}$1`) ); output_manager_default.print("\n\n"); } if (pagination && pagination.count === 20) { const flags = getCommandFlags(opts, ["_", "--next", "--format"]); output_manager_default.log( `To display the next page, run ${getCommandName( `domains ls${flags} --next ${pagination.next}` )}` ); } } return 0; } function formatDomainsTable(domains2) { const current = Date.now(); const rows = domains2.map((domain) => { const expiration = formatDateWithoutTime(domain.expiresAt); const age = domain.createdAt ? (0, import_ms17.default)(current - domain.createdAt) : "-"; return [ domain.name, getDomainRegistrar(domain), isDomainExternal(domain) ? "Third Party" : "Vercel", expiration, domain.creator.username, import_chalk91.default.gray(age) ]; }); return formatTable( ["Domain", "Registrar", "Nameservers", "Expiration Date", "Creator", "Age"], ["l", "l", "l", "l", "l", "l"], [{ rows }] ); } var import_ms17, import_chalk91, import_pluralize10; var init_ls7 = __esm({ "src/commands/domains/ls.ts"() { "use strict"; import_ms17 = __toESM3(require_ms(), 1); import_chalk91 = __toESM3(require_source(), 1); import_pluralize10 = __toESM3(require_pluralize(), 1); init_get_domains(); init_get_scope(); init_stamp(); init_format_table(); init_format_date(); init_get_command_flags(); init_get_pagination_opts(); init_pkg_name(); init_is_domain_external(); init_get_domain_registrar(); init_output_format(); init_output_manager(); init_ls6(); init_command11(); init_get_args(); init_get_flags_specification(); init_error2(); init_validate_ls_args(); } }); // src/util/domains/remove-domain-by-name.ts async function removeDomainByName(now, contextName, domain) { try { return await now.fetch(`/v3/domains/${encodeURIComponent(domain)}`, { method: "DELETE" }); } catch (err) { if (isAPIError(err)) { if (err.code === "not_found") { return new DomainNotFound(domain); } if (err.code === "forbidden") { return new DomainPermissionDenied(domain, contextName); } if (err.code === "domain_removal_conflict") { return new DomainRemovalConflict({ aliases: err.aliases, certs: err.certs, message: err.message, pendingAsyncPurchase: err.pendingAsyncPurchase, resolvable: err.resolvable, suffix: err.suffix, transferring: err.transferring }); } } throw err; } } var init_remove_domain_by_name = __esm({ "src/util/domains/remove-domain-by-name.ts"() { "use strict"; init_errors_ts(); } }); // src/util/domains/set-custom-suffix.ts async function setCustomSuffix(client2, contextName, domain, suffix) { try { return await client2.fetch(`/v1/custom-suffix`, { method: "PATCH", body: { suffix } }); } catch (err) { if (isAPIError(err)) { if (err.code === "forbidden") { return new DomainPermissionDenied(domain, contextName); } if (err.code === "domain_external") { return new DomainExternal(domain); } if (err.code === "domain_invalid") { return new InvalidDomain(domain); } if (err.code === "domain_not_found") { return new DomainNotFound(domain); } if (err.code === "domain_not_verified") { return new DomainNotVerified(domain); } if (err.code === "domain_permission_denied") { return new DomainPermissionDenied(domain, contextName); } } throw err; } } var init_set_custom_suffix = __esm({ "src/util/domains/set-custom-suffix.ts"() { "use strict"; init_errors_ts(); } }); // src/util/telemetry/commands/domains/rm.ts var DomainsRmTelemetryClient; var init_rm5 = __esm({ "src/util/telemetry/commands/domains/rm.ts"() { "use strict"; init_telemetry(); DomainsRmTelemetryClient = class extends TelemetryClient { trackCliArgumentDomain(v) { if (v) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } trackCliFlagYes(v) { if (v) { this.trackCliFlag("yes"); } } }; } }); // src/commands/domains/rm.ts async function rm4(client2, argv) { const telemetry2 = new DomainsRmTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(removeSubcommand4.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2, flags: opts } = parsedArgs; const [domainName] = args2; telemetry2.trackCliArgumentDomain(domainName); telemetry2.trackCliFlagYes(opts["--yes"]); if (!domainName) { output_manager_default.error( `${getCommandName(`domains rm `)} expects one argument` ); return 1; } const { contextName } = await getScope(client2); if (args2.length !== 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk92.default.cyan( `${getCommandName("domains rm ")}` )}` ); return 1; } const domain = await getDomainByName(client2, contextName, domainName); if (domain instanceof DomainNotFound || domain.name !== domainName) { output_manager_default.error( `Domain not found by "${domainName}" under ${import_chalk92.default.bold(contextName)}` ); output_manager_default.log(`Run ${getCommandName(`domains ls`)} to see your domains.`); return 1; } if (domain instanceof DomainPermissionDenied) { output_manager_default.error( `You don't have access to the domain ${domainName} under ${import_chalk92.default.bold( contextName )}` ); output_manager_default.log(`Run ${getCommandName(`domains ls`)} to see your domains.`); return 1; } const projects = await findProjectsForDomain(client2, domain.name); if (Array.isArray(projects) && projects.length > 0) { output_manager_default.warn( `The domain is currently used by ${(0, import_pluralize11.default)( "project", projects.length, true )}.` ); } const skipConfirmation = opts["--yes"] || false; if (!skipConfirmation && !await client2.input.confirm( `Are you sure you want to remove ${param(domainName)}?`, false )) { output_manager_default.log("Canceled"); return 0; } return removeDomain(client2, contextName, skipConfirmation, domain); } async function removeDomain(client2, contextName, skipConfirmation, domain, aliasIds = [], certIds = [], suffix = false, attempt = 1) { const removeStamp = stamp_default(); output_manager_default.debug(`Removing domain`); for (const id of aliasIds) { output_manager_default.debug(`Removing alias ${id}`); try { await removeAliasById(client2, id); } catch (err) { if (!isAPIError(err) || err.status !== 404) { throw err; } } } for (const id of certIds) { output_manager_default.debug(`Removing cert ${id}`); try { await deleteCertById(client2, id); } catch (err) { if (!isAPIError(err) || err.status !== 404) { throw err; } } } if (suffix) { output_manager_default.debug(`Removing custom suffix`); await setCustomSuffix(client2, contextName, domain.name, null); } const removeResult = await removeDomainByName( client2, contextName, domain.name ); if (removeResult instanceof DomainNotFound) { output_manager_default.error(`Domain not found under ${import_chalk92.default.bold(contextName)}`); output_manager_default.log(`Run ${getCommandName(`domains ls`)} to see your domains.`); return 1; } if (removeResult instanceof DomainPermissionDenied) { output_manager_default.error( `You don't have permissions over domain ${import_chalk92.default.underline( removeResult.meta.domain )} under ${import_chalk92.default.bold(removeResult.meta.context)}.` ); return 1; } if (removeResult instanceof DomainRemovalConflict) { if (attempt >= 2) { output_manager_default.error(removeResult.message); return 1; } const { aliases, certs, suffix: suffix2, transferring, pendingAsyncPurchase, resolvable } = removeResult.meta; if (transferring) { output_manager_default.error( `${param( domain.name )} transfer should be declined or approved before removing.` ); return 1; } if (pendingAsyncPurchase) { output_manager_default.error( `Cannot remove ${param( domain.name )} because it is still in the process of being purchased.` ); return 1; } if (!resolvable) { output_manager_default.error(removeResult.message); return 1; } output_manager_default.log( `We found conflicts when attempting to remove ${param(domain.name)}.` ); if (aliases.length > 0) { output_manager_default.warn( `This domain's ${import_chalk92.default.bold( (0, import_pluralize11.default)("alias", aliases.length, true) )} will be removed. Run ${getCommandName(`alias ls`)} to list them.` ); } if (certs.length > 0) { output_manager_default.warn( `This domain's ${import_chalk92.default.bold( (0, import_pluralize11.default)("certificate", certs.length, true) )} will be removed. Run ${getCommandName(`cert ls`)} to list them.` ); } if (suffix2) { output_manager_default.warn( `The ${import_chalk92.default.bold(`custom suffix`)} associated with this domain.` ); } if (!skipConfirmation && !await client2.input.confirm( `Remove conflicts associated with domain?`, false )) { output_manager_default.log("Canceled"); return 0; } return removeDomain( client2, contextName, skipConfirmation, domain, aliases, certs, suffix2, attempt + 1 ); } output_manager_default.success(`Domain ${import_chalk92.default.bold(domain.name)} removed ${removeStamp()}`); return 0; } var import_chalk92, import_pluralize11; var init_rm6 = __esm({ "src/commands/domains/rm.ts"() { "use strict"; import_chalk92 = __toESM3(require_source(), 1); import_pluralize11 = __toESM3(require_pluralize(), 1); init_errors_ts(); init_delete_cert_by_id(); init_get_domain_by_name(); init_get_scope(); init_remove_alias_by_id(); init_remove_domain_by_name(); init_stamp(); init_errors_ts(); init_param(); init_set_custom_suffix(); init_find_projects_for_domain(); init_pkg_name(); init_output_manager(); init_rm5(); init_command11(); init_get_args(); init_get_flags_specification(); init_error2(); } }); // src/util/domains/move-out-domain.ts async function moveOutDomain(client2, contextName, name, destination) { try { return await client2.fetch( `/v4/domains/${encodeURIComponent(name)}`, { body: { op: "move-out", destination }, method: "PATCH" } ); } catch (err) { if (isAPIError(err)) { if (err.code === "forbidden") { return new DomainPermissionDenied(name, contextName); } if (err.code === "not_found") { return new DomainNotFound(name); } if (err.code === "invalid_move_destination") { return new InvalidMoveDestination(destination); } if (err.code === "domain_move_conflict") { const { pendingAsyncPurchase, resolvable, suffix, message: message2 } = err; return new DomainMoveConflict({ message: message2, pendingAsyncPurchase, resolvable, suffix }); } } throw err; } } var init_move_out_domain = __esm({ "src/util/domains/move-out-domain.ts"() { "use strict"; init_errors_ts(); } }); // src/util/alias/get-domain-aliases.ts async function getDomainAliases(client2, domain) { const { aliases } = await getAliases(client2); return aliases.filter((alias2) => alias2.alias.endsWith(domain)); } var init_get_domain_aliases = __esm({ "src/util/alias/get-domain-aliases.ts"() { "use strict"; init_get_aliases(); } }); // src/util/telemetry/commands/domains/move.ts var DomainsMoveTelemetryClient; var init_move = __esm({ "src/util/telemetry/commands/domains/move.ts"() { "use strict"; init_telemetry(); DomainsMoveTelemetryClient = class extends TelemetryClient { trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } trackCliArgumentDomain(domainName) { if (domainName) { this.trackCliArgument({ arg: "domain", value: this.redactedValue }); } } trackCliArgumentDestination(destination) { if (destination) { this.trackCliArgument({ arg: "destination", value: this.redactedValue }); } } }; } }); // src/commands/domains/move.ts async function move2(client2, argv) { const telemetry2 = new DomainsMoveTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(moveSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2, flags: opts } = parsedArgs; telemetry2.trackCliFlagYes(opts["--yes"]); telemetry2.trackCliArgumentDomain(args2[0]); telemetry2.trackCliArgumentDestination(args2[1]); const { contextName, user } = await getScope(client2); const { domainName, destination } = await getArgs2(client2, args2); if (!isRootDomain(domainName)) { output_manager_default.error( `Invalid domain name "${domainName}". Run ${getCommandName( `domains --help` )}` ); return 1; } const domain = await getDomainByName(client2, contextName, domainName); if (domain instanceof DomainNotFound) { output_manager_default.error(`Domain not found under ${import_chalk93.default.bold(contextName)}`); output_manager_default.log(`Run ${getCommandName(`domains ls`)} to see your domains.`); return 1; } if (domain instanceof DomainPermissionDenied) { output_manager_default.error( `You don't have permissions over domain ${import_chalk93.default.underline( domain.meta.domain )} under ${import_chalk93.default.bold(domain.meta.context)}.` ); return 1; } const teams2 = await getTeams(client2); const matchId = await findDestinationMatch(destination, user, teams2); if (matchId && matchId === user.id && user.version === "northstar") { output_manager_default.error(`You may not move your domain to your user account.`); return 1; } if (!matchId && !opts["--yes"]) { output_manager_default.warn( `You're not a member of ${param(destination)}. ${param( destination )} will have 24 hours to accept your move request before it expires.` ); if (!await client2.input.confirm( `Are you sure you want to move ${param(domainName)} to ${param( destination )}?`, false )) { output_manager_default.log("Canceled"); return 0; } } if (!opts["--yes"]) { const aliases = await getDomainAliases(client2, domainName); if (aliases.length > 0) { output_manager_default.warn( `This domain's ${import_chalk93.default.bold( (0, import_pluralize12.default)("alias", aliases.length, true) )} will be removed. Run ${getCommandName(`alias ls`)} to list them.` ); if (!await client2.input.confirm( `Are you sure you want to move ${param(domainName)}?`, false )) { output_manager_default.log("Canceled"); return 0; } } } const context = contextName; output_manager_default.spinner("Moving"); const moveTokenResult = await moveOutDomain( client2, context, domainName, matchId || destination ); if (moveTokenResult instanceof DomainMoveConflict) { const { suffix, pendingAsyncPurchase } = moveTokenResult.meta; if (suffix) { output_manager_default.error( `Please remove custom suffix for ${param(domainName)} before moving out` ); return 1; } if (pendingAsyncPurchase) { output_manager_default.error( `Cannot remove ${param( domain.name )} because it is still in the process of being purchased.` ); return 1; } output_manager_default.error(moveTokenResult.message); return 1; } if (moveTokenResult instanceof DomainNotFound) { output_manager_default.error(`Domain not found under ${import_chalk93.default.bold(contextName)}`); output_manager_default.log(`Run ${getCommandName(`domains ls`)} to see your domains.`); return 1; } if (moveTokenResult instanceof DomainPermissionDenied) { output_manager_default.error( `You don't have permissions over domain ${import_chalk93.default.underline( moveTokenResult.meta.domain )} under ${import_chalk93.default.bold(moveTokenResult.meta.context)}.` ); return 1; } if (moveTokenResult instanceof InvalidMoveDestination) { output_manager_default.error( `Destination ${import_chalk93.default.bold( destination )} is invalid. Please supply a valid username, email, team slug, user id, or team id.` ); return 1; } const { moved } = moveTokenResult; if (moved) { output_manager_default.success(`${param(domainName)} was moved to ${param(destination)}.`); } else { output_manager_default.success( `Sent ${param(destination)} an email to approve the ${param( domainName )} move request.` ); } return 0; } async function getArgs2(client2, args2) { let [domainName, destination] = args2; if (!domainName) { domainName = await client2.input.text({ message: `- Domain name: `, validate: isRootDomain }); } if (!destination) { destination = await client2.input.text({ message: `- Destination: `, validate: (v) => Boolean(v && v.length > 0) }); } return { domainName, destination }; } async function findDestinationMatch(destination, user, teams2) { if (user.id === destination || user.username === destination) { return user.id; } for (const team of teams2) { if (team.id === destination || team.slug === destination) { return team.id; } } return null; } var import_chalk93, import_pluralize12; var init_move2 = __esm({ "src/commands/domains/move.ts"() { "use strict"; import_chalk93 = __toESM3(require_source(), 1); import_pluralize12 = __toESM3(require_pluralize(), 1); init_errors_ts(); init_get_scope(); init_move_out_domain(); init_is_root_domain(); init_param(); init_get_domain_aliases(); init_get_domain_by_name(); init_get_teams(); init_pkg_name(); init_output_manager(); init_move(); init_command11(); init_get_args(); init_get_flags_specification(); init_error2(); } }); // src/util/telemetry/commands/domains/index.ts var DomainsTelemetryClient; var init_domains = __esm({ "src/util/telemetry/commands/domains/index.ts"() { "use strict"; init_telemetry(); DomainsTelemetryClient = class extends TelemetryClient { trackCliSubcommandAdd(actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } trackCliSubcommandInspect(actual) { this.trackCliSubcommand({ subcommand: "inspect", value: actual }); } trackCliSubcommandMove(actual) { this.trackCliSubcommand({ subcommand: "move", value: actual }); } trackCliSubcommandBuy(actual) { this.trackCliSubcommand({ subcommand: "buy", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "remove", value: actual }); } trackCliSubcommandTransferIn(actual) { this.trackCliSubcommand({ subcommand: "transfer-in", value: actual }); } trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } }; } }); // src/commands/domains/index.ts var domains_exports = {}; __export3(domains_exports, { default: () => main7 }); async function main7(client2) { let parsedArgs; const flagsSpecification = getFlagsSpecification(domainsCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (error3) { printError(error3); return 1; } const telemetry2 = new DomainsTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const { subcommand, args: args2, subcommandOriginal } = getSubcommand( parsedArgs.args.slice(1), COMMAND_CONFIG8 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("domains"); output_manager_default.print(help(domainsCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: domainsCommand, columns: client2.stderr.columns }) ); return 2; } switch (subcommand) { case "add": if (needHelp) { telemetry2.trackCliFlagHelp("domains", subcommandOriginal); return printHelp(addSubcommand3); } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return add3(client2, args2); case "inspect": if (needHelp) { telemetry2.trackCliFlagHelp("domains", subcommandOriginal); return printHelp(inspectSubcommand); } telemetry2.trackCliSubcommandInspect(subcommandOriginal); return inspect2(client2, args2); case "move": if (needHelp) { telemetry2.trackCliFlagHelp("domains", subcommandOriginal); return printHelp(moveSubcommand); } telemetry2.trackCliSubcommandMove(subcommandOriginal); return move2(client2, args2); case "buy": if (needHelp) { telemetry2.trackCliFlagHelp("domains", subcommandOriginal); return printHelp(buySubcommand); } telemetry2.trackCliSubcommandBuy(subcommandOriginal); return buy(client2, args2); case "rm": if (needHelp) { telemetry2.trackCliFlagHelp("domains", subcommandOriginal); return printHelp(removeSubcommand4); } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return rm4(client2, args2); case "transferIn": if (needHelp) { telemetry2.trackCliFlagHelp("domains", subcommandOriginal); return printHelp(transferInSubcommand); } telemetry2.trackCliSubcommandTransferIn(subcommandOriginal); return transferIn(client2, args2); default: if (needHelp) { telemetry2.trackCliFlagHelp("domains", subcommandOriginal); return printHelp(transferInSubcommand); } telemetry2.trackCliSubcommandList(subcommandOriginal); return ls4(client2, args2); } } var COMMAND_CONFIG8; var init_domains2 = __esm({ "src/commands/domains/index.ts"() { "use strict"; init_get_args(); init_get_subcommand(); init_error2(); init_add6(); init_buy2(); init_transfer_in2(); init_inspect2(); init_ls7(); init_rm6(); init_move2(); init_command11(); init_help(); init_get_flags_specification(); init_domains(); init_output_manager(); COMMAND_CONFIG8 = { add: ["add"], buy: ["buy"], inspect: ["inspect"], ls: ["ls", "list"], move: ["move"], rm: ["rm", "remove"], transferIn: ["transfer-in"] }; } }); // src/util/env/add-env-record.ts async function addEnvRecord(client2, projectId, upsert, type, key, value, targets, gitBranch) { const actionWord = upsert ? "Overriding" : "Adding"; output_manager_default.debug( `${actionWord} ${type} Environment Variable ${key} to ${targets.length} targets` ); const target = []; const customEnvironmentIds = []; for (const t of targets) { const arr = import_constants8.PROJECT_ENV_TARGET.includes(t) ? target : customEnvironmentIds; arr.push(t); } const body = { type, key, value, target, customEnvironmentIds: customEnvironmentIds.length > 0 ? customEnvironmentIds : void 0, gitBranch: gitBranch || void 0 }; const args2 = upsert ? `?upsert=${upsert}` : ""; const url3 = `/v10/projects/${projectId}/env${args2}`; await client2.fetch(url3, { method: "POST", body }); } var import_constants8; var init_add_env_record = __esm({ "src/util/env/add-env-record.ts"() { "use strict"; import_constants8 = __toESM3(require_dist4(), 1); init_output_manager(); } }); // src/util/input/read-standard-input.ts async function readStandardInput(stdin) { return new Promise((resolve14) => { setTimeout(() => resolve14(""), 500); if (stdin.isTTY) { resolve14(""); } else { stdin.setEncoding("utf8"); stdin.once("data", resolve14); } }); } var init_read_standard_input = __esm({ "src/util/input/read-standard-input.ts"() { "use strict"; } }); // src/util/env/known-error.ts function isKnownError(error3) { const code2 = (0, import_error_utils24.isErrnoException)(error3) ? error3.code : null; if (!code2) return false; return knownErrorsCodes.has(code2.toUpperCase()); } var import_error_utils24, knownErrorsCodes; var init_known_error = __esm({ "src/util/env/known-error.ts"() { "use strict"; import_error_utils24 = __toESM3(require_dist2(), 1); knownErrorsCodes = /* @__PURE__ */ new Set([ "BAD_REQUEST", "ENV_ALREADY_EXISTS", "ENV_CONFLICT", "EXISTING_KEY_AND_TARGET", "FORBIDDEN", "ID_NOT_FOUND", "INVALID_KEY", "INVALID_VALUE", "KEY_INVALID_CHARACTERS", "KEY_INVALID_LENGTH", "KEY_RESERVED", "RESERVED_ENV_VARIABLE", "MAX_ENVS_EXCEEDED", "MISSING_ID", "MISSING_KEY", "MISSING_TARGET", "MISSING_VALUE", "NOT_AUTHORIZED", "NOT_DECRYPTABLE", "SYSTEM_ENV_WITH_VALUE", "TEAM_NOT_FOUND", "TOO_MANY_IDS", "TOO_MANY_KEYS", "UNKNOWN_ERROR", "VALUE_INVALID_LENGTH", "VALUE_INVALID_TYPE" ]); } }); // src/util/env/validate-env.ts function getEnvValueWarnings(value) { const warnings = []; const normalized = value.replace(/\n$/, ""); if (/^[ \t]+/.test(normalized)) { warnings.push({ message: "starts with whitespace", requiresConfirmation: false }); } if (/[ \t]+$/.test(normalized)) { warnings.push({ message: "ends with whitespace", requiresConfirmation: false }); } if (normalized.includes("\r") || normalized.includes("\n")) { warnings.push({ message: "contains newlines", requiresConfirmation: false }); } if (value.includes("\0")) { warnings.push({ message: "contains null characters", requiresConfirmation: false }); } if (value === "") { warnings.push({ message: "is empty", requiresConfirmation: true }); } if (value.length > 2 && (value.startsWith('"') && value.endsWith('"') || value.startsWith("'") && value.endsWith("'"))) { warnings.push({ message: "includes surrounding quotes (these will be stored literally)", requiresConfirmation: false }); } return warnings; } function formatWarnings(warnings) { if (warnings.length === 0) return null; const messages = warnings.map((w) => w.message); const startsIdx = messages.indexOf("starts with whitespace"); const endsIdx = messages.indexOf("ends with whitespace"); if (startsIdx !== -1 && endsIdx !== -1) { messages.splice(Math.max(startsIdx, endsIdx), 1); messages[Math.min(startsIdx, endsIdx)] = "starts and ends with whitespace"; } if (messages.length === 1) { return `Value ${messages[0]}`; } if (messages.length === 2) { return `Value ${messages[0]} and ${messages[1]}`; } const last = messages.pop(); return `Value ${messages.join(", ")}, and ${last}`; } function hasOnlyWhitespaceWarnings(warnings) { return warnings.length > 0 && warnings.every( (w) => w.message === "starts with whitespace" || w.message === "ends with whitespace" ); } function trimValue(value) { return value.replace(/\n$/, "").trim(); } function getPublicPrefix(key) { const upperKey = key.toUpperCase(); return PUBLIC_PREFIXES.find((p) => upperKey.startsWith(p)) || null; } function removePublicPrefix(key) { const prefix = getPublicPrefix(key); if (!prefix) return key; return key.slice(prefix.length); } async function validateEnvValue(opts) { let finalValue = opts.initialValue; let alreadyConfirmed = false; if (!opts.skipConfirm) { let valueAccepted = false; while (!valueAccepted) { const valueWarnings = getEnvValueWarnings(finalValue); const warningMessage = formatWarnings(valueWarnings); if (!warningMessage) { valueAccepted = true; break; } opts.showWarning(warningMessage); const canTrim = hasOnlyWhitespaceWarnings(valueWarnings); const choices = canTrim ? [ { name: "Leave as is", value: "c" }, { name: "Re-enter", value: "r" }, { name: "Trim whitespace", value: "t" } ] : [ { name: "Leave as is", value: "c" }, { name: "Re-enter", value: "r" } ]; const action = await opts.selectAction(choices); if (action === "c") { valueAccepted = true; if (valueWarnings.some((w) => w.requiresConfirmation)) { alreadyConfirmed = true; } } else if (action === "t") { finalValue = trimValue(finalValue); opts.showLog("Trimmed whitespace"); } else { finalValue = await opts.promptForValue(); } } } else { const valueWarnings = getEnvValueWarnings(finalValue); const warningMessage = formatWarnings(valueWarnings); if (warningMessage) { opts.showWarning(warningMessage); } } return { finalValue, alreadyConfirmed }; } function getEnvKeyWarnings(key) { const warnings = []; const matchingPrefix = getPublicPrefix(key); if (matchingPrefix) { const sensitiveMatch = SENSITIVE_PATTERN.exec(key); const nameWithoutPrefix = key.slice(matchingPrefix.length); if (sensitiveMatch) { warnings.push({ message: `The ${matchingPrefix} prefix will make ${nameWithoutPrefix} visible to anyone visiting your site`, requiresConfirmation: true }); } else { warnings.push({ message: `${matchingPrefix} variables can be seen by anyone visiting your site`, requiresConfirmation: false }); } } return warnings; } var import_frameworks7, PUBLIC_PREFIXES, SENSITIVE_PATTERN; var init_validate_env = __esm({ "src/util/env/validate-env.ts"() { "use strict"; import_frameworks7 = __toESM3(require_frameworks(), 1); PUBLIC_PREFIXES = [ ...new Set( import_frameworks7.frameworkList.map((f) => f.envPrefix).filter((p) => !!p) ) ]; SENSITIVE_PATTERN = /(?:^|_)(password|secret|private|token|key|auth|jwt|signature)(?:_|$)/i; } }); // src/util/target/get-custom-environments.ts async function getCustomEnvironments(client2, projectId) { try { const res = await client2.fetch( `/projects/${encodeURIComponent(projectId)}/custom-environments`, { method: "GET" } ); return res.environments; } catch (error3) { if ((0, import_error_utils25.isObject)(error3) && error3.status === 404) { return []; } throw error3; } } function pickCustomEnvironment(customEnvironments, customEnvironmentSlugOrId) { if (!customEnvironmentSlugOrId) return void 0; return customEnvironments.find( ({ slug, id }) => slug === customEnvironmentSlugOrId || id === customEnvironmentSlugOrId ); } var import_error_utils25; var init_get_custom_environments = __esm({ "src/util/target/get-custom-environments.ts"() { "use strict"; import_error_utils25 = __toESM3(require_dist2(), 1); } }); // src/util/telemetry/commands/env/add.ts var EnvAddTelemetryClient; var init_add7 = __esm({ "src/util/telemetry/commands/env/add.ts"() { "use strict"; init_telemetry(); init_standard_environments(); EnvAddTelemetryClient = class extends TelemetryClient { trackCliArgumentName(name) { if (name) { this.trackCliArgument({ arg: "name", value: this.redactedValue }); } } trackCliArgumentEnvironment(environment) { if (environment) { this.trackCliArgument({ arg: "environment", value: STANDARD_ENVIRONMENTS.includes( environment ) ? environment : this.redactedValue }); } } trackCliArgumentGitBranch(gitBranch) { if (gitBranch) { this.trackCliArgument({ arg: "git-branch", value: this.redactedValue }); } } trackCliFlagSensitive(sensitive) { if (sensitive) { this.trackCliFlag("sensitive"); } } trackCliFlagForce(force) { if (force) { this.trackCliFlag("force"); } } trackCliFlagGuidance(guidance2) { if (guidance2) { this.trackCliFlag("guidance"); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/env/add.ts import { determineAgent as determineAgent2 } from "@vercel/detect-agent"; async function add4(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification(addSubcommand4.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArgs; const stdInput = await readStandardInput(client2.stdin); let [envName, envTargetArg, envGitBranch] = args2; const telemetryClient = new EnvAddTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetryClient.trackCliArgumentName(envName); telemetryClient.trackCliArgumentEnvironment(envTargetArg); telemetryClient.trackCliArgumentGitBranch(envGitBranch); telemetryClient.trackCliFlagSensitive(opts["--sensitive"]); telemetryClient.trackCliFlagForce(opts["--force"]); telemetryClient.trackCliFlagGuidance(opts["--guidance"]); telemetryClient.trackCliFlagYes(opts["--yes"]); if (args2.length > 3) { output_manager_default.error( `Invalid number of arguments. Usage: ${getCommandName( `env add ${getEnvTargetPlaceholder()} ` )}` ); return 1; } if (stdInput && (!envName || !envTargetArg)) { output_manager_default.error( `Invalid number of arguments. Usage: ${getCommandName( `env add < ` )}` ); return 1; } let envTargets = []; if (envTargetArg) { envTargets.push(envTargetArg); } if (!envName) { envName = await client2.input.text({ message: `What's the name of the variable?`, validate: (val) => val ? true : "Name cannot be empty" }); } const skipConfirm = opts["--yes"] || !!stdInput; if (!skipConfirm) { let keyAccepted = false; while (!keyAccepted) { const keyWarnings = getEnvKeyWarnings(envName); const sensitiveWarning = keyWarnings.find((w) => w.requiresConfirmation); if (!sensitiveWarning) { for (const w of keyWarnings) { output_manager_default.warn(w.message); } keyAccepted = true; break; } for (const w of keyWarnings) { output_manager_default.warn(w.message); } const nameWithoutPrefix = removePublicPrefix(envName); const choices2 = [ { name: "Leave as is", value: "c" }, { name: `Rename to ${nameWithoutPrefix}`, value: "p" }, { name: "Re-enter", value: "r" } ]; const action = await client2.input.select({ message: "How to proceed?", choices: choices2 }); if (action === "c") { keyAccepted = true; } else if (action === "p") { envName = nameWithoutPrefix; output_manager_default.log(`Renamed to ${envName}`); } else { envName = await client2.input.text({ message: `What's the name of the variable?`, validate: (val) => val ? true : "Name cannot be empty" }); } } } else { const keyWarnings = getEnvKeyWarnings(envName); for (const w of keyWarnings) { output_manager_default.warn(w.message); } } const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } else if (link4.status === "not_linked") { output_manager_default.error( `Your codebase isn\u2019t linked to a project on Vercel. Run ${getCommandName( "link" )} to begin.` ); return 1; } client2.config.currentTeam = link4.org.type === "team" ? link4.org.id : void 0; const { project } = link4; const [{ envs }, customEnvironments] = await Promise.all([ getEnvRecords(client2, project.id, "vercel-cli:env:add"), getCustomEnvironments(client2, project.id) ]); const matchingEnvs = envs.filter((r) => r.key === envName); const existingTargets = /* @__PURE__ */ new Set(); const existingCustomEnvs = /* @__PURE__ */ new Set(); for (const env of matchingEnvs) { if (typeof env.target === "string") { existingTargets.add(env.target); } else if (Array.isArray(env.target)) { for (const target of env.target) { existingTargets.add(target); } } if (env.customEnvironmentIds) { for (const customEnvId of env.customEnvironmentIds) { existingCustomEnvs.add(customEnvId); } } } const choices = [ ...envTargetChoices.filter((c) => !existingTargets.has(c.value)), ...customEnvironments.filter((c) => !existingCustomEnvs.has(c.id)).map((c) => ({ name: c.slug, value: c.id })) ]; if (!envGitBranch && choices.length === 0 && !opts["--force"]) { output_manager_default.error( `The variable ${param( envName )} has already been added to all Environments. To remove, run ${getCommandName( `env rm ${envName}` )}.` ); return 1; } let type = opts["--sensitive"] ? "sensitive" : "encrypted"; let envValue; if (stdInput) { envValue = stdInput; } else { if (type === "encrypted") { const isSensitive = await client2.input.confirm( `Your value will be encrypted. Mark as sensitive?`, false ); if (isSensitive) { type = "sensitive"; } } envValue = await client2.input.password({ message: `What's the value of ${envName}?`, mask: true }); } const { finalValue } = await validateEnvValue({ envName, initialValue: envValue, skipConfirm, promptForValue: () => client2.input.password({ message: `What's the value of ${envName}?`, mask: true }), selectAction: (choices2) => client2.input.select({ message: "How to proceed?", choices: choices2 }), showWarning: (msg) => output_manager_default.warn(msg), showLog: (msg) => output_manager_default.log(msg) }); while (envTargets.length === 0) { envTargets = await client2.input.checkbox({ message: `Add ${envName} to which Environments (select multiple)?`, choices }); if (envTargets.length === 0) { output_manager_default.error("Please select at least one Environment"); } } if (!stdInput && !envGitBranch && envTargets.length === 1 && envTargets[0] === "preview") { envGitBranch = await client2.input.text({ message: `Add ${envName} to which Git branch? (leave empty for all Preview branches)?` }); } const upsert = opts["--force"] ? "true" : ""; const addStamp = stamp_default(); try { output_manager_default.spinner("Saving"); await addEnvRecord( client2, project.id, upsert, type, envName, finalValue, envTargets, envGitBranch ); } catch (err) { if (isAPIError(err) && isKnownError(err)) { output_manager_default.error(err.serverMessage); return 1; } throw err; } output_manager_default.print( `${prependEmoji( `${opts["--force"] ? "Overrode" : "Added"} Environment Variable ${import_chalk94.default.bold(envName)} to Project ${import_chalk94.default.bold( project.name )} ${import_chalk94.default.gray(addStamp())}`, emoji("success") )} ` ); const { isAgent } = await determineAgent2(); const guidanceMode = parsedArgs.flags["--guidance"] ?? isAgent; if (guidanceMode) { suggestNextCommands([getCommandName(`env ls`), getCommandName(`env pull`)]); } return 0; } var import_chalk94; var init_add8 = __esm({ "src/commands/env/add.ts"() { "use strict"; import_chalk94 = __toESM3(require_source(), 1); init_stamp(); init_add_env_record(); init_get_env_records(); init_env_target(); init_read_standard_input(); init_param(); init_emoji(); init_known_error(); init_validate_env(); init_pkg_name(); init_errors_ts(); init_get_custom_environments(); init_output_manager(); init_add7(); init_get_args(); init_get_flags_specification(); init_error2(); init_command12(); init_link2(); init_suggest_next_commands(); } }); // src/util/output/ellipsis.ts function ellipsis(str, length) { return str.length > length ? `${str.slice(0, length - 1)}\u2026` : str; } var init_ellipsis = __esm({ "src/util/output/ellipsis.ts"() { "use strict"; } }); // src/util/target/format-environment.ts function formatEnvironment(orgSlug, projectSlug, environment) { const projectUrl = `https://vercel.com/${orgSlug}/${projectSlug}`; const boldName = import_chalk95.default.bold( STANDARD_ENVIRONMENTS.includes(environment.slug) ? (0, import_title4.default)(environment.slug) : environment.slug ); return output_manager_default.link( boldName, `${projectUrl}/settings/environments/${environment.slug}`, { fallback: () => boldName, color: false } ); } var import_chalk95, import_title4; var init_format_environment = __esm({ "src/util/target/format-environment.ts"() { "use strict"; import_chalk95 = __toESM3(require_source(), 1); init_output_manager(); init_standard_environments(); import_title4 = __toESM3(require_lib4(), 1); } }); // src/util/env/format-environments.ts function formatEnvironments(link4, env, customEnvironments) { const defaultTargets = (Array.isArray(env.target) ? env.target : [env.target || ""]).map((t) => { return formatEnvironment(link4.org.slug, link4.project.name, { id: t, slug: (0, import_title5.default)(t) }); }); const customTargets = env.customEnvironmentIds ? env.customEnvironmentIds.map((id) => customEnvironments.find((e2) => e2.id === id)).filter(Boolean).map((e2) => formatEnvironment(link4.org.slug, link4.project.name, e2)) : []; const targetsString = [...defaultTargets, ...customTargets].join(", "); return env.gitBranch ? `${targetsString} (${env.gitBranch})` : targetsString; } var import_title5; var init_format_environments = __esm({ "src/util/env/format-environments.ts"() { "use strict"; import_title5 = __toESM3(require_lib4(), 1); init_format_environment(); } }); // src/util/telemetry/commands/env/ls.ts var EnvLsTelemetryClient; var init_ls8 = __esm({ "src/util/telemetry/commands/env/ls.ts"() { "use strict"; init_telemetry(); init_standard_environments(); EnvLsTelemetryClient = class extends TelemetryClient { trackCliArgumentEnvironment(environment) { if (environment) { this.trackCliArgument({ arg: "environment", value: STANDARD_ENVIRONMENTS.includes( environment ) ? environment : this.redactedValue }); } } trackCliArgumentGitBranch(gitBranch) { if (gitBranch) { this.trackCliArgument({ arg: "git-branch", value: this.redactedValue }); } } trackCliFlagGuidance(guidance2) { if (guidance2) { this.trackCliFlag("guidance"); } } }; } }); // src/commands/env/ls.ts import { determineAgent as determineAgent3 } from "@vercel/detect-agent"; async function ls5(client2, argv) { const telemetryClient = new EnvLsTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(listSubcommand6.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags } = parsedArgs; const validationResult = validateLsArgs({ commandName: "env ls", args: args2, maxArgs: 2, exitCode: 1, usageString: getCommandName( `env ls ${getEnvTargetPlaceholder()} ` ) }); if (validationResult !== 0) { return validationResult; } const [envTarget, envGitBranch] = args2; const formatResult = validateJsonOutput(flags); if (!formatResult.valid) { output_manager_default.error(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; telemetryClient.trackCliArgumentEnvironment(envTarget); telemetryClient.trackCliArgumentGitBranch(envGitBranch); telemetryClient.trackCliFlagGuidance(flags["--guidance"]); telemetryClient.trackCliOptionFormat(flags["--format"]); const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } else if (link4.status === "not_linked") { output_manager_default.error( `Your codebase isn\u2019t linked to a project on Vercel. Run ${getCommandName( "link" )} to begin.` ); return 1; } client2.config.currentTeam = link4.org.type === "team" ? link4.org.id : void 0; const { project, org } = link4; const lsStamp = stamp_default(); const [envsResult, customEnvs] = await Promise.all([ getEnvRecords(client2, project.id, "vercel-cli:env:ls", { target: envTarget, gitBranch: envGitBranch }), getCustomEnvironments(client2, project.id) ]); const { envs } = envsResult; const projectSlugLink = formatProject(org.slug, project.name); if (asJson) { output_manager_default.stopSpinner(); const jsonOutput = { envs: envs.map((env) => ({ key: env.key, value: env.type === "plain" ? env.value : void 0, type: env.type, target: env.target, gitBranch: env.gitBranch, configurationId: env.configurationId, createdAt: env.createdAt, updatedAt: env.updatedAt })) }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } else if (envs.length === 0) { output_manager_default.log( `No Environment Variables found for ${projectSlugLink} ${import_chalk96.default.gray(lsStamp())}` ); } else { output_manager_default.log( `Environment Variables found for ${projectSlugLink} ${import_chalk96.default.gray(lsStamp())}` ); client2.stdout.write(`${getTable(link4, envs, customEnvs)} `); } if (!asJson) { const { isAgent } = await determineAgent3(); const guidanceMode = parsedArgs.flags["--guidance"] ?? isAgent; if (guidanceMode) { suggestNextCommands([ getCommandName(`env add`), getCommandName("env rm"), getCommandName(`env pull`) ]); } } return 0; } function getTable(link4, records, customEnvironments) { const label = records.some((env) => env.gitBranch) ? "environments (git branch)" : "environments"; return formatTable( ["name", "value", label, "created"], ["l", "l", "l", "l", "l"], [ { name: "", rows: records.map((row) => getRow(link4, row, customEnvironments)) } ] ); } function getRow(link4, env, customEnvironments) { let value; if (env.type === "plain") { const singleLineValue = env.value.replace(/\s/g, " "); value = import_chalk96.default.gray(ellipsis(singleLineValue, 19)); } else if (env.type === "system") { value = import_chalk96.default.gray.italic(env.value); } else { value = import_chalk96.default.gray.italic("Encrypted"); } const now = Date.now(); return [ import_chalk96.default.bold(env.key), value, formatEnvironments(link4, env, customEnvironments), env.createdAt ? `${(0, import_ms18.default)(now - env.createdAt)} ago` : "" ]; } var import_chalk96, import_ms18; var init_ls9 = __esm({ "src/commands/env/ls.ts"() { "use strict"; import_chalk96 = __toESM3(require_source(), 1); import_ms18 = __toESM3(require_ms(), 1); init_format_table(); init_get_env_records(); init_env_target(); init_stamp(); init_pkg_name(); init_ellipsis(); init_get_custom_environments(); init_format_environments(); init_format_project(); init_output_manager(); init_output_format(); init_ls8(); init_command12(); init_get_args(); init_get_flags_specification(); init_error2(); init_link2(); init_suggest_next_commands(); init_validate_ls_args(); } }); // src/util/env/remove-env-record.ts async function removeEnvRecord(client2, projectId, env) { output_manager_default.debug(`Removing Environment Variable ${env.key}`); const url3 = `/v10/projects/${projectId}/env/${env.id}`; await client2.fetch(url3, { method: "DELETE" }); } var init_remove_env_record = __esm({ "src/util/env/remove-env-record.ts"() { "use strict"; init_output_manager(); } }); // src/util/telemetry/commands/env/rm.ts var EnvRmTelemetryClient; var init_rm7 = __esm({ "src/util/telemetry/commands/env/rm.ts"() { "use strict"; init_telemetry(); init_standard_environments(); EnvRmTelemetryClient = class extends TelemetryClient { trackCliArgumentName(name) { if (name) { this.trackCliArgument({ arg: "name", value: this.redactedValue }); } } trackCliArgumentEnvironment(environment) { if (environment) { this.trackCliArgument({ arg: "environment", value: STANDARD_ENVIRONMENTS.includes( environment ) ? environment : this.redactedValue }); } } trackCliArgumentGitBranch(gitBranch) { if (gitBranch) { this.trackCliArgument({ arg: "git-branch", value: this.redactedValue }); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/env/rm.ts async function rm5(client2, argv) { const telemetryClient = new EnvRmTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(removeSubcommand5.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArgs; if (args2.length > 3) { output_manager_default.error( `Invalid number of arguments. Usage: ${getCommandName( `env rm ${getEnvTargetPlaceholder()} ` )}` ); return 1; } let [envName, envTarget, envGitBranch] = args2; telemetryClient.trackCliArgumentName(envName); telemetryClient.trackCliArgumentEnvironment(envTarget); telemetryClient.trackCliArgumentGitBranch(envGitBranch); telemetryClient.trackCliFlagYes(opts["--yes"]); const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } else if (link4.status === "not_linked") { output_manager_default.error( `Your codebase isn\u2019t linked to a project on Vercel. Run ${getCommandName( "link" )} to begin.` ); return 1; } client2.config.currentTeam = link4.org.type === "team" ? link4.org.id : void 0; const { project } = link4; if (!envName) { envName = await client2.input.text({ message: "What's the name of the variable?", validate: (val) => val ? true : "Name cannot be empty" }); } const [result, customEnvironments] = await Promise.all([ getEnvRecords(client2, project.id, "vercel-cli:env:rm", { target: envTarget, gitBranch: envGitBranch }), getCustomEnvironments(client2, project.id) ]); let envs = result.envs.filter((env2) => env2.key === envName); if (envs.length === 0) { output_manager_default.error(`Environment Variable was not found. `); return 1; } while (envs.length > 1) { const id = await client2.input.select({ message: `Remove ${envName} from which Environments?`, choices: envs.map((env2) => ({ value: env2.id, name: formatEnvironments(link4, env2, customEnvironments) })) }); if (!id) { output_manager_default.error("Please select at least one Environment Variable to remove"); } envs = envs.filter((env2) => env2.id === id); } const env = envs[0]; const skipConfirmation = opts["--yes"]; if (!skipConfirmation && !await client2.input.confirm( `Removing Environment Variable ${param(env.key)} from ${formatEnvironments( link4, env, customEnvironments )} in Project ${import_chalk97.default.bold(project.name)}. Are you sure?`, false )) { output_manager_default.log("Canceled"); return 0; } const rmStamp = stamp_default(); try { output_manager_default.spinner("Removing"); await removeEnvRecord(client2, project.id, env); } catch (err) { if (isAPIError(err) && isKnownError(err)) { output_manager_default.error(err.serverMessage); return 1; } throw err; } output_manager_default.print( `${prependEmoji( `Removed Environment Variable ${import_chalk97.default.gray(rmStamp())}`, emoji("success") )} ` ); return 0; } var import_chalk97; var init_rm8 = __esm({ "src/commands/env/rm.ts"() { "use strict"; import_chalk97 = __toESM3(require_source(), 1); init_remove_env_record(); init_get_env_records(); init_format_environments(); init_env_target(); init_stamp(); init_param(); init_emoji(); init_known_error(); init_pkg_name(); init_errors_ts(); init_get_custom_environments(); init_rm7(); init_output_manager(); init_command12(); init_get_args(); init_get_flags_specification(); init_error2(); init_link2(); } }); // src/commands/env/run.ts function parseRunArgs(argv) { const argvIndex = argv.indexOf("--"); const hasDoubleDash = argvIndex !== -1; const vercelArgs = hasDoubleDash ? argv.slice(2, argvIndex) : argv.slice(2); const userCommand = hasDoubleDash ? argv.slice(argvIndex + 1) : []; return { vercelArgs, userCommand }; } function needsHelpForRun(client2) { const { vercelArgs } = parseRunArgs(client2.argv); const flagsSpecification = getFlagsSpecification(runSubcommand.options); try { const parsedArgs = parseArguments(vercelArgs, flagsSpecification); return Boolean(parsedArgs.flags["--help"]); } catch { return false; } } async function run(client2) { const { vercelArgs, userCommand } = parseRunArgs(client2.argv); let parsedArgs; const flagsSpecification = getFlagsSpecification(runSubcommand.options); try { parsedArgs = parseArguments(vercelArgs, flagsSpecification); } catch (error3) { printError(error3); return 1; } if (userCommand.length === 0) { output_manager_default.error( `No command provided. Use \`--\` to separate vercel flags from your command.` ); return 1; } const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } else if (link4.status === "not_linked") { output_manager_default.error( `Your codebase isn't linked to a project on Vercel. Run ${getCommandName( "link" )} to begin.` ); return 1; } client2.config.currentTeam = link4.org.type === "team" ? link4.org.id : void 0; const environment = parseTarget({ flagName: "environment", flags: parsedArgs.flags }) || "development"; const gitBranch = parsedArgs.flags["--git-branch"]; output_manager_default.spinner(`Downloading \`${environment}\` Environment Variables`); const records = await pullEnvRecords( client2, link4.project.id, "vercel-cli:env:run", { target: environment, gitBranch } ); output_manager_default.stopSpinner(); output_manager_default.debug( `Running command with ${Object.keys(records.env).length} environment variables` ); try { const result = await (0, import_execa4.default)(userCommand[0], userCommand.slice(1), { cwd: client2.cwd, stdio: "inherit", reject: false, env: { ...process.env, ...records.env } }); if (result instanceof Error && typeof result.exitCode !== "number") { output_manager_default.prettyError(result); return 1; } return result.exitCode; } catch (err) { output_manager_default.prettyError(err); return 1; } } var import_execa4; var init_run = __esm({ "src/commands/env/run.ts"() { "use strict"; import_execa4 = __toESM3(require_execa(), 1); init_get_args(); init_error2(); init_command12(); init_get_flags_specification(); init_output_manager(); init_link2(); init_get_env_records(); init_parse_target(); init_pkg_name(); } }); // src/util/env/update-env-record.ts async function updateEnvRecord(client2, projectId, envId, type, key, value, targets, gitBranch) { output_manager_default.debug( `Updating ${type} Environment Variable ${key} in ${targets.length} targets` ); const target = []; const customEnvironmentIds = []; for (const t of targets) { const arr = import_constants9.PROJECT_ENV_TARGET.includes(t) ? target : customEnvironmentIds; arr.push(t); } const body = { type, key, value, target, customEnvironmentIds: customEnvironmentIds.length > 0 ? customEnvironmentIds : void 0, gitBranch: gitBranch || void 0 }; const url3 = `/v10/projects/${projectId}/env/${envId}`; await client2.fetch(url3, { method: "PATCH", body }); } var import_constants9; var init_update_env_record = __esm({ "src/util/env/update-env-record.ts"() { "use strict"; import_constants9 = __toESM3(require_dist4(), 1); init_output_manager(); } }); // src/util/telemetry/commands/env/update.ts var EnvUpdateTelemetryClient; var init_update = __esm({ "src/util/telemetry/commands/env/update.ts"() { "use strict"; init_telemetry(); init_standard_environments(); EnvUpdateTelemetryClient = class extends TelemetryClient { trackCliArgumentName(name) { if (name) { this.trackCliArgument({ arg: "name", value: this.redactedValue }); } } trackCliArgumentEnvironment(environment) { if (environment) { this.trackCliArgument({ arg: "environment", value: STANDARD_ENVIRONMENTS.includes( environment ) ? environment : this.redactedValue }); } } trackCliArgumentGitBranch(gitBranch) { if (gitBranch) { this.trackCliArgument({ arg: "git-branch", value: this.redactedValue }); } } trackCliFlagSensitive(sensitive) { if (sensitive) { this.trackCliFlag("sensitive"); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/env/update.ts async function update(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification(updateSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } const { args: args2, flags: opts } = parsedArgs; const stdInput = await readStandardInput(client2.stdin); let [envName, envTargetArg, envGitBranch] = args2; const telemetryClient = new EnvUpdateTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetryClient.trackCliArgumentName(envName); telemetryClient.trackCliArgumentEnvironment(envTargetArg); telemetryClient.trackCliArgumentGitBranch(envGitBranch); telemetryClient.trackCliFlagSensitive(opts["--sensitive"]); telemetryClient.trackCliFlagYes(opts["--yes"]); if (args2.length > 3) { output_manager_default.error( `Invalid number of arguments. Usage: ${getCommandName( `env update ${getEnvTargetPlaceholder()} ` )}` ); return 1; } if (stdInput && (!envName || !envTargetArg)) { output_manager_default.error( `Invalid number of arguments. Usage: ${getCommandName( `env update < ` )}` ); return 1; } const envTargets = []; if (envTargetArg) { envTargets.push(envTargetArg); } if (!envName) { envName = await client2.input.text({ message: `What's the name of the variable to update?`, validate: (val) => val ? true : "Name cannot be empty" }); } const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } else if (link4.status === "not_linked") { output_manager_default.error( `Your codebase isn't linked to a project on Vercel. Run ${getCommandName( "link" )} to begin.` ); return 1; } client2.config.currentTeam = link4.org.type === "team" ? link4.org.id : void 0; const { project } = link4; const [{ envs }, customEnvironments] = await Promise.all([ getEnvRecords(client2, project.id, "vercel-cli:env:update"), getCustomEnvironments(client2, project.id) ]); const matchingEnvs = envs.filter((r) => r.key === envName); if (matchingEnvs.length === 0) { output_manager_default.error( `The variable ${param(envName)} was not found. Run ${getCommandName( `env ls` )} to see all available Environment Variables.` ); return 1; } let selectedEnv; if (envTargetArg || envGitBranch) { const filteredEnvs = matchingEnvs.filter((env) => { const matchesTarget = !envTargetArg || (Array.isArray(env.target) ? env.target.includes(envTargetArg) : env.target === envTargetArg) || env.customEnvironmentIds && env.customEnvironmentIds.includes(envTargetArg); const matchesGitBranch = !envGitBranch || env.gitBranch === envGitBranch; return matchesTarget && matchesGitBranch; }); if (filteredEnvs.length === 0) { output_manager_default.error( `No Environment Variable ${param(envName)} found matching the specified criteria.` ); return 1; } if (filteredEnvs.length === 1) { selectedEnv = filteredEnvs[0]; } else { const choices = filteredEnvs.map((env, index) => { const targets2 = formatEnvironments(link4, env, customEnvironments); return { name: targets2, value: index }; }); const selectedIndex = await client2.input.select({ message: `Multiple Environment Variables found for ${param(envName)}. Which one do you want to update?`, choices }); selectedEnv = filteredEnvs[selectedIndex]; } } else if (matchingEnvs.length === 1) { selectedEnv = matchingEnvs[0]; } else { const choices = matchingEnvs.map((env, index) => { const targets2 = formatEnvironments(link4, env, customEnvironments); return { name: targets2, value: index }; }); const selectedIndex = await client2.input.select({ message: `Multiple Environment Variables found for ${param(envName)}. Which one do you want to update?`, choices }); selectedEnv = matchingEnvs[selectedIndex]; } let envValue; if (stdInput) { envValue = stdInput; } else { envValue = await client2.input.text({ message: `What's the new value of ${envName}?` }); } const skipConfirm = opts["--yes"] || !!stdInput; const { finalValue, alreadyConfirmed } = await validateEnvValue({ envName, initialValue: envValue, skipConfirm, promptForValue: () => client2.input.text({ message: `What's the new value of ${envName}?` }), selectAction: (choices) => client2.input.select({ message: "How to proceed?", choices }), showWarning: (msg) => output_manager_default.warn(msg), showLog: (msg) => output_manager_default.log(msg) }); if (!opts["--yes"] && !alreadyConfirmed) { const currentTargets = formatEnvironments( link4, selectedEnv, customEnvironments ); const confirmed = await client2.input.confirm( `Updating Environment Variable ${param(envName)} in ${currentTargets} in Project ${import_chalk98.default.bold(project.name)}. Are you sure?`, false ); if (!confirmed) { output_manager_default.log("Canceled"); return 0; } } const type = opts["--sensitive"] ? "sensitive" : selectedEnv.type; const targets = Array.isArray(selectedEnv.target) ? selectedEnv.target : [selectedEnv.target].filter( (r) => Boolean(r) ); const allTargets = [...targets, ...selectedEnv.customEnvironmentIds || []]; const updateStamp = stamp_default(); try { output_manager_default.spinner("Updating"); await updateEnvRecord( client2, project.id, selectedEnv.id, type, envName, finalValue, allTargets, selectedEnv.gitBranch || "" ); } catch (err) { if (isAPIError(err) && isKnownError(err)) { output_manager_default.error(err.serverMessage); return 1; } throw err; } output_manager_default.print( `${prependEmoji( `Updated Environment Variable ${import_chalk98.default.bold(envName)} in Project ${import_chalk98.default.bold( project.name )} ${import_chalk98.default.gray(updateStamp())}`, emoji("success") )} ` ); return 0; } var import_chalk98; var init_update2 = __esm({ "src/commands/env/update.ts"() { "use strict"; import_chalk98 = __toESM3(require_source(), 1); init_stamp(); init_update_env_record(); init_get_env_records(); init_env_target(); init_read_standard_input(); init_param(); init_emoji(); init_known_error(); init_validate_env(); init_format_environments(); init_pkg_name(); init_errors_ts(); init_get_custom_environments(); init_output_manager(); init_update(); init_get_args(); init_get_flags_specification(); init_error2(); init_command12(); init_link2(); } }); // src/util/telemetry/commands/env/index.ts var EnvTelemetryClient; var init_env = __esm({ "src/util/telemetry/commands/env/index.ts"() { "use strict"; init_telemetry(); EnvTelemetryClient = class extends TelemetryClient { trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "ls", value: actual }); } trackCliSubcommandAdd(actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "rm", value: actual }); } trackCliSubcommandPull(actual) { this.trackCliSubcommand({ subcommand: "pull", value: actual }); } trackCliSubcommandRun(actual) { this.trackCliSubcommand({ subcommand: "run", value: actual }); } trackCliSubcommandUpdate(actual) { this.trackCliSubcommand({ subcommand: "update", value: actual }); } }; } }); // src/commands/env/index.ts var env_exports = {}; __export3(env_exports, { default: () => main8 }); async function main8(client2) { const telemetry2 = new EnvTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(envCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const subArgs = parsedArgs.args.slice(1); const { subcommand, args: args2, subcommandOriginal } = getSubcommand( subArgs, COMMAND_CONFIG9 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("env", subcommand); output_manager_default.print(help(envCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: envCommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "ls": if (needHelp) { telemetry2.trackCliFlagHelp("env", subcommandOriginal); printHelp(listSubcommand6); return 2; } telemetry2.trackCliSubcommandList(subcommandOriginal); return ls5(client2, args2); case "add": if (needHelp) { telemetry2.trackCliFlagHelp("env", subcommandOriginal); printHelp(addSubcommand4); return 2; } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return add4(client2, args2); case "rm": if (needHelp) { telemetry2.trackCliFlagHelp("env", subcommandOriginal); printHelp(removeSubcommand5); return 2; } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return rm5(client2, args2); case "pull": if (needHelp) { telemetry2.trackCliFlagHelp("env", subcommandOriginal); printHelp(pullSubcommand); return 2; } telemetry2.trackCliSubcommandPull(subcommandOriginal); return pull(client2, args2); case "run": if (needsHelpForRun(client2)) { telemetry2.trackCliFlagHelp("env", subcommandOriginal); printHelp(runSubcommand); return 2; } telemetry2.trackCliSubcommandRun(subcommandOriginal); return run(client2); case "update": if (needHelp) { telemetry2.trackCliFlagHelp("env", subcommandOriginal); printHelp(updateSubcommand); return 2; } telemetry2.trackCliSubcommandUpdate(subcommandOriginal); return update(client2, args2); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG9)); output_manager_default.print(help(envCommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG9; var init_env2 = __esm({ "src/commands/env/index.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_get_subcommand(); init_error2(); init_help(); init_add8(); init_ls9(); init_pull2(); init_rm8(); init_run(); init_update2(); init_command12(); init_get_flags_specification(); init_output_manager(); init_env(); init_commands(); COMMAND_CONFIG9 = { ls: getCommandAliases(listSubcommand6), add: getCommandAliases(addSubcommand4), rm: getCommandAliases(removeSubcommand5), pull: getCommandAliases(pullSubcommand), run: getCommandAliases(runSubcommand), update: getCommandAliases(updateSubcommand) }; } }); // src/util/telemetry/commands/git/connect.ts var GitConnectTelemetryClient; var init_connect = __esm({ "src/util/telemetry/commands/git/connect.ts"() { "use strict"; init_telemetry(); GitConnectTelemetryClient = class extends TelemetryClient { trackCliArgumentGitUrl(name) { if (name) { this.trackCliArgument({ arg: "gitUrl", value: this.redactedValue }); } } trackCliFlagConfirm(confirm) { if (confirm) { this.trackCliFlag("confirm"); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/git/connect.ts import { join as join23 } from "path"; async function connect(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification(connectSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2, flags: opts } = parsedArgs; const { cwd } = client2; const telemetry2 = new GitConnectTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetry2.trackCliFlagConfirm(opts["--confirm"]); telemetry2.trackCliFlagYes(opts["--yes"]); if ("--confirm" in opts) { output_manager_default.warn("`--confirm` is deprecated, please use `--yes` instead"); opts["--yes"] = opts["--confirm"]; } const confirm = Boolean(opts["--yes"]); if (args2.length > 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk99.default.cyan( `${getCommandName("project connect")}` )}` ); return 2; } const repoArg = args2[0]; telemetry2.trackCliArgumentGitUrl(repoArg); const linkedProject = await ensureLink("git", client2, client2.cwd, { autoConfirm: confirm }); if (typeof linkedProject === "number") { return linkedProject; } const { project, org } = linkedProject; const gitProviderLink = project.link; client2.config.currentTeam = org.type === "team" ? org.id : void 0; const gitConfigPath = join23(cwd, ".git/config"); const gitConfig = await parseGitConfig(gitConfigPath); if (repoArg) { const parsedUrlArg = parseRepoUrl(repoArg); if (!parsedUrlArg) { output_manager_default.error( `Failed to parse URL "${repoArg}". Please ensure the URL is valid.` ); return 1; } if (gitConfig) { return await connectArgWithLocalGit({ client: client2, org, project, confirm, gitConfig, repoInfo: parsedUrlArg }); } return await connectArg({ client: client2, confirm, org, project, repoInfo: parsedUrlArg }); } if (!gitConfig) { output_manager_default.error( `No local Git repository found. Run ${import_chalk99.default.cyan( "`git clone `" )} to clone a remote Git repository first.` ); return 1; } const remoteUrls = pluckRemoteUrls(gitConfig); if (!remoteUrls) { output_manager_default.error( `No remote URLs found in your Git config. Make sure you've configured a remote repo in your local Git config. Run ${import_chalk99.default.cyan( "`git remote --help`" )} for more details.` ); return 1; } const repoInfo = await selectAndParseRemoteUrl(client2, remoteUrls); if (!repoInfo) { return Object.keys(remoteUrls).length > 1 ? 0 : 1; } const result = await checkExistsAndConnect({ client: client2, confirm, gitProviderLink, org, gitOrg: repoInfo.org, project, provider: repoInfo.provider, repo: repoInfo.repo, repoPath: `${repoInfo.org}/${repoInfo.repo}` }); if (typeof result === "number") { return result; } return 0; } async function connectArg({ client: client2, confirm, org, project, repoInfo }) { const { url: repoUrl } = repoInfo; const parsedRepoArg = parseRepoUrl(repoUrl); if (!parsedRepoArg) { output_manager_default.error( `Failed to parse URL "${repoUrl}". Please ensure the URL is valid.` ); return 1; } const result = await checkExistsAndConnect({ client: client2, confirm, gitProviderLink: project.link, org, gitOrg: parsedRepoArg.org, project, provider: parsedRepoArg.provider, repo: parsedRepoArg.repo, repoPath: `${parsedRepoArg.org}/${parsedRepoArg.repo}` }); if (typeof result === "number") { return result; } return 0; } async function connectArgWithLocalGit({ client: client2, org, project, confirm, gitConfig, repoInfo }) { const remoteUrls = pluckRemoteUrls(gitConfig); if (remoteUrls) { const shouldConnect = await promptConnectArg({ client: client2, yes: confirm, repoInfo, remoteUrls }); if (!shouldConnect) { return 1; } if (shouldConnect) { const result = await checkExistsAndConnect({ client: client2, confirm, gitProviderLink: project.link, org, gitOrg: repoInfo.org, project, provider: repoInfo.provider, repo: repoInfo.repo, repoPath: `${repoInfo.org}/${repoInfo.repo}` }); if (typeof result === "number") { return result; } } return 0; } return await connectArg({ client: client2, confirm, org, project, repoInfo }); } async function promptConnectArg({ client: client2, yes, repoInfo: repoInfoFromArg, remoteUrls }) { if (Object.keys(remoteUrls).length > 1) { output_manager_default.log("Found multiple Git repositories in your local Git config:"); printRemoteUrls(remoteUrls); } else { const url3 = Object.values(remoteUrls)[0]; const repoInfoFromGitConfig = parseRepoUrl(url3); if (!repoInfoFromGitConfig) { output_manager_default.error( `Failed to parse URL "${url3}". Please ensure the URL is valid.` ); return false; } if (JSON.stringify(repoInfoFromGitConfig) === JSON.stringify(repoInfoFromArg)) { return true; } output_manager_default.log( `Found a repository in your local Git Config: ${import_chalk99.default.cyan( Object.values(remoteUrls)[0] )}` ); } let shouldConnect = yes; if (!shouldConnect) { const { url: repoUrlFromArg } = repoInfoFromArg; shouldConnect = await client2.input.confirm( `Do you still want to connect ${link_default(repoUrlFromArg)}?`, false ); if (!shouldConnect) { output_manager_default.log("Canceled. Repo not connected."); } } return shouldConnect; } var import_chalk99; var init_connect2 = __esm({ "src/commands/git/connect.ts"() { "use strict"; import_chalk99 = __toESM3(require_source(), 1); init_create_git_meta(); init_link(); init_pkg_name(); init_connect_git_provider(); init_output_manager(); init_connect(); init_get_args(); init_get_flags_specification(); init_error2(); init_command13(); init_ensure_link(); } }); // src/util/telemetry/commands/git/disconnect.ts var GitDisconnectTelemetryClient; var init_disconnect = __esm({ "src/util/telemetry/commands/git/disconnect.ts"() { "use strict"; init_telemetry(); GitDisconnectTelemetryClient = class extends TelemetryClient { trackCliFlagConfirm(confirm) { if (confirm) { this.trackCliFlag("confirm"); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/git/disconnect.ts async function disconnect(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification( disconnectSubcommand.options ); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2, flags: opts } = parsedArgs; const telemetry2 = new GitDisconnectTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetry2.trackCliFlagConfirm(opts["--confirm"]); telemetry2.trackCliFlagYes(opts["--yes"]); if ("--confirm" in opts) { output_manager_default.warn("`--confirm` is deprecated, please use `--yes` instead"); opts["--yes"] = opts["--confirm"]; } if (args2.length !== 0) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk100.default.cyan( `${getCommandName("project disconnect")}` )}` ); return 2; } const autoConfirm = Boolean(parsedArgs.flags["--yes"]); const linkedProject = await ensureLink("git", client2, client2.cwd, { autoConfirm }); if (typeof linkedProject === "number") { return linkedProject; } const { org, project } = linkedProject; client2.config.currentTeam = org.type === "team" ? org.id : void 0; if (project.link) { const { org: linkOrg, repo } = project.link; output_manager_default.print( `Your Vercel project will no longer create deployments when you push to this repository. ` ); const confirmDisconnect = autoConfirm || await client2.input.confirm( `Are you sure you want to disconnect ${import_chalk100.default.cyan( `${linkOrg}/${repo}` )} from your project?`, false ); if (confirmDisconnect) { await disconnectGitProvider(client2, org, project.id); output_manager_default.log(`Disconnected ${import_chalk100.default.cyan(`${linkOrg}/${repo}`)}.`); } else { output_manager_default.log("Canceled"); } } else { output_manager_default.error( `No Git repository connected. Run ${getCommandName( "project connect" )} to connect one.` ); return 1; } return 0; } var import_chalk100; var init_disconnect2 = __esm({ "src/commands/git/disconnect.ts"() { "use strict"; import_chalk100 = __toESM3(require_source(), 1); init_pkg_name(); init_connect_git_provider(); init_output_manager(); init_command13(); init_get_args(); init_get_flags_specification(); init_error2(); init_disconnect(); init_ensure_link(); } }); // src/util/telemetry/commands/git/index.ts var GitTelemetryClient; var init_git = __esm({ "src/util/telemetry/commands/git/index.ts"() { "use strict"; init_telemetry(); GitTelemetryClient = class extends TelemetryClient { trackCliSubcommandConnect(actual) { this.trackCliSubcommand({ subcommand: "connect", value: actual }); } trackCliSubcommandDisconnect(actual) { this.trackCliSubcommand({ subcommand: "disconnect", value: actual }); } }; } }); // src/commands/git/index.ts var git_exports = {}; __export3(git_exports, { default: () => main9 }); async function main9(client2) { let parsedArgs; const flagsSpecification = getFlagsSpecification(gitCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (error3) { printError(error3); return 1; } const telemetry2 = new GitTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const { subcommand, args: args2, subcommandOriginal } = getSubcommand( parsedArgs.args.slice(1), COMMAND_CONFIG10 ); if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("git", subcommand); output_manager_default.print(help(gitCommand, { columns: client2.stderr.columns })); return 2; } switch (subcommand) { case "connect": telemetry2.trackCliSubcommandConnect(subcommandOriginal); return connect(client2, args2); case "disconnect": telemetry2.trackCliSubcommandDisconnect(subcommandOriginal); return disconnect(client2, args2); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG10)); output_manager_default.print(help(gitCommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG10; var init_git2 = __esm({ "src/commands/git/index.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_error2(); init_connect2(); init_disconnect2(); init_help(); init_command13(); init_get_flags_specification(); init_output_manager(); init_git(); init_get_subcommand(); COMMAND_CONFIG10 = { connect: ["connect"], disconnect: ["disconnect"] }; } }); // src/commands/guidance/status.ts async function status(client2) { const enabled = client2.config.guidance?.enabled !== false; const status3 = enabled ? import_chalk101.default.green("Enabled") : import_chalk101.default.red("Disabled"); output_manager_default.print("\n"); output_manager_default.log(`${import_chalk101.default.bold("Guidance status")}: ${status3}`); output_manager_default.print("\n"); return 0; } var import_chalk101; var init_status = __esm({ "src/commands/guidance/status.ts"() { "use strict"; import_chalk101 = __toESM3(require_source(), 1); init_output_manager(); } }); // src/commands/guidance/enable.ts async function enable(client2) { client2.config = { ...client2.config, guidance: { ...client2.config.guidance, enabled: true } }; writeToConfigFile(client2.config); await status(client2); return 0; } var init_enable = __esm({ "src/commands/guidance/enable.ts"() { "use strict"; init_files(); init_status(); } }); // src/commands/guidance/disable.ts async function disable(client2) { client2.config = { ...client2.config, guidance: { ...client2.config.guidance, enabled: false } }; writeToConfigFile(client2.config); await status(client2); return 0; } var init_disable = __esm({ "src/commands/guidance/disable.ts"() { "use strict"; init_files(); init_status(); } }); // src/util/telemetry/commands/guidance/index.ts var GuidanceTelemetryClient; var init_guidance = __esm({ "src/util/telemetry/commands/guidance/index.ts"() { "use strict"; init_telemetry(); GuidanceTelemetryClient = class extends TelemetryClient { trackCliSubcommandStatus(actual) { this.trackCliSubcommand({ subcommand: "status", value: actual }); } trackCliSubcommandEnable(actual) { this.trackCliSubcommand({ subcommand: "enable", value: actual }); } trackCliSubcommandDisable(actual) { this.trackCliSubcommand({ subcommand: "disable", value: actual }); } }; } }); // src/commands/guidance/index.ts var guidance_exports = {}; __export3(guidance_exports, { default: () => guidance }); async function guidance(client2) { if (!process.env.FF_GUIDANCE_MODE) { output_manager_default.error("The guidance subcommand does not exist"); return 1; } const telemetryClient = new GuidanceTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments; const flagsSpecification = getFlagsSpecification(guidanceCommand.options); try { parsedArguments = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (err) { printError(err); return 1; } const { subcommand, subcommandOriginal } = getSubcommand( parsedArguments.args.slice(1), COMMAND_CONFIG11 ); const needHelp = parsedArguments.flags["--help"]; function printHelp(command) { output_manager_default.print( help(command, { columns: client2.stderr.columns, parent: guidanceCommand }) ); } if (!subcommand && needHelp) { telemetryClient.trackCliFlagHelp("guidance", subcommand); output_manager_default.print(help(guidanceCommand, { columns: client2.stderr.columns })); return 2; } switch (subcommand) { case "status": if (needHelp) { telemetryClient.trackCliFlagHelp("guidance", subcommandOriginal); printHelp(statusSubcommand); return 2; } telemetryClient.trackCliSubcommandStatus(subcommandOriginal); return status(client2); case "enable": if (needHelp) { telemetryClient.trackCliFlagHelp("guidance", subcommandOriginal); printHelp(enableSubcommand); return 2; } telemetryClient.trackCliSubcommandEnable(subcommandOriginal); return enable(client2); case "disable": if (needHelp) { telemetryClient.trackCliFlagHelp("guidance", subcommandOriginal); printHelp(disableSubcommand); return 2; } return disable(client2); default: { output_manager_default.print(help(guidanceCommand, { columns: client2.stderr.columns })); return 2; } } } var COMMAND_CONFIG11; var init_guidance2 = __esm({ "src/commands/guidance/index.ts"() { "use strict"; init_error2(); init_get_args(); init_get_subcommand(); init_help(); init_status(); init_enable(); init_disable(); init_command14(); init_get_flags_specification(); init_guidance(); init_output_manager(); init_commands(); COMMAND_CONFIG11 = { status: getCommandAliases(statusSubcommand), enable: getCommandAliases(enableSubcommand), disable: getCommandAliases(disableSubcommand) }; } }); // src/util/telemetry/commands/httpstat/index.ts var HttpstatTelemetryClient; var init_httpstat = __esm({ "src/util/telemetry/commands/httpstat/index.ts"() { "use strict"; init_telemetry(); HttpstatTelemetryClient = class extends TelemetryClient { trackCliArgumentPath(path11) { if (path11) { const value = path11.startsWith("/") ? "slash" : "no-slash"; this.trackCliArgument({ arg: "path", value }); } } trackCliOptionDeployment(deploymentId) { if (deploymentId) { const value = deploymentId.startsWith("http://") || deploymentId.startsWith("https://") ? "url" : deploymentId.startsWith("dpl_") ? "dpl_" : "no-prefix"; this.trackCliOption({ option: "deployment", value }); } } trackCliOptionProtectionBypass(secret) { if (secret) { this.trackCliOption({ option: "protection-bypass", value: this.redactedValue }); } } }; } }); // src/commands/httpstat/index.ts var httpstat_exports = {}; __export3(httpstat_exports, { default: () => httpstat }); import { spawn as spawn5 } from "child_process"; async function httpstat(client2) { const telemetryClient = new HttpstatTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const setup = setupCurlLikeCommand(client2, httpstatCommand, telemetryClient); if (typeof setup === "number") { return setup; } const { path: path11, deploymentFlag, protectionBypassFlag, toolFlags } = setup; const result = await getDeploymentUrlAndToken(client2, "httpstat", path11, { deploymentFlag, protectionBypassFlag }); if (typeof result === "number") { return result; } const { fullUrl, deploymentProtectionToken } = result; const httpstatFlags = [...toolFlags]; if (deploymentProtectionToken) { httpstatFlags.unshift( "-H", `x-vercel-protection-bypass: ${deploymentProtectionToken}` ); } httpstatFlags.unshift(fullUrl); output_manager_default.debug( `Executing: httpstat ${httpstatFlags.map(requoteArgs).join(" ")}` ); return new Promise((resolve14) => { const httpstatProcess = spawn5("httpstat", httpstatFlags, { stdio: "inherit", shell: false }); httpstatProcess.on("error", (err) => { if ("code" in err && err.code === "ENOENT") { output_manager_default.error("httpstat command not found. Please install httpstat."); output_manager_default.log(""); output_manager_default.log("Installation instructions:"); output_manager_default.log(" macOS: brew install httpstat"); output_manager_default.log(" pip: pip install httpstat"); output_manager_default.log(" npm: npm install -g httpstat"); output_manager_default.log(""); output_manager_default.log( "Or visit: https://github.com/reorx/httpstat for more details" ); resolve14(1); } else { output_manager_default.error(`Failed to execute httpstat: ${err.message}`); resolve14(1); } }); httpstatProcess.on("close", (code2) => { resolve14(code2 ?? 1); }); }); } var init_httpstat2 = __esm({ "src/commands/httpstat/index.ts"() { "use strict"; init_command15(); init_output_manager(); init_utils4(); init_httpstat(); init_shared(); } }); // src/commands/init/init.ts import fs14 from "fs"; import path10 from "path"; async function init(client2, opts, args2, telemetry2) { const [name, dir] = args2; const force = opts["--force"]; const examples = await fetchExampleList(client2); if (!examples) { throw new Error("Could not fetch example list."); } const exampleList = examples.filter((x) => x.visible).map((x) => x.name); if (!name) { if (client2.stdin.isTTY !== true) { output_manager_default.print("No framework provided"); return 0; } const chosen = await chooseFromDropdown( client2, "Select example:", exampleList ); if (!chosen) { output_manager_default.log("Canceled"); return 0; } return extractExample(client2, chosen, dir, force); } if (exampleList.includes(name)) { telemetry2.trackCliArgumentExample(name, true); return extractExample(client2, name, dir, force); } const oldExample = examples.find((x) => !x.visible && x.name === name); if (oldExample) { telemetry2.trackCliArgumentExample(name, true); return extractExample(client2, name, dir, force, "v1"); } telemetry2.trackCliArgumentExample(name, false); const found = await guess(client2, exampleList, name); if (typeof found === "string") { return extractExample(client2, found, dir, force); } output_manager_default.log("No changes made."); return 0; } async function fetchExampleList(client2) { output_manager_default.spinner("Fetching examples"); const url3 = `${EXAMPLE_API}/v2/list.json`; const body = await client2.fetch(url3); output_manager_default.stopSpinner(); return body; } async function chooseFromDropdown(client2, message2, exampleList) { const choices = exampleList.map((name) => ({ name, value: name, short: name })); return list(client2, { message: message2, choices }); } async function extractExample(client2, name, dir, force, ver = "v2") { const folder = prepareFolder(client2.cwd, dir || name, force); output_manager_default.spinner(`Fetching ${name}`); const url3 = `${EXAMPLE_API}/${ver}/download/${name}.tar.gz`; return client2.fetch(url3, { json: false }).then(async (res) => { output_manager_default.stopSpinner(); if (res.status !== 200) { throw new Error(`Could not get ${name}.tar.gz`); } await new Promise((resolve14, reject) => { const extractor = import_tar_fs.default.extract(folder); res.body.on("error", reject); extractor.on("error", reject); extractor.on("finish", resolve14); res.body.pipe(extractor); }); const successLog = `Initialized "${import_chalk102.default.bold( name )}" example in ${import_chalk102.default.bold(humanizePath(folder))}.`; const folderRel = path10.relative(client2.cwd, folder); const deployHint = folderRel === "" ? list_item_default(`To deploy, run ${getCommandName()}.`) : list_item_default( `To deploy, ${cmd( `cd ${folderRel}` )} and run ${getCommandName()}.` ); output_manager_default.success(`${successLog} ${deployHint}`); return 0; }).catch((e2) => { output_manager_default.stopSpinner(); throw e2; }); } function prepareFolder(cwd, folder, force) { const dest = path10.join(cwd, folder); if (fs14.existsSync(dest)) { if (!fs14.lstatSync(dest).isDirectory()) { throw new Error( `Destination path "${import_chalk102.default.bold( folder )}" already exists and is not a directory.` ); } if (!force && fs14.readdirSync(dest).length !== 0) { throw new Error( `Destination path "${import_chalk102.default.bold( folder )}" already exists and is not an empty directory. You may use ${cmd( "--force" )} or ${cmd("-f")} to override it.` ); } } else if (dest !== cwd) { try { fs14.mkdirSync(dest); } catch (e2) { throw new Error(`Could not create directory "${import_chalk102.default.bold(folder)}".`); } } return dest; } async function guess(client2, exampleList, name) { const GuessError = new Error( `No example found for ${import_chalk102.default.bold(name)}, run ${getCommandName( "init" )} to see the list of available examples.` ); if (client2.stdin.isTTY !== true) { throw GuessError; } const found = did_you_mean_default(name, exampleList, 0.7); if (typeof found === "string") { if (await client2.input.confirm(`Did you mean ${import_chalk102.default.bold(found)}?`, false)) { return found; } } else { throw GuessError; } } var import_tar_fs, import_chalk102, EXAMPLE_API; var init_init = __esm({ "src/commands/init/init.ts"() { "use strict"; import_tar_fs = __toESM3(require_tar_fs(), 1); import_chalk102 = __toESM3(require_source(), 1); init_list(); init_list_item(); init_humanize_path(); init_cmd(); init_did_you_mean(); init_pkg_name(); init_output_manager(); EXAMPLE_API = "https://examples.vercel.sh"; } }); // src/util/telemetry/commands/init/index.ts var InitTelemetryClient; var init_init2 = __esm({ "src/util/telemetry/commands/init/index.ts"() { "use strict"; init_telemetry(); InitTelemetryClient = class extends TelemetryClient { trackCliArgumentExample(v, knownValue) { if (v) { this.trackCliArgument({ arg: "example", value: knownValue ? v : this.redactedValue }); } } trackCliArgumentDir(v) { if (v) { this.trackCliArgument({ arg: "dir", value: this.redactedValue }); } } trackCliFlagForce(v) { if (v) { this.trackCliFlag("force"); } } }; } }); // src/commands/init/index.ts var init_exports = {}; __export3(init_exports, { default: () => main10 }); async function main10(client2) { let parsedArgs; const flagsSpecification = getFlagsSpecification(initCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } const telemetry2 = new InitTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("init"); output_manager_default.print(help(initCommand, { columns: client2.stderr.columns })); return 2; } const args2 = getSubcommand(parsedArgs.args.slice(1), COMMAND_CONFIG12).args; if (parsedArgs.args.length > 3) { output_manager_default.error("Too many arguments."); return 1; } telemetry2.trackCliArgumentDir(parsedArgs.args[2]); telemetry2.trackCliFlagForce(parsedArgs.flags["--force"]); try { return await init(client2, parsedArgs.flags, args2, telemetry2); } catch (err) { output_manager_default.prettyError(err); if ((0, import_error_utils26.isError)(err) && typeof err.stack === "string") { output_manager_default.debug(err.stack); } return 1; } } var import_error_utils26, COMMAND_CONFIG12; var init_init3 = __esm({ "src/commands/init/index.ts"() { "use strict"; init_get_args(); init_get_subcommand(); init_error2(); init_init(); import_error_utils26 = __toESM3(require_dist2(), 1); init_help(); init_command16(); init_get_flags_specification(); init_output_manager(); init_init2(); COMMAND_CONFIG12 = { init: ["init"] }; } }); // src/util/build-state.ts var isReady, isFailed; var init_build_state = __esm({ "src/util/build-state.ts"() { "use strict"; isReady = ({ readyState }) => readyState === "READY"; isFailed = ({ readyState }) => readyState.endsWith("_ERROR") || readyState === "ERROR"; } }); // src/util/output/builds.ts var import_chalk103, import_bytes8, padding, MAX_BUILD_GROUPS, MAX_OUTPUTS_PER_GROUP, hasOutput, getCommonPath, styleBuild, styleHiddenBuilds, styleOutput, getDirPath, sortByEntrypoint, groupBuilds, builds_default; var init_builds = __esm({ "src/util/output/builds.ts"() { "use strict"; import_chalk103 = __toESM3(require_source(), 1); import_bytes8 = __toESM3(require_bytes(), 1); init_build_state(); padding = 8; MAX_BUILD_GROUPS = 5; MAX_OUTPUTS_PER_GROUP = 5; hasOutput = (b) => Array.isArray(b.output) && b.output.length > 0; getCommonPath = (buildGroup) => { const commonPath = []; const splits = buildGroup.map( (build2) => getDirPath(build2.entrypoint).split("/") ); const shortest = splits.reduce( (prevValue, currentValue) => Math.min(prevValue, currentValue.length), Infinity ); for (let i = 0; i <= shortest; i++) { const first = splits[0][i]; if (splits.every((pathParts) => pathParts[i] === first)) { commonPath.push(first); continue; } break; } return commonPath.join("/") || "/"; }; styleBuild = (build2, times, longestSource) => { const { entrypoint, id } = build2; const time = typeof times[id] === "string" ? times[id] : ""; let pathColor = import_chalk103.default.cyan; if (isFailed(build2)) { pathColor = import_chalk103.default.red; } const entry = entrypoint.padEnd(longestSource + padding); const prefix = hasOutput(build2) ? "\u250C" : "\u2576"; return `${import_chalk103.default.grey(prefix)} ${pathColor(entry)}${time}`; }; styleHiddenBuilds = (commonPath, buildGroup, times, longestSource, isHidden2 = false) => { const { id } = buildGroup[0]; const entry = commonPath.padEnd(longestSource + padding); const time = typeof times[id] === "string" ? times[id] : ""; const prefix = isHidden2 === false && buildGroup.some(hasOutput) ? "\u250C" : "\u2576"; let pathColor = import_chalk103.default.cyan; if (buildGroup.every(isFailed)) { pathColor = import_chalk103.default.red; } if (isHidden2) { pathColor = import_chalk103.default.grey; } return `${import_chalk103.default.grey(prefix)} ${pathColor(entry)}${time}`; }; styleOutput = (output2, readyState, isLast) => { const { type, path: path11, size, lambda } = output2; const prefix = type === "lambda" ? "\u03BB " : ""; const finalSize = size ? ` ${import_chalk103.default.grey(`(${(0, import_bytes8.default)(size)})`)}` : ""; let color = import_chalk103.default.grey; let finalRegion = ""; if (isReady({ readyState })) { color = import_chalk103.default; } else if (isFailed({ readyState })) { color = import_chalk103.default.red; } if (lambda) { const { deployedTo } = lambda; if (deployedTo && deployedTo.length > 0) { finalRegion = ` ${import_chalk103.default.grey(`[${deployedTo.join(", ")}]`)}`; } } const corner = isLast ? "\u2514\u2500\u2500" : "\u251C\u2500\u2500"; const main19 = prefix + path11 + finalSize + finalRegion; return `${import_chalk103.default.grey(corner)} ${color(main19)}`; }; getDirPath = (path11, level = 0, highestLevel = null) => { const parts = path11.split("/").slice(0, -1); if (highestLevel === null || level === 0) { return parts.join("/"); } const reverseLevel = highestLevel - level; return parts.slice(0, reverseLevel).join("/"); }; sortByEntrypoint = (a, b) => { const aPath = getDirPath(a.entrypoint); const bPath = getDirPath(b.entrypoint); if (aPath === "") { return 1; } if (bPath === "") { return -1; } if (aPath > bPath) { return 1; } if (bPath > aPath) { return -1; } return 0; }; groupBuilds = (buildList, highestLevel, counter) => { const currentIndex = counter % buildList.length; const __level = Math.ceil(counter / buildList.length); const _level = (__level === 0 ? 1 : __level) - 1; const level = _level > highestLevel ? highestLevel : _level; const currentPath = getDirPath( buildList[currentIndex][0].entrypoint, level, highestLevel ); const nextList = []; const currentGroup = []; for (let i = 0; i < buildList.length; i++) { const group = buildList[i]; const path11 = getDirPath(group[0].entrypoint, level, highestLevel); if (path11 === currentPath) { currentGroup.push(...group); } else { nextList.push(group); } } if (currentIndex === 0) { nextList.unshift(currentGroup); } else { nextList.splice(currentIndex, 0, currentGroup); } return nextList; }; builds_default = (builds, times) => { let path11 = builds.sort(sortByEntrypoint).map((build2) => [build2]); const highestLevel = builds.reduce((prev, curr) => { const partCounter = curr.entrypoint.split("/").length - 1; return partCounter > prev ? partCounter : prev; }, 0); let counter = 0; while (path11.length > MAX_BUILD_GROUPS) { path11 = groupBuilds(path11, highestLevel, counter); counter++; } path11 = path11.reverse(); const longestSource = builds.reduce((final2, current) => { const { length } = current.entrypoint; return length > final2 ? length : final2; }, 0); const final = []; let finalBuildsLength = path11.length; let lengthWithoutRootPaths = path11.length; const hiddenBuildGroup = []; path11 = (() => { const nextList = []; const rootList = []; for (const group of path11) { if (getCommonPath(group) === "/") { group.map((item) => rootList.push([item])); } else { nextList.push(group); } } lengthWithoutRootPaths = nextList.length; rootList.map((group) => nextList.push(group)); return nextList; })(); for (const buildGroup of path11) { const commonPath = getCommonPath(buildGroup); if (commonPath === "/") { if (lengthWithoutRootPaths <= MAX_BUILD_GROUPS && finalBuildsLength <= MAX_BUILD_GROUPS) { const item = buildGroup[0]; final.push(`${styleBuild(item, times, longestSource)} `); finalBuildsLength++; } else { hiddenBuildGroup.push(buildGroup[0]); continue; } } else if (buildGroup.length === 1) { const item = buildGroup[0]; final.push(`${styleBuild(item, times, longestSource)} `); finalBuildsLength++; } else { final.push( `${styleHiddenBuilds( `${commonPath}/*`, buildGroup, times, longestSource )} ` ); finalBuildsLength++; } const outputs = []; for (const build2 of buildGroup) { if (Array.isArray(build2.output)) { outputs.push(...build2.output); } } outputs.slice(0, MAX_OUTPUTS_PER_GROUP).forEach( (output2, index) => final.push( `${styleOutput(output2, "READY", outputs.length === index + 1)} ` ) ); if (outputs.length > MAX_OUTPUTS_PER_GROUP) { final.push( import_chalk103.default.grey( `\u2514\u2500\u2500 ${outputs.length - MAX_OUTPUTS_PER_GROUP} output items hidden ` ) ); } } if (hiddenBuildGroup.length) { final.push( `${styleHiddenBuilds( `${hiddenBuildGroup.length} builds hidden`, hiddenBuildGroup, times, longestSource, true )} ` ); } return { lines: final.length + 1, toPrint: `${final.join("")}` }; }; } }); // src/util/output/indent.ts var indent_default; var init_indent = __esm({ "src/util/output/indent.ts"() { "use strict"; indent_default = (input, level) => { const fill = " ".repeat(level); return `${fill}${input.replace(/\n/g, ` ${fill}`)}`; }; } }); // src/util/output/routes.ts function routes(routes2) { let toPrint = ""; const longestSrc = longestProperty(routes2, "src"); const longestDest = longestProperty(routes2, "dest"); const padding2 = 6; const space = " ".repeat(padding2); const destSpace = " ".repeat(longestDest || 10); const arrow = import_chalk104.default.grey("->"); for (const item of routes2) { if ("handle" in item) { toPrint += `${import_chalk104.default.grey("\u2576")} ${import_chalk104.default.cyan(item.handle)}`; continue; } const { src, dest, status: status3, headers } = item; const last = routes2.indexOf(item) === routes2.length - 1; const suffix = last ? "" : ` `; const finalSrc = import_chalk104.default.cyan(src.padEnd(longestSrc + padding2)); const finalDest = dest ? `${arrow}${space}${dest}` : ` ${space}${destSpace}`; const finalStatus = status3 ? import_chalk104.default.grey(`[${status3}]`) : ""; let finalHeaders = null; if (headers) { finalHeaders = ` `; const headerKeys = Object.keys(headers); for (const header of headerKeys) { const value = headers[header]; const last2 = headerKeys.indexOf(header) === headerKeys.length - 1; const suffix2 = last2 ? "" : ` `; const prefix2 = import_chalk104.default.grey(last2 ? "\u2514\u2500\u2500" : "\u251C\u2500\u2500"); finalHeaders += `${prefix2} ${header}: ${value}${suffix2}`; } } const prefix = import_chalk104.default.grey(finalHeaders ? "\u250C" : "\u2576"); const fill = `${finalSrc}${finalDest}${space}${finalStatus}`; toPrint += `${prefix} ${fill}${finalHeaders || ""}${suffix}`; } return toPrint; } var import_chalk104, longestProperty; var init_routes = __esm({ "src/util/output/routes.ts"() { "use strict"; import_chalk104 = __toESM3(require_source(), 1); longestProperty = (routes2, name) => { const longestItem = routes2.sort((a, b) => { const aName = a[name]; const bName = b[name]; const firstItem = typeof aName === "string" ? aName.length : 0; const secondItem = typeof bName === "string" ? bName.length : 0; return secondItem - firstItem; })[0]; const val = longestItem[name]; return typeof val === "string" ? val.length : 0; }; } }); // src/util/telemetry/commands/inspect/index.ts var InspectTelemetryClient; var init_inspect3 = __esm({ "src/util/telemetry/commands/inspect/index.ts"() { "use strict"; init_telemetry(); InspectTelemetryClient = class extends TelemetryClient { trackCliArgumentUrlOrDeploymentId(idOrHost) { if (idOrHost) { this.trackCliArgument({ arg: "deploymentIdOrHost", value: this.redactedValue }); } } trackCliOptionTimeout(timeout) { if (timeout) { this.trackCliOption({ option: "timeout", value: this.redactedValue }); } } trackCliFlagLogs(logs2) { if (logs2) { this.trackCliFlag("logs"); } } trackCliFlagWait(wait3) { if (wait3) { this.trackCliFlag("wait"); } } trackCliFlagJson(json) { if (json) { this.trackCliFlag("json"); } } }; } }); // src/commands/inspect/index.ts var inspect_exports = {}; __export3(inspect_exports, { default: () => inspect3 }); import { URL as URL9 } from "url"; async function inspect3(client2) { const { print, error: error3, warn } = output_manager_default; const telemetry2 = new InspectTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments; const flagsSpecification = getFlagsSpecification(inspectCommand.options); try { parsedArguments = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (err) { printError(err); return 1; } if (parsedArguments.flags["--help"]) { telemetry2.trackCliFlagHelp("inspect"); print(help(inspectCommand, { columns: client2.stderr.columns })); return 2; } if (parsedArguments.args[0] === inspectCommand.name) { parsedArguments.args.shift(); } let [deploymentIdOrHost] = parsedArguments.args; if (!deploymentIdOrHost) { const stdInput = await readStandardInput(client2.stdin); if (stdInput) { deploymentIdOrHost = stdInput; } } if (!deploymentIdOrHost) { error3(`${getCommandName("inspect ")} expects exactly one argument`); print(help(inspectCommand, { columns: client2.stderr.columns })); return 1; } telemetry2.trackCliArgumentUrlOrDeploymentId(deploymentIdOrHost); telemetry2.trackCliOptionTimeout(parsedArguments.flags["--timeout"]); telemetry2.trackCliFlagLogs(parsedArguments.flags["--logs"]); telemetry2.trackCliFlagWait(parsedArguments.flags["--wait"]); telemetry2.trackCliOptionFormat(parsedArguments.flags["--format"]); telemetry2.trackCliFlagJson(parsedArguments.flags["--json"]); const timeout = (0, import_ms19.default)(parsedArguments.flags["--timeout"] ?? "3m"); if (timeout === void 0) { error3(`Invalid timeout "${parsedArguments.flags["--timeout"]}"`); return 1; } let contextName = null; try { ({ contextName } = await getScope(client2)); } catch (err) { if ((0, import_error_utils27.isErrnoException)(err) && (err.code === "NOT_AUTHORIZED" || err.code === "TEAM_DELETED")) { error3(err.message); return 1; } throw err; } const until = Date.now() + timeout; const wait3 = parsedArguments.flags["--wait"] ?? false; const withLogs = parsedArguments.flags["--logs"]; const formatResult = validateJsonOutput(parsedArguments.flags); if (!formatResult.valid) { error3(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; const startTimestamp = Date.now(); try { deploymentIdOrHost = new URL9(deploymentIdOrHost).hostname; } catch { } output_manager_default.spinner( `Fetching deployment "${deploymentIdOrHost}" in ${import_chalk105.default.bold(contextName)}` ); let deployment = await getDeployment(client2, contextName, deploymentIdOrHost); let abortController; if (withLogs && !asJson) { let promise; ({ abortController, promise } = displayBuildLogs(client2, deployment, wait3)); if (wait3) { promise.catch((error4) => warn(`Failed to read build logs: ${error4}`)); } else { await promise; } } while (wait3) { await sleep(250); deployment = await getDeployment(client2, contextName, deploymentIdOrHost); if (!isDeploying(deployment.readyState)) { abortController?.abort(); break; } if (Date.now() > until) { warn(`stopped waiting after ${(0, import_ms19.default)(timeout, { long: true })}`); abortController?.abort(); break; } } if (asJson) { output_manager_default.stopSpinner(); await printJson({ deployment, contextName, client: client2 }); } else if (withLogs) { print(`${import_chalk105.default.cyan("status")} ${stateString(deployment.readyState)} `); } else { await printDetails({ deployment, contextName, client: client2, startTimestamp }); } return exitCode(deployment.readyState); } function stateString(s) { const CIRCLE = "\u25CF "; const sTitle = s && (0, import_title6.default)(s); switch (s) { case "INITIALIZING": case "BUILDING": return import_chalk105.default.yellow(CIRCLE) + sTitle; case "ERROR": return import_chalk105.default.red(CIRCLE) + sTitle; case "READY": return import_chalk105.default.green(CIRCLE) + sTitle; case "QUEUED": return import_chalk105.default.gray(CIRCLE) + sTitle; case "CANCELED": return import_chalk105.default.gray(CIRCLE) + sTitle; default: return import_chalk105.default.gray("UNKNOWN"); } } async function printDetails({ deployment, contextName, client: client2, startTimestamp }) { output_manager_default.log( `Fetched deployment "${import_chalk105.default.bold(deployment.url)}" in ${import_chalk105.default.bold( contextName )} ${elapsed(Date.now() - startTimestamp)}` ); const { id, name, url: url3, createdAt, routes: routes2, readyState, alias: aliases } = deployment; const { print, link: link4 } = output_manager_default; const { builds } = deployment.version === 2 ? await client2.fetch(`/v11/deployments/${id}/builds`) : { builds: [] }; print("\n"); print(import_chalk105.default.bold(" General\n\n")); print(` ${import_chalk105.default.cyan("id")} ${id} `); print(` ${import_chalk105.default.cyan("name")} ${name} `); const customEnvironmentSlug = deployment.customEnvironment?.slug; const target = customEnvironmentSlug ?? deployment.target ?? "preview"; print(` ${import_chalk105.default.cyan("target")} `); print( deployment.customEnvironment && deployment.team?.slug ? `${link4( `${target}`, `https://vercel.com/${deployment.team.slug}/${name}/settings/environments/${deployment.customEnvironment.id}`, { fallback: () => target, color: false } )} ` : `${target} ` ); print(` ${import_chalk105.default.cyan("status")} ${stateString(readyState)} `); print(` ${import_chalk105.default.cyan("url")} https://${url3} `); if (createdAt) { print( ` ${import_chalk105.default.cyan("created")} ${new Date(createdAt)} ${elapsed( Date.now() - createdAt, true )} ` ); } print("\n\n"); if (aliases !== void 0 && aliases.length > 0) { print(import_chalk105.default.bold(" Aliases\n\n")); let aliasList = ""; for (const alias2 of aliases) { aliasList += `${import_chalk105.default.gray("\u2576")} https://${alias2} `; } print(indent_default(aliasList, 4)); print("\n\n"); } if (builds.length > 0) { const times = {}; for (const build2 of builds) { const { id: id2, createdAt: createdAt2, readyStateAt } = build2; times[id2] = createdAt2 && readyStateAt ? elapsed(readyStateAt - createdAt2) : null; } print(import_chalk105.default.bold(" Builds\n\n")); print(indent_default(builds_default(builds, times).toPrint, 4)); print("\n\n"); } if (Array.isArray(routes2) && routes2.length > 0) { print(import_chalk105.default.bold(" Routes\n\n")); print(indent_default(routes(routes2), 4)); print(` `); } } async function printJson({ deployment, contextName, client: client2 }) { const { id, name, url: url3, createdAt, routes: routes2, readyState, alias: aliases, target, customEnvironment } = deployment; const { builds } = deployment.version === 2 ? await client2.fetch(`/v11/deployments/${id}/builds`) : { builds: [] }; const jsonOutput = { id, name, url: url3, target: customEnvironment?.slug ?? target ?? "preview", readyState, createdAt, ...aliases && aliases.length > 0 && { aliases }, ...builds.length > 0 && { builds }, ...Array.isArray(routes2) && routes2.length > 0 && { routes: routes2 }, ...contextName && { contextName } }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } function exitCode(state) { if (state === "ERROR" || state === "CANCELED") { return 1; } return 0; } var import_error_utils27, import_chalk105, import_ms19, import_title6; var init_inspect4 = __esm({ "src/commands/inspect/index.ts"() { "use strict"; import_error_utils27 = __toESM3(require_dist2(), 1); import_chalk105 = __toESM3(require_source(), 1); import_ms19 = __toESM3(require_ms(), 1); import_title6 = __toESM3(require_lib4(), 1); init_is_deploying(); init_logs(); init_error2(); init_get_args(); init_get_deployment(); init_get_flags_specification(); init_get_scope(); init_read_standard_input(); init_builds(); init_elapsed(); init_indent(); init_output_format(); init_routes(); init_pkg_name(); init_sleep(); init_help(); init_command17(); init_output_manager(); init_inspect3(); } }); // src/commands/integration/wizard.ts function createHiddenStep(key, schema) { if (schema["ui:hidden"] !== true && schema["ui:hidden"] !== "create") { throw new Error( `HiddenStep: Expected "ui:hidden" to have value 'true' or '"create"' for key "${key}", but was "${schema["ui:hidden"]}"` ); } return async () => { const value = schema.default; return [key, value]; }; } function createInputStep(key, schema) { if (schema["ui:control"] !== "input") { throw new Error( `InputStep: Expected control "input" for key "${key}", but was "${schema["ui:control"]}"` ); } switch (schema.type) { case "string": { return async (client2) => { const value = await client2.input.text({ message: schema["ui:placeholder"] || schema["ui:label"] || key, default: schema.default }); return [key, value]; }; } case "number": { return async (client2) => { const value = await client2.input.text({ message: schema["ui:placeholder"] || schema["ui:label"] || key, default: schema.default, validate: (value2) => { const number = Number(value2); if (Number.isNaN(number)) { return `Value "${value2}" must be a number.`; } if (schema.minimum !== void 0 && schema.minimum > number) { return `Value "${value2}" must be greater or equal ${schema.minimum}.`; } if (schema.maximum !== void 0 && schema.maximum < number) { return `Value "${value2}" must be smaller or equal ${schema.maximum}.`; } return true; } }); return [key, value]; }; } default: { throw new Error( `[Input Step] Unsupported schema type for input control of key "${key}": ${schema.type}` ); } } } function createSelectStep(key, schema) { if (!["select", "region", "vercel-region"].includes(schema["ui:control"])) { throw new Error( `SelectStep: Expected control "select", "region" or "vercel-region", but was "${schema["ui:control"]}"` ); } if (!schema["ui:options"]?.length) { throw new Error( `SelectStep: Expected control for key "${key}" to have options, but was ${JSON.stringify(schema["ui:options"])}` ); } const options = schema["ui:options"]; const choices = []; const defaultValue = schema.default; for (const option of options) { if (typeof option === "string") { choices.push({ name: option, value: option, short: option, selected: Boolean(defaultValue && option === defaultValue) }); } else { if (option.hidden) { continue; } choices.push({ name: option.label, value: option.value, short: option.label, selected: Boolean(defaultValue && option.value === defaultValue) }); } } return async (client2) => { const value = await list(client2, { message: schema["ui:placeholder"] || schema["ui:label"] || key, choices }); return [key, value]; }; } function createMetadataWizard(metadataSchema) { const properties = metadataSchema.properties; let isSupported = true; let allFieldsAreReadonly = true; const steps = []; for (const [key, schema] of Object.entries(properties)) { try { if (isHidden(schema)) { steps.push(createHiddenStep(key, schema)); continue; } if (isDisabled(schema)) { continue; } if (!supportedUIControls.has(schema["ui:control"])) { isSupported = false; break; } if (!isReadOnly(schema)) { allFieldsAreReadonly = false; } } catch (error3) { if (error3 instanceof ExpressionError) { isSupported = false; break; } throw error3; } switch (schema["ui:control"]) { case "input": { steps.push(createInputStep(key, schema)); break; } case "region": case "vercel-region": case "select": { steps.push(createSelectStep(key, schema)); break; } default: { throw new Error( `Unsupported metadata control: ${schema["ui:control"]}` ); } } } return { isSupported, run: async (client2) => allFieldsAreReadonly ? getMetadataFromReadOnlyFields(metadataSchema) : getMetadataFromSteps(client2, steps) }; } function getMetadataFromReadOnlyFields(metadataSchema) { const metadata = {}; for (const [key, schema] of Object.entries(metadataSchema.properties)) { if (isHidden(schema)) { continue; } if (!isReadOnly(schema)) { throw new Error(`Field "${key}" must be read-only.`); } metadata[key] = schema.default; } return metadata; } async function getMetadataFromSteps(client2, steps) { const metadataEntries = []; for (const step of steps) { metadataEntries.push(await step(client2)); } return Object.fromEntries(metadataEntries); } function isHidden(schema) { if (instanceOfExpression(schema["ui:hidden"])) { throw new ExpressionError("Expression found in schema"); } return Boolean( schema["ui:hidden"] === true || schema["ui:hidden"] === "create" ); } function isReadOnly(schema) { if (instanceOfExpression(schema["ui:read-only"])) { throw new ExpressionError("Expression found in schema"); } return Boolean( schema["ui:read-only"] === true || schema["ui:read-only"] === "create" ); } function isDisabled(schema) { if (instanceOfExpression(schema["ui:disabled"])) { throw new ExpressionError("Expression found in schema"); } return Boolean( schema["ui:disabled"] === true || schema["ui:disabled"] === "create" ); } function instanceOfExpression(obj) { const checkedAsObject = Object(obj); if (obj !== checkedAsObject) { return false; } return "expr" in checkedAsObject; } var supportedUIControls, ExpressionError; var init_wizard = __esm({ "src/commands/integration/wizard.ts"() { "use strict"; init_list(); supportedUIControls = /* @__PURE__ */ new Set([ "input", "select", "region", "vercel-region" ]); ExpressionError = class extends Error { }; } }); // src/util/integration/provision-store-resource.ts async function provisionStoreResource(client2, installationId, productId, billingPlanId, name, metadata, authorizationId) { return await client2.fetch( "/v1/storage/stores/integration", { method: "POST", json: true, body: { billingPlanId, integrationConfigurationId: installationId, integrationProductIdOrSlug: productId, metadata, name, authorizationId, source: "cli" } } ); } var init_provision_store_resource = __esm({ "src/util/integration/provision-store-resource.ts"() { "use strict"; } }); // src/util/integration/auto-provision-resource.ts function isAutoProvisionFallback(error3) { return typeof error3 === "object" && error3 !== null && "kind" in error3 && ["install", "metadata", "unknown"].includes( error3.kind ) && "url" in error3 && "integration" in error3 && "product" in error3; } async function autoProvisionResource(client2, integrationSlug, productSlug, name, metadata, acceptedPolicies) { const endpoint = `/v1/integrations/integration/${encodeURIComponent(integrationSlug)}/marketplace/auto-provision/${encodeURIComponent(productSlug)}`; const body = { name, metadata, acceptedPolicies, source: "cli" }; output_manager_default.debug(`Auto-provision request: POST ${endpoint}`); output_manager_default.debug(`Auto-provision body: ${JSON.stringify(body, null, 2)}`); try { const res = await client2.fetch(endpoint, { method: "POST", json: false, body }); if (res.ok) { return res.json(); } throw new Error(`Auto-provision failed: ${res.status}`); } catch (error3) { if (error3 instanceof APIError && error3.status === 422 && isAutoProvisionFallback(error3)) { output_manager_default.debug(`Auto-provision returned 422 fallback response`); return error3; } output_manager_default.debug(`Auto-provision error: ${error3}`); throw error3; } } var init_auto_provision_resource = __esm({ "src/util/integration/auto-provision-resource.ts"() { "use strict"; init_output_manager(); init_errors_ts(); } }); // src/util/integration/fetch-integration.ts async function fetchIntegration(client2, slug) { return client2.fetch(`/v2/integrations/integration/${slug}`, { json: true }); } var init_fetch_integration = __esm({ "src/util/integration/fetch-integration.ts"() { "use strict"; } }); // src/util/telemetry/commands/integration/add.ts var IntegrationAddTelemetryClient; var init_add9 = __esm({ "src/util/telemetry/commands/integration/add.ts"() { "use strict"; init_telemetry(); IntegrationAddTelemetryClient = class extends TelemetryClient { trackCliArgumentName(v, known) { if (v) { this.trackCliArgument({ arg: "name", value: known ? v : this.redactedValue }); } } }; } }); // src/commands/integration/add-auto-provision.ts async function addAutoProvision(client2, integrationSlug) { const telemetry2 = new IntegrationAddTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const { contextName, team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found"); return 1; } let integration; let knownIntegrationSlug = false; try { integration = await fetchIntegration(client2, integrationSlug); knownIntegrationSlug = true; } catch (error3) { output_manager_default.error( `Failed to get integration "${integrationSlug}": ${error3.message}` ); return 1; } finally { telemetry2.trackCliArgumentName(integrationSlug, knownIntegrationSlug); } if (!integration.products?.length) { output_manager_default.error( `Integration "${integrationSlug}" is not a Marketplace integration` ); return 1; } let product; if (integration.products.length === 1) { product = integration.products[0]; } else { product = await client2.input.select({ message: "Select a product", choices: integration.products.map((p) => ({ name: p.name, value: p, description: p.shortDescription })) }); } output_manager_default.log( `Installing ${import_chalk106.default.bold(product.name)} by ${import_chalk106.default.bold(integration.name)} under ${import_chalk106.default.bold(contextName)}` ); output_manager_default.debug(`Selected product: ${product.slug} (id: ${product.id})`); output_manager_default.debug( `Product metadataSchema: ${JSON.stringify(product.metadataSchema, null, 2)}` ); const metadataWizard = createMetadataWizard(product.metadataSchema); output_manager_default.debug(`Metadata wizard supported: ${metadataWizard.isSupported}`); const resourceName = await client2.input.text({ message: "What is the name of the resource?", validate: (value) => value.trim() ? true : "Resource name is required" }); const metadata = metadataWizard.isSupported ? await metadataWizard.run(client2) : {}; output_manager_default.debug(`Collected metadata: ${JSON.stringify(metadata)}`); output_manager_default.debug(`Resource name: ${resourceName}`); output_manager_default.spinner("Provisioning resource..."); let result; try { result = await autoProvisionResource( client2, integration.slug, product.slug, resourceName, metadata, {} // Start with empty policies ); } catch (error3) { output_manager_default.stopSpinner(); output_manager_default.error(error3.message); return 1; } output_manager_default.stopSpinner(); output_manager_default.debug(`Auto-provision result: ${JSON.stringify(result, null, 2)}`); if (result.kind === "install") { output_manager_default.debug(`Policy acceptance required`); const policies = result.integration.policies ?? {}; output_manager_default.debug(`Policies to accept: ${JSON.stringify(policies)}`); const acceptedPolicies = {}; if (policies.privacy) { const accepted = await client2.input.confirm( `Accept privacy policy? (${policies.privacy})`, false ); if (!accepted) { output_manager_default.error("Privacy policy must be accepted to continue."); return 1; } acceptedPolicies.privacy = (/* @__PURE__ */ new Date()).toISOString(); } if (policies.eula) { const accepted = await client2.input.confirm( `Accept terms of service? (${policies.eula})`, false ); if (!accepted) { output_manager_default.error("Terms of service must be accepted to continue."); return 1; } acceptedPolicies.eula = (/* @__PURE__ */ new Date()).toISOString(); } output_manager_default.debug(`Accepted policies: ${JSON.stringify(acceptedPolicies)}`); output_manager_default.spinner("Provisioning resource..."); try { result = await autoProvisionResource( client2, integration.slug, product.slug, resourceName, metadata, acceptedPolicies ); } catch (error3) { output_manager_default.stopSpinner(); output_manager_default.error(error3.message); return 1; } output_manager_default.stopSpinner(); output_manager_default.debug( `Auto-provision retry result: ${JSON.stringify(result, null, 2)}` ); } if (result.kind !== "provisioned") { output_manager_default.debug(`Fallback required - kind: ${result.kind}`); output_manager_default.debug(`Fallback URL from API: ${result.url}`); const projectLink2 = await getOptionalLinkedProject(client2); if (projectLink2?.status === "error") { return projectLink2.exitCode; } output_manager_default.log("Additional setup required. Opening browser..."); const url3 = new URL(result.url); url3.searchParams.set("defaultResourceName", resourceName); url3.searchParams.set("source", "cli"); if (projectLink2?.project) { url3.searchParams.set("projectSlug", projectLink2.project.name); } output_manager_default.debug(`Opening URL: ${url3.href}`); (0, import_open3.default)(url3.href); return 0; } output_manager_default.debug( `Provisioned resource: ${JSON.stringify(result.resource, null, 2)}` ); output_manager_default.debug(`Installation: ${JSON.stringify(result.installation, null, 2)}`); output_manager_default.debug(`Billing plan: ${JSON.stringify(result.billingPlan, null, 2)}`); output_manager_default.success(`${product.name} successfully provisioned`); const projectLink = await getOptionalLinkedProject(client2); if (projectLink?.status === "error") { return projectLink.exitCode; } if (!projectLink?.project) { return 0; } const environments = await client2.input.checkbox({ message: "Select environments", choices: [ { name: "Production", value: "production", checked: true }, { name: "Preview", value: "preview", checked: true }, { name: "Development", value: "development", checked: true } ] }); output_manager_default.debug(`Selected environments: ${JSON.stringify(environments)}`); output_manager_default.spinner(`Connecting to ${import_chalk106.default.bold(projectLink.project.name)}...`); output_manager_default.debug( `Connecting resource ${result.resource.id} to project ${projectLink.project.id}` ); try { await connectResourceToProject( client2, projectLink.project.id, result.resource.id, environments ); } catch (error3) { output_manager_default.stopSpinner(); output_manager_default.error(`Failed to connect: ${error3.message}`); return 1; } output_manager_default.stopSpinner(); output_manager_default.success(`Connected to ${projectLink.project.name}`); output_manager_default.log( indent_default( `Run ${cmd(`${packageName} env pull`)} to update environment variables`, 4 ) ); return 0; } async function getOptionalLinkedProject(client2) { const linkedProject = await getLinkedProject(client2); if (linkedProject.status === "not_linked") { return; } const shouldLinkToProject = await client2.input.confirm( "Do you want to link this resource to the current project?", true ); if (!shouldLinkToProject) { return; } if (linkedProject.status === "error") { return { status: "error", exitCode: linkedProject.exitCode }; } return { status: "success", project: linkedProject.project }; } var import_chalk106, import_open3; var init_add_auto_provision = __esm({ "src/commands/integration/add-auto-provision.ts"() { "use strict"; import_chalk106 = __toESM3(require_source(), 1); import_open3 = __toESM3(require_open(), 1); init_output_manager(); init_get_scope(); init_auto_provision_resource(); init_fetch_integration(); init_connect_resource_to_project(); init_cmd(); init_indent(); init_pkg_name(); init_link2(); init_add9(); init_wizard(); } }); // src/util/integration/fetch-billing-plans.ts async function fetchBillingPlans(client2, integration, product, metadata) { const searchParams = new URLSearchParams(); searchParams.set("metadata", JSON.stringify(metadata)); return client2.fetch( `/v1/integrations/integration/${integration.id}/products/${product.id}/plans?${searchParams}`, { json: true } ); } var init_fetch_billing_plans = __esm({ "src/util/integration/fetch-billing-plans.ts"() { "use strict"; } }); // src/util/integration/fetch-installations.ts async function fetchInstallations(client2, integration) { const searchParams = new URLSearchParams(); searchParams.set("view", "account"); searchParams.set("installationType", "marketplace"); searchParams.set("integrationIdOrSlug", integration.id); return client2.fetch( `/v2/integrations/configurations?${searchParams}`, { json: true } ); } var init_fetch_installations = __esm({ "src/util/integration/fetch-installations.ts"() { "use strict"; } }); // src/util/integration/create-authorization.ts async function createAuthorization(client2, integrationIdOrSlug, installationId, productId, billingPlanId, metadata, prepaymentAmountCents) { return await client2.fetch("/v1/integrations/billing/authorization", { method: "POST", json: true, body: { billingPlanId, integrationIdOrSlug, integrationConfigurationId: installationId, productId, metadata: JSON.stringify(metadata), prepaymentAmountCents } }); } var init_create_authorization = __esm({ "src/util/integration/create-authorization.ts"() { "use strict"; } }); // src/util/integration/fetch-authorization.ts async function fetchAuthorization(client2, authorizationId) { return client2.fetch( `/v1/integrations/billing/authorization/${authorizationId}`, { json: true } ); } var init_fetch_authorization = __esm({ "src/util/integration/fetch-authorization.ts"() { "use strict"; } }); // src/commands/integration/add.ts async function add5(client2, args2) { const telemetry2 = new IntegrationAddTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (args2.length > 1) { output_manager_default.error("Cannot install more than one integration at a time"); return 1; } const integrationSlug = args2[0]; if (!integrationSlug) { output_manager_default.error("You must pass an integration slug"); return 1; } if (process.env.FF_AUTO_PROVISION_INSTALL === "1") { return await addAutoProvision(client2, integrationSlug); } const { contextName, team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found"); return 1; } let integration; let knownIntegrationSlug = false; try { integration = await fetchIntegration(client2, integrationSlug); knownIntegrationSlug = true; } catch (error3) { output_manager_default.error( `Failed to get integration "${integrationSlug}": ${error3.message}` ); return 1; } finally { telemetry2.trackCliArgumentName(integrationSlug, knownIntegrationSlug); } if (!integration.products) { output_manager_default.error( `Integration "${integrationSlug}" is not a Marketplace integration` ); return 1; } const [productResult, installationsResult] = await Promise.allSettled([ selectProduct(client2, integration), fetchInstallations(client2, integration) ]); if (productResult.status === "rejected" || !productResult.value) { output_manager_default.error("Product not found"); return 1; } if (installationsResult.status === "rejected") { output_manager_default.error( `Failed to get integration installations: ${installationsResult.reason}` ); return 1; } const product = productResult.value; const installations = installationsResult.value; const teamInstallations = installations.filter( (install2) => install2.ownerId === team.id && install2.installationType === "marketplace" ); if (teamInstallations.length > 1) { output_manager_default.error( `Found more than one existing installation of ${integration.name}. Please contact Vercel Support at https://vercel.com/help` ); return 1; } const installation = teamInstallations[0]; output_manager_default.log( `Installing ${import_chalk107.default.bold(product.name)} by ${import_chalk107.default.bold(integration.name)} under ${import_chalk107.default.bold(contextName)}` ); const metadataSchema = product.metadataSchema; const metadataWizard = createMetadataWizard(metadataSchema); const provisionResourceViaCLIIsSupported = installation && metadataWizard.isSupported; if (!provisionResourceViaCLIIsSupported) { const projectLink = await getOptionalLinkedProject2(client2); if (projectLink?.status === "error") { return projectLink.exitCode; } const openInWeb = await client2.input.confirm( !installation ? "Terms have not been accepted. Open Vercel Dashboard?" : "This resource must be provisioned through the Web UI. Open Vercel Dashboard?", true ); if (openInWeb) { provisionResourceViaWebUI( team.id, integration.id, product.id, projectLink?.project?.id ); } return 0; } return await provisionResourceViaCLI( client2, team.id, integration, installation, product, metadataWizard ); } async function getOptionalLinkedProject2(client2) { const linkedProject = await getLinkedProject(client2); if (linkedProject.status === "not_linked") { return; } const shouldLinkToProject = await client2.input.confirm( "Do you want to link this resource to the current project?", true ); if (!shouldLinkToProject) { return; } if (linkedProject.status === "error") { return { status: "error", exitCode: linkedProject.exitCode }; } return { status: "success", project: linkedProject.project }; } function provisionResourceViaWebUI(teamId, integrationId, productId, projectId) { const url3 = new URL("/api/marketplace/cli", "https://vercel.com"); url3.searchParams.set("teamId", teamId); url3.searchParams.set("integrationId", integrationId); url3.searchParams.set("productId", productId); if (projectId) { url3.searchParams.set("projectId", projectId); } url3.searchParams.set("cmd", "add"); output_manager_default.print("Opening the Vercel Dashboard to continue the installation..."); (0, import_open4.default)(url3.href); } async function provisionResourceViaCLI(client2, teamId, integration, installation, product, metadataWizard) { const name = await client2.input.text({ message: "What is the name of the resource?" }); const metadata = await metadataWizard.run(client2); let billingPlans; try { const billingPlansResponse = await fetchBillingPlans( client2, integration, product, metadata ); billingPlans = billingPlansResponse.plans; } catch (error3) { output_manager_default.error(`Failed to get billing plans: ${error3.message}`); return 1; } const enabledBillingPlans = billingPlans.filter((plan) => !plan.disabled); if (!enabledBillingPlans.length) { output_manager_default.error("No billing plans available"); return 1; } const billingPlan = await selectBillingPlan(client2, enabledBillingPlans); if (!billingPlan) { output_manager_default.error("No billing plan selected"); return 1; } if (billingPlan.type !== "subscription") { const projectLink = await getOptionalLinkedProject2(client2); if (projectLink?.status === "error") { return projectLink.exitCode; } const openInWeb = await client2.input.confirm( "You have selected a plan that cannot be provisioned through the CLI. Open Vercel Dashboard?", true ); if (openInWeb) { provisionResourceViaWebUI( teamId, integration.id, product.id, projectLink?.project?.id ); } return 0; } const confirmed = await confirmProductSelection( client2, product, name, metadata, billingPlan ); if (!confirmed) { return 1; } try { const authorizationId = await getAuthorizationId( client2, teamId, installation, product, metadata, billingPlan ); return await provisionStorageProduct( client2, product, installation, name, metadata, billingPlan, authorizationId ); } catch (error3) { output_manager_default.error(error3.message); return 1; } } async function selectProduct(client2, integration) { const products = integration.products; if (!products?.length) { return; } if (products.length === 1) { return products[0]; } const selected = await client2.input.select({ message: "Select a product", choices: products.map((product) => ({ description: product.shortDescription, name: product.name, value: product })) }); return selected; } async function selectBillingPlan(client2, billingPlans) { const billingPlanId = await list(client2, { message: "Choose a billing plan", separator: true, choices: billingPlans.map((plan) => { const body = [plan.description]; if (plan.type !== "subscription") { body.push( "This plan is not subscription-based. Selecting it will prompt you to use the Vercel Dashboard." ); } if (plan.details?.length) { const detailsTable = formatTable( ["", ""], ["l", "r"], [ { name: "Details", rows: plan.details.map((detail) => [ detail.label, detail.value || "-" ]) } ] ); body.push(detailsTable); } if (plan.highlightedDetails?.length) { const hightlightedDetailsTable = formatTable( ["", ""], ["l", "r"], [ { name: "More Details", rows: plan.highlightedDetails.map((detail) => [ detail.label, detail.value || "-" ]) } ] ); body.push(hightlightedDetailsTable); } let planName = plan.name; if (plan.cost) { planName += ` ${plan.cost}`; } return { name: [planName, "", indent_default(body.join("\n"), 4)].join("\n"), value: plan.id, short: planName, disabled: plan.disabled }; }), pageSize: 1e3 }); return billingPlans.find((plan) => plan.id === billingPlanId); } async function confirmProductSelection(client2, product, name, metadata, billingPlan) { output_manager_default.print("Selected product:\n"); output_manager_default.print(`${import_chalk107.default.dim(`- ${import_chalk107.default.bold("Name:")} ${name}`)} `); for (const [key, value] of Object.entries(metadata)) { output_manager_default.print( `${import_chalk107.default.dim(`- ${import_chalk107.default.bold(`${product.metadataSchema.properties[key]["ui:label"]}:`)} ${value}`)} ` ); } output_manager_default.print( `${import_chalk107.default.dim(`- ${import_chalk107.default.bold("Plan:")} ${billingPlan.name}`)} ` ); return client2.input.confirm("Confirm selection?", true); } async function getAuthorizationId(client2, teamId, installation, product, metadata, billingPlan) { output_manager_default.spinner("Validating payment...", 250); const originalAuthorizationState = await createAuthorization( client2, installation.integrationId, installation.id, product.id, billingPlan.id, metadata ); if (!originalAuthorizationState.authorization) { output_manager_default.stopSpinner(); throw new Error( "Failed to get an authorization state. If the problem persists, please contact support." ); } let authorization = originalAuthorizationState.authorization; while (authorization.status === "pending") { await sleep(200); authorization = await fetchAuthorization( client2, originalAuthorizationState.authorization.id ); } output_manager_default.stopSpinner(); if (authorization.status === "succeeded") { output_manager_default.log("Validation complete."); return authorization.id; } if (authorization.status === "failed") { throw new Error( "Payment validation failed. Please change your payment method via the web UI and try again." ); } output_manager_default.spinner( "Payment validation requires manual action. Please complete the steps in your browser..." ); handleManualVerificationAction( teamId, originalAuthorizationState.authorization.id ); while (authorization.status !== "succeeded") { await sleep(200); authorization = await fetchAuthorization( client2, originalAuthorizationState.authorization.id ); if (authorization.status === "failed") { throw new Error( "Payment validation failed. Please change your payment method via the web UI and try again." ); } } output_manager_default.stopSpinner(); output_manager_default.log("Validation complete."); return authorization.id; } function handleManualVerificationAction(teamId, authorizationId) { const url3 = new URL("/api/marketplace/cli", "https://vercel.com"); url3.searchParams.set("teamId", teamId); url3.searchParams.set("authorizationId", authorizationId); url3.searchParams.set("cmd", "authorize"); output_manager_default.print("Opening the Vercel Dashboard to continue the installation..."); (0, import_open4.default)(url3.href); } async function provisionStorageProduct(client2, product, installation, name, metadata, billingPlan, authorizationId) { output_manager_default.spinner("Provisioning resource..."); let storeId; try { const result = await provisionStoreResource( client2, installation.id, product.id, billingPlan.id, name, metadata, authorizationId ); storeId = result.store.id; } catch (error3) { output_manager_default.error( `Failed to provision ${product.name}: ${error3.message}` ); return 1; } finally { output_manager_default.stopSpinner(); } output_manager_default.log(`${product.name} successfully provisioned`); const projectLink = await getOptionalLinkedProject2(client2); if (projectLink?.status === "error") { return projectLink.exitCode; } if (!projectLink?.project) { return 0; } const project = projectLink.project; const environments = await client2.input.checkbox({ message: "Select environments", choices: [ { name: "Production", value: "production", checked: true }, { name: "Preview", value: "preview", checked: true }, { name: "Development", value: "development", checked: true } ] }); output_manager_default.spinner( `Connecting ${import_chalk107.default.bold(name)} to ${import_chalk107.default.bold(project.name)}...` ); try { await connectResourceToProject( client2, projectLink.project.id, storeId, environments ); } catch (error3) { output_manager_default.error( `Failed to connect store to project: ${error3.message}` ); return 1; } finally { output_manager_default.stopSpinner(); } output_manager_default.log( `${import_chalk107.default.bold(name)} successfully connected to ${import_chalk107.default.bold(project.name)} ${indent_default(`Run ${cmd(`${packageName} env pull`)} to update the environment variables`, 4)}` ); return 0; } var import_chalk107, import_open4; var init_add10 = __esm({ "src/commands/integration/add.ts"() { "use strict"; import_chalk107 = __toESM3(require_source(), 1); import_open4 = __toESM3(require_open(), 1); init_format_table(); init_pkg_name(); init_get_scope(); init_list(); init_cmd(); init_indent(); init_link2(); init_wizard(); init_provision_store_resource(); init_add_auto_provision(); init_connect_resource_to_project(); init_fetch_billing_plans(); init_fetch_installations(); init_fetch_integration(); init_output_manager(); init_add9(); init_create_authorization(); init_sleep(); init_fetch_authorization(); } }); // src/util/telemetry/commands/install/index.ts var InstallTelemetryClient; var init_install = __esm({ "src/util/telemetry/commands/install/index.ts"() { "use strict"; init_telemetry(); InstallTelemetryClient = class extends TelemetryClient { }; } }); // src/commands/install/index.ts var install_exports = {}; __export3(install_exports, { default: () => install }); async function install(client2) { const { args: args2, flags } = parseArguments(client2.argv.slice(2)); const telemetry2 = new InstallTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (flags["--help"]) { telemetry2.trackCliFlagHelp("install"); output_manager_default.print(help(installCommand, { columns: client2.stderr.columns })); return 2; } await add5(client2, args2.slice(1)); } var init_install2 = __esm({ "src/commands/install/index.ts"() { "use strict"; init_get_args(); init_help(); init_add10(); init_command18(); init_output_manager(); init_install(); } }); // src/util/telemetry/commands/integration/index.ts var IntegrationTelemetryClient; var init_integration = __esm({ "src/util/telemetry/commands/integration/index.ts"() { "use strict"; init_telemetry(); IntegrationTelemetryClient = class extends TelemetryClient { trackCliSubcommandAdd(actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } trackCliSubcommandOpen(actual) { this.trackCliSubcommand({ subcommand: "open", value: actual }); } trackCliSubcommandBalance(actual) { this.trackCliSubcommand({ subcommand: "balance", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "remove", value: actual }); } }; } }); // src/util/integration/fetch-installation-prepayment-info.ts async function fetchInstallationPrepaymentInfo(client2, teamId, installationId) { const searchParams = new URLSearchParams(); searchParams.set("teamId", teamId); return await client2.fetch( `/v1/integrations/installations/${installationId}/billing/balance?teamId=${searchParams}`, { json: true } ); } async function getBalanceInformation(client2, installationId, team) { output_manager_default.spinner("Retrieving balance info\u2026", 500); try { const prepaymentInfo = await fetchInstallationPrepaymentInfo( client2, team.id, installationId ); output_manager_default.stopSpinner(); if (!prepaymentInfo) { output_manager_default.error("No balance information found for this integration"); return; } return prepaymentInfo; } catch (error3) { output_manager_default.stopSpinner(); output_manager_default.error(`Failed to fetch balance info: ${error3.message}`); return; } } var init_fetch_installation_prepayment_info = __esm({ "src/util/integration/fetch-installation-prepayment-info.ts"() { "use strict"; init_output_manager(); } }); // src/util/integration/fetch-marketplace-integrations.ts async function fetchMarketplaceIntegrations(client2, slug) { const searchParams = new URLSearchParams(); searchParams.set("view", "account"); searchParams.set("installationType", "marketplace"); searchParams.set("integrationIdOrSlug", slug); return await client2.fetch( `/v2/integrations/configurations?${searchParams}`, { json: true } ); } async function getFirstConfiguration(client2, integrationSlug) { const configurations = await fetchMarketplaceIntegrations( client2, integrationSlug ); return configurations.length > 0 ? configurations[0] : void 0; } var init_fetch_marketplace_integrations = __esm({ "src/util/integration/fetch-marketplace-integrations.ts"() { "use strict"; } }); // src/util/telemetry/commands/integration/balance.ts var IntegrationBalanceTelemetryClient; var init_balance = __esm({ "src/util/telemetry/commands/integration/balance.ts"() { "use strict"; init_telemetry(); IntegrationBalanceTelemetryClient = class extends TelemetryClient { trackCliArgumentIntegration(v, known) { if (v) { this.trackCliArgument({ arg: "name", value: known ? v : this.redactedValue }); } } }; } }); // src/util/integration-resource/get-resources.ts async function getResources(client2, teamId) { const searchParams = new URLSearchParams(); searchParams.set("teamId", teamId); const storesResponse = await client2.fetch( `/v1/storage/stores?${searchParams}`, { json: true } ); return storesResponse.stores; } var init_get_resources = __esm({ "src/util/integration-resource/get-resources.ts"() { "use strict"; } }); // src/commands/integration/balance.ts async function balance(client2, args2) { const telemetry2 = new IntegrationBalanceTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (args2.length > 1) { output_manager_default.error("Cannot specify more than one integration at a time"); return 1; } const integrationSlug = args2[0]; if (!integrationSlug) { output_manager_default.error("You must pass an integration slug"); return 1; } const { team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found."); return 1; } const installation = await getBalanceInstallationId( client2, integrationSlug, telemetry2 ); if (installation === void 0) { return 1; } const installationId = installation.id; const resources = await getResourcesForInstallation( client2, installationId, team ); if (resources === void 0) { return 1; } const prepaymentInfo = await getBalanceInformation( client2, installationId, team ); if (prepaymentInfo === void 0) { return 1; } outputBalanceInformation(prepaymentInfo, resources, integrationSlug); return 0; } async function getBalanceInstallationId(client2, integrationSlug, telemetry2) { let knownIntegrationSlug = false; output_manager_default.spinner("Retrieving installation\u2026", 500); try { const installation = await getFirstConfiguration(client2, integrationSlug); if (!installation) { output_manager_default.stopSpinner(); output_manager_default.error("No installations found for this integration"); return; } knownIntegrationSlug = true; return installation; } catch (error3) { output_manager_default.stopSpinner(); output_manager_default.error(`Failed to fetch installations: ${error3.message}`); return; } finally { telemetry2.trackCliArgumentIntegration( integrationSlug, knownIntegrationSlug ); } } async function getResourcesForInstallation(client2, installationId, team) { output_manager_default.spinner("Retrieving resources\u2026", 500); try { const resources = (await getResources(client2, team.id)).filter( (resource) => resource.product?.integrationConfigurationId === installationId ); output_manager_default.stopSpinner(); return resources; } catch (error3) { output_manager_default.stopSpinner(); output_manager_default.error(`Failed to fetch resources: ${error3.message}`); return; } } function outputBalanceInformation(prepaymentInfo, resources, integrationSlug) { const hasBalances = prepaymentInfo.balances.length > 0; const hasThresholds = prepaymentInfo.thresholds.length > 0; if (!hasBalances) { output_manager_default.log("No balances found for this integration"); } if (!hasThresholds) { output_manager_default.log("No thresholds found for this integration"); } if (!hasBalances && !hasThresholds) { return 0; } const mappings = {}; for (const balance2 of prepaymentInfo.balances) { const resourceName = balance2.resourceId ? resources.find((r) => r.externalResourceId === balance2.resourceId)?.name ?? balance2.resourceId : "installation"; mappings[balance2.resourceId ?? "installation"] = { balance: balance2, resourceName }; } for (const threshold of prepaymentInfo.thresholds) { const mapping = mappings[threshold.resourceId ?? "installation"]; if (mapping) { mapping.threshold = threshold; } else { const resourceName = threshold.resourceId ? resources.find((r) => r.externalResourceId === threshold.resourceId)?.name ?? threshold.resourceId : "installation"; mappings[resourceName] = { threshold, resourceName }; } } output_manager_default.log( `${import_chalk108.default.bold(`Balances and thresholds for ${integrationSlug}`)}:` ); for (const key in mappings) { const mapping = mappings[key]; const name = mapping.resourceName; const balance2 = mapping.balance; const threshold = mapping.threshold; output_manager_default.log(`\u25CF ${name}`); if (balance2) { output_manager_default.log( ` Balance: ${formattedCurrency(balance2.currencyValueInCents)}` ); } if (threshold) { output_manager_default.log( ` Threshold: Spend ${formattedCurrency(threshold.purchaseAmountInCents)} if balance goes below ${formattedCurrency(threshold.minimumAmountInCents)}` ); } } } function formattedCurrency(amountInCents) { return Intl.NumberFormat("en-US", { style: "currency", currency: "USD" }).format(amountInCents / 100); } var import_chalk108; var init_balance2 = __esm({ "src/commands/integration/balance.ts"() { "use strict"; import_chalk108 = __toESM3(require_source(), 1); init_output_manager(); init_get_scope(); init_fetch_installation_prepayment_info(); init_fetch_marketplace_integrations(); init_balance(); init_get_resources(); } }); // src/util/integration/build-sso-link.ts function buildSSOLink(team, configurationId) { const url3 = new URL("/api/marketplace/sso", "https://vercel.com"); url3.searchParams.set("teamId", team.id); url3.searchParams.set("integrationConfigurationId", configurationId); return url3.href; } var init_build_sso_link = __esm({ "src/util/integration/build-sso-link.ts"() { "use strict"; } }); // src/util/telemetry/commands/integration/list.ts var IntegrationListTelemetryClient; var init_list5 = __esm({ "src/util/telemetry/commands/integration/list.ts"() { "use strict"; init_telemetry(); IntegrationListTelemetryClient = class extends TelemetryClient { trackCliArgumentProject(v) { if (v) { this.trackCliArgument({ arg: "project", value: this.redactedValue }); } } trackCliOptionIntegration(v, known) { if (v) { this.trackCliOption({ option: "integration", value: known ? v : this.redactedValue }); } } trackCliFlagAll(v) { if (v) { this.trackCliFlag("all"); } } }; } }); // src/commands/integration/list.ts async function list4(client2) { let parsedArguments = null; const flagsSpecification = getFlagsSpecification(listSubcommand7.options); try { parsedArguments = parseArguments(client2.argv.slice(3), flagsSpecification); } catch (error3) { printError(error3); return 1; } const telemetry2 = new IntegrationListTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetry2.trackCliArgumentProject(parsedArguments.args[1]); telemetry2.trackCliFlagAll(parsedArguments.flags["--all"]); const validationResult = validateLsArgs({ commandName: "integration list [project]", args: parsedArguments.args, maxArgs: 2, exitCode: 1 }); if (validationResult !== 0) { return validationResult; } let project; if (parsedArguments.args.length === 2) { if (parsedArguments.flags["--all"]) { output_manager_default.error("Cannot specify a project when using the `--all` flag."); return 1; } project = { name: parsedArguments.args[1] }; } const { contextName, team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found."); return 1; } if (!project && !parsedArguments.flags["--all"]) { project = await getLinkedProject(client2).then((result) => { if (result.status === "linked") { return result.project; } return; }); if (!project) { output_manager_default.error( "No project linked. Either use `vc link` to link a project, or the `--all` flag to list all resources." ); return 1; } } let resources; try { output_manager_default.spinner("Retrieving resources\u2026", 500); resources = await getResources(client2, team.id); } catch (error3) { output_manager_default.error(`Failed to fetch resources: ${error3.message}`); return 1; } const filterIntegration = parsedArguments.flags["--integration"]?.toLocaleLowerCase(); function resourceIsFromMarketplace(resource) { return resource.type === "integration"; } let knownIntegration = false; function filterOnIntegration(resource) { if (!filterIntegration) return true; const match = filterIntegration === resource.product?.slug; if (match) knownIntegration = true; return match; } function filterOnProject(resource) { return !project || !!resource.projectsMetadata?.find( (metadata) => metadata.projectId === project?.id || metadata.name === project?.name ); } function filterOnFlags(resource) { return filterOnIntegration(resource) && filterOnProject(resource); } const results = resources.filter(resourceIsFromMarketplace).filter(filterOnFlags).map((resource) => { return { id: resource.id, name: resource.name, status: resource.status, product: resource.product?.name, integration: resource.product?.slug, configurationId: resource.product?.integrationConfigurationId, projects: resource.projectsMetadata?.map((metadata) => metadata.name).join(", ") }; }); telemetry2.trackCliOptionIntegration( parsedArguments.flags["--integration"], knownIntegration ); if (results.length === 0) { output_manager_default.log("No resources found."); return 0; } output_manager_default.log( `Integrations in ${import_chalk109.default.bold(contextName)}: ${table( [ ["Name", "Status", "Product", "Integration", "Projects"].map( (header) => import_chalk109.default.bold(import_chalk109.default.cyan(header)) ), ...results.map((result) => [ resourceLink(contextName, result) ?? import_chalk109.default.gray("\u2013"), resourceStatus(result.status ?? "\u2013"), result.product ?? import_chalk109.default.gray("\u2013"), integrationLink(result, team) ?? import_chalk109.default.gray("\u2013"), import_chalk109.default.grey(result.projects ? result.projects : "\u2013") ]) ], { hsep: 8 } )}` ); return 0; } function resourceStatus(status3) { const CIRCLE = "\u25CF "; const statusTitleCase = (0, import_title7.default)(status3); switch (status3) { case "initializing": return import_chalk109.default.yellow(CIRCLE) + statusTitleCase; case "error": return import_chalk109.default.red(CIRCLE) + statusTitleCase; case "available": return import_chalk109.default.green(CIRCLE) + statusTitleCase; case "suspended": return import_chalk109.default.white(CIRCLE) + statusTitleCase; case "limits-exceeded-suspended": return `${import_chalk109.default.white(CIRCLE)}Limits exceeded`; default: return import_chalk109.default.gray(statusTitleCase); } } function resourceLink(orgSlug, resource) { if (!resource.name) { return; } const projectUrl = `https://vercel.com/${orgSlug}/~`; return output_manager_default.link( resource.name, `${projectUrl}/stores/integration/${resource.id}`, { fallback: () => resource.name ?? "\u2013", color: false } ); } function integrationLink(integration, team) { if (!integration.integration) { return; } if (!integration.configurationId) { return integration.integration; } const boldName = import_chalk109.default.bold(integration.integration); const integrationDeepLink = buildSSOLink(team, integration.configurationId); return output_manager_default.link(boldName, integrationDeepLink, { fallback: () => boldName, color: false }); } var import_chalk109, import_title7; var init_list6 = __esm({ "src/commands/integration/list.ts"() { "use strict"; import_chalk109 = __toESM3(require_source(), 1); init_get_scope(); init_link2(); init_get_resources(); init_command20(); init_get_flags_specification(); init_get_args(); init_error2(); init_validate_ls_args(); init_table(); import_title7 = __toESM3(require_lib4(), 1); init_build_sso_link(); init_list5(); init_output_manager(); } }); // src/util/telemetry/commands/integration/open.ts var IntegrationOpenTelemetryClient; var init_open = __esm({ "src/util/telemetry/commands/integration/open.ts"() { "use strict"; init_telemetry(); IntegrationOpenTelemetryClient = class extends TelemetryClient { trackCliArgumentName(v, known) { this.trackCliArgument({ arg: "name", value: known ? v : this.redactedValue }); } }; } }); // src/commands/integration/open-integration.ts async function openIntegration(client2, args2) { const telemetry2 = new IntegrationOpenTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (args2.length > 1) { output_manager_default.error("Cannot open more than one dashboard at a time"); return 1; } const integrationSlug = args2[0]; if (!integrationSlug) { output_manager_default.error("You must pass an integration slug"); return 1; } const { team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found"); return 1; } let configuration; let knownIntegrationSlug = false; try { configuration = await getFirstConfiguration(client2, integrationSlug); knownIntegrationSlug = !!configuration; } catch (error3) { output_manager_default.error( `Failed to fetch configuration for ${import_chalk110.default.bold(`"${integrationSlug}"`)}: ${error3.message}` ); return 1; } finally { telemetry2.trackCliArgumentName(integrationSlug, knownIntegrationSlug); } if (!configuration) { output_manager_default.error( `No configuration found for ${import_chalk110.default.bold(`"${integrationSlug}"`)}.` ); return 1; } output_manager_default.print(`Opening the ${import_chalk110.default.bold(integrationSlug)} dashboard...`); (0, import_open5.default)(buildSSOLink(team, configuration.id)); return 0; } var import_chalk110, import_open5; var init_open_integration = __esm({ "src/commands/integration/open-integration.ts"() { "use strict"; import_chalk110 = __toESM3(require_source(), 1); import_open5 = __toESM3(require_open(), 1); init_get_scope(); init_fetch_marketplace_integrations(); init_build_sso_link(); init_open(); init_output_manager(); } }); // src/util/integration/remove-integration.ts async function removeIntegration(client2, configuration, team) { const params2 = new URLSearchParams(); params2.set("teamId", team.id); return client2.fetch( `/v2/integrations/installations/${configuration.id}/uninstall?${params2}`, { json: true, body: {}, method: "POST" } ); } var init_remove_integration = __esm({ "src/util/integration/remove-integration.ts"() { "use strict"; } }); // src/util/telemetry/commands/integration/remove.ts var IntegrationRemoveTelemetryClient; var init_remove3 = __esm({ "src/util/telemetry/commands/integration/remove.ts"() { "use strict"; init_telemetry(); IntegrationRemoveTelemetryClient = class extends TelemetryClient { trackCliArgumentIntegration(v, known) { if (v) { this.trackCliArgument({ arg: "integration", value: known ? v : this.redactedValue }); } } trackCliFlagYes(v) { if (v) { this.trackCliFlag("yes"); } } }; } }); // src/commands/integration/remove-integration.ts async function remove3(client2) { const telemetry2 = new IntegrationRemoveTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments = null; const flagsSpecification = getFlagsSpecification(removeSubcommand7.options); try { parsedArguments = parseArguments(client2.argv.slice(3), flagsSpecification); } catch (error3) { printError(error3); return 1; } const { team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found."); return 1; } const isMissingResourceOrIntegration = parsedArguments.args.length < 2; if (isMissingResourceOrIntegration) { output_manager_default.error("You must specify an integration. See `--help` for details."); return 1; } const hasTooManyArguments = parsedArguments.args.length > 2; if (hasTooManyArguments) { output_manager_default.error("Cannot specify more than one integration at a time."); return 1; } const integrationName = parsedArguments.args[1]; const skipConfirmation = !!parsedArguments.flags["--yes"]; telemetry2.trackCliFlagYes(skipConfirmation); output_manager_default.spinner("Retrieving integration\u2026", 500); const integrationConfiguration = await getFirstConfiguration( client2, integrationName ); output_manager_default.stopSpinner(); if (!integrationConfiguration) { output_manager_default.error(`No integration ${import_chalk111.default.bold(integrationName)} found.`); telemetry2.trackCliArgumentIntegration(integrationName, false); return 0; } telemetry2.trackCliArgumentIntegration(integrationName, true); const userDidNotConfirm = !skipConfirmation && !await confirmIntegrationRemoval( client2, integrationConfiguration.slug, team ); if (userDidNotConfirm) { output_manager_default.log("Canceled"); return 0; } try { output_manager_default.spinner("Uninstalling integration\u2026", 1e3); await removeIntegration(client2, integrationConfiguration, team); } catch (error3) { output_manager_default.error( import_chalk111.default.red( `Failed to remove ${import_chalk111.default.bold(integrationName)}: ${error3.message}` ) ); return 1; } output_manager_default.success(`${import_chalk111.default.bold(integrationName)} successfully removed.`); return 0; } async function confirmIntegrationRemoval(client2, integration, team) { output_manager_default.log( `The ${import_chalk111.default.bold(integration)} integration will be removed permanently from team ${import_chalk111.default.bold(team.name)}.` ); return client2.input.confirm(`${import_chalk111.default.red("Are you sure?")}`, false); } var import_chalk111; var init_remove_integration2 = __esm({ "src/commands/integration/remove-integration.ts"() { "use strict"; import_chalk111 = __toESM3(require_source(), 1); init_output_manager(); init_get_args(); init_get_flags_specification(); init_get_scope(); init_error2(); init_fetch_marketplace_integrations(); init_remove_integration(); init_command20(); init_remove3(); } }); // src/commands/integration/index.ts var integration_exports = {}; __export3(integration_exports, { default: () => main11 }); async function main11(client2) { const telemetry2 = new IntegrationTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const { args: args2, flags } = parseArguments( client2.argv.slice(2), getFlagsSpecification(integrationCommand.options), { permissive: true } ); const { subcommand, subcommandOriginal, args: subArgs } = getSubcommand(args2.slice(1), COMMAND_CONFIG13); const needHelp = flags["--help"]; function printHelp(command) { output_manager_default.print( help(command, { columns: client2.stderr.columns, parent: integrationCommand }) ); } if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("integration"); output_manager_default.print( help(integrationCommand, { columns: client2.stderr.columns }) ); return 2; } switch (subcommand) { case "add": { if (needHelp) { telemetry2.trackCliFlagHelp("integration", subcommandOriginal); printHelp(addSubcommand5); return 2; } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return add5(client2, subArgs); } case "list": { if (needHelp) { telemetry2.trackCliFlagHelp("integration", subcommandOriginal); printHelp(listSubcommand7); return 2; } telemetry2.trackCliSubcommandList(subcommandOriginal); return list4(client2); } case "balance": { if (needHelp) { telemetry2.trackCliFlagHelp("integration", subcommandOriginal); printHelp(balanceSubcommand); return 2; } telemetry2.trackCliSubcommandBalance(subcommandOriginal); return balance(client2, subArgs); } case "open": { if (needHelp) { telemetry2.trackCliFlagHelp("integration", subcommandOriginal); printHelp(openSubcommand); return 2; } telemetry2.trackCliSubcommandOpen(subcommandOriginal); return openIntegration(client2, subArgs); } case "remove": { if (needHelp) { telemetry2.trackCliFlagHelp("integration", subcommandOriginal); printHelp(removeSubcommand7); return 2; } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return remove3(client2); } default: { output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG13)); return 2; } } } var COMMAND_CONFIG13; var init_integration2 = __esm({ "src/commands/integration/index.ts"() { "use strict"; init_commands(); init_output_manager(); init_get_args(); init_get_flags_specification(); init_get_invalid_subcommand(); init_get_subcommand(); init_integration(); init_help(); init_add10(); init_balance2(); init_command20(); init_list6(); init_open_integration(); init_remove_integration2(); COMMAND_CONFIG13 = { add: getCommandAliases(addSubcommand5), open: getCommandAliases(openSubcommand), list: getCommandAliases(listSubcommand7), balance: getCommandAliases(balanceSubcommand), remove: getCommandAliases(removeSubcommand7) }; } }); // src/util/telemetry/commands/integration-resource/index.ts var IntegrationResourceTelemetryClient; var init_integration_resource = __esm({ "src/util/telemetry/commands/integration-resource/index.ts"() { "use strict"; init_telemetry(); IntegrationResourceTelemetryClient = class extends TelemetryClient { trackCliSubcommandCreateThreshold(actual) { this.trackCliSubcommand({ subcommand: "create-threshold", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "remove", value: actual }); } trackCliSubcommandDisconnect(actual) { this.trackCliSubcommand({ subcommand: "disconnect", value: actual }); } }; } }); // src/util/telemetry/commands/integration-resource/create-threshold.ts var IntegrationResourceCreateThresholdTelemetryClient; var init_create_threshold = __esm({ "src/util/telemetry/commands/integration-resource/create-threshold.ts"() { "use strict"; init_telemetry(); IntegrationResourceCreateThresholdTelemetryClient = class extends TelemetryClient { trackCliArgumentResource(v) { if (v) { this.trackCliArgument({ arg: "resource", value: this.redactedValue }); } } trackCliArgumentMinimum(v) { if (v) { this.trackCliArgument({ arg: "minimum", value: this.redactedValue }); } } trackCliArgumentSpend(v) { if (v) { this.trackCliArgument({ arg: "spend", value: this.redactedValue }); } } trackCliArgumentLimit(v) { if (v) { this.trackCliArgument({ arg: "limit", value: this.redactedValue }); } } trackCliFlagYes(v) { if (v) { this.trackCliFlag("yes"); } } }; } }); // src/util/integration-resource/update-threshold.ts async function updateThreshold(client2, installationId, resourceId, billingPlanId, minimumAmountInCents, purchaseAmountInCents, maximumAmountPerPeriodInCents, metadata) { return await client2.fetch( `/v1/integrations/installations/${installationId}/resources/${resourceId}/billing/threshold`, { method: "POST", json: true, body: { billingPlanId, minimumAmountInCents, purchaseAmountInCents, maximumAmountPerPeriodInCents, metadata: JSON.stringify(metadata) } } ); } var init_update_threshold = __esm({ "src/util/integration-resource/update-threshold.ts"() { "use strict"; } }); // src/util/integration/update-installation-threshold.ts async function updateInstallationThreshold(client2, installationId, billingPlanId, minimumAmountInCents, purchaseAmountInCents, maximumAmountPerPeriodInCents, metadata) { return await client2.fetch( `/v1/integrations/installations/${installationId}/billing/threshold/batch`, { method: "POST", json: true, body: { items: [ { billingPlanId, minimumAmountInCents, purchaseAmountInCents, maximumAmountPerPeriodInCents, metadata: JSON.stringify(metadata) } ] } } ); } var init_update_installation_threshold = __esm({ "src/util/integration/update-installation-threshold.ts"() { "use strict"; } }); // src/commands/integration-resource/create-threshold.ts async function createThreshold(client2) { const telemetry2 = new IntegrationResourceCreateThresholdTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments = null; const flagsSpecification = getFlagsSpecification( createThresholdSubcommand.options ); try { parsedArguments = parseArguments(client2.argv.slice(3), flagsSpecification); } catch (error3) { printError(error3); return 1; } let args2; try { args2 = parseCreateThresholdArguments(parsedArguments.args, telemetry2); } catch (error3) { output_manager_default.error(error3.message); return 1; } const skipConfirmWithYes = parsedArguments.flags["--yes"]; telemetry2.trackCliFlagYes(skipConfirmWithYes); const { resourceName, minimum, spend, limit } = args2; const { team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found."); return 1; } output_manager_default.spinner("Retrieving resource\u2026", 500); const resources = await getResources(client2, team.id); const targetedResource = resources.find( (resource) => resource.name === resourceName ); output_manager_default.stopSpinner(); if (!targetedResource) { output_manager_default.log(`The resource ${import_chalk112.default.bold(resourceName)} was not found.`); return 0; } if (!targetedResource.product?.integrationConfigurationId) { output_manager_default.error( `The resource ${import_chalk112.default.bold(resourceName)} does not have an integration configuration.` ); return 1; } if (targetedResource.billingPlan?.type !== "prepayment") { output_manager_default.error( `The resource ${import_chalk112.default.bold(resourceName)} is not a prepayment-based resource.` ); return 1; } const minimumSpend = parseFloat(targetedResource.billingPlan.minimumAmount ?? "0.50") * 100; if (minimumSpend > spend) { output_manager_default.error( `The spend amount $${spend / 100} is below your billing plan's minimum amount of $${minimumSpend / 100}.` ); return 1; } const maximumSpend = parseFloat(targetedResource.billingPlan.maximumAmount ?? "1000000") * 100; if (targetedResource.billingPlan.maximumAmount !== void 0 && maximumSpend < spend) { output_manager_default.error( `The spend amount $${spend / 100} is above your billing plan's maximum amount of $${maximumSpend / 100}.` ); return 1; } const prepaymentInfo = await getBalanceInformation( client2, targetedResource.product.integrationConfigurationId, team ); if (prepaymentInfo === void 0) { return 1; } if (targetedResource.billingPlan.scope !== "resource") { output_manager_default.log( `The resource ${import_chalk112.default.bold(resourceName)} uses an installation-level balance.` ); return await updateThresholdForInstallation({ client: client2, resource: targetedResource, prepaymentInfo, minimum, spend, limit, skipConfirmWithYes: Boolean(skipConfirmWithYes) }); } return await updateThresholdForResource({ client: client2, resource: targetedResource, prepaymentInfo, minimum, spend, limit, skipConfirmWithYes: Boolean(skipConfirmWithYes) }); } function parseCreateThresholdArguments(passedArgs, telemetry2) { if (passedArgs.length < 5) { throw new Error("Missing arguments. See `--help` for details."); } if (passedArgs.length > 5) { throw new Error("Too many arguments. See `--help` for details."); } const args2 = passedArgs.slice(1, 5); telemetry2.trackCliArgumentResource(args2[0]); telemetry2.trackCliArgumentMinimum(args2[1]); telemetry2.trackCliArgumentSpend(args2[2]); telemetry2.trackCliArgumentLimit(args2[3]); const resourceName = args2[0]; const minimum = Number.parseFloat(args2[1]) * 100; const spend = Number.parseInt(args2[2]) * 100; const limit = Number.parseInt(args2[3]) * 100; if (isNaN(minimum)) { throw new Error( 'Minimum is an invalid number format. Spend must be a positive number (ex. "5.75")' ); } if (isNaN(spend)) { throw new Error( 'Spend is an invalid number format. Spend must be a positive number (ex. "10.99").' ); } if (isNaN(limit)) { throw new Error( 'Limit is an invalid number format. Limit must be a positive number (ex. "1000").' ); } if (minimum < 0) { throw new Error("Minimum cannot be negative."); } if (spend < 0) { throw new Error("Spend cannot be negative."); } if (limit < 0) { throw new Error("Limit cannot be negative."); } if (minimum > spend) { throw new Error("Minimum cannot be greater than spend."); } if (minimum > limit) { throw new Error("Minimum cannot be greater than limit."); } if (limit < spend) { throw new Error("Limit cannot be less than spend."); } return { resourceName, minimum, spend, limit }; } async function updateThresholdForResource(props) { const existingThreshold = props.prepaymentInfo.thresholds.find( (threshold) => threshold.resourceId === props.resource.externalResourceId ); const existingBalance = props.prepaymentInfo.balances.find( (balance2) => balance2.resourceId === props.resource.externalResourceId ); return handleUpdateThreshold({ client: props.client, resource: props.resource, minimum: props.minimum, spend: props.spend, limit: props.limit, existingThreshold, existingBalance, skipConfirmWithYes: props.skipConfirmWithYes, isInstallationLevel: false }); } async function updateThresholdForInstallation(props) { const existingThreshold = props.prepaymentInfo.thresholds.find( (threshold) => threshold.resourceId === void 0 ); const existingBalance = props.prepaymentInfo.balances.find( (balance2) => balance2.resourceId === void 0 ); return handleUpdateThreshold({ client: props.client, resource: props.resource, minimum: props.minimum, spend: props.spend, limit: props.limit, existingThreshold, existingBalance, skipConfirmWithYes: props.skipConfirmWithYes, isInstallationLevel: true }); } async function handleUpdateThreshold(props) { if (props.resource.billingPlan?.type !== "prepayment") { output_manager_default.log( `The resource ${import_chalk112.default.bold(props.resource.name)} is not a prepayment-based resource.` ); return 0; } if (!props.resource.product?.integrationConfigurationId) { output_manager_default.log( `The resource ${import_chalk112.default.bold(props.resource.name)} does not have an integration configuration.` ); return 0; } const entityTextReference = props.isInstallationLevel ? `installation ${import_chalk112.default.bold(props.resource.product?.name)}` : `resource ${import_chalk112.default.bold(props.resource.name)}`; if (props.existingThreshold) { const shouldOverwriteThreshold = props.skipConfirmWithYes || await props.client.input.confirm( `The ${entityTextReference} already has a threshold. (minimum: $${props.existingThreshold.minimumAmountInCents / 100}, spend: $${props.existingThreshold.purchaseAmountInCents / 100}, limit: ${props.existingThreshold.maximumAmountPerPeriodInCents ? `$${props.existingThreshold.maximumAmountPerPeriodInCents / 100}` : "none set"}). Do you want to overwrite it?`, true ); if (!shouldOverwriteThreshold) { output_manager_default.log("Aborting\u2026"); return 0; } } if (props.existingBalance && props.existingBalance.currencyValueInCents < props.minimum) { const shouldOverwriteBalance = props.skipConfirmWithYes || await props.client.input.confirm( `The minimum threshold is higher than the current balance of $${props.existingBalance.currencyValueInCents / 100}. Are you sure?`, true ); if (!shouldOverwriteBalance) { output_manager_default.log("Aborting\u2026"); return 0; } } const thresholdCreationConfirmed = props.skipConfirmWithYes || await props.client.input.confirm( `Are you sure you want to create a threshold for the ${entityTextReference} with minimum $${props.minimum / 100}, spend $${props.spend / 100}, and limit $${props.limit / 100}?`, true ); if (!thresholdCreationConfirmed) { output_manager_default.log("Aborting\u2026"); return 0; } const metadata = JSON.parse(props.existingThreshold?.metadata ?? "{}"); output_manager_default.spinner("Creating threshold\u2026", 500); if (props.isInstallationLevel) { await updateInstallationThreshold( props.client, props.resource.product.integrationConfigurationId, props.resource.billingPlan.id, props.minimum, props.spend, props.limit, metadata ); } else { await updateThreshold( props.client, props.resource.product.integrationConfigurationId, props.resource.id, props.resource.billingPlan.id, props.minimum, props.spend, props.limit, metadata ); } output_manager_default.stopSpinner(); output_manager_default.success(`Threshold for ${entityTextReference} created successfully.`); return 0; } var import_chalk112; var init_create_threshold2 = __esm({ "src/commands/integration-resource/create-threshold.ts"() { "use strict"; import_chalk112 = __toESM3(require_source(), 1); init_output_manager(); init_error2(); init_get_args(); init_get_flags_specification(); init_get_resources(); init_create_threshold(); init_command19(); init_get_scope(); init_fetch_installation_prepayment_info(); init_update_threshold(); init_update_installation_threshold(); } }); // src/util/integration-resource/disconnect-resource-from-project.ts async function disconnectResourceFromProject(client2, resource, connection) { return client2.fetch( `/v1/storage/stores/${resource.id}/connections/${connection.id}`, { json: true, method: "DELETE" } ); } async function disconnectResourceFromAllProjects(client2, resource) { return client2.fetch(`/v1/storage/stores/${resource.id}/connections`, { json: true, method: "DELETE" }); } var init_disconnect_resource_from_project = __esm({ "src/util/integration-resource/disconnect-resource-from-project.ts"() { "use strict"; } }); // src/util/telemetry/commands/integration-resource/disconnect.ts var IntegrationResourceDisconnectTelemetryClient; var init_disconnect3 = __esm({ "src/util/telemetry/commands/integration-resource/disconnect.ts"() { "use strict"; init_telemetry(); IntegrationResourceDisconnectTelemetryClient = class extends TelemetryClient { trackCliArgumentResource(v) { if (v) { this.trackCliArgument({ arg: "resource", value: this.redactedValue }); } } trackCliArgumentProject(v) { if (v) { this.trackCliArgument({ arg: "project", value: this.redactedValue }); } } trackCliFlagAll(v) { if (v) { this.trackCliFlag("all"); } } trackCliFlagYes(v) { if (v) { this.trackCliFlag("yes"); } } }; } }); // src/util/integration-resource/types.ts var CancelledError, FailedError; var init_types = __esm({ "src/util/integration-resource/types.ts"() { "use strict"; CancelledError = class extends Error { }; FailedError = class extends Error { }; } }); // src/commands/integration-resource/disconnect.ts async function disconnect2(client2) { const telemetry2 = new IntegrationResourceDisconnectTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments = null; const flagsSpecification = getFlagsSpecification( disconnectSubcommand2.options ); try { parsedArguments = parseArguments(client2.argv.slice(3), flagsSpecification); } catch (error3) { printError(error3); return 1; } const { team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found."); return 1; } const isMissingResourceOrIntegration = parsedArguments.args.length < 2; if (isMissingResourceOrIntegration) { output_manager_default.error("You must specify a resource. See `--help` for details."); return 1; } const hasTooManyArguments = parsedArguments.args.length > 3; if (hasTooManyArguments) { output_manager_default.error( "Cannot specify more than one project at a time. Use `--all` to disconnect the specified resource from all projects." ); return 1; } const skipConfirmation = !!parsedArguments.flags["--yes"]; const shouldDisconnectAll = parsedArguments.flags["--all"]; const isProjectSpecified = parsedArguments.args.length === 3; if (isProjectSpecified && shouldDisconnectAll) { output_manager_default.error("Cannot specify a project while using the `--all` flag."); return 1; } const resourceName = parsedArguments.args[1]; let specifiedProject; if (isProjectSpecified) { specifiedProject = parsedArguments.args[2]; } telemetry2.trackCliArgumentResource(resourceName); telemetry2.trackCliArgumentProject(specifiedProject); telemetry2.trackCliFlagYes(skipConfirmation); telemetry2.trackCliFlagAll(shouldDisconnectAll); output_manager_default.spinner("Retrieving resource\u2026", 500); const resources = await getResources(client2, team.id); const targetedResource = resources.find( (resource) => resource.name === resourceName ); output_manager_default.stopSpinner(); if (!targetedResource) { output_manager_default.error(`No resource ${import_chalk113.default.bold(resourceName)} found.`); return 0; } if (parsedArguments.flags["--all"]) { try { await handleDisconnectAllProjects( client2, targetedResource, !!parsedArguments.flags["--yes"] ); return 0; } catch (error3) { if (error3 instanceof CancelledError) { output_manager_default.log(error3.message); return 0; } if (error3 instanceof FailedError) { output_manager_default.error(error3.message); return 1; } throw error3; } } if (!specifiedProject) { specifiedProject = await getLinkedProject(client2).then((result) => { if (result.status === "linked") { return result.project.name; } return; }); if (!specifiedProject) { output_manager_default.error( "No project linked. Either use `vc link` to link a project, or specify the project name." ); return 1; } } return await handleDisconnectProject( client2, targetedResource, specifiedProject, skipConfirmation ); } async function handleDisconnectProject(client2, resource, projectName, skipConfirmation) { const project = resource.projectsMetadata?.find( (project2) => projectName === project2.name ); if (!project) { output_manager_default.log( `Could not find project ${import_chalk113.default.bold(projectName)} connected to resource ${import_chalk113.default.bold(resource.name)}.` ); return 0; } if (!skipConfirmation && !await confirmDisconnectProject(client2, resource, project)) { output_manager_default.log("Canceled"); return 0; } try { output_manager_default.spinner("Disconnecting resource\u2026", 500); await disconnectResourceFromProject(client2, resource, project); output_manager_default.success( `Disconnected ${import_chalk113.default.bold(project.name)} from ${import_chalk113.default.bold(resource.name)}` ); } catch (error3) { output_manager_default.error( `A problem occurred while disconnecting: ${error3.message}` ); return 1; } return 0; } async function handleDisconnectAllProjects(client2, resource, skipConfirmation) { if (resource.projectsMetadata?.length === 0) { output_manager_default.log(`${import_chalk113.default.bold(resource.name)} has no projects to disconnect.`); return; } if (!skipConfirmation && !await confirmDisconnectAllProjects(client2, resource)) { throw new CancelledError("Canceled"); } try { output_manager_default.spinner("Disconnecting projects from resource\u2026", 500); await disconnectResourceFromAllProjects(client2, resource); output_manager_default.success( `Disconnected all projects from ${import_chalk113.default.bold(resource.name)}` ); } catch (error3) { throw new FailedError( `A problem occurred while disconnecting all projects: ${error3.message}` ); } return; } async function confirmDisconnectProject(client2, resource, project) { output_manager_default.log( `The resource ${import_chalk113.default.bold(resource.name)} will be disconnected from project ${import_chalk113.default.bold(project.name)}.` ); return client2.input.confirm(`${import_chalk113.default.red("Are you sure?")}`, false); } async function confirmDisconnectAllProjects(client2, resource) { output_manager_default.log("The following projects will be disconnected:"); if (!resource.projectsMetadata) { return false; } for (const project of resource.projectsMetadata) { output_manager_default.print(` ${project.name} `); } return client2.input.confirm(import_chalk113.default.red("Are you sure?"), false); } var import_chalk113; var init_disconnect4 = __esm({ "src/commands/integration-resource/disconnect.ts"() { "use strict"; import_chalk113 = __toESM3(require_source(), 1); init_output_manager(); init_get_args(); init_get_flags_specification(); init_get_scope(); init_error2(); init_disconnect_resource_from_project(); init_get_resources(); init_link2(); init_disconnect3(); init_types(); init_command19(); } }); // src/util/integration-resource/delete-resource.ts async function deleteResource(client2, resource, team) { const params2 = new URLSearchParams(); params2.set("teamId", team.id); return client2.fetch( `/v1/storage/stores/integration/${resource.id}?${params2}`, { json: true, method: "DELETE" } ); } var init_delete_resource = __esm({ "src/util/integration-resource/delete-resource.ts"() { "use strict"; } }); // src/util/telemetry/commands/integration-resource/remove.ts var IntegrationResourceRemoveTelemetryClient; var init_remove4 = __esm({ "src/util/telemetry/commands/integration-resource/remove.ts"() { "use strict"; init_telemetry(); IntegrationResourceRemoveTelemetryClient = class extends TelemetryClient { trackCliArgumentResource(v) { if (v) { this.trackCliArgument({ arg: "resource", value: this.redactedValue }); } } trackCliFlagDisconnectAll(v) { if (v) { this.trackCliFlag("disconnect-all"); } } trackCliFlagYes(v) { if (v) { this.trackCliFlag("yes"); } } }; } }); // src/commands/integration-resource/remove-resource.ts async function remove4(client2) { const telemetry2 = new IntegrationResourceRemoveTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments = null; const flagsSpecification = getFlagsSpecification(removeSubcommand6.options); try { parsedArguments = parseArguments(client2.argv.slice(3), flagsSpecification); } catch (error3) { printError(error3); return 1; } const { team } = await getScope(client2); if (!team) { output_manager_default.error("Team not found."); return 1; } const isMissingResourceOrIntegration = parsedArguments.args.length < 2; if (isMissingResourceOrIntegration) { output_manager_default.error("You must specify a resource. See `--help` for details."); return 1; } const hasTooManyArguments = parsedArguments.args.length > 2; if (hasTooManyArguments) { output_manager_default.error("Cannot specify more than one resource at a time."); return 1; } const skipConfirmation = !!parsedArguments.flags["--yes"]; const disconnectAll = !!parsedArguments.flags["--disconnect-all"]; const resourceName = parsedArguments.args[1]; telemetry2.trackCliArgumentResource(resourceName); telemetry2.trackCliFlagDisconnectAll(disconnectAll); telemetry2.trackCliFlagYes(skipConfirmation); output_manager_default.spinner("Retrieving resource\u2026", 500); const resources = await getResources(client2, team.id); const targetedResource = resources.find( (resource) => resource.name === resourceName ); output_manager_default.stopSpinner(); if (!targetedResource) { output_manager_default.error(`No resource ${import_chalk114.default.bold(resourceName)} found.`); return 0; } if (disconnectAll) { try { await handleDisconnectAllProjects( client2, targetedResource, skipConfirmation ); } catch (error3) { if (error3 instanceof CancelledError) { output_manager_default.log(error3.message); return 0; } if (error3 instanceof FailedError) { output_manager_default.error(error3.message); return 1; } throw error3; } } return await handleDeleteResource(client2, team, targetedResource, { skipConfirmation, skipProjectCheck: disconnectAll }); } async function handleDeleteResource(client2, team, resource, options) { const hasProjects = resource.projectsMetadata && resource.projectsMetadata?.length > 0; if (!options?.skipProjectCheck && hasProjects) { output_manager_default.error( `Cannot delete resource ${import_chalk114.default.bold(resource.name)} while it has connected projects. Please disconnect any projects using this resource first or use the \`--disconnect-all\` flag.` ); return 1; } if (!options?.skipConfirmation && !await confirmDeleteResource(client2, resource)) { output_manager_default.log("Canceled"); return 0; } try { output_manager_default.spinner("Deleting resource\u2026", 500); await deleteResource(client2, resource, team); output_manager_default.success(`${import_chalk114.default.bold(resource.name)} successfully deleted.`); } catch (error3) { output_manager_default.error( `A problem occurred when attempting to delete ${import_chalk114.default.bold(resource.name)}: ${error3.message}` ); return 1; } return 0; } async function confirmDeleteResource(client2, resource) { output_manager_default.log(`${import_chalk114.default.bold(resource.name)} will be deleted permanently.`); return client2.input.confirm(`${import_chalk114.default.red("Are you sure?")}`, false); } var import_chalk114; var init_remove_resource = __esm({ "src/commands/integration-resource/remove-resource.ts"() { "use strict"; import_chalk114 = __toESM3(require_source(), 1); init_output_manager(); init_get_args(); init_get_flags_specification(); init_get_scope(); init_error2(); init_delete_resource(); init_get_resources(); init_types(); init_remove4(); init_command19(); init_disconnect4(); } }); // src/commands/integration-resource/index.ts var integration_resource_exports = {}; __export3(integration_resource_exports, { default: () => main12 }); async function main12(client2) { const telemetry2 = new IntegrationResourceTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const { args: args2, flags } = parseArguments( client2.argv.slice(2), getFlagsSpecification(integrationResourceCommand.options), { permissive: true } ); const { subcommand, subcommandOriginal } = getSubcommand( args2.slice(1), COMMAND_CONFIG14 ); const needHelp = flags["--help"]; if (!subcommand && needHelp) { output_manager_default.print( help(integrationResourceCommand, { columns: client2.stderr.columns }) ); return 2; } function printHelp(command) { output_manager_default.print( help(command, { columns: client2.stderr.columns, parent: integrationResourceCommand }) ); } switch (subcommand) { case "create-threshold": { if (needHelp) { telemetry2.trackCliFlagHelp("integration-resource", subcommandOriginal); printHelp(createThresholdSubcommand); return 2; } telemetry2.trackCliSubcommandCreateThreshold(subcommandOriginal); return createThreshold(client2); } case "remove": { if (needHelp) { telemetry2.trackCliFlagHelp("integration-resource", subcommandOriginal); printHelp(removeSubcommand6); return 2; } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return remove4(client2); } case "disconnect": { if (needHelp) { telemetry2.trackCliFlagHelp("integration-resource", subcommandOriginal); printHelp(disconnectSubcommand2); return 2; } telemetry2.trackCliSubcommandDisconnect(subcommandOriginal); return disconnect2(client2); } default: { output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG14)); return 2; } } } var COMMAND_CONFIG14; var init_integration_resource2 = __esm({ "src/commands/integration-resource/index.ts"() { "use strict"; init_commands(); init_output_manager(); init_get_args(); init_get_flags_specification(); init_get_invalid_subcommand(); init_get_subcommand(); init_integration_resource(); init_help(); init_command19(); init_create_threshold2(); init_disconnect4(); init_remove_resource(); COMMAND_CONFIG14 = { remove: getCommandAliases(removeSubcommand6), disconnect: getCommandAliases(disconnectSubcommand2), "create-threshold": getCommandAliases(createThresholdSubcommand) }; } }); // src/util/telemetry/commands/link/index.ts var LinkTelemetryClient; var init_link3 = __esm({ "src/util/telemetry/commands/link/index.ts"() { "use strict"; init_telemetry(); LinkTelemetryClient = class extends TelemetryClient { trackCliArgumentCwd() { this.trackCliArgument({ arg: "cwd", value: this.redactedValue }); } trackCliFlagRepo(flag) { if (flag) { this.trackCliFlag("repo"); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } trackCliFlagConfirm(flag) { if (flag) { this.trackCliFlag("confirm"); } } trackCliOptionProject(project) { if (project) { this.trackCliOption({ option: "project", value: this.redactedValue }); } } }; } }); // src/commands/link/index.ts var link_exports2 = {}; __export3(link_exports2, { default: () => link3 }); async function link3(client2) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(linkCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } const telemetry2 = new LinkTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("link"); output_manager_default.print(help(linkCommand, { columns: client2.stderr.columns })); return 0; } telemetry2.trackCliFlagRepo(parsedArgs.flags["--repo"]); telemetry2.trackCliFlagYes(parsedArgs.flags["--yes"]); telemetry2.trackCliOptionProject(parsedArgs.flags["--project"]); if ("--confirm" in parsedArgs.flags) { telemetry2.trackCliFlagConfirm(parsedArgs.flags["--confirm"]); output_manager_default.warn("`--confirm` is deprecated, please use `--yes` instead"); parsedArgs.flags["--yes"] = parsedArgs.flags["--confirm"]; } const yes = !!parsedArgs.flags["--yes"]; let cwd = parsedArgs.args[1]; if (cwd) { telemetry2.trackCliArgumentCwd(); output_manager_default.warn( `The ${cmd("vc link ")} syntax is deprecated, please use ${cmd( `vc link --cwd ${cwd}` )} instead` ); } else { cwd = client2.cwd; } if (parsedArgs.flags["--repo"]) { output_manager_default.warn(`The ${cmd("--repo")} flag is in alpha, please report issues`); try { await ensureRepoLink(client2, cwd, { yes, overwrite: true }); } catch (err) { output_manager_default.prettyError(err); return 1; } } else { const link4 = await ensureLink("link", client2, cwd, { autoConfirm: yes, forceDelete: true, projectName: parsedArgs.flags["--project"], successEmoji: "success" }); if (typeof link4 === "number") { return link4; } } return 0; } var init_link4 = __esm({ "src/commands/link/index.ts"() { "use strict"; init_get_args(); init_cmd(); init_ensure_link(); init_repo(); init_help(); init_command21(); init_get_flags_specification(); init_error2(); init_output_manager(); init_link3(); } }); // src/util/parse-policy.ts function parsePolicy(policy) { if (!policy) { return {}; } if (typeof policy === "string") { policy = [policy]; } const parsed = {}; for (const item of policy) { const [key, ...rest] = item.split("="); parsed[key] = rest.join("="); } return parsed; } var init_parse_policy = __esm({ "src/util/parse-policy.ts"() { "use strict"; } }); // src/util/telemetry/commands/list/index.ts var ListTelemetryClient; var init_list7 = __esm({ "src/util/telemetry/commands/list/index.ts"() { "use strict"; init_telemetry(); ListTelemetryClient = class extends TelemetryClient { trackCliOptionMeta(meta) { if (meta && meta.length > 0) { this.trackCliOption({ option: "meta", value: this.redactedValue }); } } trackCliOptionPolicy(policy) { if (policy && policy.length > 0) { this.trackCliOption({ option: "policy", value: this.redactedValue }); } } trackCliOptionEnvironment(environment) { if (environment) { this.trackCliOption({ option: "environment", value: this.redactedTargetName(environment) }); } } trackCliOptionNext(next) { if (next) { this.trackCliOption({ option: "next", value: this.redactedValue }); } } trackCliFlagProd(flag) { if (flag) { this.trackCliFlag("prod"); } } trackCliFlagYes(flag) { if (flag) { this.trackCliFlag("yes"); } } trackCliFlagConfirm(flag) { if (flag) { this.trackCliFlag("confirm"); } } trackCliOptionStatus(status3) { if (status3) { this.trackCliOption({ option: "status", value: this.redactedValue }); } } trackCliArgumentApp(app) { if (app) { this.trackCliArgument({ arg: "app", value: this.redactedValue }); } } }; } }); // src/commands/list/index.ts var list_exports = {}; __export3(list_exports, { default: () => list5, getDeploymentDuration: () => getDeploymentDuration, stateString: () => stateString2 }); function toDate(timestamp) { const date = new Date(timestamp); const options = { year: "2-digit", month: "2-digit", day: "2-digit" }; return date.toLocaleDateString("en-US", options); } async function list5(client2) { const { print, log: log2, warn, error: error3, note, debug: debug2, spinner } = output_manager_default; let parsedArgs = null; const flagsSpecification = getFlagsSpecification(listCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error4) { printError(error4); return 1; } const telemetry2 = new ListTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("list"); print(help(listCommand, { columns: client2.stderr.columns })); return 0; } const validationResult = validateLsArgs({ commandName: "ls [app]", args: parsedArgs.args, maxArgs: 2, exitCode: 2 }); if (validationResult !== 0) { return validationResult; } const formatResult = validateJsonOutput(parsedArgs.flags); if (!formatResult.valid) { error3(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; telemetry2.trackCliFlagProd(parsedArgs.flags["--prod"]); telemetry2.trackCliFlagYes(parsedArgs.flags["--yes"]); telemetry2.trackCliOptionEnvironment(parsedArgs.flags["--environment"]); telemetry2.trackCliOptionMeta(parsedArgs.flags["--meta"]); telemetry2.trackCliOptionNext(parsedArgs.flags["--next"]); telemetry2.trackCliOptionFormat(parsedArgs.flags["--format"]); telemetry2.trackCliOptionPolicy(parsedArgs.flags["--policy"]); telemetry2.trackCliOptionStatus(parsedArgs.flags["--status"]); if ("--confirm" in parsedArgs.flags) { telemetry2.trackCliFlagConfirm(parsedArgs.flags["--confirm"]); warn("`--confirm` is deprecated, please use `--yes` instead"); parsedArgs.flags["--yes"] = parsedArgs.flags["--confirm"]; } const autoConfirm = !!parsedArgs.flags["--yes"]; const meta = parseMeta(parsedArgs.flags["--meta"]); const policy = parsePolicy(parsedArgs.flags["--policy"]); const target = parseTarget({ flagName: "environment", flags: parsedArgs.flags }); const statusFlag = parsedArgs.flags["--status"]; let status3; if (statusFlag) { const validStatuses = [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ]; const statusValues = statusFlag.split(",").map((s) => s.trim().toUpperCase()); const invalidStatuses = statusValues.filter( (s) => !validStatuses.includes(s) ); if (invalidStatuses.length > 0) { error3( `Invalid status values: ${invalidStatuses.join(", ")}. Valid values are: ${validStatuses.join(", ")}` ); return 1; } status3 = statusValues.join(","); } let project; let pagination; let contextName = ""; let app = parsedArgs.args[1]; const deployments = []; let singleDeployment = false; if (app) { if (!isValidName(app)) { error3(`The provided argument "${app}" is not a valid project name`); return 1; } telemetry2.trackCliArgumentApp(app); if (app.includes(".")) { try { ({ contextName } = await getScope(client2)); } catch (err) { if ((0, import_error_utils28.isErrnoException)(err) && (err.code === "NOT_AUTHORIZED" || err.code === "TEAM_DELETED")) { error3(err.message); return 1; } } if (!contextName) { error3("No context name found"); return 1; } const host = toHost(app); const deployment = await getDeployment(client2, contextName, host); if (!deployment.projectId) { error3(`Could not find a deployment for "${host}"`); return 1; } app = deployment.projectId; note( `We suggest using ${getCommandName( "inspect " )} for retrieving details about a single deployment` ); deployments.push(deployment); singleDeployment = true; } const p = await getProjectByNameOrId(client2, app); if (p instanceof ProjectNotFound) { error3(`The provided argument "${app}" is not a valid project name`); return 1; } project = p; } else { const link4 = await ensureLink("list", client2, client2.cwd, { autoConfirm }); if (typeof link4 === "number") return link4; project = link4.project; client2.config.currentTeam = link4.org.id; } if (!contextName) { try { ({ contextName } = await getScope(client2)); } catch (err) { if ((0, import_error_utils28.isErrnoException)(err) && (err.code === "NOT_AUTHORIZED" || err.code === "TEAM_DELETED")) { error3(err.message); return 1; } } } const nextTimestamp = parsedArgs.flags["--next"]; if (Number.isNaN(nextTimestamp)) { error3("Please provide a number for flag `--next`"); return 1; } const projectSlugLink = formatProject(contextName, project.name); if (!singleDeployment) { if (!asJson) { spinner(`Fetching deployments in ${import_chalk115.default.bold(contextName)}`); } const start = Date.now(); debug2("Fetching deployments"); const query = new URLSearchParams({ limit: "20", projectId: project.id }); for (const [k, v] of Object.entries(meta)) { query.set(`meta-${k}`, v); } for (const [k, v] of Object.entries(policy)) { query.set(`policy-${k}`, v); } if (nextTimestamp) { query.set("until", String(nextTimestamp)); } if (target) { query.set("target", target); } if (status3) { query.set("state", status3); } for await (const chunk of client2.fetchPaginated(`/v6/deployments?${query}`)) { deployments.push(...chunk.deployments); pagination = chunk.pagination; if (deployments.length >= 20) { break; } } if (!deployments.length) { if (asJson) { const jsonOutput = { deployments: [], pagination }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } else { log2("No deployments found."); } return 0; } if (!asJson) { log2( `${target === "production" ? "Production deployments" : "Deployments"} for ${projectSlugLink} ${elapsed(Date.now() - start)}` ); } } if (asJson) { const jsonOutput = { deployments: deployments.sort(sortByCreatedAt).map((dep) => ({ id: dep.id, url: dep.url, name: dep.name, state: dep.readyState, target: dep.target, customEnvironment: dep.customEnvironment ? { id: dep.customEnvironment.id, slug: dep.customEnvironment.slug } : void 0, createdAt: dep.createdAt, buildingAt: dep.buildingAt, ready: dep.ready, creator: dep.creator ? { uid: dep.creator.uid, username: dep.creator.username } : void 0, meta: dep.meta })), pagination }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); return 0; } const headers = ["Age", "Deployment", "Status", "Environment"]; const showPolicy = Object.keys(policy).length > 0; if (!showPolicy) headers.push("Duration", "Username"); if (showPolicy) headers.push("Proposed Expiration"); const urls = []; const tablePrint = table( [ headers.map((header) => import_chalk115.default.bold(import_chalk115.default.cyan(header))), ...deployments.sort(sortByCreatedAt).map((dep) => { urls.push(`https://${dep.url}`); const proposedExp = dep.proposedExpiration ? toDate(Math.min(Date.now(), dep.proposedExpiration)) : "No expiration"; const createdAt = (0, import_ms20.default)( Date.now() - (dep?.undeletedAt ?? dep.createdAt) ); const targetName = dep.customEnvironment?.slug || (dep.target === "production" ? "Production" : "Preview"); const targetSlug = dep.customEnvironment?.id || dep.target || "preview"; return [ import_chalk115.default.gray(createdAt), `https://${dep.url}`, stateString2(dep.readyState || ""), formatEnvironment(contextName, project.name, { id: targetSlug, slug: targetName }), ...!showPolicy ? [import_chalk115.default.gray(getDeploymentDuration(dep))] : [], ...!showPolicy ? [import_chalk115.default.gray(dep.creator?.username)] : [], ...showPolicy ? [import_chalk115.default.gray(proposedExp)] : [] ]; }).filter( (app2) => ( // if an app wasn't supplied to filter by, // we only want to render one deployment per app app2 === null ? filterUniqueApps() : () => true ) ) ], { hsep: 5 } ).replace(/^/gm, " "); print(` ${tablePrint} `); if (!client2.stdout.isTTY) { client2.stdout.write(urls.join("\n")); client2.stdout.write("\n"); } if (pagination?.next) { const flags = getCommandFlags(parsedArgs.flags, ["--next"]); log2( `To display the next page, run ${getCommandName( `ls${app ? ` ${app}` : ""}${flags} --next ${pagination.next}` )}` ); } } function getDeploymentDuration(dep) { if (!dep || !dep.ready || !dep.buildingAt) { return "?"; } const duration = (0, import_ms20.default)(dep.ready - dep.buildingAt); if (duration === "0ms") { return "--"; } return duration; } function stateString2(s) { const CIRCLE = "\u25CF "; const sTitle = (0, import_title8.default)(s); switch (s) { case "INITIALIZING": case "BUILDING": case "DEPLOYING": case "ANALYZING": return import_chalk115.default.yellow(CIRCLE) + sTitle; case "ERROR": return import_chalk115.default.red(CIRCLE) + sTitle; case "READY": return import_chalk115.default.green(CIRCLE) + sTitle; case "QUEUED": return import_chalk115.default.white(CIRCLE) + sTitle; case "CANCELED": return import_chalk115.default.gray(sTitle); default: return import_chalk115.default.gray("UNKNOWN"); } } function sortByCreatedAt(a, b) { return b.createdAt - a.createdAt; } function filterUniqueApps() { const uniqueApps = /* @__PURE__ */ new Set(); return function uniqueAppFilter([appName]) { if (uniqueApps.has(appName)) { return false; } uniqueApps.add(appName); return true; }; } var import_ms20, import_chalk115, import_title8, import_error_utils28; var init_list8 = __esm({ "src/commands/list/index.ts"() { "use strict"; import_ms20 = __toESM3(require_ms(), 1); import_chalk115 = __toESM3(require_source(), 1); import_title8 = __toESM3(require_lib4(), 1); init_table(); init_get_args(); init_error2(); init_elapsed(); init_to_host(); init_parse_meta(); init_parse_policy(); init_is_valid_name(); init_get_command_flags(); init_pkg_name(); init_ensure_link(); init_get_scope(); init_errors_ts(); import_error_utils28 = __toESM3(require_dist2(), 1); init_help(); init_command22(); init_parse_target(); init_get_flags_specification(); init_get_deployment(); init_get_project_by_id_or_name(); init_format_project(); init_format_environment(); init_list7(); init_validate_ls_args(); init_output_format(); init_output_manager(); } }); // src/util/telemetry/commands/logs/index.ts var LogsTelemetryClient; var init_logs2 = __esm({ "src/util/telemetry/commands/logs/index.ts"() { "use strict"; init_telemetry(); LogsTelemetryClient = class extends TelemetryClient { trackCliArgumentUrlOrDeploymentId(path11) { if (path11) { this.trackCliArgument({ arg: "urlOrDeploymentId", value: this.redactedValue }); } } trackCliFlagJson(v) { if (v) { this.trackCliFlag("json"); } } trackCliFlagFollow(v) { if (v) { this.trackCliFlag("follow"); } } trackCliOptionLimit(n) { if (typeof n === "number") { this.trackCliOption({ option: "limit", value: this.redactedValue }); } } trackCliOptionSince(n) { if (n) { this.trackCliOption({ option: "since", value: this.redactedValue }); } } trackCliOptionUntil(n) { if (n) { this.trackCliOption({ option: "until", value: this.redactedValue }); } } trackCliOptionOutput(outputMode) { if (outputMode) { const allowedOutputMode = ["raw", "short"].includes(outputMode) ? outputMode : this.redactedValue; this.trackCliOption({ option: "output", value: allowedOutputMode }); } } }; } }); // src/commands/logs/index.ts var logs_exports = {}; __export3(logs_exports, { default: () => logs }); async function logs(client2) { let parsedArguments; const flagsSpecification = getFlagsSpecification(logsCommand.options); const { print, error: error3, spinner, stopSpinner } = output_manager_default; try { parsedArguments = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (err) { printError(err); return 1; } for (const flag of Object.keys(parsedArguments.flags)) { if (deprecatedFlags.includes(flag)) { print( `${prependEmoji( `The ${param( flag )} option was ignored because it is now deprecated. Please remove it.`, emoji("warning") )} ` ); } } const telemetry2 = new LogsTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (parsedArguments.flags["--help"]) { telemetry2.trackCliFlagHelp("logs"); print(help(logsCommand, { columns: client2.stderr.columns })); return 2; } if (parsedArguments.args[0] === logsCommand.name) { parsedArguments.args.shift(); } const formatResult = validateJsonOutput(parsedArguments.flags); if (!formatResult.valid) { error3(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; let [deploymentIdOrHost] = parsedArguments.args; if (!deploymentIdOrHost) { error3( `${getCommandName("logs ")} expects exactly one argument` ); print(help(logsCommand, { columns: client2.stderr.columns })); return 1; } telemetry2.trackCliArgumentUrlOrDeploymentId(deploymentIdOrHost); telemetry2.trackCliOptionFormat(parsedArguments.flags["--format"]); telemetry2.trackCliFlagJson(parsedArguments.flags["--json"]); telemetry2.trackCliFlagFollow(parsedArguments.flags["--follow"]); telemetry2.trackCliOptionLimit(parsedArguments.flags["--limit"]); telemetry2.trackCliOptionSince(parsedArguments.flags["--since"]); telemetry2.trackCliOptionUntil(parsedArguments.flags["--until"]); telemetry2.trackCliOptionOutput(parsedArguments.flags["--output"]); let contextName = null; try { ({ contextName } = await getScope(client2)); } catch (err) { if ((0, import_error_utils29.isErrnoException)(err) && (err.code === "NOT_AUTHORIZED" || err.code === "TEAM_DELETED")) { error3(err.message); return 1; } throw err; } try { deploymentIdOrHost = new URL(deploymentIdOrHost).hostname; } catch { } spinner( `Fetching deployment "${deploymentIdOrHost}" in ${import_chalk116.default.bold(contextName)}` ); let deployment; try { deployment = await getDeployment(client2, contextName, deploymentIdOrHost); } finally { stopSpinner(); } if (!isReady(deployment)) { error3( `Deployment not ready. Currently: ${stateString2(deployment.readyState)}.` ); if (isDeploying(deployment.readyState)) { print( `To follow build logs, run \`vercel inspect --logs --wait ${deploymentIdOrHost}\`` ); } return 1; } output_manager_default.print( `Displaying runtime logs for deployment ${deployment.url} (${import_chalk116.default.dim( deployment.id )}) starting from ${import_chalk116.default.bold((0, import_format3.default)(Date.now(), DATE_TIME_FORMAT))} ` ); const abortController = new AbortController(); return await displayRuntimeLogs( client2, { deploymentId: deployment.id, projectId: deployment.projectId, parse: !asJson }, abortController ); } var import_error_utils29, import_chalk116, import_format3, deprecatedFlags, DATE_TIME_FORMAT; var init_logs3 = __esm({ "src/commands/logs/index.ts"() { "use strict"; import_error_utils29 = __toESM3(require_dist2(), 1); import_chalk116 = __toESM3(require_source(), 1); import_format3 = __toESM3(require_format2(), 1); init_build_state(); init_is_deploying(); init_emoji(); init_error2(); init_get_args(); init_get_deployment(); init_get_flags_specification(); init_get_scope(); init_logs(); init_output_format(); init_param(); init_pkg_name(); init_logs2(); init_help(); init_list8(); init_command25(); init_output_manager(); deprecatedFlags = [ "--follow", "--limit", "--since", "--until", "--output", "--json" ]; DATE_TIME_FORMAT = "MMM dd HH:mm:ss.SS"; } }); // src/util/logs-v2.ts function parseRelativeTime(input) { const now = Date.now(); const msValue = (0, import_ms21.default)(input); if (typeof msValue === "number") { return now - msValue; } const date = new Date(input); if (!isNaN(date.getTime())) { return date.getTime(); } throw new Error(`Invalid time format: ${input}`); } async function fetchRequestLogs(client2, options) { const { projectId, ownerId, deploymentId, environment, level, statusCode, source, since, until, search, requestId, page = 0 } = options; const now = Date.now(); const defaultStartDate = now - 24 * 60 * 60 * 1e3; const query = new URLSearchParams(); query.set("projectId", projectId); query.set("ownerId", ownerId); query.set("page", String(page)); query.set( "startDate", String(since ? parseRelativeTime(since) : defaultStartDate) ); query.set("endDate", String(until ? parseRelativeTime(until) : now)); if (deploymentId) { query.set("deploymentId", deploymentId); } if (environment) { query.set("environment", environment); } if (level && level.length > 0) { query.set("level", level.join(",")); } if (statusCode) { query.set("statusCode", statusCode); } if (source && source.length > 0) { query.set("source", source.join(",")); } if (search) { query.set("search", search); } if (requestId) { query.set("requestId", requestId); } const baseUrl = client2.apiUrl === "https://api.vercel.com" ? "https://vercel.com" : client2.apiUrl; const url3 = `${baseUrl}/api/logs/request-logs?${query.toString()}`; const data = await client2.fetch(url3); return { logs: data.rows || [], pagination: { hasMore: data.hasMoreRows ?? false } }; } async function* fetchAllRequestLogs(client2, options) { let page = 0; let remaining = options.limit ?? 100; let hasMore = true; while (hasMore && remaining > 0) { const response = await fetchRequestLogs(client2, { ...options, page }); if (!response.logs || response.logs.length === 0) { break; } for (const log2 of response.logs) { yield log2; remaining--; if (remaining <= 0) { return; } } hasMore = response.pagination?.hasMore ?? false; page++; } } var import_ms21; var init_logs_v2 = __esm({ "src/util/logs-v2.ts"() { "use strict"; import_ms21 = __toESM3(require_ms(), 1); } }); // src/util/telemetry/commands/logsv2/index.ts var Logsv2TelemetryClient; var init_logsv2 = __esm({ "src/util/telemetry/commands/logsv2/index.ts"() { "use strict"; init_telemetry(); Logsv2TelemetryClient = class extends TelemetryClient { trackCliArgumentUrlOrDeploymentId(v) { if (v) { this.trackCliArgument({ arg: "urlOrDeploymentId", value: this.redactedValue }); } } trackCliOptionProject(v) { if (v) { this.trackCliOption({ option: "project", value: this.redactedValue }); } } trackCliOptionDeployment(v) { if (v) { this.trackCliOption({ option: "deployment", value: this.redactedValue }); } } trackCliOptionEnvironment(v) { if (v) { const allowed = ["production", "preview"].includes(v) ? v : this.redactedValue; this.trackCliOption({ option: "environment", value: allowed }); } } trackCliOptionLevel(v) { if (v && v.length > 0) { const allowedLevels = ["error", "warning", "info", "fatal"]; const sanitized = v.every((l) => allowedLevels.includes(l)) ? v.join(",") : this.redactedValue; this.trackCliOption({ option: "level", value: sanitized }); } } trackCliOptionStatusCode(v) { if (v) { this.trackCliOption({ option: "status-code", value: this.redactedValue }); } } trackCliOptionSource(v) { if (v && v.length > 0) { const allowedSources = [ "serverless", "edge-function", "edge-middleware", "static" ]; const sanitized = v.every((s) => allowedSources.includes(s)) ? v.join(",") : this.redactedValue; this.trackCliOption({ option: "source", value: sanitized }); } } trackCliOptionSince(v) { if (v) { this.trackCliOption({ option: "since", value: this.redactedValue }); } } trackCliOptionUntil(v) { if (v) { this.trackCliOption({ option: "until", value: this.redactedValue }); } } trackCliOptionLimit(v) { if (typeof v === "number") { this.trackCliOption({ option: "limit", value: this.redactedValue }); } } trackCliFlagJson(v) { if (v) { this.trackCliFlag("json"); } } trackCliFlagFollow(v) { if (v) { this.trackCliFlag("follow"); } } trackCliOptionQuery(v) { if (v) { this.trackCliOption({ option: "query", value: this.redactedValue }); } } trackCliOptionRequestId(v) { if (v) { this.trackCliOption({ option: "request-id", value: this.redactedValue }); } } }; } }); // src/commands/logsv2/index.ts var logsv2_exports = {}; __export3(logsv2_exports, { default: () => logsv2 }); function parseLevels(levels) { if (!levels) return []; if (typeof levels === "string") return [levels]; return levels; } function parseSources(sources) { if (!sources) return []; if (typeof sources === "string") return [sources]; return sources; } async function logsv2(client2) { let parsedArguments; const flagsSpecification = getFlagsSpecification(logsv2Command.options); try { parsedArguments = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (err) { printError(err); return 1; } const telemetry2 = new Logsv2TelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (parsedArguments.flags["--help"]) { telemetry2.trackCliFlagHelp("logsv2"); output_manager_default.print(help(logsv2Command, { columns: client2.stderr.columns })); return 2; } const subArgs = parsedArguments.args.slice(1); const [deploymentArgument] = subArgs; const projectOption = parsedArguments.flags["--project"]; const deploymentFlag = parsedArguments.flags["--deployment"]; const environmentOption = parsedArguments.flags["--environment"]; let deploymentOption = deploymentFlag; if (deploymentArgument) { let deploymentIdOrHost = deploymentArgument; try { deploymentIdOrHost = new URL(deploymentArgument).hostname; } catch { } deploymentOption = deploymentIdOrHost; } const levelOption = parsedArguments.flags["--level"]; const statusCodeOption = parsedArguments.flags["--status-code"]; const sourceOption = parsedArguments.flags["--source"]; const sinceOption = parsedArguments.flags["--since"]; const untilOption = parsedArguments.flags["--until"]; const limitOption2 = parsedArguments.flags["--limit"]; const jsonOption2 = parsedArguments.flags["--json"]; const followOption = parsedArguments.flags["--follow"]; const queryOption = parsedArguments.flags["--query"]; const requestIdOption = parsedArguments.flags["--request-id"]; telemetry2.trackCliArgumentUrlOrDeploymentId(deploymentArgument); telemetry2.trackCliOptionProject(projectOption); telemetry2.trackCliOptionDeployment(deploymentFlag); telemetry2.trackCliOptionEnvironment(environmentOption); telemetry2.trackCliOptionLevel(levelOption); telemetry2.trackCliOptionStatusCode(statusCodeOption); telemetry2.trackCliOptionSource(sourceOption); telemetry2.trackCliOptionSince(sinceOption); telemetry2.trackCliOptionUntil(untilOption); telemetry2.trackCliOptionLimit(limitOption2); telemetry2.trackCliFlagJson(jsonOption2); telemetry2.trackCliFlagFollow(followOption); telemetry2.trackCliOptionQuery(queryOption); telemetry2.trackCliOptionRequestId(requestIdOption); if (followOption) { if (!deploymentOption) { output_manager_default.error( `The ${import_chalk117.default.bold("--follow")} flag requires a deployment URL or ID to be specified.` ); return 1; } const incompatibleFlags = [ { flag: "--environment", value: environmentOption }, { flag: "--level", value: levelOption }, { flag: "--status-code", value: statusCodeOption }, { flag: "--source", value: sourceOption }, { flag: "--since", value: sinceOption }, { flag: "--until", value: untilOption }, { flag: "--limit", value: limitOption2 }, { flag: "--query", value: queryOption }, { flag: "--request-id", value: requestIdOption } ]; const usedIncompatible = incompatibleFlags.filter((f) => f.value !== void 0 && f.value !== null).map((f) => import_chalk117.default.bold(f.flag)); if (usedIncompatible.length > 0) { output_manager_default.error( `The ${import_chalk117.default.bold("--follow")} flag does not support filtering. Remove: ${usedIncompatible.join(", ")}` ); return 1; } } let contextName = null; try { ({ contextName } = await getScope(client2)); } catch (err) { if ((0, import_error_utils30.isErrnoException)(err) && (err.code === "NOT_AUTHORIZED" || err.code === "TEAM_DELETED")) { output_manager_default.error(err.message); return 1; } throw err; } let projectId; let ownerId; if (projectOption) { output_manager_default.spinner(`Fetching project "${projectOption}"`, 1e3); const project = await getProjectByNameOrId( client2, projectOption, client2.config.currentTeam ); output_manager_default.stopSpinner(); if (project instanceof ProjectNotFound) { output_manager_default.error(`Project not found: ${projectOption}`); return 1; } projectId = project.id; ownerId = project.accountId; } else { const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } else if (link4.status === "not_linked") { output_manager_default.error( `Your codebase isn't linked to a project on Vercel. Run ${getCommandName( "link" )} to begin, or specify a project with ${import_chalk117.default.bold("--project")}.` ); return 1; } client2.config.currentTeam = link4.org.type === "team" ? link4.org.id : void 0; projectId = link4.project.id; ownerId = link4.org.id; } let deploymentId; if (deploymentOption) { output_manager_default.spinner(`Resolving deployment "${deploymentOption}"`, 1e3); try { const deployment = await getDeployment( client2, contextName, deploymentOption ); deploymentId = deployment.id; output_manager_default.stopSpinner(); } catch (err) { output_manager_default.stopSpinner(); if (err instanceof DeploymentNotFound) { output_manager_default.error(`Deployment not found: ${deploymentOption}`); return 1; } if (err instanceof InvalidDeploymentId) { output_manager_default.error(`Invalid deployment ID: ${deploymentOption}`); return 1; } throw err; } } if (followOption) { if (!jsonOption2) { output_manager_default.print( `Streaming logs for deployment ${import_chalk117.default.bold(deploymentId)} starting from ${import_chalk117.default.bold((0, import_date_fns3.format)(Date.now(), DATE_TIME_FORMAT2))} ` ); } const abortController = new AbortController(); return await displayRuntimeLogs( client2, { deploymentId, projectId, parse: !jsonOption2 }, abortController ); } if (environmentOption && !["production", "preview"].includes(environmentOption)) { output_manager_default.error( `Invalid environment: ${environmentOption}. Must be "production" or "preview".` ); return 1; } const validLevels = ["error", "warning", "info", "fatal"]; const levels = parseLevels(levelOption); for (const level of levels) { if (!validLevels.includes(level)) { output_manager_default.error( `Invalid log level: ${level}. Must be one of: ${validLevels.join(", ")}.` ); return 1; } } const validSources = [ "serverless", "edge-function", "edge-middleware", "static" ]; const sources = parseSources(sourceOption); for (const source of sources) { if (!validSources.includes(source)) { output_manager_default.error( `Invalid source: ${source}. Must be one of: ${validSources.join(", ")}.` ); return 1; } } const limit = limitOption2 ?? 100; if (!jsonOption2) { output_manager_default.print( `Fetching logs for project ${import_chalk117.default.bold(projectId)} in ${import_chalk117.default.bold(contextName)}... ` ); } output_manager_default.spinner("Fetching logs...", 1e3); let count = 0; try { for await (const log2 of fetchAllRequestLogs(client2, { projectId, ownerId, deploymentId, environment: environmentOption, level: levels.length > 0 ? levels : void 0, statusCode: statusCodeOption, source: sources.length > 0 ? sources : void 0, since: sinceOption, until: untilOption, limit, search: queryOption, requestId: requestIdOption })) { output_manager_default.stopSpinner(); if (jsonOption2) { client2.stdout.write(JSON.stringify(log2) + "\n"); } else { prettyPrintLogEntry(log2); } count++; } } catch (err) { output_manager_default.stopSpinner(); printError(err); return 1; } output_manager_default.stopSpinner(); if (!jsonOption2) { if (count === 0) { output_manager_default.print( import_chalk117.default.gray("No logs found matching the specified filters.\n") ); } else { output_manager_default.print(import_chalk117.default.gray(` Displayed ${count} log entries. `)); } } return 0; } function prettyPrintLogEntry(log2) { const date = (0, import_date_fns3.format)(log2.timestamp, DATE_TIME_FORMAT2); const levelIcon = getLevelIcon2(log2.level); const sourceIcon = getSourceIcon2(log2.source); const status3 = log2.responseStatusCode <= 0 ? import_chalk117.default.gray("---") : getStatusColor(log2.responseStatusCode); const headerLine = `${import_chalk117.default.dim(date)} ${levelIcon} ${import_chalk117.default.bold( log2.requestMethod.padEnd(6) )} ${status3} ${import_chalk117.default.dim(log2.domain)} ${sourceIcon} ${log2.requestPath}`; output_manager_default.print(`${headerLine} `); if (log2.message) { const message2 = log2.message.replace(/\n$/, ""); const truncatedIndicator = log2.messageTruncated ? import_chalk117.default.gray("\u2026") : ""; output_manager_default.print( `${colorizeMessage(message2, log2.level)}${truncatedIndicator} ` ); } else { output_manager_default.print("\n"); } } function getLevelIcon2(level) { switch (level) { case "fatal": case "error": return "\u{1F6AB}"; case "warning": return "\u26A0\uFE0F"; default: return "\u2139\uFE0F"; } } function getSourceIcon2(source) { switch (source) { case "edge-function": return "\u0D28"; case "edge-middleware": return "\u025B"; case "serverless": return "\u0192"; default: return " "; } } function getStatusColor(status3) { const statusStr = String(status3); if (status3 >= 500) { return import_chalk117.default.red(statusStr); } else if (status3 >= 400) { return import_chalk117.default.yellow(statusStr); } else if (status3 >= 300) { return import_chalk117.default.cyan(statusStr); } else if (status3 >= 200) { return import_chalk117.default.green(statusStr); } return import_chalk117.default.gray(statusStr); } function colorizeMessage(message2, level) { switch (level) { case "fatal": case "error": return import_chalk117.default.red(message2); case "warning": return import_chalk117.default.yellow(message2); default: return message2; } } var import_error_utils30, import_chalk117, import_date_fns3, DATE_TIME_FORMAT2; var init_logsv22 = __esm({ "src/commands/logsv2/index.ts"() { "use strict"; import_error_utils30 = __toESM3(require_dist2(), 1); import_chalk117 = __toESM3(require_source(), 1); import_date_fns3 = __toESM3(require_date_fns(), 1); init_error2(); init_get_args(); init_get_flags_specification(); init_get_scope(); init_get_project_by_id_or_name(); init_link2(); init_errors_ts(); init_logs(); init_logs_v2(); init_get_deployment(); init_pkg_name(); init_logsv2(); init_help(); init_command26(); init_output_manager(); DATE_TIME_FORMAT2 = "MMM dd HH:mm:ss.SS"; } }); // src/commands/mcp/mcp.ts import { execSync as execSync2 } from "child_process"; function getAvailableClients() { return [ "Claude Code", "Claude.ai and Claude for desktop", "Cursor", "VS Code with Copilot" ]; } function safeExecSync(command, options = {}) { try { return execSync2(command, { stdio: "pipe", encoding: "utf8", ...options }); } catch (error3) { return { error: error3.message, stderr: error3.stderr?.toString() || "" }; } } async function getProjectSpecificUrl(client2) { try { const linkedProject = await getLinkedProject(client2); if (linkedProject.status !== "linked" || !linkedProject.org || !linkedProject.project) { return null; } const { org, project } = linkedProject; return { url: `${MCP_ENDPOINT}/${org.slug}/${project.name}`, projectName: project.name }; } catch (error3) { return null; } } async function mcp(client2) { output_manager_default.print("\u{1F680} Vercel MCP Setup \u2014 Automated\n"); const isProjectSpecific = client2.argv.includes("--project"); if (isProjectSpecific) { output_manager_default.print("\u{1F517} Setting up project-specific MCP access...\n"); const projectInfo = await getProjectSpecificUrl(client2); if (!projectInfo) { output_manager_default.print( "\u274C No linked project found. Please link your project first:\n" ); output_manager_default.print(" vercel link\n"); return 1; } output_manager_default.print(`\u2705 Project-specific URL: ${projectInfo.url} `); output_manager_default.print( "This URL will automatically provide project and team context.\n\n" ); } const availableClients = getAvailableClients(); const selectedClients = await client2.input.checkbox({ message: "Select MCP clients to set up:", choices: availableClients.map((name) => ({ name, value: name, short: name })) }); if (!Array.isArray(selectedClients) || selectedClients.length === 0) { output_manager_default.print("\nNo clients selected. Exiting.\n"); return 0; } const summary = []; output_manager_default.print("\nStarting setup...\n"); for (const clientName of selectedClients) { output_manager_default.print(`\u{1F527} Setting up ${clientName}... `); if (clientName === "Claude Code") { const mcpUrl = isProjectSpecific ? (await getProjectSpecificUrl(client2))?.url : MCP_ENDPOINT; const mcpName = isProjectSpecific ? `vercel-${(await getProjectSpecificUrl(client2))?.projectName}` : "vercel"; const result = safeExecSync( `claude mcp add --transport http ${mcpName} ${mcpUrl}` ); if (typeof result === "object" && "error" in result) { if (result.stderr?.includes("already exists")) { summary.push("\u2705 Claude Code: Vercel MCP already configured"); output_manager_default.print("\u2139\uFE0F Vercel MCP is already configured in Claude Code\n"); output_manager_default.print("\u2500".repeat(50) + "\n"); } else { summary.push("\u274C Claude Code: Failed to add MCP server"); output_manager_default.print("\u{1F4A1} Manual setup required:\n"); output_manager_default.print( ` claude mcp add --transport http ${mcpName} ${mcpUrl} ` ); output_manager_default.print( " # Or use the /mcp command in Claude Code to authenticate\n" ); output_manager_default.print("\u2500".repeat(50) + "\n"); } } else { summary.push("\u2705 Claude Code: Vercel MCP added successfully"); output_manager_default.print("\u2705 Successfully added Vercel MCP to Claude Code\n"); output_manager_default.print( "\u2139\uFE0F You may need to authenticate using the /mcp command in Claude Code\n" ); output_manager_default.print("\u2500".repeat(50) + "\n"); } } else if (clientName === "Claude.ai and Claude for desktop") { output_manager_default.print( "\u{1F4A1} Manual setup required for Claude.ai and Claude for desktop\n" ); output_manager_default.print(" 1. Open Settings in the sidebar\n"); output_manager_default.print( " 2. Navigate to Connectors and select Add custom connector\n" ); output_manager_default.print(" 3. Configure the connector:\n"); if (isProjectSpecific) { const projectInfo = await getProjectSpecificUrl(client2); const projectName = projectInfo?.projectName || "project"; output_manager_default.print(` \u2022 Name: Vercel ${projectName} `); output_manager_default.print(` \u2022 URL: ${projectInfo?.url} `); } else { output_manager_default.print(" \u2022 Name: Vercel\n"); output_manager_default.print(` \u2022 URL: ${MCP_ENDPOINT} `); } output_manager_default.print(" 4. Complete the authentication flow\n"); summary.push("\u2139\uFE0F Claude.ai/Desktop: Manual setup required"); output_manager_default.print("\u2500".repeat(50) + "\n"); } else if (clientName === "Cursor") { const cursorCheck = safeExecSync( process.platform === "darwin" ? "ls /Applications/Cursor.app" : process.platform === "win32" ? "where cursor" : "which cursor" ); if (typeof cursorCheck === "object" && "error" in cursorCheck) { output_manager_default.print("\u26A0\uFE0F Cursor not detected. Please install Cursor first.\n"); output_manager_default.print(" Download from: https://cursor.sh\n"); output_manager_default.print("\n"); summary.push("\u26A0\uFE0F Cursor: Not installed"); output_manager_default.print("\u2500".repeat(50) + "\n"); continue; } const mcpUrl = isProjectSpecific ? (await getProjectSpecificUrl(client2))?.url : MCP_ENDPOINT; const serverName = isProjectSpecific ? `vercel-${(await getProjectSpecificUrl(client2))?.projectName}` : "vercel"; const cursorConfigPath = process.platform === "darwin" ? `${process.env.HOME}/Library/Application Support/Cursor/User/settings.json` : process.platform === "win32" ? `${process.env.APPDATA}/Cursor/User/settings.json` : `${process.env.HOME}/.config/Cursor/User/settings.json`; const cursorMcpPath = process.platform === "darwin" ? `${process.env.HOME}/.cursor/mcp.json` : process.platform === "win32" ? `${process.env.APPDATA}/Cursor/mcp.json` : `${process.env.HOME}/.cursor/mcp.json`; let cursorAlreadyConfigured = false; try { const fs15 = __require("fs"); if (fs15.existsSync(cursorMcpPath)) { const configContent = fs15.readFileSync(cursorMcpPath, "utf8"); const config3 = JSON.parse(configContent); const mcpServers = config3.mcpServers || {}; cursorAlreadyConfigured = Object.values(mcpServers).some( (server) => server.url === mcpUrl || server.url === MCP_ENDPOINT ); } if (!cursorAlreadyConfigured && fs15.existsSync(cursorConfigPath)) { const configContent = fs15.readFileSync(cursorConfigPath, "utf8"); const config3 = JSON.parse(configContent); const mcpServers = config3["mcp.servers"] || {}; cursorAlreadyConfigured = Object.values(mcpServers).some( (server) => server.url === mcpUrl || server.url === MCP_ENDPOINT ); } } catch (error3) { } if (cursorAlreadyConfigured) { summary.push("\u2705 Cursor: Vercel MCP already configured"); output_manager_default.print("\u2139\uFE0F Vercel MCP is already configured in Cursor\n"); output_manager_default.print("\u2500".repeat(50) + "\n"); continue; } const config2 = { url: mcpUrl, name: serverName }; const configJson = JSON.stringify(config2); const encodedConfig = Buffer.from(configJson).toString("base64"); const oneClickUrl = `cursor://anysphere.cursor-deeplink/mcp/install?name=${serverName}&config=${encodedConfig}`; try { if (process.platform === "darwin") { execSync2(`open '${oneClickUrl}'`); } else if (process.platform === "win32") { execSync2(`start ${oneClickUrl}`); } else { execSync2(`xdg-open '${oneClickUrl}'`); } summary.push("\u2705 Cursor: One-click installer opened"); output_manager_default.print("\u2139\uFE0F Follow the prompts in Cursor to complete setup\n"); } catch (error3) { summary.push("\u26A0\uFE0F Cursor: Deep link may not have worked"); output_manager_default.print("\u26A0\uFE0F Could not open Cursor automatically\n"); output_manager_default.print("\u{1F4A1} Manual setup:\n"); output_manager_default.print(" 1. Open Cursor\n"); output_manager_default.print(" 2. Go to Settings (Cmd+, / Ctrl+,)\n"); output_manager_default.print(" 3. Navigate to MCP section\n"); output_manager_default.print(' 4. Click "Add Server"\n'); output_manager_default.print(" 5. Enter the following details:\n"); output_manager_default.print(` \u2022 Name: ${serverName} `); output_manager_default.print(` \u2022 URL: ${mcpUrl} `); output_manager_default.print( ' 6. Click "Add" and follow the authorization prompts\n' ); output_manager_default.print("\u2500".repeat(50) + "\n"); } } else if (clientName === "VS Code with Copilot") { const copilotCheck = safeExecSync( "code --list-extensions | grep -i copilot" ); if (typeof copilotCheck === "object" && "error" in copilotCheck) { output_manager_default.print( "\u26A0\uFE0F GitHub Copilot not detected. MCP functionality may be limited.\n" ); output_manager_default.print(" 1. Open VS Code\n"); output_manager_default.print(" 2. Go to Extensions (Cmd+Shift+X / Ctrl+Shift+X)\n"); output_manager_default.print(' 3. Search for "GitHub Copilot"\n'); output_manager_default.print( " 4. Install and authenticate with your GitHub account\n" ); output_manager_default.print(" 5. Restart VS Code\n"); output_manager_default.print("\n"); } const mcpUrl = isProjectSpecific ? (await getProjectSpecificUrl(client2))?.url : MCP_ENDPOINT; const serverName = isProjectSpecific ? `vercel-${(await getProjectSpecificUrl(client2))?.projectName}` : "vercel"; const vscodeConfigPath = process.platform === "darwin" ? `${process.env.HOME}/Library/Application Support/Code/User/settings.json` : process.platform === "win32" ? `${process.env.APPDATA}/Code/User/settings.json` : `${process.env.HOME}/.config/Code/User/settings.json`; const vscodeMcpPath = process.platform === "darwin" ? `${process.env.HOME}/Library/Application Support/Code/User/mcp.json` : process.platform === "win32" ? `${process.env.APPDATA}/Code/User/mcp.json` : `${process.env.HOME}/.config/Code/User/mcp.json`; let vscodeAlreadyConfigured = false; try { const fs15 = __require("fs"); if (fs15.existsSync(vscodeMcpPath)) { const configContent = fs15.readFileSync(vscodeMcpPath, "utf8"); const config3 = JSON.parse(configContent); const mcpServers = config3.servers || {}; vscodeAlreadyConfigured = Object.values(mcpServers).some( (server) => server.url === mcpUrl || server.url === MCP_ENDPOINT ); } if (!vscodeAlreadyConfigured && fs15.existsSync(vscodeConfigPath)) { const configContent = fs15.readFileSync(vscodeConfigPath, "utf8"); const config3 = JSON.parse(configContent); const mcpServers = config3["mcp.servers"] || {}; vscodeAlreadyConfigured = Object.values(mcpServers).some( (server) => server.url === mcpUrl || server.url === MCP_ENDPOINT ); } } catch (error3) { } if (vscodeAlreadyConfigured) { summary.push("\u2705 VS Code: Vercel MCP already configured"); output_manager_default.print("\u2139\uFE0F Vercel MCP is already configured in VS Code\n"); output_manager_default.print("\u2500".repeat(50) + "\n"); continue; } const config2 = { name: serverName, url: mcpUrl }; const encodedConfig = encodeURIComponent(JSON.stringify(config2)); const oneClickUrl = `vscode:mcp/install?${encodedConfig}`; try { if (process.platform === "darwin") { execSync2(`open '${oneClickUrl}'`); } else if (process.platform === "win32") { execSync2(`start ${oneClickUrl}`); } else { execSync2(`xdg-open '${oneClickUrl}'`); } summary.push("\u2705 VS Code: One-click installer opened"); output_manager_default.print("\u2139\uFE0F Follow the prompts in VS Code to complete setup\n"); } catch (error3) { summary.push("\u274C VS Code: Failed to open one-click installer"); output_manager_default.print("\u{1F4A1} Manual setup instructions:\n"); output_manager_default.print(" 1. Open VS Code\n"); output_manager_default.print( " 2. Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux)\n" ); output_manager_default.print(' 3. Type "MCP: Add Server" and press Enter\n'); output_manager_default.print(" 4. Select HTTP\n"); output_manager_default.print(" 5. Enter the following details:\n"); output_manager_default.print(` \u2022 URL: ${mcpUrl} `); output_manager_default.print(` \u2022 Name: ${serverName} `); output_manager_default.print( " 6. Select Global or Workspace depending on your needs\n" ); output_manager_default.print(" 7. Click Add\n"); output_manager_default.print(" 8. Follow the authorization steps\n"); output_manager_default.print("\u2500".repeat(50) + "\n"); } } } output_manager_default.print("\u{1F4CA} Setup Summary\n"); output_manager_default.print("\u2500".repeat(50) + "\n"); summary.forEach((line) => output_manager_default.print(`${line} `)); output_manager_default.print("\u2728 Setup complete! Restart your clients if needed.\n"); return 0; } var MCP_ENDPOINT; var init_mcp = __esm({ "src/commands/mcp/mcp.ts"() { "use strict"; init_output_manager(); init_link2(); MCP_ENDPOINT = "https://mcp.vercel.com"; } }); // src/commands/mcp/index.ts var mcp_exports = {}; __export3(mcp_exports, { default: () => main13 }); async function main13(client2) { let parsedArgs; const flagsSpecification = getFlagsSpecification(mcpCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } if (parsedArgs.flags["--help"]) { output_manager_default.print(help(mcpCommand, { columns: client2.stderr.columns })); return 2; } if (parsedArgs.flags["--project"]) { client2.argv.push("--project"); } try { return await mcp(client2); } catch (err) { output_manager_default.prettyError(err); return 1; } } var init_mcp2 = __esm({ "src/commands/mcp/index.ts"() { "use strict"; init_get_args(); init_error2(); init_help(); init_command27(); init_get_flags_specification(); init_output_manager(); init_mcp(); } }); // src/util/telemetry/commands/logout/index.ts var LogoutTelemetryClient; var init_logout = __esm({ "src/util/telemetry/commands/logout/index.ts"() { "use strict"; init_telemetry(); LogoutTelemetryClient = class extends TelemetryClient { }; } }); // src/commands/logout/future.ts async function logout(client2) { const { authConfig } = client2; if (!authConfig.token) { output_manager_default.note( `Not currently logged in, so ${getCommandName("logout")} did nothing` ); return 0; } output_manager_default.spinner("Logging out\u2026", 200); const revocationResponse = await revocationRequest({ token: authConfig.token }); output_manager_default.debug(`'Revocation response:', ${await revocationResponse.clone().text()}`); const [revocationError] = await processRevocationResponse(revocationResponse); let logoutError = false; if (revocationError) { output_manager_default.error(revocationError.message); output_manager_default.debug(revocationError.cause); output_manager_default.error("Failed during logout"); logoutError = true; } try { client2.updateConfig({ currentTeam: void 0 }); client2.writeToConfigFile(); client2.emptyAuthConfig(); client2.writeToAuthConfigFile(); output_manager_default.debug("Configuration has been deleted"); if (!logoutError) { output_manager_default.success("Logged out!"); return 0; } } catch (err) { output_manager_default.debug((0, import_error_utils31.errorToString)(err)); output_manager_default.error("Failed during logout"); } return 1; } var import_error_utils31; var init_future2 = __esm({ "src/commands/logout/future.ts"() { "use strict"; import_error_utils31 = __toESM3(require_dist2(), 1); init_pkg_name(); init_oauth(); init_output_manager(); } }); // src/commands/logout/index.ts var logout_exports = {}; __export3(logout_exports, { default: () => logout2 }); async function logout2(client2) { const { authConfig, config: config2 } = client2; let parsedArgs = null; const flagsSpecification = getFlagsSpecification(logoutCommand.options); const telemetry2 = new LogoutTelemetryClient({ opts: { store: client2.telemetryEventStore } }); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("logout"); output_manager_default.print(help(logoutCommand, { columns: client2.stderr.columns })); return 0; } if ("refreshToken" in authConfig) { return await logout(client2); } output_manager_default.debug("Falling back to legacy logout"); if (!authConfig.token) { output_manager_default.note( `Not currently logged in, so ${getCommandName("logout")} did nothing` ); return 0; } output_manager_default.spinner("Logging out\u2026", 200); let exitCode2 = 0; try { await client2.fetch("/v3/user/tokens/current", { method: "DELETE", useCurrentTeam: false }); } catch (err) { if (isAPIError(err)) { if (err.status === 403) { output_manager_default.debug("Token is invalid so it cannot be revoked"); } else if (err.status !== 200) { output_manager_default.debug(err?.message ?? ""); exitCode2 = 1; } } } delete config2.currentTeam; delete authConfig.token; try { writeToConfigFile(config2); writeToAuthConfigFile(authConfig); output_manager_default.debug("Configuration has been deleted"); } catch (err) { output_manager_default.debug((0, import_error_utils32.errorToString)(err)); exitCode2 = 1; } if (exitCode2 === 0) { output_manager_default.log("Logged out!"); } else { output_manager_default.error("Failed during logout"); } return exitCode2; } var import_error_utils32; var init_logout2 = __esm({ "src/commands/logout/index.ts"() { "use strict"; init_error2(); init_files(); init_get_args(); init_pkg_name(); init_errors_ts(); import_error_utils32 = __toESM3(require_dist2(), 1); init_help(); init_command24(); init_get_flags_specification(); init_output_manager(); init_logout(); init_future2(); } }); // src/commands/microfrontends/pull.ts import { join as join24 } from "path"; async function pull2(client2) { const link4 = await ensureLink("microfrontends", client2, client2.cwd); if (typeof link4 === "number") { return link4; } const { project, org, repoRoot } = link4; let currentDirectory; if (repoRoot) { currentDirectory = join24(repoRoot, project.rootDirectory || ""); } else { currentDirectory = client2.cwd; } client2.config.currentTeam = org.type === "team" ? org.id : void 0; const { contextName } = await getScope(client2); output_manager_default.spinner( `Fetching microfrontends configuration in ${import_chalk118.default.bold(contextName)}` ); let parsedArgs; const flagsSpecification = getFlagsSpecification(pullSubcommand2.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (error3) { printError(error3); return 1; } let rawConfig; const dpl = parsedArgs.flags["--dpl"]; try { if (dpl) { const { config: config2 } = await client2.fetch(`/v1/microfrontends/${dpl}/config`, { method: "GET" }); rawConfig = config2; } else { const projectId = project.id; const { config: config2 } = await client2.fetch(`/v1/microfrontends/projects/${projectId}/production-mfe-config`, { method: "GET" }); rawConfig = config2; } const sanitizedConfig = { ...rawConfig, applications: Object.fromEntries( Object.entries(rawConfig.applications).map(([name, app]) => [ name, { ...app, projectId: void 0 // remove projectId } ]) ) }; output_manager_default.stopSpinner(); const path11 = join24(currentDirectory, VERCEL_DIR3, VERCEL_DIR_MICROFRONTENDS); await (0, import_fs_extra23.outputJSON)(path11, sanitizedConfig, { spaces: 2 }); const microfrontendsStamp = stamp_default(); output_manager_default.print( `${prependEmoji( `Downloaded microfrontends configuration to ${import_chalk118.default.bold( humanizePath( join24(currentDirectory, VERCEL_DIR3, VERCEL_DIR_MICROFRONTENDS) ) )} ${import_chalk118.default.gray(microfrontendsStamp())}`, emoji("success") )} ` ); return 0; } catch (error3) { output_manager_default.stopSpinner(); printError(error3); return 1; } } var import_chalk118, import_fs_extra23, VERCEL_DIR3, VERCEL_DIR_MICROFRONTENDS; var init_pull5 = __esm({ "src/commands/microfrontends/pull.ts"() { "use strict"; import_chalk118 = __toESM3(require_source(), 1); init_output_manager(); init_get_scope(); init_ensure_link(); init_emoji(); init_humanize_path(); init_stamp(); import_fs_extra23 = __toESM3(require_lib(), 1); init_command28(); init_get_flags_specification(); init_get_args(); init_error2(); VERCEL_DIR3 = ".vercel"; VERCEL_DIR_MICROFRONTENDS = "microfrontends.json"; } }); // src/util/telemetry/commands/microfrontends/index.ts var MicrofrontendsTelemetryClient; var init_microfrontends = __esm({ "src/util/telemetry/commands/microfrontends/index.ts"() { "use strict"; init_telemetry(); MicrofrontendsTelemetryClient = class extends TelemetryClient { trackCliSubcommandPull(actual) { this.trackCliSubcommand({ subcommand: "pull", value: actual }); } }; } }); // src/commands/microfrontends/index.ts var microfrontends_exports = {}; __export3(microfrontends_exports, { default: () => main14 }); async function main14(client2) { const telemetry2 = new MicrofrontendsTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification( microfrontendsCommand.options ); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (error3) { printError(error3); return 1; } let { subcommand, subcommandOriginal } = getSubcommand( parsedArgs.args.slice(1), COMMAND_CONFIG15 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("microfrontends"); output_manager_default.print( help(microfrontendsCommand, { columns: client2.stderr.columns }) ); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: microfrontendsCommand, columns: client2.stderr.columns }) ); return 2; } switch (subcommand) { case "pull": if (needHelp) { telemetry2.trackCliFlagHelp("microfrontends", subcommandOriginal); return printHelp(pullSubcommand2); } telemetry2.trackCliSubcommandPull(subcommandOriginal); return pull2(client2); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG15)); output_manager_default.print( help(microfrontendsCommand, { columns: client2.stderr.columns }) ); return 2; } } var COMMAND_CONFIG15; var init_microfrontends2 = __esm({ "src/commands/microfrontends/index.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_error2(); init_help(); init_pull5(); init_command28(); init_get_flags_specification(); init_output_manager(); init_commands(); init_get_subcommand(); init_microfrontends(); COMMAND_CONFIG15 = { pull: getCommandAliases(pullSubcommand2) }; } }); // src/util/telemetry/commands/open/index.ts var OpenTelemetryClient; var init_open2 = __esm({ "src/util/telemetry/commands/open/index.ts"() { "use strict"; init_telemetry(); OpenTelemetryClient = class extends TelemetryClient { trackCliCommandOpen(value) { this.trackCliCommand({ command: "open", value }); } }; } }); // src/commands/open/index.ts var open_exports = {}; __export3(open_exports, { default: () => openCommandHandler }); async function openCommandHandler(client2) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(openCommand.options); const telemetry2 = new OpenTelemetryClient({ opts: { store: client2.telemetryEventStore } }); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("open"); output_manager_default.print(help(openCommand, { columns: client2.stderr.columns })); return 0; } const { getLinkedProject: getLinkedProject2 } = await Promise.resolve().then(() => (init_link2(), link_exports)); const linkCheck = await getLinkedProject2(client2, client2.cwd); if (linkCheck.status !== "linked" || !linkCheck.org || !linkCheck.project) { output_manager_default.error("This command requires a linked project. Please run:"); output_manager_default.print(` vercel link `); return 1; } const link4 = await ensureLink("open", client2, client2.cwd); if (typeof link4 === "number") { return link4; } if (link4.status !== "linked" || !link4.org || !link4.project) { output_manager_default.error("This command requires a linked project. Please run:"); output_manager_default.print(" vercel link\n"); return 1; } const { org, project } = link4; const projectUrl = `https://vercel.com/${org.slug}/${project.name}`; output_manager_default.log(`Opening ${projectUrl} in your browser...`); await (0, import_open7.default)(projectUrl); return 0; } var import_open7; var init_open3 = __esm({ "src/commands/open/index.ts"() { "use strict"; import_open7 = __toESM3(require_open(), 1); init_help(); init_command29(); init_get_args(); init_get_flags_specification(); init_error2(); init_output_manager(); init_ensure_link(); init_open2(); } }); // src/util/telemetry/commands/project/add.ts var ProjectAddTelemetryClient; var init_add11 = __esm({ "src/util/telemetry/commands/project/add.ts"() { "use strict"; init_telemetry(); ProjectAddTelemetryClient = class extends TelemetryClient { trackCliArgumentName(name) { if (name) { this.trackCliArgument({ arg: "name", value: this.redactedValue }); } } }; } }); // src/commands/project/add.ts async function add6(client2, argv) { const telemetryClient = new ProjectAddTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(addSubcommand6.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2 } = parsedArgs; if (args2.length !== 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk119.default.cyan( `${getCommandName("project add ")}` )}` ); if (args2.length > 1) { const example = import_chalk119.default.cyan( `${getCommandName(`project add "${args2.join(" ")}"`)}` ); output_manager_default.log( `If your project name has spaces, make sure to wrap it in quotes. Example: ${example} ` ); } return 1; } const start = Date.now(); const [name] = args2; telemetryClient.trackCliArgumentName(name); try { await createProject(client2, { name }); } catch (err) { if (isAPIError(err) && err.code === "too_many_projects") { output_manager_default.prettyError(err); return 1; } if (isAPIError(err) && err.status === 409) { } else { throw err; } } const elapsed2 = (0, import_ms22.default)(Date.now() - start); const { contextName } = await getScope(client2); output_manager_default.log( `${import_chalk119.default.cyan("Success!")} Project ${import_chalk119.default.bold( name.toLowerCase() )} added (${import_chalk119.default.bold(contextName)}) ${import_chalk119.default.gray(`[${elapsed2}]`)}` ); return 0; } var import_chalk119, import_ms22; var init_add12 = __esm({ "src/commands/project/add.ts"() { "use strict"; import_chalk119 = __toESM3(require_source(), 1); import_ms22 = __toESM3(require_ms(), 1); init_errors_ts(); init_pkg_name(); init_create_project(); init_output_manager(); init_add11(); init_command30(); init_get_args(); init_get_flags_specification(); init_error2(); init_get_scope(); } }); // src/util/telemetry/commands/project/inspect.ts var ProjectInspectTelemetryClient; var init_inspect5 = __esm({ "src/util/telemetry/commands/project/inspect.ts"() { "use strict"; init_telemetry(); ProjectInspectTelemetryClient = class extends TelemetryClient { trackCliArgumentName(value) { if (value) { this.trackCliArgument({ arg: "name", value: this.redactedValue }); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/util/projects/get-project-by-cwd-or-link.ts async function getProjectByCwdOrLink({ autoConfirm, client: client2, commandName, cwd, projectNameOrId }) { if (projectNameOrId) { const project = await getProjectByNameOrId(client2, projectNameOrId); if (project instanceof ProjectNotFound) { throw project; } return project; } const linkedProject = await ensureLink( commandName, client2, cwd ?? client2.cwd, { autoConfirm } ); if (typeof linkedProject === "number") { const err = new Error("Link project error"); err.code = "ERR_LINK_PROJECT"; throw err; } return linkedProject.project; } var init_get_project_by_cwd_or_link = __esm({ "src/util/projects/get-project-by-cwd-or-link.ts"() { "use strict"; init_errors_ts(); init_ensure_link(); init_get_project_by_id_or_name(); } }); // src/commands/project/inspect.ts async function inspect4(client2, argv) { const telemetry2 = new ProjectInspectTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(inspectSubcommand2.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2 } = parsedArgs; const name = args2[0]; telemetry2.trackCliArgumentName(name); telemetry2.trackCliFlagYes(parsedArgs.flags["--yes"]); if (args2.length !== 0 && args2.length !== 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk120.default.cyan( `${getCommandName("project inspect ")}` )}` ); return 2; } const inspectStamp = stamp_default(); const project = await getProjectByCwdOrLink({ autoConfirm: parsedArgs.flags["--yes"], client: client2, commandName: "project inspect", projectNameOrId: name }); const org = await getTeamById(client2, project.accountId); const projectSlugLink = formatProject(org.slug, project.name); output_manager_default.log(`Found Project ${projectSlugLink} ${import_chalk120.default.gray(inspectStamp())}`); output_manager_default.print("\n"); output_manager_default.print(import_chalk120.default.bold(" General\n\n")); output_manager_default.print(` ${import_chalk120.default.cyan("ID")} ${project.id} `); output_manager_default.print(` ${import_chalk120.default.cyan("Name")} ${project.name} `); output_manager_default.print(` ${import_chalk120.default.cyan("Owner")} ${org.name} `); output_manager_default.print( ` ${import_chalk120.default.cyan("Created At")} ${formatDate(project.createdAt)} ` ); output_manager_default.print( ` ${import_chalk120.default.cyan("Root Directory")} ${project.rootDirectory ?? "."} ` ); output_manager_default.print( ` ${import_chalk120.default.cyan("Node.js Version")} ${project.nodeVersion} ` ); const framework = import_frameworks8.frameworkList.find((f) => f.slug === project.framework); output_manager_default.print("\n"); output_manager_default.print(import_chalk120.default.bold(" Framework Settings\n\n")); output_manager_default.print(` ${import_chalk120.default.cyan("Framework Preset")} ${framework?.name} `); output_manager_default.print( ` ${import_chalk120.default.cyan("Build Command")} ${project.buildCommand ?? import_chalk120.default.dim(framework?.settings?.buildCommand.placeholder ?? "None")} ` ); output_manager_default.print( ` ${import_chalk120.default.cyan("Output Directory")} ${project.outputDirectory ?? import_chalk120.default.dim(framework?.settings?.outputDirectory.placeholder ?? "None")} ` ); output_manager_default.print( ` ${import_chalk120.default.cyan("Install Command")} ${project.installCommand ?? import_chalk120.default.dim(framework?.settings?.installCommand.placeholder ?? "None")} ` ); output_manager_default.print("\n"); return 0; } var import_chalk120, import_frameworks8; var init_inspect6 = __esm({ "src/commands/project/inspect.ts"() { "use strict"; import_chalk120 = __toESM3(require_source(), 1); import_frameworks8 = __toESM3(require_frameworks(), 1); init_pkg_name(); init_inspect5(); init_output_manager(); init_command30(); init_get_args(); init_get_flags_specification(); init_error2(); init_get_project_by_cwd_or_link(); init_format_project(); init_stamp(); init_get_team_by_id(); init_format_date(); } }); // src/util/telemetry/commands/project/list.ts var ProjectListTelemetryClient; var init_list9 = __esm({ "src/util/telemetry/commands/project/list.ts"() { "use strict"; init_telemetry(); ProjectListTelemetryClient = class extends TelemetryClient { trackCliFlagUpdateRequired(updateRequired) { if (updateRequired) { this.trackCliFlag("update-required"); } } trackCliOptionNext(next) { if (next) { this.trackCliOption({ option: "next", value: this.redactedValue }); } } trackCliFlagJson(json) { if (json) { this.trackCliFlag("json"); } } }; } }); // src/commands/project/list.ts async function list6(client2, argv) { const telemetryClient = new ProjectListTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(listSubcommand8.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2, flags: opts } = parsedArgs; if (args2.length !== 0) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk121.default.cyan( `${getCommandName("project ls")}` )}` ); return 2; } const start = Date.now(); const { contextName } = await getScope(client2); output_manager_default.spinner(`Fetching projects in ${import_chalk121.default.bold(contextName)}`); const flags = processFlags(opts, telemetryClient); if ("error" in flags) { output_manager_default.stopSpinner(); output_manager_default.error(flags.error); return 1; } const projectsUrl = buildProjectsUrl(flags); const { projects: projectList, pagination } = await client2.fetch(projectsUrl, { method: "GET" }); output_manager_default.stopSpinner(); const elapsed2 = (0, import_ms23.default)(Date.now() - start); if (flags.json) { outputJson(client2, projectList, { pagination, contextName, elapsed: elapsed2, deprecated: flags.deprecated }); } else { outputTable(projectList, { contextName, elapsed: elapsed2, deprecated: flags.deprecated, opts, pagination }); } return 0; } function processFlags(opts, telemetryClient) { const deprecated = opts["--update-required"] || false; const next = opts["--next"]; const formatResult = validateJsonOutput(opts); if (!formatResult.valid) { return { error: formatResult.error }; } const json = formatResult.jsonOutput; telemetryClient.trackCliFlagUpdateRequired(deprecated); telemetryClient.trackCliOptionNext(next); telemetryClient.trackCliOptionFormat(opts["--format"]); telemetryClient.trackCliFlagJson(opts["--json"]); return { deprecated, next, json }; } function buildProjectsUrl(flags) { let url3 = BASE_PROJECTS_URL; if (flags.deprecated) { url3 += `&deprecated=${flags.deprecated}`; } if (flags.next) { url3 += `&until=${flags.next}`; } return url3; } function createProjectJson(project, deprecated) { return { name: project.name, id: project.id, latestProductionUrl: getLatestProdUrl(project), updatedAt: project.updatedAt, nodeVersion: project.nodeVersion ?? null, deprecated }; } function outputJson(client2, projectList, metadata) { const jsonOutput = { projects: projectList.map( (project) => createProjectJson(project, metadata.deprecated) ), pagination: metadata.pagination, contextName: metadata.contextName, elapsed: metadata.elapsed }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } function outputTable(projectList, options) { const { contextName, elapsed: elapsed2, deprecated, opts, pagination } = options; output_manager_default.log( `${projectList.length > 0 ? "Projects" : "No projects"} found under ${import_chalk121.default.bold(contextName)} ${deprecated ? "that are using a deprecated Node.js version" : "\b"} ${import_chalk121.default.gray(`[${elapsed2}]`)}` ); if (projectList.length > 0) { printProjectsTable(projectList); printPaginationInstructions(opts, pagination); } } function printProjectsTable(projectList) { const tablePrint = table( [ TABLE_HEADERS.map((header) => import_chalk121.default.bold(import_chalk121.default.cyan(header))), ...projectList.flatMap((project) => [ [ import_chalk121.default.bold(project.name), getLatestProdUrl(project), import_chalk121.default.gray((0, import_ms23.default)(Date.now() - project.updatedAt)), project.nodeVersion ?? "" ] ]) ], { hsep: 3 } ).replace(/^/gm, " "); output_manager_default.print(` ${tablePrint} `); } function printPaginationInstructions(opts, pagination) { if (pagination && pagination.count === 20) { const flags = getCommandFlags(opts, PAGINATION_FLAGS_TO_EXCLUDE); const nextCmd = `project ls${flags} --next ${pagination.next}`; output_manager_default.log(`To display the next page, run ${getCommandName(nextCmd)}`); } } function getLatestProdUrl(project) { const alias2 = project.targets?.production?.alias?.[0]; if (alias2) return `https://${alias2}`; return "--"; } var import_ms23, import_chalk121, TABLE_HEADERS, PAGINATION_FLAGS_TO_EXCLUDE, BASE_PROJECTS_URL; var init_list10 = __esm({ "src/commands/project/list.ts"() { "use strict"; import_ms23 = __toESM3(require_ms(), 1); import_chalk121 = __toESM3(require_source(), 1); init_table(); init_get_command_flags(); init_pkg_name(); init_list9(); init_output_manager(); init_output_format(); init_command30(); init_get_args(); init_get_flags_specification(); init_error2(); init_get_scope(); TABLE_HEADERS = [ "Project Name", "Latest Production URL", "Updated", "Node Version" ]; PAGINATION_FLAGS_TO_EXCLUDE = [ "_", "--next", "-N", "-d", "-y", "--json", "--format" ]; BASE_PROJECTS_URL = "/v9/projects?limit=20"; } }); // src/util/telemetry/commands/project/rm.ts var ProjectRmTelemetryClient; var init_rm9 = __esm({ "src/util/telemetry/commands/project/rm.ts"() { "use strict"; init_telemetry(); ProjectRmTelemetryClient = class extends TelemetryClient { trackCliArgumentName(name) { if (name) { this.trackCliArgument({ arg: "name", value: this.redactedValue }); } } }; } }); // src/commands/project/rm.ts async function rm6(client2, argv) { const telemetryClient = new ProjectRmTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(removeSubcommand8.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: args2 } = parsedArgs; if (args2.length !== 1) { output_manager_default.error( `Invalid number of arguments. Usage: ${import_chalk122.default.cyan( `${getCommandName("project rm ")}` )}` ); return 1; } const name = args2[0]; telemetryClient.trackCliArgumentName(name); const start = Date.now(); const yes = await readConfirmation3(client2, name); if (!yes) { output_manager_default.log("User abort"); return 0; } try { await client2.fetch(`/v2/projects/${e(name)}`, { method: "DELETE" }); } catch (err) { if (isAPIError(err) && err.status === 404) { output_manager_default.error("No such project exists"); return 1; } if (isAPIError(err) && err.status === 403) { output_manager_default.error(err.message); return 1; } } const elapsed2 = (0, import_ms24.default)(Date.now() - start); output_manager_default.log( `${import_chalk122.default.cyan("Success!")} Project ${import_chalk122.default.bold(name)} removed ${import_chalk122.default.gray( `[${elapsed2}]` )}` ); return 0; } async function readConfirmation3(client2, projectName) { output_manager_default.print( prependEmoji( `The project ${import_chalk122.default.bold(projectName)} will be removed permanently. It will also delete everything under the project including deployments. `, emoji("warning") ) ); return await client2.input.confirm( `${import_chalk122.default.bold.red("Are you sure?")}`, false ); } var import_chalk122, import_ms24, e; var init_rm10 = __esm({ "src/commands/project/rm.ts"() { "use strict"; import_chalk122 = __toESM3(require_source(), 1); import_ms24 = __toESM3(require_ms(), 1); init_emoji(); init_errors_ts(); init_pkg_name(); init_rm9(); init_output_manager(); init_get_args(); init_get_flags_specification(); init_error2(); init_command30(); e = encodeURIComponent; } }); // src/util/telemetry/commands/project/index.ts var ProjectTelemetryClient; var init_project = __esm({ "src/util/telemetry/commands/project/index.ts"() { "use strict"; init_telemetry(); ProjectTelemetryClient = class extends TelemetryClient { trackCliSubcommandInspect(actual) { this.trackCliSubcommand({ subcommand: "inspect", value: actual }); } trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } trackCliSubcommandAdd(actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "remove", value: actual }); } }; } }); // src/commands/project/index.ts var project_exports = {}; __export3(project_exports, { default: () => main15 }); async function main15(client2) { const telemetry2 = new ProjectTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(projectCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (error3) { printError(error3); return 1; } let { subcommand, args: args2, subcommandOriginal } = getSubcommand( parsedArgs.args.slice(1), COMMAND_CONFIG16 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("project"); output_manager_default.print(help(projectCommand, { columns: client2.stderr.columns })); return 0; } function printHelp(command) { output_manager_default.print( help(command, { parent: projectCommand, columns: client2.stderr.columns }) ); return 0; } if (!parsedArgs.args[1]) { subcommand = "list"; } switch (subcommand) { case "inspect": if (needHelp) { telemetry2.trackCliFlagHelp("project", subcommandOriginal); return printHelp(inspectSubcommand2); } telemetry2.trackCliSubcommandInspect(subcommandOriginal); return inspect4(client2, args2); case "list": if (needHelp) { telemetry2.trackCliFlagHelp("project", subcommandOriginal); return printHelp(listSubcommand8); } telemetry2.trackCliSubcommandList(subcommandOriginal); return list6(client2, args2); case "add": if (needHelp) { telemetry2.trackCliFlagHelp("project", subcommandOriginal); return printHelp(addSubcommand6); } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return add6(client2, args2); case "remove": if (needHelp) { telemetry2.trackCliFlagHelp("project", subcommandOriginal); return printHelp(removeSubcommand8); } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return rm6(client2, args2); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG16)); output_manager_default.print(help(projectCommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG16; var init_project2 = __esm({ "src/commands/project/index.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_error2(); init_help(); init_add12(); init_inspect6(); init_list10(); init_rm10(); init_command30(); init_get_flags_specification(); init_project(); init_output_manager(); init_commands(); init_get_subcommand(); COMMAND_CONFIG16 = { inspect: getCommandAliases(inspectSubcommand2), list: getCommandAliases(listSubcommand8), add: getCommandAliases(addSubcommand6), remove: getCommandAliases(removeSubcommand8) }; } }); // src/util/projects/get-project-by-deployment.ts async function getProjectByDeployment({ client: client2, deployId }) { const { config: config2 } = client2; const { contextName } = await getScope(client2); if (!isValidName(deployId)) { throw new Error( `The provided argument "${deployId}" is not a valid deployment ID or URL` ); } let deployment; let team; try { output_manager_default?.spinner( `Fetching deployment "${deployId}" in ${import_chalk123.default.bold(contextName)}\u2026` ); const [teamResult, deploymentResult] = await Promise.allSettled([ config2.currentTeam ? getTeamById(client2, config2.currentTeam) : void 0, getDeployment(client2, contextName, deployId) ]); if (teamResult.status === "rejected") { throw new Error( `Failed to retrieve team information: ${teamResult.reason}` ); } if (deploymentResult.status === "rejected") { throw new Error(deploymentResult.reason); } team = teamResult.value; deployment = deploymentResult.value; output_manager_default?.log( `Fetching deployment "${deployId}" in ${import_chalk123.default.bold(contextName)}\u2026` ); if (deployment.team?.id) { if (!team || deployment.team.id !== team.id) { const err = new Error( team ? `Deployment doesn't belong to current team ${import_chalk123.default.bold( contextName )}` : `Deployment belongs to a different team` ); err.code = "ERR_INVALID_TEAM"; throw err; } } else if (team) { const err = new Error( `Deployment doesn't belong to current team ${import_chalk123.default.bold(contextName)}` ); err.code = "ERR_INVALID_TEAM"; throw err; } if (!deployment.projectId) { throw new Error("Deployment is not associated to a project"); } const project = await getProjectByNameOrId(client2, deployment.projectId); if (project instanceof ProjectNotFound) { throw project; } return { contextName, deployment, project }; } finally { output_manager_default?.stopSpinner(); } } var import_chalk123; var init_get_project_by_deployment = __esm({ "src/util/projects/get-project-by-deployment.ts"() { "use strict"; import_chalk123 = __toESM3(require_source(), 1); init_get_deployment(); init_get_project_by_id_or_name(); init_get_scope(); init_get_team_by_id(); init_is_valid_name(); init_errors_ts(); init_output_manager(); } }); // src/util/alias/render-alias-status.ts function renderAliasStatus(status3) { if (status3 === "completed") { return import_chalk124.default.green(status3); } if (status3 === "failed") { return import_chalk124.default.red(status3); } if (status3 === "skipped") { return import_chalk124.default.gray(status3); } return import_chalk124.default.yellow(status3); } var import_chalk124; var init_render_alias_status = __esm({ "src/util/alias/render-alias-status.ts"() { "use strict"; import_chalk124 = __toESM3(require_source(), 1); } }); // src/commands/rolling-release/request-rolling-release.ts async function requestRollingRelease({ client: client2, projectId, teamId }) { const { rollingRelease: rollingRelease2 } = await client2.fetch( `/v1/projects/${projectId}/rolling-release?teamId=${teamId}` ); return rollingRelease2; } var init_request_rolling_release = __esm({ "src/commands/rolling-release/request-rolling-release.ts"() { "use strict"; } }); // src/commands/promote/status.ts async function promoteStatus({ client: client2, contextName, deployment, project, timeout = "3m" }) { const recentThreshold = Date.now() - (0, import_ms25.default)("3m"); const promoteTimeout = Date.now() + (0, import_ms25.default)(timeout); let counter = 0; let spinnerMessage = deployment ? "Promote in progress" : `Checking promotion status of ${project.name}`; if (!contextName) { ({ contextName } = await getScope(client2)); } try { output_manager_default.spinner(`${spinnerMessage}\u2026`); for (; ; ) { const projectCheck = await getProjectByNameOrId( client2, project.id, project.accountId, true ); if (projectCheck instanceof ProjectNotFound) { throw projectCheck; } if (projectCheck.rollingRelease) { output_manager_default.log(`Rolling Releases enabled \u2026`); const rr = await requestRollingRelease({ client: client2, projectId: project.id, teamId: project.accountId }); if (rr.activeStage) { output_manager_default.stopSpinner(); output_manager_default.log( `Rolling Release serving traffic at initial percentage ${rr.activeStage.targetPercentage}` ); return 0; } continue; } const { jobStatus, requestedAt, toDeploymentId, type } = projectCheck.lastAliasRequest ?? {}; if (!jobStatus || jobStatus !== "in-progress" && jobStatus !== "pending") { output_manager_default.stopSpinner(); output_manager_default.log(`${spinnerMessage}\u2026`); } if (!jobStatus || !requestedAt || !toDeploymentId || requestedAt < recentThreshold) { output_manager_default.log("No deployment promotion in progress"); return 0; } if (jobStatus === "skipped" && type === "promote") { output_manager_default.log("Promote deployment was skipped"); return 0; } if (jobStatus === "succeeded") { return await renderJobSucceeded({ client: client2, contextName, performingPromote: !!deployment, requestedAt, project, toDeploymentId }); } if (jobStatus === "failed") { return await renderJobFailed({ client: client2, contextName, deployment, project, toDeploymentId }); } if (jobStatus !== "pending" && jobStatus !== "in-progress") { output_manager_default.log(`Unknown promote deployment status "${jobStatus}"`); return 1; } if (requestedAt < recentThreshold || Date.now() >= promoteTimeout) { output_manager_default.log( `The promotion exceeded its deadline - rerun ${import_chalk125.default.bold( `${packageName} promote ${toDeploymentId}` )} to try again` ); return 1; } if (counter++ === 0 && !deployment) { spinnerMessage += ` requested at ${formatDate(requestedAt)}`; } output_manager_default.spinner(`${spinnerMessage}\u2026`); await sleep(250); } } finally { output_manager_default.stopSpinner(); } } async function renderJobFailed({ client: client2, contextName, deployment, project, toDeploymentId }) { try { const name = (deployment || await getDeployment(client2, contextName, toDeploymentId))?.url; output_manager_default.error( `Failed to remap all aliases to the requested deployment ${name} (${toDeploymentId})` ); } catch (e2) { output_manager_default.error( `Failed to remap all aliases to the requested deployment ${toDeploymentId}` ); } let nextTimestamp; for (; ; ) { let url3 = `/v9/projects/${project.id}/promote/aliases?failedOnly=true&limit=20`; if (nextTimestamp) { url3 += `&until=${nextTimestamp}`; } const { aliases, pagination } = await client2.fetch(url3); for (const { alias: alias2, status: status3 } of aliases) { output_manager_default.log( ` ${renderAliasStatus(status3).padEnd(11)} ${alias2.alias} (${alias2.deploymentId})` ); } if (pagination?.next) { nextTimestamp = pagination.next; } else { break; } } return 1; } async function renderJobSucceeded({ client: client2, contextName, performingPromote, project, requestedAt, toDeploymentId }) { let deploymentInfo = ""; try { const deployment = await getDeployment(client2, contextName, toDeploymentId); deploymentInfo = `${import_chalk125.default.bold(deployment.url)} (${toDeploymentId})`; } catch (err) { output_manager_default.debug( `Failed to get deployment url for ${toDeploymentId}: ${err?.toString() || err}` ); deploymentInfo = import_chalk125.default.bold(toDeploymentId); } const duration = performingPromote ? elapsed(Date.now() - requestedAt) : ""; output_manager_default.log( `Success! ${import_chalk125.default.bold( project.name )} was promoted to ${deploymentInfo} ${duration}` ); return 0; } var import_chalk125, import_ms25; var init_status2 = __esm({ "src/commands/promote/status.ts"() { "use strict"; import_chalk125 = __toESM3(require_source(), 1); init_elapsed(); init_format_date(); init_get_deployment(); init_pkg_name(); init_get_project_by_id_or_name(); init_get_scope(); import_ms25 = __toESM3(require_ms(), 1); init_errors_ts(); init_render_alias_status(); init_sleep(); init_output_manager(); init_request_rolling_release(); } }); // src/commands/promote/request-promote.ts async function requestPromote({ client: client2, deployId, timeout, yes }) { const { contextName, deployment, project } = await getProjectByDeployment({ client: client2, deployId }); let promoteByCreation = false; if (deployment.target !== "production") { if (yes) { promoteByCreation = true; } else { const question = "This deployment is not a production deployment and cannot be directly promoted. A new deployment will be built using your production environment. Are you sure you want to continue?"; promoteByCreation = await client2.input.confirm(question, false); if (!promoteByCreation) { output_manager_default.error("Canceled"); return 0; } } } if (promoteByCreation) { const newDeployment = await client2.fetch( `/v13/deployments?teamId=${deployment.ownerId}`, { body: { deploymentId: deployment.id, name: project.name, target: "production", meta: { action: "promote" } }, accountId: deployment.ownerId, method: "POST" } ); output_manager_default.log( `Successfully created new deployment of ${import_chalk126.default.bold(project.name)} at ${newDeployment.inspectorUrl}` ); return 0; } const res = await client2.fetch( `/v10/projects/${project.id}/promote/${deployment.id}`, { body: {}, // required json: false, method: "POST" } ); if (res.status === 202) { output_manager_default.log( "Promotion has been queued and will begin when the active rolling release completes successfully." ); return 0; } if (timeout !== void 0 && (0, import_ms26.default)(timeout) === 0) { output_manager_default.log( `Successfully requested promote of ${import_chalk126.default.bold(project.name)} to ${deployment.url} (${deployment.id})` ); output_manager_default.log(`To check promote status, run ${getCommandName("promote")}.`); return 0; } return await promoteStatus({ client: client2, contextName, deployment, project, timeout }); } var import_chalk126, import_ms26; var init_request_promote = __esm({ "src/commands/promote/request-promote.ts"() { "use strict"; import_chalk126 = __toESM3(require_source(), 1); init_pkg_name(); init_get_project_by_deployment(); import_ms26 = __toESM3(require_ms(), 1); init_status2(); init_output_manager(); } }); // src/util/telemetry/commands/promote/index.ts var PromoteTelemetryClient; var init_promote = __esm({ "src/util/telemetry/commands/promote/index.ts"() { "use strict"; init_telemetry(); PromoteTelemetryClient = class extends TelemetryClient { trackCliArgumentUrlOrDeploymentId(value) { if (value) { this.trackCliArgument({ arg: "urlOrDeploymentId", value: this.redactedValue }); } } trackCliSubcommandStatus() { this.trackCliSubcommand({ subcommand: "status", value: "status" }); } trackCliOptionTimeout(time) { if (time) { this.trackCliOption({ option: "timeout", value: "[TIME]" }); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/promote/index.ts var promote_exports = {}; __export3(promote_exports, { default: () => promote_default }); var import_ms27, import_error_utils33, promote_default; var init_promote2 = __esm({ "src/commands/promote/index.ts"() { "use strict"; import_ms27 = __toESM3(require_ms(), 1); init_get_args(); init_get_project_by_cwd_or_link(); init_error2(); import_error_utils33 = __toESM3(require_dist2(), 1); init_request_promote(); init_status2(); init_command31(); init_help(); init_get_flags_specification(); init_promote(); init_output_manager(); promote_default = async (client2) => { let parsedArgs; const flagsSpecification = getFlagsSpecification(promoteCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (err) { printError(err); return 1; } const telemetry2 = new PromoteTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const needHelp = parsedArgs.flags["--help"]; if (!parsedArgs.args[1] && needHelp) { telemetry2.trackCliFlagHelp("promote"); output_manager_default.print(help(promoteCommand, { columns: client2.stderr.columns })); return 2; } const yes = parsedArgs.flags["--yes"] ?? false; telemetry2.trackCliFlagYes(parsedArgs.flags["--yes"]); const timeout = parsedArgs.flags["--timeout"]; if (timeout && (0, import_ms27.default)(timeout) === void 0) { output_manager_default.error(`Invalid timeout "${timeout}"`); return 1; } telemetry2.trackCliOptionTimeout(parsedArgs.flags["--timeout"]); const actionOrDeployId = parsedArgs.args[1] || "status"; try { if (actionOrDeployId === "status") { if (needHelp) { telemetry2.trackCliFlagHelp("promote", "status"); output_manager_default.print( help(statusSubcommand2, { columns: client2.stderr.columns, parent: promoteCommand }) ); return 2; } telemetry2.trackCliSubcommandStatus(); const project = await getProjectByCwdOrLink({ autoConfirm: parsedArgs.flags["--yes"], client: client2, commandName: "promote", projectNameOrId: parsedArgs.args[2] }); return await promoteStatus({ client: client2, project, timeout }); } telemetry2.trackCliArgumentUrlOrDeploymentId(actionOrDeployId); return await requestPromote({ client: client2, deployId: actionOrDeployId, timeout, yes }); } catch (err) { if ((0, import_error_utils33.isErrnoException)(err)) { if (err.code === "ERR_CANCELED") { return 0; } if (err.code === "ERR_INVALID_CWD" || err.code === "ERR_LINK_PROJECT") { return 1; } } output_manager_default.prettyError(err); return 1; } }; } }); // src/util/deploy/get-deployment-by-id-or-url.ts async function getDeploymentByIdOrURL({ client: client2, contextName, deployIdOrUrl }) { const { config: config2 } = client2; if (!isValidName(deployIdOrUrl)) { throw new Error( `The provided argument "${deployIdOrUrl}" is not a valid deployment ID or URL` ); } let deployment; let team; try { output_manager_default.spinner( `Fetching deployment "${deployIdOrUrl}" in ${import_chalk127.default.bold(contextName)}\u2026` ); const [teamResult, deploymentResult] = await Promise.allSettled([ config2.currentTeam ? getTeamById(client2, config2.currentTeam) : void 0, getDeployment(client2, contextName, deployIdOrUrl) ]); if (teamResult.status === "rejected") { throw new Error( `Failed to retrieve team information: ${teamResult.reason}` ); } if (deploymentResult.status === "rejected") { throw new Error(deploymentResult.reason.message); } team = teamResult.value; deployment = deploymentResult.value; output_manager_default.log( `Fetching deployment "${deployIdOrUrl}" in ${import_chalk127.default.bold(contextName)}\u2026` ); } finally { output_manager_default.stopSpinner(); } if (deployment.team?.id) { if (!team || deployment.team.id !== team.id) { const err = new Error( team ? `Deployment doesn't belong to current team ${import_chalk127.default.bold( contextName )}` : `Deployment belongs to a different team` ); err.code = "ERR_INVALID_TEAM"; throw err; } } else if (team) { const err = new Error( `Deployment doesn't belong to current team ${import_chalk127.default.bold(contextName)}` ); err.code = "ERR_INVALID_TEAM"; throw err; } return deployment; } var import_chalk127; var init_get_deployment_by_id_or_url = __esm({ "src/util/deploy/get-deployment-by-id-or-url.ts"() { "use strict"; import_chalk127 = __toESM3(require_source(), 1); init_get_deployment(); init_get_team_by_id(); init_is_valid_name(); init_output_manager(); } }); // src/util/telemetry/commands/redeploy/index.ts var RedeployTelemetryClient; var init_redeploy = __esm({ "src/util/telemetry/commands/redeploy/index.ts"() { "use strict"; init_telemetry(); RedeployTelemetryClient = class extends TelemetryClient { trackCliArgumentUrlOrDeploymentId(value) { if (value) { this.trackCliArgument({ arg: "urlOrDeploymentId", value: this.redactedValue }); } } trackCliFlagNoWait(noWait) { if (noWait) { this.trackCliFlag("no-wait"); } } trackCliOptionTarget(target) { if (target) { this.trackCliArgument({ arg: "target", value: this.redactedTargetName(target) }); } } }; } }); // src/commands/redeploy/index.ts var redeploy_exports = {}; __export3(redeploy_exports, { default: () => redeploy }); async function redeploy(client2) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(redeployCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } const telemetry2 = new RedeployTelemetryClient({ opts: { store: client2.telemetryEventStore } }); if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("redeploy"); output_manager_default.print(help(redeployCommand, { columns: client2.stderr.columns })); return 2; } const deployIdOrUrl = parsedArgs.args[1]; if (!deployIdOrUrl) { output_manager_default.error( `Missing required deployment id or url: ${getCommandName( `redeploy ` )}` ); return 1; } telemetry2.trackCliArgumentUrlOrDeploymentId(deployIdOrUrl); telemetry2.trackCliFlagNoWait(parsedArgs.flags["--no-wait"]); telemetry2.trackCliOptionTarget(parsedArgs.flags["--target"]); const { contextName } = await getScope(client2); const noWait = !!parsedArgs.flags["--no-wait"]; const targetArgument = parsedArgs.flags["--target"]; try { const fromDeployment = await getDeploymentByIdOrURL({ client: client2, contextName, deployIdOrUrl }); let target; let customEnvironmentSlugOrId; if (!targetArgument) { target = fromDeployment.target ?? void 0; customEnvironmentSlugOrId = fromDeployment.customEnvironment?.id; } else if (targetArgument === "staging" || targetArgument === "production") { target = targetArgument; } else if (targetArgument === "preview") { target = void 0; } else if (targetArgument) { customEnvironmentSlugOrId = targetArgument; target = void 0; } else { target = fromDeployment.target; } let customEnvironment; if (fromDeployment?.projectId && customEnvironmentSlugOrId) { const customEnvironments = await getCustomEnvironments( client2, fromDeployment.projectId ); customEnvironment = pickCustomEnvironment( customEnvironments, customEnvironmentSlugOrId ); } if (customEnvironmentSlugOrId && !customEnvironment) { output_manager_default.error( `The provided argument "${targetArgument}" is not a valid target environment.` ); return 1; } const deployStamp = stamp_default(); output_manager_default.spinner(`Redeploying project ${fromDeployment.id}`, 0); let deployment = await client2.fetch(`/v13/deployments?forceNew=1`, { body: { deploymentId: fromDeployment.id, meta: { action: "redeploy" }, name: fromDeployment.name, target, customEnvironmentSlugOrId }, method: "POST" }); output_manager_default.stopSpinner(); const previewUrl = `https://${deployment.url}`; let isProdDeployment = target === "production"; if (customEnvironmentSlugOrId && customEnvironment) { isProdDeployment = customEnvironment.type === "production"; } output_manager_default.print( `${prependEmoji( `Inspect: ${import_chalk128.default.bold(deployment.inspectorUrl)} ${deployStamp()}`, emoji("inspect") )} ` ); output_manager_default.print( prependEmoji( `${isProdDeployment ? "Production" : "Preview"}: ${import_chalk128.default.bold( previewUrl )} ${deployStamp()}`, emoji("success") ) + ` ` ); if (!client2.stdout.isTTY) { client2.stdout.write(`https://${deployment.url}`); } if (!noWait) { output_manager_default.spinner( deployment.readyState === "QUEUED" ? "Queued" : "Building", 0 ); let project; let rollingRelease2; if (deployment.projectId && deployment.projectId != "") { project = await getProjectByNameOrId(client2, deployment.projectId); rollingRelease2 = project?.rollingRelease; } if (deployment.readyState === "READY" && deployment.aliasAssigned && !rollingRelease2) { output_manager_default.spinner("Completing", 0); } else { try { const clientOptions = { agent: client2.agent, apiUrl: client2.apiUrl, debug: output_manager_default.debugEnabled, path: "", // unused by checkDeploymentStatus() teamId: fromDeployment.team?.id, token: client2.authConfig.token, userAgent: ua_default }; for await (const event of (0, import_client13.checkDeploymentStatus)( deployment, clientOptions )) { if (event.type === "building") { output_manager_default.spinner("Building", 0); } else if (event.type === "ready" && rollingRelease2) { output_manager_default.spinner("Releasing", 0); output_manager_default.stopSpinner(); deployment = event.payload; break; } else if (event.type === "ready" && (event.payload.checksState ? event.payload.checksState === "completed" : true)) { output_manager_default.spinner("Completing", 0); } else if (event.type === "checks-running") { output_manager_default.spinner("Running Checks", 0); } else if (event.type === "alias-assigned" || event.type === "checks-conclusion-failed") { output_manager_default.stopSpinner(); if (event.type === "alias-assigned" && !Array.isArray(event.payload) && event.payload.target === "production" && event.payload.alias && event.payload.alias.length > 0) { const primaryDomain = event.payload.alias[0]; const prodUrl = `https://${primaryDomain}`; output_manager_default.print( prependEmoji( `Aliased: ${import_chalk128.default.bold(prodUrl)} ${deployStamp()}`, emoji("link") ) + "\n" ); } deployment = event.payload; break; } else if (event.type === "canceled") { output_manager_default.stopSpinner(); output_manager_default.print("The deployment has been canceled.\n"); return 1; } else if (event.type === "error") { output_manager_default.stopSpinner(); const now = new Now({ client: client2, currentTeam: fromDeployment.team?.id }); const error3 = await now.handleDeploymentError(event.payload, { env: {} }); throw error3; } } } catch (err) { output_manager_default.prettyError(err); process.exit(1); } } } return printDeploymentStatus(deployment, deployStamp, noWait, false); } catch (err) { output_manager_default.prettyError(err); if ((0, import_error_utils34.isErrnoException)(err) && err.code === "ERR_INVALID_TEAM") { output_manager_default.error( `Use ${import_chalk128.default.bold("vc switch")} to change your current team` ); } return 1; } } var import_chalk128, import_client13, import_error_utils34; var init_redeploy2 = __esm({ "src/commands/redeploy/index.ts"() { "use strict"; import_chalk128 = __toESM3(require_source(), 1); import_client13 = __toESM3(require_dist7(), 1); init_emoji(); init_get_args(); init_pkg_name(); init_get_deployment_by_id_or_url(); init_get_scope(); init_error2(); import_error_utils34 = __toESM3(require_dist2(), 1); init_util(); init_print_deployment_status(); init_stamp(); init_ua(); init_help(); init_command33(); init_get_flags_specification(); init_output_manager(); init_redeploy(); init_get_custom_environments(); init_get_project_by_id_or_name(); } }); // src/commands/redirects/shared.ts async function parseSubcommandArgs(argv, command) { let parsedArgs; const flagsSpecification = getFlagsSpecification(command.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (err) { printError(err); return 1; } return parsedArgs; } function validateRequiredArgs(args2, required) { for (let i = 0; i < required.length; i++) { if (!args2[i]) { return `Missing required argument: ${required[i]}`; } } return null; } async function ensureProjectLink(client2) { const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } else if (link4.status === "not_linked") { output_manager_default.error( `Your codebase isn't linked to a project on Vercel. Run ${getCommandName("link")} to begin.` ); return 1; } client2.config.currentTeam = link4.org.type === "team" ? link4.org.id : void 0; return link4; } async function confirmAction(client2, skipConfirmation, message2, details) { if (skipConfirmation) return true; if (details) { output_manager_default.print(` ${details} `); } return await client2.input.confirm(message2, false); } function isValidUrl(url3) { if (url3.startsWith("/")) { return true; } try { const parsed = new URL(url3); return parsed.protocol === "http:" || parsed.protocol === "https:"; } catch { return false; } } var init_shared2 = __esm({ "src/commands/redirects/shared.ts"() { "use strict"; init_get_args(); init_get_flags_specification(); init_error2(); init_link2(); init_pkg_name(); init_output_manager(); } }); // src/util/redirects/get-redirects.ts async function getRedirects(client2, projectId, options = {}) { const { teamId, search, page, perPage = 50, versionId, diff } = options; const params2 = new URLSearchParams(); params2.set("projectId", projectId); if (teamId) { params2.set("teamId", teamId); } if (versionId) { params2.set("versionId", versionId); } if (diff) { params2.set("diff", diff === true ? "true" : diff); } else { params2.set("per_page", perPage.toString()); if (search) { params2.set("q", search); } if (page) { params2.set("page", page.toString()); } } const url3 = `/v1/bulk-redirects?${params2}`; return await client2.fetch(url3); } var init_get_redirects = __esm({ "src/util/redirects/get-redirects.ts"() { "use strict"; } }); // src/util/redirects/get-redirect-versions.ts async function getRedirectVersions(client2, projectId, teamId) { const params2 = new URLSearchParams(); params2.set("projectId", projectId); if (teamId) { params2.set("teamId", teamId); } const url3 = `/v1/bulk-redirects/versions?${params2}`; return await client2.fetch(url3); } var init_get_redirect_versions = __esm({ "src/util/redirects/get-redirect-versions.ts"() { "use strict"; } }); // src/commands/redirects/list.ts async function list7(client2, argv) { const parsed = await parseSubcommandArgs(argv, listSubcommand9); if (typeof parsed === "number") return parsed; const link4 = await ensureProjectLink(client2); if (typeof link4 === "number") return link4; const { project, org } = link4; const { flags } = parsed; const teamId = org.type === "team" ? org.id : void 0; const search = flags["--search"]; const page = flags["--page"]; const perPage = flags["--per-page"]; const staging = flags["--staging"]; const versionIdFlag = flags["--version"]; let versionId; let versionName; let useDiff = false; if (staging) { output_manager_default.spinner("Fetching staging version"); const { versions } = await getRedirectVersions(client2, project.id, teamId); const stagingVersion = versions.find((v) => v.isStaging); if (!stagingVersion) { output_manager_default.error( `No staging version found for ${import_chalk129.default.bold(project.name)}. Run ${import_chalk129.default.cyan( "vercel redirects list-versions" )} to see available versions.` ); return 1; } versionId = stagingVersion.id; versionName = stagingVersion.name || stagingVersion.id; if (!search && !page) { useDiff = true; } } if (versionIdFlag) { if (staging) { output_manager_default.error("Cannot use both --staging and --version flags together"); return 1; } output_manager_default.spinner("Fetching version"); const { versions } = await getRedirectVersions(client2, project.id, teamId); const version2 = versions.find( (v) => v.id === versionIdFlag || v.name === versionIdFlag ); if (!version2) { output_manager_default.error( `Version "${versionIdFlag}" not found. Run ${import_chalk129.default.cyan( "vercel redirects list-versions" )} to see available versions.` ); return 1; } versionId = version2.id; versionName = version2.name || version2.id; } const lsStamp = stamp_default(); let spinnerMessage = `Fetching redirects for ${import_chalk129.default.bold(project.name)}`; if (versionName) { spinnerMessage += ` (version: ${versionName})`; } if (search) { spinnerMessage += ` matching "${search}"`; } output_manager_default.spinner(spinnerMessage); const { redirects, pagination } = await getRedirects(client2, project.id, { teamId, search, page, perPage, versionId, diff: useDiff }); if (useDiff) { const added = redirects.filter((r) => r.action === "+"); const removed = redirects.filter((r) => r.action === "-"); const unchanged = redirects.filter((r) => !r.action); output_manager_default.log( `Changes in staging version ${import_chalk129.default.bold(versionName || "")} ${import_chalk129.default.gray(lsStamp())}` ); if (added.length === 0 && removed.length === 0) { output_manager_default.log("\n No changes from production version\n"); } else { if (added.length > 0) { output_manager_default.print(` ${import_chalk129.default.bold(import_chalk129.default.green(`Added (${added.length}):`))} `); output_manager_default.print(formatRedirectsTable(added, "+")); } if (removed.length > 0) { output_manager_default.print(` ${import_chalk129.default.bold(import_chalk129.default.red(`Removed (${removed.length}):`))} `); output_manager_default.print(formatRedirectsTable(removed, "-")); } if (unchanged.length > 0) { output_manager_default.print( ` ${import_chalk129.default.gray(`${unchanged.length} redirect${unchanged.length === 1 ? "" : "s"} unchanged`)} ` ); } output_manager_default.print("\n"); } } else { let resultMessage = `${(0, import_pluralize13.default)("Redirect", redirects.length, true)} found for ${import_chalk129.default.bold( project.name )}`; if (versionName) { resultMessage += ` ${import_chalk129.default.gray(`(version: ${versionName})`)}`; } if (search) { resultMessage += ` matching "${search}"`; } if (pagination) { resultMessage += ` ${import_chalk129.default.gray(`(page ${pagination.page} of ${pagination.numPages})`)}`; } resultMessage += ` ${import_chalk129.default.gray(lsStamp())}`; output_manager_default.log(resultMessage); if (redirects.length > 0) { output_manager_default.print(formatRedirectsTable(redirects)); output_manager_default.print("\n"); } } if (pagination && pagination.page < pagination.numPages) { const nextPage = pagination.page + 1; let command = `redirects list --page ${nextPage}`; if (search) { command += ` --search "${search}"`; } if (perPage) { command += ` --per-page ${perPage}`; } output_manager_default.log(`To display the next page, run ${getCommandName(command)}`); } return 0; } function formatRedirectsTable(redirects, actionSymbol) { const rows = redirects.map((redirect2) => { const status3 = redirect2.statusCode || (redirect2.permanent ? 308 : 307); const prefix = actionSymbol || ""; const colorFn = actionSymbol === "+" ? import_chalk129.default.green : actionSymbol === "-" ? import_chalk129.default.red : (s) => s; return [ colorFn(`${prefix} ${redirect2.source}`), colorFn(`${redirect2.destination}`), colorFn(status3.toString()) ]; }); return formatTable( ["Source", "Destination", "Status"], ["l", "l", "l"], [{ rows }] ); } var import_chalk129, import_pluralize13; var init_list11 = __esm({ "src/commands/redirects/list.ts"() { "use strict"; import_chalk129 = __toESM3(require_source(), 1); import_pluralize13 = __toESM3(require_pluralize(), 1); init_output_manager(); init_command34(); init_shared2(); init_get_redirects(); init_get_redirect_versions(); init_stamp(); init_format_table(); init_pkg_name(); } }); // src/commands/redirects/list-versions.ts async function listVersions(client2, argv) { const parsed = await parseSubcommandArgs(argv, listVersionsSubcommand); if (typeof parsed === "number") return parsed; const link4 = await ensureProjectLink(client2); if (typeof link4 === "number") return link4; const { project, org } = link4; const teamId = org.type === "team" ? org.id : void 0; const lsStamp = stamp_default(); output_manager_default.spinner(`Fetching redirect versions for ${import_chalk130.default.bold(project.name)}`); const { versions } = await getRedirectVersions(client2, project.id, teamId); const sortedVersions = sortVersions(versions).slice(0, 20); output_manager_default.log( `${(0, import_pluralize14.default)("Version", sortedVersions.length, true)} found for ${import_chalk130.default.bold( project.name )} ${import_chalk130.default.gray(lsStamp())}` ); if (sortedVersions.length > 0) { output_manager_default.print(formatVersionsTable(sortedVersions)); output_manager_default.print("\n"); } return 0; } function sortVersions(versions) { return versions.slice().sort((a, b) => { if (a.isStaging && !b.isStaging) return -1; if (!a.isStaging && b.isStaging) return 1; if (a.isLive && !b.isLive) return -1; if (!a.isLive && b.isLive) return 1; return b.lastModified - a.lastModified; }); } function formatVersionsTable(versions) { const now = Date.now(); const rows = versions.map((version2) => { const age = (0, import_ms28.default)(now - version2.lastModified); let status3 = ""; if (version2.isStaging) { status3 = import_chalk130.default.yellow("Staging"); } else if (version2.isLive) { status3 = import_chalk130.default.green("Live"); } else { status3 = import_chalk130.default.gray("Previous"); } const name = version2.name || import_chalk130.default.gray("(unnamed)"); const redirectCountStr = version2.redirectCount !== void 0 && version2.redirectCount !== null ? version2.redirectCount.toString() : import_chalk130.default.gray("-"); return [ status3, name, version2.id, redirectCountStr, version2.createdBy || import_chalk130.default.gray("(unknown)"), import_chalk130.default.gray(age + " ago") ]; }); return formatTable( ["Status", "Name", "ID", "Redirects", "Created By", "Age"], ["l", "l", "l", "r", "l", "l"], [{ rows }] ); } var import_chalk130, import_ms28, import_pluralize14; var init_list_versions = __esm({ "src/commands/redirects/list-versions.ts"() { "use strict"; import_chalk130 = __toESM3(require_source(), 1); import_ms28 = __toESM3(require_ms(), 1); import_pluralize14 = __toESM3(require_pluralize(), 1); init_output_manager(); init_command34(); init_shared2(); init_get_redirect_versions(); init_stamp(); init_format_table(); } }); // src/util/redirects/put-redirects.ts async function putRedirects(client2, projectId, redirects, teamId, name) { const url3 = `/v1/bulk-redirects`; const body = { projectId, redirects }; if (teamId) { body.teamId = teamId; } if (name) { body.name = name; } return await client2.fetch(url3, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body) }); } var init_put_redirects = __esm({ "src/util/redirects/put-redirects.ts"() { "use strict"; } }); // src/util/redirects/update-redirect-version.ts async function updateRedirectVersion(client2, projectId, versionId, action, teamId) { const params2 = new URLSearchParams(); params2.set("projectId", projectId); if (teamId) { params2.set("teamId", teamId); } const url3 = `/v1/bulk-redirects/versions?${params2}`; return await client2.fetch(url3, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id: versionId, action }) }); } var init_update_redirect_version = __esm({ "src/util/redirects/update-redirect-version.ts"() { "use strict"; } }); // src/commands/redirects/add.ts async function add7(client2, argv) { const parsed = await parseSubcommandArgs(argv, addSubcommand7); if (typeof parsed === "number") return parsed; const link4 = await ensureProjectLink(client2); if (typeof link4 === "number") return link4; const { project, org } = link4; const teamId = org.type === "team" ? org.id : void 0; const { versions } = await getRedirectVersions(client2, project.id, teamId); const existingStagingVersion = versions.find((v) => v.isStaging); const { args: args2, flags } = parsed; const skipPrompts = flags["--yes"]; let source; if (args2[0]) { source = args2[0]; if (!isValidUrl(source)) { output_manager_default.error( "Source must be a relative path (starting with /) or an absolute URL" ); return 1; } } else { if (skipPrompts) { output_manager_default.error( "Source and destination are required when using --yes. Use: vercel redirects add --yes" ); return 1; } output_manager_default.log("Add a new redirect\n"); source = await client2.input.text({ message: "What is the source URL?", validate: (val) => { if (!val) { return "Source URL cannot be empty"; } if (!isValidUrl(val)) { return "Must be a relative path (starting with /) or an absolute URL"; } return true; } }); } let destination; if (args2[1]) { destination = args2[1]; if (!isValidUrl(destination)) { output_manager_default.error( "Destination must be a relative path (starting with /) or an absolute URL" ); return 1; } } else { if (skipPrompts) { output_manager_default.error( "Source and destination are required when using --yes. Use: vercel redirects add --yes" ); return 1; } if (!args2[0]) { output_manager_default.log("Add a new redirect\n"); } destination = await client2.input.text({ message: "What is the destination URL?", validate: (val) => { if (!val) { return "Destination URL cannot be empty"; } if (!isValidUrl(val)) { return "Must be a relative path (starting with /) or an absolute URL"; } return true; } }); } let statusCode; if (flags["--status"]) { statusCode = flags["--status"]; if (![301, 302, 307, 308].includes(statusCode)) { output_manager_default.error("Status code must be 301, 302, 307, or 308"); return 1; } } else if (skipPrompts) { statusCode = 307; } else { statusCode = await client2.input.select({ message: "Select the status code:", choices: [ { name: "307 - Temporary Redirect (preserves request method)", value: 307 }, { name: "308 - Permanent Redirect (preserves request method)", value: 308 }, { name: "301 - Moved Permanently (cached by browsers)", value: 301 }, { name: "302 - Found (temporary redirect, not cached)", value: 302 } ] }); } let caseSensitive; if (flags["--case-sensitive"] !== void 0) { caseSensitive = flags["--case-sensitive"]; } else if (skipPrompts) { caseSensitive = false; } else { caseSensitive = await client2.input.confirm( "Should the redirect be case sensitive?", false ); } let preserveQueryParams; if (flags["--preserve-query-params"] !== void 0) { preserveQueryParams = flags["--preserve-query-params"]; } else if (skipPrompts) { preserveQueryParams = false; } else { preserveQueryParams = await client2.input.confirm( "Should query parameters be preserved?", false ); } let versionName; if (flags["--name"]) { versionName = flags["--name"]; if (versionName && versionName.length > 256) { output_manager_default.error("Name must be 256 characters or less"); return 1; } } else if (skipPrompts) { versionName = void 0; } else { const provideName = await client2.input.confirm( "Do you want to provide a name for this version?", false ); if (provideName) { versionName = await client2.input.text({ message: "Version name (max 256 characters):", validate: (val) => { if (val && val.length > 256) { return "Name must be 256 characters or less"; } return true; } }); if (!versionName) { versionName = void 0; } } } const addStamp = stamp_default(); output_manager_default.spinner("Adding redirect"); const { alias: alias2, version: version2 } = await putRedirects( client2, project.id, [ { source, destination, statusCode, caseSensitive, preserveQueryParams } ], teamId, versionName ); output_manager_default.log(`${import_chalk131.default.cyan("\u2713")} Redirect added ${import_chalk131.default.gray(addStamp())}`); output_manager_default.print(` ${import_chalk131.default.bold("Redirect:")} `); output_manager_default.print(` ${import_chalk131.default.cyan(source)} \u2192 ${import_chalk131.default.cyan(destination)} `); output_manager_default.print(` Status: ${statusCode} `); output_manager_default.print(` Case sensitive: ${caseSensitive ? "Yes" : "No"} `); output_manager_default.print( ` Preserve query params: ${preserveQueryParams ? "Yes" : "No"} ` ); if (alias2) { const testUrl = source.startsWith("/") ? `https://${alias2}${source}` : `https://${alias2}`; output_manager_default.print( ` ${import_chalk131.default.bold("Test your changes:")} ${import_chalk131.default.cyan(testUrl)} ` ); } const newVersionName = version2.name || version2.id; output_manager_default.print(` ${import_chalk131.default.bold("New staging version:")} ${newVersionName} `); if (!existingStagingVersion) { const shouldPromote = await client2.input.confirm( "This is the only staged change. Do you want to promote it to production now?", false ); if (shouldPromote) { const promoteStamp = stamp_default(); output_manager_default.spinner("Promoting to production"); await updateRedirectVersion( client2, project.id, version2.id, "promote", teamId ); output_manager_default.log( `${import_chalk131.default.cyan("\u2713")} Version promoted to production ${import_chalk131.default.gray(promoteStamp())}` ); } } else { output_manager_default.warn( `There are other staged changes. Please review all changes with ${import_chalk131.default.cyan("vercel redirects list --staging")} before promoting to production.` ); } return 0; } var import_chalk131; var init_add13 = __esm({ "src/commands/redirects/add.ts"() { "use strict"; import_chalk131 = __toESM3(require_source(), 1); init_output_manager(); init_command34(); init_shared2(); init_put_redirects(); init_update_redirect_version(); init_get_redirect_versions(); init_stamp(); } }); // src/commands/redirects/validate-redirects.ts import { statSync as statSync2 } from "fs"; function validateUploadFile(filePath, options = {}) { const maxSize = options.maxFileSize ?? MAX_FILE_SIZE; const allowedExts = options.allowedExtensions ?? ALLOWED_EXTENSIONS; try { const stats = statSync2(filePath); if (!stats.isFile()) { return { valid: false, error: `Path "${filePath}" is not a file` }; } if (stats.size > maxSize) { const sizeMB = Math.round(maxSize / (1024 * 1024)); return { valid: false, error: `File must be below ${sizeMB}MB` }; } const hasValidExtension = allowedExts.some( (ext) => filePath.toLowerCase().endsWith(ext) ); if (!hasValidExtension) { return { valid: false, error: `File must be a .csv or .json file` }; } return { valid: true }; } catch (err) { if (err.code === "ENOENT") { return { valid: false, error: `File "${filePath}" not found` }; } return { valid: false, error: `Error accessing file: ${err.message}` }; } } function validateRedirect(redirect2) { if (!redirect2.source) { return { valid: false, error: "Redirect source is required" }; } if (redirect2.source.length > MAX_URL_LENGTH) { return { valid: false, error: "Source URL is too long" }; } if (!redirect2.source.startsWith("/")) { return { valid: false, error: "Source must be a relative path" }; } if (!redirect2.destination) { return { valid: false, error: "Redirect destination is required" }; } if (redirect2.destination.length > MAX_URL_LENGTH) { return { valid: false, error: "Destination URL is too long" }; } try { new URL(redirect2.destination, "https://vercel.com"); } catch { return { valid: false, error: "Destination must be a valid URL" }; } if (redirect2.statusCode) { if (!VALID_STATUS_CODES.includes(redirect2.statusCode)) { return { valid: false, error: `Invalid status code. Must be one of: ${VALID_STATUS_CODES.join(", ")}` }; } } return { valid: true }; } function validateRedirectsArray(redirects) { if (!Array.isArray(redirects)) { return { valid: false, error: "JSON file must contain an array of redirects" }; } if (redirects.length === 0) { return { valid: false, error: "No redirects provided" }; } if (redirects.length > MAX_REDIRECTS) { return { valid: false, error: `Too many redirects. Maximum allowed: ${MAX_REDIRECTS}` }; } for (let i = 0; i < redirects.length; i++) { const result = validateRedirect(redirects[i]); if (!result.valid) { return { valid: false, error: `Redirect ${i + 1}: ${result.error}` }; } } return { valid: true }; } function validateCSVStructure(content) { const lines3 = content.trim().split("\n"); if (lines3.length < 2) { return { valid: false, error: "CSV must have a header and at least one redirect" }; } const header = lines3[0].toLowerCase(); const hasSource = header.includes("source"); const hasDestination = header.includes("destination"); if (!hasSource || !hasDestination) { return { valid: false, error: 'CSV must have "source" and "destination" columns' }; } return { valid: true }; } function validateVersionName(name) { if (!name) { return { valid: false, error: "Name is required" }; } if (name.length > 256) { return { valid: false, error: "Name must be 256 characters or less" }; } return { valid: true }; } var MAX_FILE_SIZE, ALLOWED_EXTENSIONS, MAX_REDIRECTS, MAX_URL_LENGTH, VALID_STATUS_CODES; var init_validate_redirects = __esm({ "src/commands/redirects/validate-redirects.ts"() { "use strict"; MAX_FILE_SIZE = 50 * 1024 * 1024; ALLOWED_EXTENSIONS = [".csv", ".json"]; MAX_REDIRECTS = 1e6; MAX_URL_LENGTH = 2048; VALID_STATUS_CODES = [301, 302, 303, 307, 308]; } }); // src/commands/redirects/upload.ts import { readFileSync as readFileSync3 } from "fs"; import { basename as basename10 } from "path"; import FormData from "form-data"; async function upload(client2, argv) { const parsed = await parseSubcommandArgs(argv, uploadSubcommand); if (typeof parsed === "number") return parsed; const link4 = await ensureProjectLink(client2); if (typeof link4 === "number") return link4; const { project, org } = link4; const teamId = org.type === "team" ? org.id : void 0; const { args: args2, flags } = parsed; const skipPrompts = flags["--yes"]; const overwrite = flags["--overwrite"] || false; const filePath = args2[0]; if (!filePath) { output_manager_default.error("File path is required. Use: vercel redirects upload "); return 1; } const fileValidation = validateUploadFile(filePath); if (!fileValidation.valid) { output_manager_default.error(fileValidation.error); return 1; } const { versions } = await getRedirectVersions(client2, project.id, teamId); const existingStagingVersion = versions.find((v) => v.isStaging); if (!skipPrompts) { const fileName = basename10(filePath); const fileType = filePath.endsWith(".csv") ? "CSV" : "JSON"; const message2 = overwrite ? `Upload ${fileType} file "${fileName}" and replace all existing redirects?` : `Upload ${fileType} file "${fileName}"?`; const confirmed = await client2.input.confirm(message2, true); if (!confirmed) { output_manager_default.log("Upload cancelled"); return 0; } } let versionName; if (!skipPrompts) { const provideName = await client2.input.confirm( "Do you want to provide a name for this version?", false ); if (provideName) { versionName = await client2.input.text({ message: "Version name (max 256 characters):", validate: (val) => { if (val && val.length > 256) { return "Name must be 256 characters or less"; } return true; } }); const { valid, error: error3 } = validateVersionName(versionName); if (!valid) { output_manager_default.error(error3); return 1; } } } const uploadStamp = stamp_default(); output_manager_default.spinner("Uploading redirects"); try { let result; const url3 = "/v1/bulk-redirects"; if (filePath.endsWith(".csv")) { const csvContent = readFileSync3(filePath); const fileName = basename10(filePath); const csvValidation = validateCSVStructure(csvContent.toString()); if (!csvValidation.valid) { output_manager_default.error(`Invalid CSV: ${csvValidation.error}`); return 1; } const form = new FormData(); form.append("teamId", teamId || org.id); form.append("projectId", project.id); form.append("overwrite", String(overwrite)); if (versionName) { form.append("name", versionName); } form.append("bulkRedirectsFile", csvContent, { filename: fileName, contentType: "text/csv" }); result = await client2.fetch(url3, { method: "PUT", headers: form.getHeaders(), body: form }); } else { const content = readFileSync3(filePath, "utf8"); let redirects2; try { redirects2 = JSON.parse(content); } catch (err) { output_manager_default.error("Invalid JSON file format"); return 1; } const redirectsValidation = validateRedirectsArray(redirects2); if (!redirectsValidation.valid) { output_manager_default.error(redirectsValidation.error); return 1; } const body = { projectId: project.id, redirects: redirects2, overwrite }; if (teamId) { body.teamId = teamId; } if (versionName) { body.versionName = versionName; } result = await client2.fetch(url3, { method: "PUT", body }); } output_manager_default.log( `${import_chalk132.default.cyan("\u2713")} Redirects uploaded ${import_chalk132.default.gray(uploadStamp())}` ); output_manager_default.spinner("Fetching diff"); const { redirects } = await getRedirects(client2, project.id, { teamId, versionId: result.version.id, diff: "only" }); const redirectCount = redirects.length; output_manager_default.print(` ${import_chalk132.default.bold("Summary:")} `); output_manager_default.print( ` Uploaded ${redirectCount} redirect${redirectCount === 1 ? "" : "s"} ` ); if (redirectCount > 0) { const added = redirects.filter((r) => r.action === "+"); const deleted = redirects.filter((r) => r.action === "-"); const edited = redirects.filter((r) => r.action === "~"); output_manager_default.print(` ${import_chalk132.default.bold("Changes:")} `); if (added.length > 0) { output_manager_default.print(` ${import_chalk132.default.green(`Added: ${added.length}`)} `); } if (deleted.length > 0) { output_manager_default.print(` ${import_chalk132.default.red(`Deleted: ${deleted.length}`)} `); } if (edited.length > 0) { output_manager_default.print(` ${import_chalk132.default.yellow(`Modified: ${edited.length}`)} `); } output_manager_default.print(` ${import_chalk132.default.bold("Redirect changes:")} `); const displayRedirects = redirects.slice(0, 100); const rows = displayRedirects.map((redirect2) => { const status3 = redirect2.statusCode || (redirect2.permanent ? 308 : 307); const action = redirect2.action || "+"; let colorFn; let actionSymbol; switch (action) { case "+": colorFn = import_chalk132.default.green; actionSymbol = "+"; break; case "-": colorFn = import_chalk132.default.red; actionSymbol = "-"; break; case "~": colorFn = import_chalk132.default.yellow; actionSymbol = "~"; break; default: colorFn = (s) => s; actionSymbol = " "; } return [ colorFn(`${actionSymbol} ${redirect2.source}`), colorFn(redirect2.destination), colorFn(status3.toString()) ]; }); output_manager_default.print( formatTable( ["Source", "Destination", "Status"], ["l", "l", "l"], [{ rows }] ) ); if (redirectCount > 100) { output_manager_default.print( ` ${import_chalk132.default.gray(`... and ${redirectCount - 100} more redirect${redirectCount - 100 === 1 ? "" : "s"}`)} ` ); } } if (result.alias) { const testUrl = `https://${result.alias}`; output_manager_default.print( ` ${import_chalk132.default.bold("Test your changes:")} ${import_chalk132.default.cyan(testUrl)} ` ); } const newVersionName = result.version.name || result.version.id; output_manager_default.print( ` ${import_chalk132.default.bold("New staging version:")} ${newVersionName} ` ); if (existingStagingVersion) { output_manager_default.warn( `There are other staged changes. Please review all changes with ${import_chalk132.default.cyan("vercel redirects list --staging")} before promoting to production.` ); } else if (!skipPrompts) { const shouldPromote = await client2.input.confirm( "This is the only staged change. Do you want to promote it to production now?", false ); if (shouldPromote) { const promoteStamp = stamp_default(); output_manager_default.spinner("Promoting to production"); await updateRedirectVersion( client2, project.id, result.version.id, "promote", teamId ); output_manager_default.log( `${import_chalk132.default.cyan("\u2713")} Version promoted to production ${import_chalk132.default.gray(promoteStamp())}` ); } } return 0; } catch (error3) { output_manager_default.error(`Failed to upload redirects: ${error3.message}`); return 1; } } var import_chalk132; var init_upload = __esm({ "src/commands/redirects/upload.ts"() { "use strict"; import_chalk132 = __toESM3(require_source(), 1); init_output_manager(); init_command34(); init_shared2(); init_stamp(); init_get_redirect_versions(); init_update_redirect_version(); init_get_redirects(); init_format_table(); init_validate_redirects(); } }); // src/util/redirects/delete-redirects.ts async function deleteRedirects(client2, projectId, sources, teamId) { const params2 = new URLSearchParams(); params2.set("projectId", projectId); if (teamId) { params2.set("teamId", teamId); } const url3 = `/v1/bulk-redirects?${params2}`; return await client2.fetch(url3, { method: "DELETE", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ redirects: sources }) }); } var init_delete_redirects = __esm({ "src/util/redirects/delete-redirects.ts"() { "use strict"; } }); // src/commands/redirects/remove.ts async function remove5(client2, argv) { const parsed = await parseSubcommandArgs(argv, removeSubcommand9); if (typeof parsed === "number") return parsed; const error3 = validateRequiredArgs(parsed.args, ["source"]); if (error3) { output_manager_default.error(error3); return 1; } const link4 = await ensureProjectLink(client2); if (typeof link4 === "number") return link4; const { project, org } = link4; const teamId = org.type === "team" ? org.id : void 0; const { versions } = await getRedirectVersions(client2, project.id, teamId); const existingStagingVersion = versions.find((v) => v.isStaging); const [source] = parsed.args; output_manager_default.spinner("Fetching redirect information"); const { redirects } = await getRedirects(client2, project.id, { teamId }); const redirectToRemove = redirects.find((r) => r.source === source); if (!redirectToRemove) { output_manager_default.error( `Redirect with source "${source}" not found. Run ${import_chalk133.default.cyan( "vercel redirects list" )} to see available redirects.` ); return 1; } output_manager_default.print(` ${import_chalk133.default.bold("Removing redirect:")} `); output_manager_default.print( ` ${import_chalk133.default.cyan(redirectToRemove.source)} \u2192 ${import_chalk133.default.cyan(redirectToRemove.destination)} ` ); const status3 = redirectToRemove.statusCode || (redirectToRemove.permanent ? 308 : 307); output_manager_default.print(` Status: ${status3} `); const confirmed = await confirmAction( client2, parsed.flags["--yes"], `Remove this redirect?`, `This will create a new staging version without this redirect.` ); if (!confirmed) { output_manager_default.log("Canceled"); return 0; } const removeStamp = stamp_default(); output_manager_default.spinner(`Removing redirect for ${import_chalk133.default.bold(source)}`); const { alias: alias2, version: version2 } = await deleteRedirects( client2, project.id, [source], teamId ); output_manager_default.log( `${import_chalk133.default.cyan("\u2713")} Redirect removed ${import_chalk133.default.gray(removeStamp())}` ); if (alias2) { const testUrl = source.startsWith("/") ? `https://${alias2}${source}` : `https://${alias2}`; output_manager_default.print( ` ${import_chalk133.default.bold("Test your changes:")} ${import_chalk133.default.cyan(testUrl)} ` ); output_manager_default.print( ` This URL should no longer redirect to the above destination. ` ); } const versionName = version2.name || version2.id; output_manager_default.print(` ${import_chalk133.default.bold("New staging version:")} ${versionName} `); if (!existingStagingVersion) { const shouldPromote = await client2.input.confirm( "This is the only staged change. Do you want to promote it to production now?", false ); if (shouldPromote) { const promoteStamp = stamp_default(); output_manager_default.spinner("Promoting to production"); await updateRedirectVersion( client2, project.id, version2.id, "promote", teamId ); output_manager_default.log( `${import_chalk133.default.cyan("\u2713")} Version promoted to production ${import_chalk133.default.gray(promoteStamp())}` ); } } else { output_manager_default.warn( `There are other staged changes. Review them with ${import_chalk133.default.cyan("vercel redirects list --staging")} before promoting to production.` ); } return 0; } var import_chalk133; var init_remove5 = __esm({ "src/commands/redirects/remove.ts"() { "use strict"; import_chalk133 = __toESM3(require_source(), 1); init_output_manager(); init_command34(); init_shared2(); init_delete_redirects(); init_get_redirects(); init_get_redirect_versions(); init_update_redirect_version(); init_stamp(); } }); // src/commands/redirects/promote.ts async function promote(client2, argv) { const parsed = await parseSubcommandArgs(argv, promoteSubcommand); if (typeof parsed === "number") return parsed; const error3 = validateRequiredArgs(parsed.args, ["version-id"]); if (error3) { output_manager_default.error(error3); return 1; } const link4 = await ensureProjectLink(client2); if (typeof link4 === "number") return link4; const { project, org } = link4; const teamId = org.type === "team" ? org.id : void 0; const [versionIdentifier] = parsed.args; output_manager_default.spinner(`Fetching redirect versions for ${import_chalk134.default.bold(project.name)}`); const { versions } = await getRedirectVersions(client2, project.id, teamId); const version2 = versions.find( (v) => v.id === versionIdentifier || v.name === versionIdentifier ); if (!version2) { output_manager_default.error( `Version with ID or name "${versionIdentifier}" not found. Run ${import_chalk134.default.cyan( "vercel redirects list-versions" )} to see available versions.` ); return 1; } if (version2.isLive) { output_manager_default.error( `Version ${import_chalk134.default.bold(version2.name || version2.id)} is already live.` ); return 1; } if (!version2.isStaging) { output_manager_default.error( `Version ${import_chalk134.default.bold( version2.name || version2.id )} is not staged. Only staging versions can be promoted to production. Run ${import_chalk134.default.cyan( "vercel redirects list-versions" )} to see which version is currently staged.` ); return 1; } const versionName = version2.name || version2.id; output_manager_default.spinner("Fetching changes"); const { redirects: diffRedirects } = await getRedirects(client2, project.id, { teamId, versionId: version2.id, diff: true }); const changedRedirects = diffRedirects.filter( (r) => r.action === "+" || r.action === "-" ); if (changedRedirects.length > 0) { output_manager_default.print(` ${import_chalk134.default.bold("Changes to be promoted:")} `); const displayRedirects = changedRedirects.slice(0, 20); for (const redirect2 of displayRedirects) { const status3 = redirect2.statusCode || (redirect2.permanent ? 308 : 307); const symbol = redirect2.action === "+" ? import_chalk134.default.green("+") : import_chalk134.default.red("-"); output_manager_default.print( ` ${symbol} ${redirect2.source} \u2192 ${redirect2.destination} (${status3}) ` ); } if (changedRedirects.length > 20) { output_manager_default.print( import_chalk134.default.gray(` ... and ${changedRedirects.length - 20} more changes `) ); } output_manager_default.print("\n"); } else { output_manager_default.print( ` ${import_chalk134.default.gray("No changes detected from current production version.")} ` ); } const confirmed = await confirmAction( client2, parsed.flags["--yes"], `Promote version ${import_chalk134.default.bold(versionName)} to production?`, `This will make it the live version for ${import_chalk134.default.bold(project.name)}.` ); if (!confirmed) { output_manager_default.log("Canceled"); return 0; } const updateStamp = stamp_default(); output_manager_default.spinner(`Promoting version ${import_chalk134.default.bold(versionName)} to production`); const { version: newVersion } = await updateRedirectVersion( client2, project.id, version2.id, "promote", teamId ); output_manager_default.log( `${import_chalk134.default.cyan("\u2713")} Version ${import_chalk134.default.bold( newVersion.name || newVersion.id )} promoted to production ${import_chalk134.default.gray(updateStamp())}` ); return 0; } var import_chalk134; var init_promote3 = __esm({ "src/commands/redirects/promote.ts"() { "use strict"; import_chalk134 = __toESM3(require_source(), 1); init_output_manager(); init_command34(); init_shared2(); init_get_redirect_versions(); init_update_redirect_version(); init_get_redirects(); init_stamp(); } }); // src/commands/redirects/restore.ts async function restore(client2, argv) { const parsed = await parseSubcommandArgs(argv, restoreSubcommand); if (typeof parsed === "number") return parsed; const error3 = validateRequiredArgs(parsed.args, ["version-id"]); if (error3) { output_manager_default.error(error3); return 1; } const link4 = await ensureProjectLink(client2); if (typeof link4 === "number") return link4; const { project, org } = link4; const teamId = org.type === "team" ? org.id : void 0; const [versionIdentifier] = parsed.args; output_manager_default.spinner(`Fetching redirect versions for ${import_chalk135.default.bold(project.name)}`); const { versions } = await getRedirectVersions(client2, project.id, teamId); const version2 = versions.find( (v) => v.id === versionIdentifier || v.name === versionIdentifier ); if (!version2) { output_manager_default.error( `Version with ID or name "${versionIdentifier}" not found. Run ${import_chalk135.default.cyan( "vercel redirects list-versions" )} to see available versions.` ); return 1; } if (version2.isLive) { output_manager_default.error( `Version ${import_chalk135.default.bold( version2.name || version2.id )} is currently live. You cannot restore the live version. Run ${import_chalk135.default.cyan( "vercel redirects list-versions" )} to see previous versions you can restore.` ); return 1; } if (version2.isStaging) { output_manager_default.error( `Version ${import_chalk135.default.bold( version2.name || version2.id )} is staged. You can only restore previous versions.` ); return 1; } const versionName = version2.name || version2.id; output_manager_default.spinner("Fetching changes"); const { redirects: diffRedirects } = await getRedirects(client2, project.id, { teamId, versionId: version2.id, diff: true }); const changedRedirects = diffRedirects.filter( (r) => r.action === "+" || r.action === "-" ); if (changedRedirects.length > 0) { output_manager_default.print(` ${import_chalk135.default.bold("Changes to be restored:")} `); const displayRedirects = changedRedirects.slice(0, 20); for (const redirect2 of displayRedirects) { const status3 = redirect2.statusCode || (redirect2.permanent ? 308 : 307); const symbol = redirect2.action === "+" ? import_chalk135.default.green("+") : import_chalk135.default.red("-"); output_manager_default.print( ` ${symbol} ${redirect2.source} \u2192 ${redirect2.destination} (${status3}) ` ); } if (changedRedirects.length > 20) { output_manager_default.print( import_chalk135.default.gray(` ... and ${changedRedirects.length - 20} more changes `) ); } output_manager_default.print("\n"); } else { output_manager_default.print( ` ${import_chalk135.default.gray("No changes detected from current production version.")} ` ); } const confirmed = await confirmAction( client2, parsed.flags["--yes"], `Restore version ${import_chalk135.default.bold(versionName)}?`, `This will make it the live version for ${import_chalk135.default.bold(project.name)}.` ); if (!confirmed) { output_manager_default.log("Canceled"); return 0; } const updateStamp = stamp_default(); output_manager_default.spinner(`Restoring version ${import_chalk135.default.bold(versionName)}`); const { version: newVersion } = await updateRedirectVersion( client2, project.id, version2.id, "restore", teamId ); output_manager_default.log( `${import_chalk135.default.cyan("\u2713")} Version ${import_chalk135.default.bold( newVersion.name || newVersion.id )} restored to production ${import_chalk135.default.gray(updateStamp())}` ); return 0; } var import_chalk135; var init_restore = __esm({ "src/commands/redirects/restore.ts"() { "use strict"; import_chalk135 = __toESM3(require_source(), 1); init_output_manager(); init_command34(); init_shared2(); init_get_redirect_versions(); init_update_redirect_version(); init_get_redirects(); init_stamp(); } }); // src/util/telemetry/commands/redirects/index.ts var RedirectsTelemetryClient; var init_redirects = __esm({ "src/util/telemetry/commands/redirects/index.ts"() { "use strict"; init_telemetry(); RedirectsTelemetryClient = class extends TelemetryClient { trackCliSubcommandList(actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } trackCliSubcommandListVersions(actual) { this.trackCliSubcommand({ subcommand: "list-versions", value: actual }); } trackCliSubcommandAdd(actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } trackCliSubcommandUpload(actual) { this.trackCliSubcommand({ subcommand: "upload", value: actual }); } trackCliSubcommandRemove(actual) { this.trackCliSubcommand({ subcommand: "remove", value: actual }); } trackCliSubcommandPromote(actual) { this.trackCliSubcommand({ subcommand: "promote", value: actual }); } trackCliSubcommandRestore(actual) { this.trackCliSubcommand({ subcommand: "restore", value: actual }); } }; } }); // src/commands/redirects/index.ts var redirects_exports = {}; __export3(redirects_exports, { default: () => main16 }); async function main16(client2) { const telemetry2 = new RedirectsTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(redirectsCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (err) { printError(err); return 1; } const subArgs = parsedArgs.args.slice(1); const { subcommand, args: args2, subcommandOriginal } = getSubcommand( subArgs, COMMAND_CONFIG17 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("redirects"); output_manager_default.print(help(redirectsCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: redirectsCommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "list": if (needHelp) { telemetry2.trackCliFlagHelp("redirects", subcommandOriginal); printHelp(listSubcommand9); return 2; } telemetry2.trackCliSubcommandList(subcommandOriginal); return list7(client2, args2); case "list-versions": if (needHelp) { telemetry2.trackCliFlagHelp("redirects", subcommandOriginal); printHelp(listVersionsSubcommand); return 2; } telemetry2.trackCliSubcommandListVersions(subcommandOriginal); return listVersions(client2, args2); case "add": if (needHelp) { telemetry2.trackCliFlagHelp("redirects", subcommandOriginal); printHelp(addSubcommand7); return 2; } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return add7(client2, args2); case "upload": if (needHelp) { telemetry2.trackCliFlagHelp("redirects", subcommandOriginal); printHelp(uploadSubcommand); return 2; } telemetry2.trackCliSubcommandUpload(subcommandOriginal); return upload(client2, args2); case "remove": if (needHelp) { telemetry2.trackCliFlagHelp("redirects", subcommandOriginal); printHelp(removeSubcommand9); return 2; } telemetry2.trackCliSubcommandRemove(subcommandOriginal); return remove5(client2, args2); case "promote": if (needHelp) { telemetry2.trackCliFlagHelp("redirects", subcommandOriginal); printHelp(promoteSubcommand); return 2; } telemetry2.trackCliSubcommandPromote(subcommandOriginal); return promote(client2, args2); case "restore": if (needHelp) { telemetry2.trackCliFlagHelp("redirects", subcommandOriginal); printHelp(restoreSubcommand); return 2; } telemetry2.trackCliSubcommandRestore(subcommandOriginal); return restore(client2, args2); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG17)); output_manager_default.print(help(redirectsCommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG17; var init_redirects2 = __esm({ "src/commands/redirects/index.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_get_subcommand(); init_error2(); init_help(); init_list11(); init_list_versions(); init_add13(); init_upload(); init_remove5(); init_promote3(); init_restore(); init_command34(); init_get_flags_specification(); init_output_manager(); init_commands(); init_redirects(); COMMAND_CONFIG17 = { list: getCommandAliases(listSubcommand9), "list-versions": getCommandAliases(listVersionsSubcommand), add: getCommandAliases(addSubcommand7), upload: getCommandAliases(uploadSubcommand), remove: getCommandAliases(removeSubcommand9), promote: getCommandAliases(promoteSubcommand), restore: getCommandAliases(restoreSubcommand) }; } }); // src/util/url.ts var normalizeURL2; var init_url = __esm({ "src/util/url.ts"() { "use strict"; normalizeURL2 = (u) => { if (u.slice(-1) === "/") { u = u.slice(0, -1); } u = u.replace(/^https:\/\//i, ""); return u; }; } }); // src/util/projects/remove-project.ts async function removeProject(client2, projectNameOrId) { try { await client2.fetch(`/projects/${encodeURIComponent(projectNameOrId)}`, { method: "DELETE" }); } catch (error3) { if (isAPIError(error3) && error3.status === 404) { return new ProjectNotFound(projectNameOrId); } throw error3; } } var init_remove_project = __esm({ "src/util/projects/remove-project.ts"() { "use strict"; init_errors_ts(); } }); // src/util/deploy/get-deployments-by-project-id.ts import { URLSearchParams as URLSearchParams7 } from "url"; async function getDeploymentsByProjectId(client2, projectId, options = { from: null, limit: 100, continue: false }, total = 0) { const limit = options.limit || 100; const query = new URLSearchParams7(); query.set("projectId", projectId); query.set("limit", limit.toString()); if (options.from) { query.set("from", options.from.toString()); } const { deployments: legacyDeployments } = await client2.fetch( `/v6/deployments?${query}` ); const deployments = legacyDeployments.map((depl) => { return { aliasAssigned: depl.aliasAssigned, aliasError: depl.aliasError, buildingAt: depl.buildingAt, checksConclusion: depl.checksConclusion, checksState: depl.checksState, createdAt: depl.created, creator: { uid: depl.creator.uid, username: depl.creator.username }, id: depl.uid, inspectorUrl: depl.inspectorUrl, meta: depl.meta, name: depl.name, public: true, ready: depl.ready, readyState: depl.state, regions: [], source: depl.source, status: depl.state, target: depl.target, type: depl.type, url: depl.url, version: 2 }; }); total += deployments.length; if (options.max && total >= options.max) { return deployments; } if (options.continue && deployments.length === limit) { const nextFrom = deployments[deployments.length - 1].createdAt; const nextOptions = Object.assign({}, options, { from: nextFrom }); deployments.push( ...await getDeploymentsByProjectId( client2, projectId, nextOptions, total ) ); } return deployments; } var init_get_deployments_by_project_id = __esm({ "src/util/deploy/get-deployments-by-project-id.ts"() { "use strict"; } }); // src/util/telemetry/commands/remove/index.ts var RemoveTelemetryClient; var init_remove6 = __esm({ "src/util/telemetry/commands/remove/index.ts"() { "use strict"; init_telemetry(); RemoveTelemetryClient = class extends TelemetryClient { trackCliArgumentNameOrDeploymentId(values) { if (values) { this.trackCliArgument({ arg: "nameOrDeploymentId", value: this.redactedArgumentsLength(values) }); } } trackCliFlagHard(flag) { if (flag) { this.trackCliFlag("hard"); } } trackCliFlagSafe(flag) { if (flag) { this.trackCliFlag("safe"); } } trackCliFlagYes(flag) { if (flag) { this.trackCliFlag("yes"); } } }; } }); // src/commands/remove/index.ts var remove_exports = {}; __export3(remove_exports, { default: () => remove6 }); async function remove6(client2) { const telemetryClient = new RemoveTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs = null; const flagsSpecification = getFlagsSpecification(removeCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error4) { printError(error4); return 1; } if (parsedArgs.flags["--help"]) { telemetryClient.trackCliFlagHelp("remove"); output_manager_default.print(help(removeCommand, { columns: client2.stderr.columns })); return 2; } const ids = parsedArgs.args.slice(1); const hard = parsedArgs.flags["--hard"]; const skipConfirmation = parsedArgs.flags["--yes"]; const safe = parsedArgs.flags["--safe"]; telemetryClient.trackCliArgumentNameOrDeploymentId(ids); telemetryClient.trackCliFlagSafe(safe); telemetryClient.trackCliFlagHard(hard); telemetryClient.trackCliFlagYes(skipConfirmation); const { config: { currentTeam } } = client2; const { success, error: error3, log: log2 } = output_manager_default; if (ids.length < 1) { error3(`${getCommandName("rm")} expects at least one argument`); output_manager_default.print(help(removeCommand, { columns: client2.stderr.columns })); return 1; } const invalidName = ids.find((name) => !isValidName(name)); if (invalidName) { error3( `The provided argument "${invalidName}" is not a valid deployment or project` ); return 1; } const { contextName } = await getScope(client2); output_manager_default.spinner( `Fetching deployment(s) ${ids.map((id) => `"${id}"`).join(" ")} in ${import_chalk136.default.bold(contextName)}` ); let aliases; let projects; let deployments; const findStart = Date.now(); try { const searchFilter = (d) => ids.some( (id) => d && !(d instanceof NowError) && (d.id === id || d.name === id || d.url === normalizeURL2(id)) ); const [deploymentList, projectList] = await Promise.all([ Promise.all( ids.map(async (idOrHost) => { if (!contextName) { throw new Error("Context name is not defined"); } return getDeployment(client2, contextName, idOrHost).catch((err) => err); }) ), Promise.all( ids.map(async (idOrName) => getProjectByNameOrId(client2, idOrName)) ) ]); deployments = deploymentList.filter((d) => searchFilter(d)); projects = projectList.filter((d) => searchFilter(d)); if (safe) { const projectDeployments = await Promise.all( projects.map((project) => { return getDeploymentsByProjectId(client2, project.id, { max: 201, continue: true }); }) ); const to = Math.min(projectDeployments.length, 201); for (let i = 0; i < to; i++) { for (const pDepl of projectDeployments[i]) { const depl = pDepl; depl.aliases = []; deployments.push(depl); } } projects = []; } else { deployments = deployments.filter( (d) => !projects.some((p) => p.name === d.name) ); } aliases = await Promise.all( deployments.map(async (depl) => { const { aliases: aliases2 } = await getAliases(client2, depl.id); return aliases2; }) ); } finally { output_manager_default.stopSpinner(); } deployments = deployments.filter((match, i) => { if (safe && aliases[i].length > 0) { return false; } match.aliases = aliases[i]; return true; }); if (deployments.length === 0 && projects.length === 0) { const safeUnaliased = parsedArgs.flags["--safe"] ? "unaliased" : "any"; const stylizedIds = ids.map((id) => import_chalk136.default.bold(`"${id}"`)).join(", "); const commandName = getCommandName("projects ls"); log2( `Could not find ${safeUnaliased} deployments or projects matching ${stylizedIds}. Run ${commandName} to list.` ); return 1; } log2( `Found ${deploymentsAndProjects(deployments, projects)} for removal in ${import_chalk136.default.bold(contextName)} ${elapsed(Date.now() - findStart)}` ); if (deployments.length > 200) { output_manager_default.warn( "Only 200 deployments can get deleted at once. Please continue 10 minutes after deletion to remove the rest." ); } if (!skipConfirmation) { const confirmation = (await readConfirmation4(deployments, projects)).toLowerCase(); if (confirmation !== "y" && confirmation !== "yes") { output_manager_default.log("Canceled"); return 1; } } const now = new Now({ client: client2, currentTeam }); const start = Date.now(); await Promise.all([ ...deployments.map((depl) => now.remove(depl.id, { hard })), ...projects.map((project) => removeProject(client2, project.id)) ]); success( `Removed ${deploymentsAndProjects(deployments, projects)} ${elapsed(Date.now() - start)}` ); deployments.forEach((depl) => { output_manager_default.print(`${import_chalk136.default.gray("-")} ${import_chalk136.default.bold(depl.url)} `); }); projects.forEach((project) => { output_manager_default.print(`${import_chalk136.default.gray("-")} ${import_chalk136.default.bold(project.name)} `); }); return 0; } function readConfirmation4(deployments, projects) { return new Promise((resolve14) => { if (deployments.length > 0) { output_manager_default.log( `The following ${(0, import_pluralize15.default)( "deployment", deployments.length, deployments.length > 1 )} will be permanently removed:` ); const deploymentTable = table( deployments.map((depl) => { const time = import_chalk136.default.gray(`${(0, import_ms29.default)(Date.now() - depl.createdAt)} ago`); const url3 = depl.url ? import_chalk136.default.underline(`https://${depl.url}`) : ""; return [` ${depl.id}`, url3, time]; }), { align: ["l", "r", "l"], hsep: 6 } ); output_manager_default.print(`${deploymentTable} `); } for (const depl of deployments) { for (const { alias: alias2 } of depl.aliases) { output_manager_default.warn( `${import_chalk136.default.underline(`https://${alias2}`)} is an alias for ${import_chalk136.default.bold(depl.url)} and will be removed` ); } } if (projects.length > 0) { output_manager_default.print( `The following ${(0, import_pluralize15.default)( "project", projects.length, projects.length > 1 )} will be permanently removed, including all ${projects.length > 1 ? "their" : "its"} deployments and aliases: ` ); for (const project of projects) { output_manager_default.print(`${import_chalk136.default.gray("-")} ${import_chalk136.default.bold(project.name)} `); } } output_manager_default.print( `${import_chalk136.default.bold.red("> Are you sure?")} ${import_chalk136.default.gray("(y/N) ")}` ); process.stdin.on("data", (d) => { process.stdin.pause(); resolve14(d.toString().trim()); }).resume(); }); } function deploymentsAndProjects(deployments, projects, conjunction = "and") { if (!projects || projects.length === 0) { return `${(0, import_pluralize15.default)("deployment", deployments.length, true)}`; } if (!deployments || deployments.length === 0) { return `${(0, import_pluralize15.default)("project", projects.length, true)}`; } return `${(0, import_pluralize15.default)("deployment", deployments.length, true)} ${conjunction} ${(0, import_pluralize15.default)("project", projects.length, true)}`; } var import_chalk136, import_ms29, import_pluralize15; var init_remove7 = __esm({ "src/commands/remove/index.ts"() { "use strict"; import_chalk136 = __toESM3(require_source(), 1); import_ms29 = __toESM3(require_ms(), 1); import_pluralize15 = __toESM3(require_pluralize(), 1); init_table(); init_util(); init_get_aliases(); init_elapsed(); init_url(); init_get_scope(); init_is_valid_name(); init_remove_project(); init_get_project_by_id_or_name(); init_get_deployment(); init_get_deployments_by_project_id(); init_pkg_name(); init_get_args(); init_error2(); init_now_error(); init_help(); init_command35(); init_get_flags_specification(); init_remove6(); init_output_manager(); } }); // src/commands/rollback/status.ts async function rollbackStatus({ client: client2, contextName, deployment, project, timeout = "3m" }) { const recentThreshold = Date.now() - (0, import_ms30.default)("3m"); const rollbackTimeout = Date.now() + (0, import_ms30.default)(timeout); let counter = 0; let spinnerMessage = deployment ? "Rollback in progress" : `Checking rollback status of ${project.name}`; if (!contextName) { ({ contextName } = await getScope(client2)); } try { output_manager_default.spinner(`${spinnerMessage}\u2026`); for (; ; ) { const projectCheck = await getProjectByNameOrId( client2, project.id, project.accountId, true ); if (projectCheck instanceof ProjectNotFound) { throw projectCheck; } const { jobStatus, requestedAt, toDeploymentId, type } = projectCheck.lastAliasRequest ?? {}; if (!jobStatus || jobStatus !== "in-progress" && jobStatus !== "pending") { output_manager_default.stopSpinner(); output_manager_default.log(`${spinnerMessage}\u2026`); } if (!jobStatus || !requestedAt || !toDeploymentId || requestedAt < recentThreshold) { output_manager_default.log("No deployment rollback in progress"); return 0; } if (jobStatus === "skipped" && type === "rollback") { output_manager_default.log("Rollback was skipped"); return 0; } if (jobStatus === "succeeded") { return await renderJobSucceeded2({ client: client2, contextName, performingRollback: !!deployment, requestedAt, project, toDeploymentId }); } if (jobStatus === "failed") { return await renderJobFailed2({ client: client2, contextName, deployment, project, toDeploymentId }); } if (jobStatus !== "pending" && jobStatus !== "in-progress") { output_manager_default.log(`Unknown rollback status "${jobStatus}"`); return 1; } if (requestedAt < recentThreshold || Date.now() >= rollbackTimeout) { output_manager_default.log( `The rollback exceeded its deadline - rerun ${import_chalk137.default.bold( `${packageName} rollback ${toDeploymentId}` )} to try again` ); return 1; } if (counter++ === 0 && !deployment) { spinnerMessage += ` requested at ${formatDate(requestedAt)}`; } output_manager_default.spinner(`${spinnerMessage}\u2026`); await sleep(250); } } finally { output_manager_default.stopSpinner(); } } async function renderJobFailed2({ client: client2, contextName, deployment, project, toDeploymentId }) { try { const name = (deployment || await getDeployment(client2, contextName, toDeploymentId))?.url; output_manager_default.error( `Failed to remap all aliases to the requested deployment ${name} (${toDeploymentId})` ); } catch (e2) { output_manager_default.error( `Failed to remap all aliases to the requested deployment ${toDeploymentId}` ); } let nextTimestamp; for (; ; ) { let url3 = `/v9/projects/${project.id}/rollback/aliases?failedOnly=true&limit=20`; if (nextTimestamp) { url3 += `&until=${nextTimestamp}`; } const { aliases, pagination } = await client2.fetch(url3); for (const { alias: alias2, status: status3 } of aliases) { output_manager_default.log( ` ${renderAliasStatus(status3).padEnd(11)} ${alias2.alias} (${alias2.deploymentId})` ); } if (pagination?.next) { nextTimestamp = pagination.next; } else { break; } } return 1; } async function renderJobSucceeded2({ client: client2, contextName, performingRollback, project, requestedAt, toDeploymentId }) { let deploymentInfo = ""; try { const deployment = await getDeployment(client2, contextName, toDeploymentId); deploymentInfo = `${import_chalk137.default.bold(deployment.url)} (${toDeploymentId})`; } catch (err) { output_manager_default.debug( `Failed to get deployment url for ${toDeploymentId}: ${err?.toString() || err}` ); deploymentInfo = import_chalk137.default.bold(toDeploymentId); } const duration = performingRollback ? elapsed(Date.now() - requestedAt) : ""; output_manager_default.log( `Success! ${import_chalk137.default.bold( project.name )} was rolled back to ${deploymentInfo} ${duration}` ); return 0; } var import_chalk137, import_ms30; var init_status3 = __esm({ "src/commands/rollback/status.ts"() { "use strict"; import_chalk137 = __toESM3(require_source(), 1); init_elapsed(); init_format_date(); init_get_deployment(); init_pkg_name(); init_get_project_by_id_or_name(); init_get_scope(); import_ms30 = __toESM3(require_ms(), 1); init_errors_ts(); init_render_alias_status(); init_sleep(); init_output_manager(); } }); // src/commands/rollback/request-rollback.ts async function requestRollback({ client: client2, deployId, timeout }) { const { contextName, deployment, project } = await getProjectByDeployment({ client: client2, deployId }); await client2.fetch(`/v9/projects/${project.id}/rollback/${deployment.id}`, { body: {}, // required method: "POST" }); if (timeout !== void 0 && (0, import_ms31.default)(timeout) === 0) { output_manager_default.log( `Successfully requested rollback of ${import_chalk138.default.bold(project.name)} to ${deployment.url} (${deployment.id})` ); output_manager_default.log(`To check rollback status, run ${getCommandName("rollback")}.`); return 0; } return await rollbackStatus({ client: client2, contextName, deployment, project, timeout }); } var import_chalk138, import_ms31; var init_request_rollback = __esm({ "src/commands/rollback/request-rollback.ts"() { "use strict"; import_chalk138 = __toESM3(require_source(), 1); init_pkg_name(); init_get_project_by_deployment(); import_ms31 = __toESM3(require_ms(), 1); init_status3(); init_output_manager(); } }); // src/util/telemetry/commands/rollback/index.ts var RollbackTelemetryClient; var init_rollback = __esm({ "src/util/telemetry/commands/rollback/index.ts"() { "use strict"; init_telemetry(); RollbackTelemetryClient = class extends TelemetryClient { trackCliArgumentUrlOrDeploymentId(value) { if (value) { this.trackCliArgument({ arg: "urlOrDeploymentId", value: this.redactedValue }); } } trackCliSubcommandStatus() { this.trackCliSubcommand({ subcommand: "status", value: "status" }); } trackCliOptionTimeout(time) { if (time) { this.trackCliOption({ option: "timeout", value: "[TIME]" }); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; } }); // src/commands/rollback/index.ts var rollback_exports = {}; __export3(rollback_exports, { default: () => rollback_default }); var import_error_utils35, import_ms32, rollback_default; var init_rollback2 = __esm({ "src/commands/rollback/index.ts"() { "use strict"; init_get_args(); init_get_project_by_cwd_or_link(); init_error2(); import_error_utils35 = __toESM3(require_dist2(), 1); import_ms32 = __toESM3(require_ms(), 1); init_request_rollback(); init_status3(); init_help(); init_command36(); init_get_flags_specification(); init_rollback(); init_output_manager(); rollback_default = async (client2) => { let parsedArgs; const flagsSpecification = getFlagsSpecification(rollbackCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } const telemetry2 = new RollbackTelemetryClient({ opts: { store: client2.telemetryEventStore } }); telemetry2.trackCliOptionTimeout(parsedArgs.flags["--timeout"]); telemetry2.trackCliFlagYes(parsedArgs.flags["--yes"]); const needHelp = parsedArgs.flags["--help"]; if (!parsedArgs.args[1] && needHelp) { telemetry2.trackCliFlagHelp("rollback"); output_manager_default.print(help(rollbackCommand, { columns: client2.stderr.columns })); return 2; } const timeout = parsedArgs.flags["--timeout"]; if (timeout && (0, import_ms32.default)(timeout) === void 0) { output_manager_default.error(`Invalid timeout "${timeout}"`); return 1; } const actionOrDeployId = parsedArgs.args[1] || "status"; try { if (actionOrDeployId === "status") { if (needHelp) { telemetry2.trackCliFlagHelp("promote", "status"); output_manager_default.print( help(statusSubcommand3, { columns: client2.stderr.columns, parent: rollbackCommand }) ); return 2; } telemetry2.trackCliSubcommandStatus(); const project = await getProjectByCwdOrLink({ autoConfirm: parsedArgs.flags["--yes"], client: client2, commandName: "promote", projectNameOrId: parsedArgs.args[2] }); return await rollbackStatus({ client: client2, project, timeout }); } return await requestRollback({ client: client2, deployId: actionOrDeployId, timeout }); } catch (err) { if ((0, import_error_utils35.isErrnoException)(err)) { if (err.code === "ERR_CANCELED") { return 0; } if (err.code === "ERR_INVALID_CWD" || err.code === "ERR_LINK_PROJECT") { return 1; } } output_manager_default.prettyError(err); return 1; } }; } }); // src/commands/rolling-release/start-rolling-release.ts async function startRollingRelease({ client: client2, dpl, projectId, teamId, yes }) { const { deployment } = await getProjectByDeployment({ client: client2, deployId: dpl }); let promoteByCreation = false; if (deployment.target !== "production") { if (yes) { promoteByCreation = true; } else { const question = "This deployment is not a production deployment and cannot be directly promoted. A new deployment will be built using your production environment. Are you sure you want to continue?"; promoteByCreation = await client2.input.confirm(question, false); if (!promoteByCreation) { output_manager_default.error("Canceled"); return 0; } } } if (promoteByCreation) { const newDeployment = await client2.fetch( `/v13/deployments?teamId=${deployment.ownerId}`, { body: { deploymentId: deployment.id, name: projectId, target: "production", meta: { action: "promote" } }, accountId: deployment.ownerId, method: "POST" } ); output_manager_default.log( `Successfully created new deployment at ${newDeployment.inspectorUrl}` ); return 0; } await client2.fetch( `/v10/projects/${projectId}/promote/${deployment.id}?teamId=${teamId}`, { body: {}, // required json: false, method: "POST" } ); output_manager_default.log("Successfully started rolling release"); return 0; } var init_start_rolling_release = __esm({ "src/commands/rolling-release/start-rolling-release.ts"() { "use strict"; init_output_manager(); init_get_project_by_deployment(); } }); // src/commands/rolling-release/configure-rolling-release.ts async function configureRollingRelease({ client: client2, projectId, teamId, rollingReleaseConfig }) { const body = { ...rollingReleaseConfig, enabled: Boolean(rollingReleaseConfig) }; await client2.fetch( `/v1/projects/${projectId}/rolling-release/config?teamId=${teamId}`, { body, json: true, method: "PATCH" } ); output_manager_default.log("Successfully configured rolling releases."); return 0; } var init_configure_rolling_release = __esm({ "src/commands/rolling-release/configure-rolling-release.ts"() { "use strict"; init_output_manager(); } }); // src/commands/rolling-release/approve-rolling-release.ts async function approveRollingRelease({ client: client2, projectId, teamId, activeStageIndex, dpl }) { const { deployment } = await getProjectByDeployment({ client: client2, deployId: dpl }); await client2.fetch( `/v1/projects/${projectId}/rolling-release/approve-stage?teamId=${teamId}`, { method: "POST", json: true, body: { activeStageIndex, nextStageIndex: activeStageIndex + 1, canaryDeploymentId: deployment.id } } ); output_manager_default.log( "Successfully requested approval of rolling release to next stage." ); return 0; } var init_approve_rolling_release = __esm({ "src/commands/rolling-release/approve-rolling-release.ts"() { "use strict"; init_output_manager(); init_get_project_by_deployment(); } }); // src/commands/rolling-release/abort-rolling-release.ts async function abortRollingRelease({ client: client2, projectId, dpl, teamId }) { const { deployment } = await getProjectByDeployment({ client: client2, deployId: dpl }); await client2.fetch( `/v9/projects/${projectId}/rollback/${deployment.id}?teamId=${teamId}`, { body: {}, // required method: "POST" } ); output_manager_default.log("Successfully aborted the active rolling release."); return 0; } var init_abort_rolling_release = __esm({ "src/commands/rolling-release/abort-rolling-release.ts"() { "use strict"; init_output_manager(); init_get_project_by_deployment(); } }); // src/commands/rolling-release/complete-rolling-release.ts async function completeRollingRelease({ client: client2, projectId, teamId, dpl }) { const { deployment } = await getProjectByDeployment({ client: client2, deployId: dpl }); await client2.fetch( `/v1/projects/${projectId}/rolling-release/complete?teamId=${teamId}`, { body: { canaryDeploymentId: deployment.id }, // required json: true, method: "POST" } ); output_manager_default.log( "Successfully requested completion of the active rolling release." ); return 0; } var init_complete_rolling_release = __esm({ "src/commands/rolling-release/complete-rolling-release.ts"() { "use strict"; init_output_manager(); init_get_project_by_deployment(); } }); // src/util/telemetry/commands/rolling-release/index.ts var RollingReleaseTelemetryClient; var init_rolling_release = __esm({ "src/util/telemetry/commands/rolling-release/index.ts"() { "use strict"; init_telemetry(); RollingReleaseTelemetryClient = class extends TelemetryClient { trackCliOptionAction(value) { this.trackCliOption({ option: "action", value: value ?? "" }); } trackCliOptionName(name) { if (name) { this.trackCliOption({ option: "name", value: this.redactedValue }); } } trackCliOptionCfg(value) { this.trackCliOption({ option: "cfg", value: value ?? "" }); } trackCliOptionDpl(value) { this.trackCliOption({ option: "dpl", value: value ?? "" }); } trackCliOptionCurrentStageIndex(value) { this.trackCliOption({ option: "currentStageIndex", value: value ?? "" }); } trackCliSubcommandConfigure(actual) { this.trackCliSubcommand({ subcommand: "configure", value: actual }); } trackCliSubcommandStart(actual) { this.trackCliSubcommand({ subcommand: "start", value: actual }); } trackCliSubcommandApprove(actual) { this.trackCliSubcommand({ subcommand: "approve", value: actual }); } trackCliSubcommandAbort(actual) { this.trackCliSubcommand({ subcommand: "abort", value: actual }); } trackCliSubcommandComplete(actual) { this.trackCliSubcommand({ subcommand: "complete", value: actual }); } trackCliSubcommandFetch(actual) { this.trackCliSubcommand({ subcommand: "fetch", value: actual }); } }; } }); // src/commands/rolling-release/index.ts var rolling_release_exports = {}; __export3(rolling_release_exports, { default: () => rollingRelease }); async function rollingRelease(client2) { const telemetry2 = new RollingReleaseTelemetryClient({ opts: { store: client2.telemetryEventStore } }); const { subcommand, args: subcommandArgs, subcommandOriginal } = getSubcommand(client2.argv.slice(3), COMMAND_CONFIG18); const needHelp = client2.argv.includes("--help") || client2.argv.includes("-h"); if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("rolling-release"); output_manager_default.print( help(rollingReleaseCommand, { columns: client2.stderr.columns }) ); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: rollingReleaseCommand, columns: client2.stderr.columns }) ); } try { const link4 = await getLinkedProject(client2); if (link4.status === "error") { return link4.exitCode; } if (link4.status === "not_linked") { output_manager_default.error( "No project found. Please run `vc link` to link your project first." ); return 1; } const { project, org } = link4; client2.config.currentTeam = org.type === "team" ? org.id : void 0; let subcommandFlags; switch (subcommand) { case "configure": { if (needHelp) { telemetry2.trackCliFlagHelp("rolling-release", subcommandOriginal); printHelp(configureSubcommand); return 2; } subcommandFlags = parseArguments( subcommandArgs, getFlagsSpecification(configureSubcommand.options), { permissive: true } ); const cfgString = subcommandFlags.flags["--cfg"]; if (!cfgString) { output_manager_default.error("Missing required flag --cfg"); return 1; } let cfg = void 0; if (cfgString !== "disable") { try { cfg = JSON.parse(cfgString); } catch (error3) { output_manager_default.error("Invalid JSON provided for --cfg option."); return 1; } } await configureRollingRelease({ client: client2, projectId: project.id, teamId: org.id, rollingReleaseConfig: cfg }); break; } case "start": { if (needHelp) { telemetry2.trackCliFlagHelp("rolling-release", subcommandOriginal); printHelp(startSubcommand); return 2; } subcommandFlags = parseArguments( subcommandArgs, getFlagsSpecification(startSubcommand.options), { permissive: true } ); const dpl = subcommandFlags.flags["--dpl"]; if (dpl === void 0) { output_manager_default.error("starting a rolling release requires --dpl option."); break; } await startRollingRelease({ client: client2, dpl, projectId: project.id, teamId: project.accountId, yes: subcommandFlags.flags["--yes"] ?? false }); break; } case "approve": { if (needHelp) { telemetry2.trackCliFlagHelp("rolling-release", subcommandOriginal); printHelp(approveSubcommand); return 2; } subcommandFlags = parseArguments( subcommandArgs, getFlagsSpecification(approveSubcommand.options), { permissive: true } ); const dpl = subcommandFlags.flags["--dpl"]; const currentStageIndex = subcommandFlags.flags["--currentStageIndex"]; const activeStageIndex = parseInt(currentStageIndex ?? ""); if (!dpl) { output_manager_default.error("Missing required flag --dpl"); return 1; } if (currentStageIndex === void 0) { output_manager_default.error("Missing required flag --currentStageIndex"); return 1; } if (isNaN(activeStageIndex)) { output_manager_default.error("--currentStageIndex must be a valid number."); return 1; } await approveRollingRelease({ client: client2, projectId: project.id, teamId: org.id, activeStageIndex, dpl }); break; } case "abort": { if (needHelp) { telemetry2.trackCliFlagHelp("rolling-release", subcommandOriginal); printHelp(abortSubcommand); return 2; } subcommandFlags = parseArguments( subcommandArgs, getFlagsSpecification(abortSubcommand.options), { permissive: true } ); const dpl = subcommandFlags.flags["--dpl"]; if (!dpl) { output_manager_default.error("Missing required flag --dpl"); return 1; } await abortRollingRelease({ client: client2, projectId: project.id, teamId: org.id, dpl }); break; } case "complete": { if (needHelp) { telemetry2.trackCliFlagHelp("rolling-release", subcommandOriginal); printHelp(completeSubcommand); return 2; } subcommandFlags = parseArguments( subcommandArgs, getFlagsSpecification(completeSubcommand.options), { permissive: true } ); const dpl = subcommandFlags.flags["--dpl"]; if (!dpl) { output_manager_default.error("Missing required flag --dpl"); return 1; } await completeRollingRelease({ client: client2, projectId: project.id, teamId: org.id, dpl }); break; } case "fetch": { if (needHelp) { telemetry2.trackCliFlagHelp("rolling-release", subcommandOriginal); printHelp(fetchSubcommand); return 2; } const result = await requestRollingRelease({ client: client2, projectId: project.id, teamId: org.id }); output_manager_default.log(JSON.stringify(result, null, 2)); break; } default: { output_manager_default.debug(`Invalid subcommand: ${subcommand}`); output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG18)); output_manager_default.print( help(rollingReleaseCommand, { columns: client2.stderr.columns }) ); return 2; } } return 0; } catch (err) { printError(err); return 1; } } var COMMAND_CONFIG18; var init_rolling_release2 = __esm({ "src/commands/rolling-release/index.ts"() { "use strict"; init_get_args(); init_get_flags_specification(); init_help(); init_command37(); init_request_rolling_release(); init_start_rolling_release(); init_configure_rolling_release(); init_approve_rolling_release(); init_abort_rolling_release(); init_complete_rolling_release(); init_error2(); init_output_manager(); init_rolling_release(); init_link2(); init_get_subcommand(); init_commands(); init_get_invalid_subcommand(); COMMAND_CONFIG18 = { configure: getCommandAliases(configureSubcommand), start: getCommandAliases(startSubcommand), approve: getCommandAliases(approveSubcommand), abort: getCommandAliases(abortSubcommand), complete: getCommandAliases(completeSubcommand), fetch: getCommandAliases(fetchSubcommand) }; } }); // src/commands/target/list.ts function formatBranchMatcher(branchMatcher) { if (branchMatcher?.type === "equals") { return branchMatcher.pattern; } else if (branchMatcher?.type === "startsWith") { return `${branchMatcher.pattern}${import_chalk139.default.dim("*")}`; } else if (branchMatcher?.type === "endsWith") { return `${import_chalk139.default.dim("*")}${branchMatcher.pattern}`; } return import_chalk139.default.dim("No branch configuration"); } async function list8(client2, argv) { const { cwd } = client2; const telemetry2 = new TelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(listSubcommand10.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const validationResult = validateLsArgs({ commandName: "target ls", args: parsedArgs.args, maxArgs: 0, exitCode: 2 }); if (validationResult !== 0) { return validationResult; } const formatResult = validateJsonOutput(parsedArgs.flags); if (!formatResult.valid) { output_manager_default.error(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; telemetry2.trackCliOptionFormat(parsedArgs.flags["--format"]); const link4 = await ensureLink(targetCommand.name, client2, cwd); if (typeof link4 === "number") { return link4; } const start = Date.now(); const projectSlugLink = formatProject(link4.org.slug, link4.project.name); output_manager_default.spinner(`Fetching custom environments for ${projectSlugLink}`); const url3 = `/projects/${encodeURIComponent( link4.project.id )}/custom-environments`; let { environments: result } = await client2.fetch(url3, { method: "GET", accountId: link4.org.id }); output_manager_default.stopSpinner(); const elapsed2 = (0, import_ms33.default)(Date.now() - start); result = withDefaultEnvironmentsIncluded(result); if (asJson) { const jsonOutput = { targets: result.map((target) => ({ id: target.id, slug: target.slug, type: target.type, description: target.description, branchMatcher: target.branchMatcher, createdAt: target.createdAt, updatedAt: target.updatedAt })) }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } else { output_manager_default.log( `${result.length} Environment${result.length === 1 ? "" : "s"} found under ${projectSlugLink} ${import_chalk139.default.gray(`[${elapsed2}]`)}` ); const tablePrint = table( [ ["Target Name", "Branch Tracking", "Type", "Updated"].map( (header) => import_chalk139.default.bold(import_chalk139.default.cyan(header)) ), ...result.flatMap((target) => { return [ [ formatEnvironment(link4.org.slug, link4.project.name, target), BRANCH_TRACKING_MAP[target.type](link4.project, target), TYPE_MAP[target.type], import_chalk139.default.gray( target.updatedAt > 0 ? (0, import_ms33.default)(Date.now() - target.updatedAt) : "-" ) ] ]; }) ], { hsep: 3 } ).replace(/^/gm, " "); output_manager_default.print(` ${tablePrint} `); } return 0; } function withDefaultEnvironmentsIncluded(environments) { return [ { id: "production", slug: "production", createdAt: 0, updatedAt: 0, type: "production", description: "", domains: [] }, { id: "preview", slug: "preview", createdAt: 0, updatedAt: 0, type: "preview", description: "", domains: [] }, { id: "development", slug: "development", createdAt: 0, updatedAt: 0, type: "development", description: "", domains: [] }, ...environments.slice().sort((a, b) => a.slug.localeCompare(b.slug)) ]; } var import_ms33, import_chalk139, TYPE_MAP, BRANCH_TRACKING_MAP; var init_list12 = __esm({ "src/commands/target/list.ts"() { "use strict"; import_ms33 = __toESM3(require_ms(), 1); import_chalk139 = __toESM3(require_source(), 1); init_table(); init_output_manager(); init_command38(); init_validate_ls_args(); init_ensure_link(); init_format_project(); init_format_environment(); init_output_format(); init_get_args(); init_get_flags_specification(); init_error2(); init_telemetry(); TYPE_MAP = { production: "Production", preview: "Preview", development: "Development" }; BRANCH_TRACKING_MAP = { production: (project) => project.link?.productionBranch ?? "main", preview: (_, env) => env.slug === "preview" ? import_chalk139.default.dim("All unassigned git branches") : formatBranchMatcher(env.branchMatcher), development: () => import_chalk139.default.dim("Accessible via CLI") }; } }); // src/util/telemetry/commands/target/index.ts var TargetTelemetryClient; var init_target = __esm({ "src/util/telemetry/commands/target/index.ts"() { "use strict"; init_telemetry(); TargetTelemetryClient = class extends TelemetryClient { trackCliSubcommandList(subcommandActual) { this.trackCliSubcommand({ subcommand: "list", value: subcommandActual }); } }; } }); // src/commands/target/index.ts var target_exports = {}; __export3(target_exports, { default: () => main17 }); async function main17(client2) { let parsedArgs; const flagsSpecification = getFlagsSpecification(targetCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (error3) { printError(error3); return 1; } const { telemetryEventStore } = client2; const telemetry2 = new TargetTelemetryClient({ opts: { store: telemetryEventStore } }); parsedArgs.args = parsedArgs.args.slice(1); const subcommand = parsedArgs.args[0]; const args2 = parsedArgs.args.slice(1); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("target"); output_manager_default.print(help(targetCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: targetCommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "ls": case "list": if (needHelp) { telemetry2.trackCliFlagHelp("target", "list"); printHelp(listSubcommand10); return 2; } telemetry2.trackCliSubcommandList(subcommand); return await list8(client2, args2); default: output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG19)); output_manager_default.print(help(targetCommand, { columns: client2.stderr.columns })); return 2; } } var COMMAND_CONFIG19; var init_target2 = __esm({ "src/commands/target/index.ts"() { "use strict"; init_get_args(); init_get_invalid_subcommand(); init_help(); init_list12(); init_command38(); init_get_flags_specification(); init_error2(); init_output_manager(); init_target(); init_commands(); COMMAND_CONFIG19 = { ls: getCommandAliases(listSubcommand10) }; } }); // src/util/telemetry/commands/teams/list.ts var TeamsListTelemetryClient; var init_list13 = __esm({ "src/util/telemetry/commands/teams/list.ts"() { "use strict"; init_telemetry(); TeamsListTelemetryClient = class extends TelemetryClient { trackCliOptionNext(value) { if (value && value > 0) { this.trackCliOption({ option: "next", value: this.redactedValue }); } } trackCliOptionUntil(value) { if (value) { this.trackCliOption({ option: "until", value: this.redactedValue }); } } trackCliOptionSince(value) { if (value) { this.trackCliOption({ option: "since", value: this.redactedValue }); } } trackCliOptionCount(value) { if (value && value > 0) { this.trackCliOption({ option: "count", value: this.redactedValue }); } } }; } }); // src/commands/teams/list.ts async function list9(client2, argv) { const { config: config2, telemetryEventStore } = client2; const telemetry2 = new TeamsListTelemetryClient({ opts: { store: telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(listSubcommand11.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const validationResult = validateLsArgs({ commandName: "teams ls", args: parsedArgs.args, maxArgs: 0, exitCode: 2 }); if (validationResult !== 0) { return validationResult; } const next = parsedArgs.flags["--next"]; const formatResult = validateJsonOutput(parsedArgs.flags); if (!formatResult.valid) { output_manager_default.error(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; telemetry2.trackCliOptionNext(next); telemetry2.trackCliOptionFormat(parsedArgs.flags["--format"]); telemetry2.trackCliOptionCount(parsedArgs.flags["--count"]); telemetry2.trackCliOptionUntil(parsedArgs.flags["--until"]); telemetry2.trackCliOptionSince(parsedArgs.flags["--since"]); if (typeof next !== "undefined" && !Number.isInteger(next)) { output_manager_default.error("Please provide a number for flag `--next`"); return 1; } output_manager_default.spinner("Fetching teams"); const { teams: teams2, pagination } = await getTeams(client2, { next, apiVersion: 2 }); let { currentTeam } = config2; output_manager_default.spinner("Fetching user information"); const user = await getUser(client2); const accountIsCurrent = !currentTeam && user.version !== "northstar"; if (accountIsCurrent) { currentTeam = user.id; } const teamList = teams2.map(({ id, slug, name }) => ({ id, name, value: slug, isCurrent: id === currentTeam })); if (user.version !== "northstar") { teamList.unshift({ id: user.id, name: user.email, value: user.username || user.email, isCurrent: accountIsCurrent }); } if (!accountIsCurrent) { const index = teamList.findIndex((choice2) => choice2.id === currentTeam); const choice = teamList.splice(index, 1)[0]; teamList.unshift(choice); } output_manager_default.stopSpinner(); if (asJson) { const jsonOutput = { teams: teamList.map((team) => ({ id: team.id, slug: team.value, name: team.name, current: team.isCurrent })), pagination }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } else { client2.stdout.write("\n"); const teamTable = table( [ ["id", "Team name"].map((str) => (0, import_chalk140.gray)(str)), ...teamList.map((team) => [team.value, team.name]) ], { hsep: 5 } ); client2.stderr.write( currentTeam ? teamTable.split("\n").map((line, i) => { const prefix = i > 0 ? teamList[i - 1].isCurrent ? chars_default.tick : " " : " "; return `${prefix} ${line}`; }).join("\n") : teamTable ); client2.stderr.write("\n"); if (pagination?.count === 20) { const flags = getCommandFlags(parsedArgs.flags, [ "--next", "-N", "-d", "--format" ]); const nextCmd = `${packageName} teams ls${flags} --next ${pagination.next}`; client2.stdout.write("\n"); output_manager_default.log(`To display the next page run ${cmd(nextCmd)}`); } } return 0; } var import_chalk140; var init_list14 = __esm({ "src/commands/teams/list.ts"() { "use strict"; init_chars(); init_table(); import_chalk140 = __toESM3(require_source(), 1); init_get_user(); init_get_teams(); init_pkg_name(); init_get_command_flags(); init_cmd(); init_get_args(); init_error2(); init_get_flags_specification(); init_command39(); init_output_format(); init_output_manager(); init_list13(); init_validate_ls_args(); } }); // src/util/input/regexes.ts var email; var init_regexes = __esm({ "src/util/input/regexes.ts"() { "use strict"; email = /.+@.+\..+$/; } }); // src/util/teams/invite-user-to-team.ts async function inviteUserToTeam(client2, teamId, email2) { const body = await client2.fetch( `/teams/${encodeURIComponent(teamId)}/members`, { method: "POST", body: { email: email2 } } ); return body; } var init_invite_user_to_team = __esm({ "src/util/teams/invite-user-to-team.ts"() { "use strict"; } }); // src/util/telemetry/commands/teams/invite.ts var TeamsInviteTelemetryClient; var init_invite = __esm({ "src/util/telemetry/commands/teams/invite.ts"() { "use strict"; init_telemetry(); TeamsInviteTelemetryClient = class extends TelemetryClient { trackCliArgumentEmail(values) { if (values) { this.trackCliArgument({ arg: "email", value: this.redactedArgumentsLength(values) }); } } }; } }); // src/commands/teams/invite.ts async function invite(client2, argv, { introMsg = "", noopMsg = "No changes made" } = {}) { const { config: config2, telemetryEventStore } = client2; const { currentTeam: currentTeamId } = config2; const telemetry2 = new TeamsInviteTelemetryClient({ opts: { store: telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(inviteSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } const { args: emails } = parsedArgs; output_manager_default.spinner("Fetching teams"); const teams2 = await getTeams(client2); const currentTeam = teams2.find((team) => team.id === currentTeamId); output_manager_default.spinner("Fetching user information"); const user = await getUser(client2); domains.push(user.email.split("@")[1]); if (!currentTeam) { const err = `You can't run this command under ${param( user.username || user.email )}. Please select a team scope using ${getCommandName( `switch` )} or use ${cmd("--scope")}`; output_manager_default.error(err); return 1; } output_manager_default.log( introMsg || `Inviting team members to ${import_chalk141.default.bold(currentTeam.name)}` ); telemetry2.trackCliArgumentEmail(emails); if (emails.length > 0) { for (const email3 of emails) { if (email.test(email3)) { output_manager_default.spinner(email3); const elapsed2 = stamp_default(); let userInfo = null; try { const res = await inviteUserToTeam(client2, currentTeam.id, email3); userInfo = res.username; } catch (err) { if (isAPIError(err) && err.code === "user_not_found") { output_manager_default.error(`No user exists with the email address "${email3}".`); return 1; } throw err; } output_manager_default.log( `${import_chalk141.default.cyan(chars_default.tick)} ${email3}${userInfo ? ` (${userInfo})` : ""} ${elapsed2()}` ); } else { output_manager_default.log(`${import_chalk141.default.red(`\u2716 ${email3}`)} ${import_chalk141.default.gray("[invalid]")}`); } } return 0; } const inviteUserPrefix = "Invite User".padEnd(14); const sentEmailPrefix = "Sent Email".padEnd(14); let hasError = false; let email2; do { email2 = ""; try { email2 = await client2.input.text({ message: `- ${inviteUserPrefix}`, validate: validateEmail }); } catch (err) { if (!(0, import_error_utils36.isError)(err) || err.message !== "USER_ABORT") { throw err; } } let elapsed2; if (email2) { elapsed2 = stamp_default(); output_manager_default.spinner(inviteUserPrefix + email2); try { const { username } = await inviteUserToTeam( client2, currentTeam.id, email2 ); email2 = `${email2}${username ? ` (${username})` : ""} ${elapsed2()}`; emails.push(email2); output_manager_default.log(`${import_chalk141.default.cyan(chars_default.tick)} ${sentEmailPrefix}${email2}`); if (hasError) { hasError = false; process.stderr.write(eraseLines(emails.length + 2)); output_manager_default.log( introMsg || `Inviting team members to ${import_chalk141.default.bold(currentTeam.name)}` ); for (const email3 of emails) { output_manager_default.log(`${import_chalk141.default.cyan(chars_default.tick)} ${inviteUserPrefix}${email3}`); } } } catch (err) { output_manager_default.stopSpinner(); process.stderr.write(eraseLines(emails.length + 2)); output_manager_default.error((0, import_error_utils36.errorToString)(err)); hasError = true; for (const email3 of emails) { output_manager_default.log(`${import_chalk141.default.cyan(chars_default.tick)} ${sentEmailPrefix}${email3}`); } } } } while (email2 !== ""); output_manager_default.stopSpinner(); process.stderr.write(eraseLines(emails.length + 2)); const n = emails.length; if (emails.length === 0) { output_manager_default.log(noopMsg); } else { output_manager_default.success(`Invited ${n} teammate${n > 1 ? "s" : ""}`); for (const email3 of emails) { output_manager_default.log(`${import_chalk141.default.cyan(chars_default.tick)} ${inviteUserPrefix}${email3}`); } } return 0; } var import_chalk141, import_error_utils36, validateEmail, domains; var init_invite2 = __esm({ "src/commands/teams/invite.ts"() { "use strict"; import_chalk141 = __toESM3(require_source(), 1); init_cmd(); init_stamp(); init_param(); init_chars(); init_erase_lines(); init_get_user(); init_pkg_name(); init_regexes(); init_get_teams(); init_invite_user_to_team(); init_errors_ts(); import_error_utils36 = __toESM3(require_dist2(), 1); init_invite(); init_output_manager(); init_get_args(); init_get_flags_specification(); init_error2(); init_command39(); validateEmail = (data) => email.test(data.trim()) || data.length === 0; domains = Array.from( /* @__PURE__ */ new Set([ "aol.com", "gmail.com", "google.com", "yahoo.com", "ymail.com", "hotmail.com", "live.com", "outlook.com", "inbox.com", "mail.com", "gmx.com", "icloud.com" ]) ); } }); // src/util/teams/create-team.ts async function createTeam(client2, { slug }) { const body = await client2.fetch(`/teams`, { method: "POST", body: { slug } }); return body; } var init_create_team = __esm({ "src/util/teams/create-team.ts"() { "use strict"; } }); // src/util/teams/patch-team.ts async function patchTeam(client2, teamId, payload) { const body = await client2.fetch( `/teams/${encodeURIComponent(teamId)}`, { method: "PATCH", body: payload } ); return body; } var init_patch_team = __esm({ "src/util/teams/patch-team.ts"() { "use strict"; } }); // src/commands/teams/add.ts async function add8(client2) { let slug; let team; let elapsed2; output_manager_default.log( `Pick a team identifier for its URL (e.g.: ${import_chalk142.default.cyan( "`vercel.com/acme`" )})` ); do { try { slug = await client2.input.text({ message: `- ${teamUrlPrefix}`, validate: validateSlug, default: slug }); } catch (err) { if ((0, import_error_utils37.isError)(err) && err.message === "USER_ABORT") { output_manager_default.log("Canceled"); return 0; } throw err; } elapsed2 = stamp_default(); output_manager_default.spinner(teamUrlPrefix + slug); try { team = await createTeam(client2, { slug }); } catch (err) { output_manager_default.stopSpinner(); output_manager_default.print(eraseLines(2)); output_manager_default.error((0, import_error_utils37.errorToString)(err)); } } while (!team); output_manager_default.stopSpinner(); process.stdout.write(eraseLines(2)); output_manager_default.success(`Team created ${elapsed2()}`); output_manager_default.log(`${import_chalk142.default.cyan(`${chars_default.tick} `) + teamUrlPrefix + slug} `); output_manager_default.log("Pick a display name for your team"); let name; try { name = await client2.input.text({ message: `- ${teamNamePrefix}`, validate: validateName }); } catch (err) { if ((0, import_error_utils37.isError)(err) && err.message === "USER_ABORT") { output_manager_default.log("No name specified"); return 2; } throw err; } elapsed2 = stamp_default(); output_manager_default.spinner(teamNamePrefix + name); const res = await patchTeam(client2, team.id, { name }); output_manager_default.stopSpinner(); process.stdout.write(eraseLines(2)); team = Object.assign(team, res); output_manager_default.success(`Team name saved ${elapsed2()}`); output_manager_default.log(`${import_chalk142.default.cyan(`${chars_default.tick} `) + teamNamePrefix + team.name} `); output_manager_default.spinner("Saving"); client2.config.currentTeam = team.id; writeToConfigFile(client2.config); output_manager_default.stopSpinner(); await invite(client2, [], { introMsg: "Invite your teammates! When done, press enter on an empty field", noopMsg: `You can invite teammates later by running ${getCommandName( `teams invite` )}` }); return 0; } var import_chalk142, import_error_utils37, validateSlug, validateName, teamUrlPrefix, teamNamePrefix; var init_add14 = __esm({ "src/commands/teams/add.ts"() { "use strict"; import_chalk142 = __toESM3(require_source(), 1); init_stamp(); init_erase_lines(); init_chars(); init_invite2(); init_files(); init_pkg_name(); init_create_team(); init_patch_team(); import_error_utils37 = __toESM3(require_dist2(), 1); init_output_manager(); validateSlug = (value) => /^[a-z]+[a-z0-9_-]*$/.test(value); validateName = (value) => /^[ a-zA-Z0-9_-]+$/.test(value); teamUrlPrefix = "Team URL".padEnd(14) + import_chalk142.default.gray("vercel.com/"); teamNamePrefix = "Team Name".padEnd(14); } }); // src/util/telemetry/commands/teams/switch.ts var TeamsSwitchTelemetryClient; var init_switch = __esm({ "src/util/telemetry/commands/teams/switch.ts"() { "use strict"; init_telemetry(); TeamsSwitchTelemetryClient = class extends TelemetryClient { trackCliArgumentName(slug) { if (slug) { this.trackCliArgument({ arg: "slug", value: this.redactedValue }); } } }; } }); // src/commands/teams/switch.ts async function change(client2, argv) { let parsedArgs; const flagsSpecification = getFlagsSpecification(switchSubcommand.options); try { parsedArgs = parseArguments(argv, flagsSpecification); } catch (error3) { printError(error3); return 1; } let { args: [desiredSlug] } = parsedArgs; const { config: config2, telemetryEventStore } = client2; const telemetry2 = new TeamsSwitchTelemetryClient({ opts: { store: telemetryEventStore } }); telemetry2.trackCliArgumentName(desiredSlug); const personalScopeSelected = !config2.currentTeam; output_manager_default.spinner("Fetching teams information"); const [user, teams2] = await Promise.all([getUser(client2), getTeams(client2)]); const currentTeam = personalScopeSelected ? void 0 : teams2.find((team) => team.id === config2.currentTeam); if (!personalScopeSelected && !currentTeam) { output_manager_default.error(`You are not a member of the current team anymore.`); return 1; } if (!desiredSlug) { const teamChoices = teams2.slice(0).sort((a, b) => { return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); }).map((team) => { let title9 = `${team.name} (${team.slug})`; const selected = team.id === currentTeam?.id; if (selected) { title9 += ` ${import_chalk143.default.bold("(current)")}`; } if (team.limited) { title9 += ` ${emoji("locked")}`; } return { name: title9, value: team.slug, short: team.slug, selected }; }); let suffix = personalScopeSelected ? ` ${import_chalk143.default.bold("(current)")}` : ""; if (user.limited) { suffix += ` ${emoji("locked")}`; } const personalAccountChoice = user.version === "northstar" ? [] : [ { separator: "Personal Account" }, { name: `${user.name || user.email} (${user.username})${suffix}`, value: user.username, short: user.username, selected: personalScopeSelected } ]; const choices = [ ...personalAccountChoice, { separator: "Teams" }, ...teamChoices ]; output_manager_default.stopSpinner(); desiredSlug = await list(client2, { message: "Switch to:", choices, eraseFinalAnswer: true }); } if (!desiredSlug) { output_manager_default.log("No changes made."); return 0; } if (desiredSlug === user.username || desiredSlug === user.email) { if (user.version === "northstar") { output_manager_default.error("You cannot set your Personal Account as the scope."); return 1; } if (personalScopeSelected) { output_manager_default.log("No changes made"); return 0; } if (user.limited) { await client2.reauthenticate({ scope: user.username, teamId: null }); } updateCurrentTeam(config2); output_manager_default.success( `Your account (${import_chalk143.default.bold(user.username)}) is now active!` ); return 0; } const newTeam = teams2.find((team) => team.slug === desiredSlug); if (!newTeam) { output_manager_default.error( `You do not have permission to access scope ${import_chalk143.default.bold(desiredSlug)}.` ); return 1; } if (newTeam.slug === currentTeam?.slug) { output_manager_default.log("No changes made"); return 0; } if (newTeam.limited) { const samlEnabled = newTeam.saml?.connection?.state === "active"; await client2.reauthenticate({ teamId: samlEnabled ? newTeam.id : null, scope: newTeam.slug, enforced: samlEnabled && newTeam.saml?.enforced === true }); } updateCurrentTeam(config2, newTeam); output_manager_default.success( `The team ${import_chalk143.default.bold(newTeam.name)} (${newTeam.slug}) is now active!` ); return 0; } var import_chalk143, updateCurrentTeam; var init_switch2 = __esm({ "src/commands/teams/switch.ts"() { "use strict"; import_chalk143 = __toESM3(require_source(), 1); init_emoji(); init_get_user(); init_get_teams(); init_list(); init_files(); init_output_manager(); init_switch(); init_command39(); init_get_args(); init_get_flags_specification(); init_error2(); updateCurrentTeam = (config2, team) => { if (team) { config2.currentTeam = team.id; } else { delete config2.currentTeam; } writeToConfigFile(config2); }; } }); // src/util/telemetry/commands/teams/index.ts var TeamsTelemetryClient; var init_teams = __esm({ "src/util/telemetry/commands/teams/index.ts"() { "use strict"; init_telemetry(); TeamsTelemetryClient = class extends TelemetryClient { trackCliSubcommandInvite(actual) { if (actual) { this.trackCliSubcommand({ subcommand: "invite", value: actual }); } } trackCliSubcommandAdd(actual) { if (actual) { this.trackCliSubcommand({ subcommand: "add", value: actual }); } } trackCliSubcommandSwitch(actual) { if (actual) { this.trackCliSubcommand({ subcommand: "switch", value: actual }); } } trackCliSubcommandList(actual) { if (actual) { this.trackCliSubcommand({ subcommand: "list", value: actual }); } } }; } }); // src/commands/teams/index.ts var teams_exports = {}; __export3(teams_exports, { default: () => teams }); async function teams(client2) { const telemetry2 = new TeamsTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArgs; const flagsSpecification = getFlagsSpecification(teamsCommand.options); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification, { permissive: true }); } catch (error3) { printError(error3); return 1; } if (parsedArgs.args[0] === "switch") { parsedArgs.args.unshift("teams"); } const { subcommand, args: args2, subcommandOriginal } = getSubcommand( parsedArgs.args.slice(1), COMMAND_CONFIG20 ); const needHelp = parsedArgs.flags["--help"]; if (!subcommand && needHelp) { telemetry2.trackCliFlagHelp("teams", subcommand); output_manager_default.print(help(teamsCommand, { columns: client2.stderr.columns })); return 2; } function printHelp(command) { output_manager_default.print( help(command, { parent: teamsCommand, columns: client2.stderr.columns }) ); } switch (subcommand) { case "list": { if (needHelp) { telemetry2.trackCliFlagHelp("teams", subcommandOriginal); printHelp(listSubcommand11); return 2; } telemetry2.trackCliSubcommandList(subcommandOriginal); return list9(client2, args2); } case "switch": { if (needHelp) { telemetry2.trackCliFlagHelp("teams", subcommandOriginal); printHelp(switchSubcommand); return 2; } telemetry2.trackCliSubcommandSwitch(subcommandOriginal); return change(client2, args2); } case "add": { if (needHelp) { telemetry2.trackCliFlagHelp("teams", subcommandOriginal); printHelp(addSubcommand8); return 2; } telemetry2.trackCliSubcommandAdd(subcommandOriginal); return add8(client2); } case "invite": { if (needHelp) { telemetry2.trackCliFlagHelp("teams", subcommandOriginal); printHelp(inviteSubcommand); return 2; } telemetry2.trackCliSubcommandInvite(subcommandOriginal); return invite(client2, args2); } default: { output_manager_default.error( "Please specify a valid subcommand: add | ls | switch | invite" ); output_manager_default.print(help(teamsCommand, { columns: client2.stderr.columns })); return 2; } } } var COMMAND_CONFIG20; var init_teams2 = __esm({ "src/commands/teams/index.ts"() { "use strict"; init_list14(); init_add14(); init_switch2(); init_invite2(); init_get_args(); init_command39(); init_help(); init_get_flags_specification(); init_error2(); init_teams(); init_output_manager(); init_get_subcommand(); COMMAND_CONFIG20 = { list: ["ls", "list"], switch: ["switch", "change"], add: ["create", "add"], invite: ["invite"] }; } }); // src/commands/telemetry/status.ts async function status2(client2) { const enabled = client2.config.telemetry?.enabled !== false; const status3 = enabled ? import_chalk144.default.green("Enabled") : import_chalk144.default.red("Disabled"); output_manager_default.print("\n"); output_manager_default.log(`${import_chalk144.default.bold("Telemetry status")}: ${status3} `); const learnMoreMessage = ` Learn more: ${import_chalk144.default.cyan("https://vercel.com/docs/cli/about-telemetry")}`; if (enabled) { output_manager_default.log(`You have opted in to Vercel CLI telemetry${learnMoreMessage}`); } else { output_manager_default.log("You have opted out of Vercel CLI telemetry"); output_manager_default.log( `No data will be collected from your machine${learnMoreMessage}` ); } return 0; } var import_chalk144; var init_status4 = __esm({ "src/commands/telemetry/status.ts"() { "use strict"; import_chalk144 = __toESM3(require_source(), 1); init_output_manager(); } }); // src/commands/telemetry/enable.ts async function enable2(client2) { client2.config = { ...client2.config, telemetry: { ...client2.config.telemetry, enabled: true } }; writeToConfigFile(client2.config); await status2(client2); return 0; } var init_enable2 = __esm({ "src/commands/telemetry/enable.ts"() { "use strict"; init_files(); init_status4(); } }); // src/commands/telemetry/disable.ts async function disable2(client2) { client2.config = { ...client2.config, telemetry: { ...client2.config.telemetry, enabled: false } }; writeToConfigFile(client2.config); await status2(client2); return 0; } var init_disable2 = __esm({ "src/commands/telemetry/disable.ts"() { "use strict"; init_files(); init_status4(); } }); // src/commands/telemetry/flush.ts async function flush(client2, args2) { const url3 = process.env.VERCEL_TELEMETRY_BRIDGE_URL || "https://telemetry.vercel.com/api/vercel-cli/v1/events"; const { headers, body } = JSON.parse(args2[0]); try { const res = await client2.fetch(url3, { method: "POST", headers, body: JSON.stringify(body), json: false }); const status3 = res.status; const cliTracked = res.headers.get("x-vercel-cli-tracked") || ""; const wasRecorded = cliTracked === "1"; if (status3 === 204) { if (wasRecorded) { process.stderr.write("Telemetry event tracked"); } else { process.stderr.write("Telemetry event ignored"); } } else { process.stderr.write( `Failed to send telemetry events. Unexpected response from telemetry server: ${status3}` ); } return 0; } catch (error3) { if (error3 instanceof Error) { process.stderr.write(`Failed to send telemetry events. ${error3.message}`); } return 1; } } var init_flush = __esm({ "src/commands/telemetry/flush.ts"() { "use strict"; } }); // src/util/telemetry/commands/telemetry/index.ts var TelemetryTelemetryClient; var init_telemetry2 = __esm({ "src/util/telemetry/commands/telemetry/index.ts"() { "use strict"; init_telemetry(); TelemetryTelemetryClient = class extends TelemetryClient { trackCliSubcommandStatus(actual) { this.trackCliSubcommand({ subcommand: "status", value: actual }); } trackCliSubcommandEnable(actual) { this.trackCliSubcommand({ subcommand: "enable", value: actual }); } // eslint-disable-next-line @typescript-eslint/no-unused-vars trackCliSubcommandDisable(_) { } // eslint-disable-next-line @typescript-eslint/no-unused-vars trackCliSubcommandFlush(_) { } }; } }); // src/commands/telemetry/index.ts var telemetry_exports = {}; __export3(telemetry_exports, { default: () => telemetry }); async function telemetry(client2) { const telemetryClient = new TelemetryTelemetryClient({ opts: { store: client2.telemetryEventStore } }); let parsedArguments; const flagsSpecification = getFlagsSpecification(telemetryCommand.options); try { parsedArguments = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (err) { printError(err); return 1; } const { subcommand, args: args2, subcommandOriginal } = getSubcommand( parsedArguments.args.slice(1), COMMAND_CONFIG21 ); const needHelp = parsedArguments.flags["--help"]; function printHelp(command) { output_manager_default.print( help(command, { columns: client2.stderr.columns, parent: telemetryCommand }) ); } if (!subcommand && needHelp) { telemetryClient.trackCliFlagHelp("telemetry", subcommand); output_manager_default.print(help(telemetryCommand, { columns: client2.stderr.columns })); return 2; } switch (subcommand) { case "status": if (needHelp) { telemetryClient.trackCliFlagHelp("telemetry", subcommandOriginal); printHelp(statusSubcommand4); return 2; } telemetryClient.trackCliSubcommandStatus(subcommandOriginal); return status2(client2); case "flush": return flush(client2, args2); case "enable": if (needHelp) { telemetryClient.trackCliFlagHelp("telemetry", subcommandOriginal); printHelp(enableSubcommand2); return 2; } telemetryClient.trackCliSubcommandEnable(subcommandOriginal); return enable2(client2); case "disable": if (needHelp) { telemetryClient.trackCliFlagHelp("telemetry", subcommandOriginal); printHelp(disableSubcommand2); return 2; } return disable2(client2); default: { const errorMessage = parsedArguments.args.length !== 2 ? "Invalid number of arguments" : "Invalid subcommand"; output_manager_default.print( `${import_chalk145.default.red("Error")}: ${errorMessage}. See help instructions for usage: ` ); output_manager_default.print(help(telemetryCommand, { columns: client2.stderr.columns })); return 2; } } } var import_chalk145, COMMAND_CONFIG21; var init_telemetry3 = __esm({ "src/commands/telemetry/index.ts"() { "use strict"; init_error2(); init_get_args(); init_get_subcommand(); init_help(); init_status4(); init_enable2(); init_disable2(); init_flush(); init_command40(); init_get_flags_specification(); init_telemetry2(); import_chalk145 = __toESM3(require_source(), 1); init_output_manager(); init_commands(); COMMAND_CONFIG21 = { status: getCommandAliases(statusSubcommand4), enable: getCommandAliases(enableSubcommand2), disable: getCommandAliases(disableSubcommand2), flush: getCommandAliases(flushSubcommand) }; } }); // src/util/telemetry/commands/upgrade/index.ts var UpgradeTelemetryClient; var init_upgrade2 = __esm({ "src/util/telemetry/commands/upgrade/index.ts"() { "use strict"; init_telemetry(); UpgradeTelemetryClient = class extends TelemetryClient { trackCliFlagDryRun(dryRun) { if (dryRun) { this.trackCliFlag("dry-run"); } } trackCliFlagJson(json) { if (json) { this.trackCliFlag("json"); } } }; } }); // src/commands/upgrade/index.ts var upgrade_exports = {}; __export3(upgrade_exports, { default: () => upgrade }); async function upgrade(client2) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(upgradeCommand.options); const telemetry2 = new UpgradeTelemetryClient({ opts: { store: client2.telemetryEventStore } }); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("upgrade"); output_manager_default.print(help(upgradeCommand, { columns: client2.stderr.columns })); return 0; } const dryRun = parsedArgs.flags["--dry-run"]; const formatResult = validateJsonOutput(parsedArgs.flags); if (!formatResult.valid) { output_manager_default.error(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; telemetry2.trackCliFlagDryRun(dryRun); telemetry2.trackCliOptionFormat(parsedArgs.flags["--format"]); telemetry2.trackCliFlagJson(parsedArgs.flags["--json"]); if (dryRun || asJson) { const updateCommand = await getUpdateCommand(); const global3 = await isGlobal(); if (asJson) { const jsonOutput = { currentVersion: pkg_default.version, installationType: global3 ? "global" : "local", upgradeCommand: updateCommand }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } else { output_manager_default.print(`Current version: ${pkg_default.version} `); output_manager_default.print(`Installation type: ${global3 ? "global" : "local"} `); output_manager_default.print(`Upgrade command: ${updateCommand} `); } return 0; } return executeUpgrade(); } var init_upgrade3 = __esm({ "src/commands/upgrade/index.ts"() { "use strict"; init_help(); init_command41(); init_get_args(); init_get_flags_specification(); init_upgrade(); init_get_update_command(); init_error2(); init_output_format(); init_output_manager(); init_pkg(); init_upgrade2(); } }); // src/util/telemetry/commands/whoami/index.ts var WhoamiTelemetryClient; var init_whoami = __esm({ "src/util/telemetry/commands/whoami/index.ts"() { "use strict"; init_telemetry(); WhoamiTelemetryClient = class extends TelemetryClient { }; } }); // src/commands/whoami/index.ts var whoami_exports = {}; __export3(whoami_exports, { default: () => whoami }); async function whoami(client2) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(whoamiCommand.options); const telemetry2 = new WhoamiTelemetryClient({ opts: { store: client2.telemetryEventStore } }); try { parsedArgs = parseArguments(client2.argv.slice(2), flagsSpecification); } catch (error3) { printError(error3); return 1; } if (parsedArgs.flags["--help"]) { telemetry2.trackCliFlagHelp("whoami"); output_manager_default.print(help(whoamiCommand, { columns: client2.stderr.columns })); return 0; } const formatResult = validateJsonOutput(parsedArgs.flags); if (!formatResult.valid) { output_manager_default.error(formatResult.error); return 1; } const asJson = formatResult.jsonOutput; telemetry2.trackCliOptionFormat(parsedArgs.flags["--format"]); const { contextName, user } = await getScope(client2, { getTeam: false }); if (asJson) { const jsonOutput = { username: user.username, email: user.email, name: user.name }; client2.stdout.write(`${JSON.stringify(jsonOutput, null, 2)} `); } else if (client2.stdout.isTTY) { output_manager_default.log(contextName); } else { client2.stdout.write(`${contextName} `); } return 0; } var init_whoami2 = __esm({ "src/commands/whoami/index.ts"() { "use strict"; init_help(); init_command42(); init_get_scope(); init_get_args(); init_get_flags_specification(); init_error2(); init_output_manager(); init_whoami(); init_output_format(); } }); // src/index.ts var import_error_utils38 = __toESM3(require_dist2(), 1); var import_fs_extra24 = __toESM3(require_lib(), 1); var import_chalk146 = __toESM3(require_source(), 1); var import_epipebomb = __toESM3(require_epipebomb(), 1); import { join as join25 } from "path"; import { existsSync as existsSync5 } from "fs"; // src/util/get-latest-version/index.ts var import_semver = __toESM3(require_semver(), 1); var import_xdg_app_paths = __toESM3(require_xdg_app_paths(), 1); var import_fs_extra = __toESM3(require_lib(), 1); init_output_manager(); import { dirname, parse as parsePath, resolve as resolvePath } from "path"; import { spawn } from "child_process"; function getLatestVersion({ cacheDir = (0, import_xdg_app_paths.default)("com.vercel.cli").cache(), distTag = "latest", notifyInterval = 1e3 * 60 * 60 * 24 * 3, // 3 days pkg, updateCheckInterval = 1e3 * 60 * 60 * 24 // 1 day }) { if (!pkg || typeof pkg !== "object" || !pkg.name || typeof pkg.name !== "string") { throw new TypeError("Expected package to be an object with a package name"); } const cacheFile = resolvePath( cacheDir, "package-updates", `${pkg.name}-${distTag}.json` ); let cache; try { cache = (0, import_fs_extra.readJSONSync)(cacheFile); } catch (err) { if (err.code !== "ENOENT") { output_manager_default?.debug(`Error reading latest package cache file: ${err}`); } } if (!cache || !cache.expireAt || cache.expireAt <= Date.now()) { spawnWorker({ cacheFile, distTag, name: pkg.name, updateCheckInterval }); } if (cache) { const shouldNotify = !cache.notifyAt || cache.notifyAt <= Date.now(); let updateAvailable = false; if (cache.version && pkg.version) { updateAvailable = import_semver.default.lt(pkg.version, cache.version); } if (shouldNotify && updateAvailable) { cache.notifyAt = Date.now() + notifyInterval; (0, import_fs_extra.outputJSONSync)(cacheFile, cache); return cache.version; } } } function spawnWorker(payload) { let dir = dirname(__filename); let script = resolvePath(dir, "dist", "get-latest-worker.cjs"); const { root } = parsePath(dir); while (!(0, import_fs_extra.existsSync)(script)) { dir = dirname(dir); if (dir === root) { output_manager_default?.debug("Failed to find the get latest worker script!"); return; } script = resolvePath(dir, "dist", "get-latest-worker.cjs"); } output_manager_default?.debug(`Spawning ${script}`); const args2 = [script]; if (output_manager_default?.debugEnabled) { args2.push("--debug"); } const worker = spawn(process.execPath, args2, { stdio: ["inherit", "inherit", "inherit", "ipc"], windowsHide: true }); const workerReadyTimer = setTimeout(() => worker.kill(), 2e3); const onClose = (code2) => { output_manager_default?.debug(`Get latest worker exited (code ${code2})`); }; worker.on("close", onClose); worker.on("error", (err) => { output_manager_default?.log(`Failed to spawn get latest worker: ${err.stack}`); }); worker.once("message", () => { clearTimeout(workerReadyTimer); worker.removeListener("close", onClose); worker.send(payload); worker.unref(); }); } // src/index.ts import { URL as URL10 } from "url"; // src/util/get-sentry.ts var sentry; function getSentry() { if (!sentry) { const Sentry = require_cjs5(); const { SENTRY_DSN: SENTRY_DSN2 } = (init_constants(), __toCommonJS3(constants_exports)); const pkg = (init_pkg(), __toCommonJS3(pkg_exports)).default; Sentry.init({ dsn: SENTRY_DSN2, release: `vercel-cli@${pkg.version}`, environment: "stable", autoSessionTracking: false }); sentry = Sentry; } return sentry; } // src/index.ts init_humanize_path(); init_commands(); // src/util/handle-command-typo.ts init_did_you_mean(); init_param(); init_output_manager(); function handleCommandTypo({ command, availableCommands, threshold = 0.7 }) { if (!command || command.startsWith("-")) { return false; } const suggestion = did_you_mean_default(command, availableCommands, threshold); if (suggestion) { output_manager_default.error( `${param(command)} is not a valid target directory or subcommand. Did you mean ${param(suggestion)}?` ); return true; } return false; } // src/index.ts init_pkg(); init_cmd(); init_param(); init_highlight(); init_get_args(); init_get_user(); init_get_teams(); init_client(); init_error2(); // src/util/report-error.ts init_get_scope(); init_get_args(); var import_error_utils8 = __toESM3(require_dist2(), 1); async function reportError(sentry2, client2, error3) { if (ignoreError(error3)) { return; } let user; let team; let scopeError; try { ({ user, team } = await getScope(client2)); } catch (err) { if ((0, import_error_utils8.isError)(err)) { scopeError = err; } } sentry2.withScope((scope) => { if (user) { const spec = { email: user.email, id: user.id, username: user.username, name: user.name }; scope.setUser(spec); } if (team) { scope.setTag("currentTeam", team.id); } if (scopeError) { scope.setExtra("scopeError", { name: scopeError.name, message: scopeError.message, stack: scopeError.stack }); } let args2; let argsError; try { args2 = getArgs(process.argv.slice(2), {}); } catch (err) { if ((0, import_error_utils8.isError)(err)) { argsError = err; } } if (args2) { const flags = ["--env", "--build-env", "--token"]; for (const flag of flags) { if (args2[flag]) args2[flag] = "REDACTED"; } if (args2._.length >= 4 && args2._[0].startsWith("secret") && args2._[1] === "add") { args2._[3] = "REDACTED"; } scope.setExtra("args", args2); } else { let msg = "Unable to parse args"; if (argsError) { msg += `: ${argsError}`; } scope.setExtra("args", msg); } scope.setExtra("node", { execPath: process.execPath, version: process.version, platform: process.platform }); sentry2.captureException(error3); }); const sentryClient = sentry2.getCurrentHub().getClient(); if (sentryClient) { await sentryClient.close(); } } function ignoreError(error3) { return (0, import_error_utils8.isError)(error3) && error3.message.includes("uv_cwd"); } // src/util/get-config.ts var import_client2 = __toESM3(require_dist7(), 1); init_errors_ts(); init_humanize_path(); init_read_json_file(); var import_error_utils10 = __toESM3(require_dist2(), 1); init_output_manager(); import path3 from "path"; var config; async function getConfig(configFile) { if (config) { return config; } let localPath; try { localPath = process.cwd(); } catch (err) { if ((0, import_error_utils10.isErrnoException)(err) && err.code === "ENOENT") { return new WorkingDirectoryDoesNotExist(); } throw err; } if (configFile) { const localFilePath = path3.resolve(localPath, configFile); output_manager_default.debug( `Found config in provided --local-config path ${localFilePath}` ); const localConfig = await readJSONFile(localFilePath); if (localConfig instanceof CantParseJSONFile) { return localConfig; } if (localConfig === null) { return new CantFindConfig([humanizePath(localFilePath)]); } config = localConfig; config[import_client2.fileNameSymbol] = configFile; return config; } const vercelFilePath = path3.resolve(localPath, "vercel.json"); const nowFilePath = path3.resolve(localPath, "now.json"); const [vercelConfig, nowConfig] = await Promise.all([ readJSONFile(vercelFilePath), readJSONFile(nowFilePath) ]); if (vercelConfig instanceof CantParseJSONFile) { return vercelConfig; } if (nowConfig instanceof CantParseJSONFile) { return nowConfig; } if (vercelConfig && nowConfig) { return new ConflictingConfigFiles([vercelFilePath, nowFilePath]); } if (vercelConfig !== null) { output_manager_default.debug(`Found config in file "${vercelFilePath}"`); config = vercelConfig; config[import_client2.fileNameSymbol] = "vercel.json"; return config; } if (nowConfig !== null) { output_manager_default.debug(`Found config in file "${nowFilePath}"`); config = nowConfig; config[import_client2.fileNameSymbol] = "now.json"; return config; } return new CantFindConfig([vercelFilePath, nowFilePath].map(humanizePath)); } // src/index.ts init_files(); init_global_path(); // src/util/config/get-default.ts var defaultGlobalConfig = { "// Note": "This is your Vercel config file. For more information see the global configuration documentation.", "// Docs": "https://vercel.com/docs/projects/project-configuration/global-configuration#config.json" }; var defaultAuthConfig = { "// Note": "This is your Vercel credentials file. DO NOT SHARE!", "// Docs": "https://vercel.com/docs/projects/project-configuration/global-configuration#auth.json" }; // src/index.ts init_errors_ts(); init_errors_ts(); init_get_update_command(); init_upgrade(); init_pkg_name(); init_login2(); var import_proxy_agent = __toESM3(require_dist19(), 1); init_box(); // src/util/extension/exec.ts var import_which = __toESM3(require_lib12(), 1); var import_execa = __toESM3(require_execa(), 1); var import_async_listen2 = __toESM3(require_dist6(), 1); import { dirname as dirname4 } from "path"; import { scanParentDirs as scanParentDirs2, walkParentDirs } from "@vercel/build-utils"; // src/util/extension/proxy.ts var import_node_fetch3 = __toESM3(require_lib7(), 1); var import_node_utils = __toESM3(require_dist20(), 1); init_output_manager(); import { createServer } from "http"; var toHeaders = (0, import_node_utils.buildToHeaders)({ Headers: import_node_fetch3.Headers }); function createProxy(client2) { return createServer(async (req, res) => { try { const headers = toHeaders(req.headers); headers.delete("host"); const fetchRes = await client2.fetch(req.url || "/", { headers, method: req.method, body: req.method === "GET" || req.method === "HEAD" ? void 0 : req, useCurrentTeam: false, json: false }); res.statusCode = fetchRes.status; const outgoingHeaders = (0, import_node_utils.toOutgoingHeaders)( fetchRes.headers ); delete outgoingHeaders["content-encoding"]; delete outgoingHeaders["content-length"]; (0, import_node_utils.mergeIntoServerResponse)(outgoingHeaders, res); fetchRes.body.pipe(res); } catch (err) { output_manager_default.prettyError(err); if (!res.headersSent) { res.statusCode = 500; res.end("Unexpected error during API call"); } } }); } // src/util/extension/exec.ts init_output_manager(); var import_error_utils11 = __toESM3(require_dist2(), 1); async function execExtension(client2, name, args2, cwd) { const { debug: debug2, error: error3 } = output_manager_default; const extensionCommand = `vercel-${name}`; const { packageJsonPath, lockfilePath } = await scanParentDirs2(cwd); const baseFile = lockfilePath || packageJsonPath; let extensionPath = null; if (baseFile) { extensionPath = await walkParentDirs({ base: dirname4(baseFile), start: cwd, filename: `node_modules/.bin/${extensionCommand}` }); } if (!extensionPath) { extensionPath = import_which.default.sync(extensionCommand, { nothrow: true }); } if (!extensionPath) { debug2(`failed to find extension command with name "${extensionCommand}"`); throw new ENOENT(extensionCommand); } debug2(`invoking extension: ${extensionPath}`); const proxy = createProxy(client2); proxy.once("close", () => { debug2(`extension proxy server shut down`); }); const proxyUrl = await (0, import_async_listen2.listen)(proxy, { port: 0, host: "127.0.0.1" }); const VERCEL_API = proxyUrl.href.replace(/\/$/, ""); debug2(`extension proxy server listening at ${VERCEL_API}`); let exitCode2 = 0; try { const result = await (0, import_execa.default)(extensionPath, args2, { cwd, stdio: "inherit", reject: false, env: { ...process.env, VERCEL_API // TODO: // VERCEL_SCOPE // VERCEL_DEBUG // VERCEL_HELP } }); exitCode2 = result.exitCode; debug2(`extension command exited with code ${exitCode2}`); } catch (err) { error3( `Vercel CLI extension ${JSON.stringify(extensionCommand)} failed: ${(0, import_error_utils11.errorToString)(err)}` ); exitCode2 = 1; } finally { proxy.close(); } return exitCode2; } var ENOENT = class extends Error { constructor(command) { super(`Command "${command}" not found`); this.code = "ENOENT"; } }; // src/index.ts init_telemetry(); // src/util/telemetry/root.ts var import_ci_info = __toESM3(require_ci_info(), 1); init_telemetry(); var RootTelemetryClient = class extends TelemetryClient { trackCliExtension() { this.trackExtension(); } trackCliDefaultDeploy(defaultDeploy) { if (defaultDeploy) { this.trackDefaultDeploy(); } } trackCliCommandAlias(actual) { this.trackCliCommand({ command: "alias", value: actual }); } trackCliCommandApi(actual) { this.trackCliCommand({ command: "api", value: actual }); } trackCliCommandBisect(actual) { this.trackCliCommand({ command: "bisect", value: actual }); } trackCliCommandBlob(actual) { this.trackCliCommand({ command: "blob", value: actual }); } trackCliCommandBuild(actual) { this.trackCliCommand({ command: "build", value: actual }); } trackCliCommandCache(actual) { this.trackCliCommand({ command: "cache", value: actual }); } trackCliCommandCerts(actual) { this.trackCliCommand({ command: "certs", value: actual }); } trackCliCommandCurl(actual) { this.trackCliCommand({ command: "curl", value: actual }); } trackCliCommandDeploy(actual) { this.trackCliCommand({ command: "deploy", value: actual }); } trackCliCommandDev(actual) { this.trackCliCommand({ command: "dev", value: actual }); } trackCliCommandDomains(actual) { this.trackCliCommand({ command: "domains", value: actual }); } trackCliCommandDns(actual) { this.trackCliCommand({ command: "dns", value: actual }); } trackCliCommandEnv(actual) { this.trackCliCommand({ command: "env", value: actual }); } trackCliCommandGit(actual) { this.trackCliCommand({ command: "git", value: actual }); } trackCliCommandGuidance(actual) { this.trackCliCommand({ command: "guidance", value: actual }); } trackCliCommandHelp(actual) { this.trackCliCommand({ command: "help", value: actual }); } trackCliCommandHttpstat(actual) { this.trackCliCommand({ command: "httpstat", value: actual }); } trackCliCommandInit(actual) { this.trackCliCommand({ command: "init", value: actual }); } trackCliCommandInspect(actual) { this.trackCliCommand({ command: "inspect", value: actual }); } trackCliCommandInstall(actual) { this.trackCliCommand({ command: "install", value: actual }); } trackCliCommandIntegration(actual) { this.trackCliCommand({ command: "integration", value: actual }); } trackCliCommandIntegrationResource(actual) { this.trackCliCommand({ command: "integration-resource", value: actual }); } trackCliCommandLink(actual) { this.trackCliCommand({ command: "link", value: actual }); } trackCliCommandList(actual) { this.trackCliCommand({ command: "list", value: actual }); } trackCliCommandLogin(actual) { this.trackCliCommand({ command: "login", value: actual }); } trackCliCommandLogout(actual) { this.trackCliCommand({ command: "logout", value: actual }); } trackCliCommandLogs(actual) { this.trackCliCommand({ command: "logs", value: actual }); } trackCliCommandLogsv2(actual) { this.trackCliCommand({ command: "logsv2", value: actual }); } trackCliCommandMicrofrontends(actual) { this.trackCliCommand({ command: "microfrontends", value: actual }); } trackCliCommandOpen(actual) { this.trackCliCommand({ command: "open", value: actual }); } trackCliCommandProject(actual) { this.trackCliCommand({ command: "project", value: actual }); } trackCliCommandPromote(actual) { this.trackCliCommand({ command: "promote", value: actual }); } trackCliCommandPull(actual) { this.trackCliCommand({ command: "pull", value: actual }); } trackCliCommandRollback(actual) { this.trackCliCommand({ command: "rollback", value: actual }); } trackCliCommandRollingRelease(actual) { this.trackCliCommand({ command: "rolling-release", value: actual }); } trackCliCommandRedeploy(actual) { this.trackCliCommand({ command: "redeploy", value: actual }); } trackCliCommandRedirects(actual) { this.trackCliCommand({ command: "redirects", value: actual }); } trackCliCommandRemove(actual) { this.trackCliCommand({ command: "remove", value: actual }); } trackCliCommandTarget(actual) { this.trackCliCommand({ command: "target", value: actual }); } trackCliCommandTeams(actual) { this.trackCliCommand({ command: "teams", value: actual }); } trackCliCommandTelemetry(actual) { this.trackCliCommand({ command: "telemetry", value: actual }); } trackCliCommandWhoami(actual) { this.trackCliCommand({ command: "whoami", value: actual }); } trackCliCommandUpgrade(actual) { this.trackCliCommand({ command: "upgrade", value: actual }); } trackCPUs() { super.trackCPUs(); } trackAgenticUse(agent) { super.trackAgenticUse(agent); } trackArch() { super.trackArch(); } trackPlatform() { super.trackPlatform(); } trackCIVendorName() { this.trackCI(import_ci_info.default.id); } trackVersion(version2) { super.trackVersion(version2); } trackCliOptionCwd(cwd) { if (cwd) { this.trackCliOption({ option: "cwd", value: this.redactedValue }); } } trackCliOptionLocalConfig(localConfig) { if (localConfig) { this.trackCliOption({ option: "local-config", value: this.redactedValue }); } } trackCliOptionGlobalConfig(globalConfig) { if (globalConfig) { this.trackCliOption({ option: "global-config", value: this.redactedValue }); } } trackCliOptionScope(scope) { if (scope) { this.trackCliOption({ option: "scope", value: this.redactedValue }); } } trackCliOptionToken(token) { if (token) { this.trackCliOption({ option: "token", value: this.redactedValue }); } } trackCliOptionTeam(team) { if (team) { this.trackCliOption({ option: "team", value: this.redactedValue }); } } trackCliOptionApi(api2) { if (api2) { this.trackCliOption({ option: "api", value: this.redactedValue }); } } trackCliFlagDebug(debug2) { if (debug2) { this.trackCliFlag("debug"); } } trackCliFlagNoColor(noColor) { if (noColor) { this.trackCliFlag("no-color"); } } }; // src/args.ts var import_chalk29 = __toESM3(require_source(), 1); init_pkg_name(); var help2 = () => ` ${import_chalk29.default.bold(`${logo} ${packageName}`)} [options] ${import_chalk29.default.dim("For deploy command help, run `vercel deploy --help`")} ${import_chalk29.default.dim("Commands:")} ${import_chalk29.default.dim("Basic")} deploy [path] Performs a deployment ${import_chalk29.default.bold( "(default)" )} build Build the project locally into './vercel/output' cache [cmd] Manages cache for your current Project dev Start a local development server env Manages the Environment Variables for your current Project git Manage Git provider repository for your current Project help [cmd] Displays complete help for [cmd] init [example] Initialize an example project inspect [id] Displays information related to a deployment i | install [name] Install an integration from the Marketplace integration [cmd] Manages your Marketplace integrations link [path] Link local directory to a Vercel Project ls | list [app] Lists deployments login [email] Logs into your account or creates a new one logout Logs out of your account open Opens the current project in the Vercel Dashboard promote [url|id] Promote an existing deployment to current pull [path] Pull your Project Settings from the cloud redeploy [url|id] Rebuild and deploy a previous deployment. rollback [url|id] Quickly revert back to a previous deployment switch [scope] Switches between different scopes ${import_chalk29.default.dim("Advanced")} alias [cmd] Manages your domain aliases bisect Use binary search to find the deployment that introduced a bug certs [cmd] Manages your SSL certificates curl [path] cURL requests to your linked project's deployment [beta] dns [name] Manages your DNS records domains [name] Manages your domain names logs [url] Displays the logs for a deployment microfrontends Manages your microfrontends projects Manages your Projects redirects [cmd] Manages redirects for your current Project rm | remove [id] Removes a deployment teams Manages your teams upgrade Upgrade the Vercel CLI to the latest version whoami Shows the username of the currently logged in user blob [cmd] Manages your Blob stores and files ${import_chalk29.default.dim("Global Options:")} -h, --help Output usage information -v, --version Output the version number --cwd Current working directory -A ${import_chalk29.default.bold.underline("FILE")}, --local-config=${import_chalk29.default.bold.underline( "FILE" )} Path to the local ${"`vercel.json`"} file -Q ${import_chalk29.default.bold.underline("DIR")}, --global-config=${import_chalk29.default.bold.underline( "DIR" )} Path to the global ${"`.vercel`"} directory -d, --debug Debug mode [off] --no-color No color mode [off] -S, --scope Set a custom scope -t ${import_chalk29.default.underline("TOKEN")}, --token=${import_chalk29.default.underline( "TOKEN" )} Login token ${import_chalk29.default.dim("Examples:")} ${import_chalk29.default.gray("\u2013")} Deploy the current directory ${import_chalk29.default.cyan(`$ ${packageName}`)} ${import_chalk29.default.gray("\u2013")} Deploy a custom path ${import_chalk29.default.cyan(`$ ${packageName} /usr/src/project`)} ${import_chalk29.default.gray("\u2013")} Deploy with Environment Variables ${import_chalk29.default.cyan(`$ ${packageName} -e NODE_ENV=production`)} ${import_chalk29.default.gray("\u2013")} Show the usage information for the sub command ${import_chalk29.default.dim( "`list`" )} ${import_chalk29.default.cyan(`$ ${packageName} help list`)} `; // src/util/telemetry/check-status.ts init_files(); init_output_manager(); function checkTelemetryStatus({ config: config2 }) { if (config2.telemetry) { return; } if (process.env.VERCEL_TELEMETRY_DISABLED) { return; } output_manager_default.note( "The Vercel CLI now collects telemetry regarding usage of the CLI." ); output_manager_default.log( "This information is used to shape the CLI roadmap and prioritize features." ); output_manager_default.log( "You can learn more, including how to opt-out if you'd not like to participate in this program, by visiting the following URL:" ); output_manager_default.log("https://vercel.com/docs/cli/about-telemetry"); config2.telemetry = { enabled: true }; writeToConfigFile(config2); } // src/index.ts init_output_manager(); // src/util/guidance/check-status.ts init_files(); init_output_manager(); function checkGuidanceStatus({ config: config2 }) { if (!process.env.FF_GUIDANCE_MODE) { return; } if (process.env.CI) { return; } if (process.env.VERCEL_GUIDANCE_DISABLED) { return; } if (config2.guidance) { return; } output_manager_default.note( "The Vercel CLI can suggest common follow-up commands and steps to help guide new users." ); output_manager_default.log("You can disable this feature by running:"); output_manager_default.log("vercel guidance disable"); output_manager_default.log("or by setting VERCEL_GUIDANCE_DISABLED=1"); config2.guidance = { enabled: true }; writeToConfigFile(config2); } // src/index.ts var import_open9 = __toESM3(require_open(), 1); import { determineAgent as determineAgent4 } from "@vercel/detect-agent"; try { process.cwd(); } catch (err) { if ((0, import_error_utils38.isError)(err) && err.message.includes("uv_cwd")) { console.error("Error: The current working directory does not exist."); process.exit(1); } } { const SILENCED_ERRORS = [ "DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead." ]; const originalError = console.error; console.error = (msg) => { const isSilencedError = SILENCED_ERRORS.some( (error3) => typeof msg === "string" && msg.includes(error3) ); if (isSilencedError) { return; } originalError(msg); }; } var VERCEL_DIR4 = global_path_default(); var VERCEL_CONFIG_PATH = getConfigFilePath(); var VERCEL_AUTH_CONFIG_PATH = getAuthConfigFilePath(); var GLOBAL_COMMANDS = /* @__PURE__ */ new Set(["help"]); (0, import_epipebomb.default)(); var client; var handleRejection = async (err) => { if (err) { if (err instanceof Error) { await handleUnexpected(err); } else { output_manager_default.error(`An unexpected rejection occurred ${err}`); await reportError(getSentry(), client, err); } } else { output_manager_default.error("An unexpected empty rejection occurred"); } process.exit(1); }; var handleUnexpected = async (err) => { const { message: message2 } = err; if (message2.includes("sentry") && message2.includes("ENOTFOUND")) { output_manager_default.debug(`Sentry is not reachable: ${err}`); return; } output_manager_default.error(`An unexpected error occurred! ${err.stack}`); await reportError(getSentry(), client, err); process.exit(1); }; process.on("unhandledRejection", handleRejection); process.on("uncaughtException", handleUnexpected); var { isTTY: isTTY2 } = process.stdout; var apiUrl = "https://api.vercel.com"; var main18 = async () => { if (process.env.FORCE_TTY === "1") { isTTY2 = true; process.stdout.isTTY = true; process.stdin.isTTY = true; } let parsedArgs; try { parsedArgs = parseArguments( process.argv, { "--version": Boolean, "-v": "--version" }, { permissive: true } ); const isDebugging = parsedArgs.flags["--debug"]; const isNoColor = parsedArgs.flags["--no-color"]; output_manager_default.initialize({ debug: isDebugging, noColor: isNoColor }); } catch (err) { printError(err); return 1; } const localConfigPath = parsedArgs.flags["--local-config"]; let localConfig = await getConfig(localConfigPath); if (localConfig instanceof CantParseJSONFile) { output_manager_default.error(`Couldn't parse JSON file ${localConfig.meta.file}.`); return 1; } if (localConfig instanceof CantFindConfig) { if (localConfigPath) { output_manager_default.error( `Couldn't find a project configuration file at ${localConfig.meta.paths.join( " or\n " )}` ); return 1; } else { localConfig = void 0; } } if (localConfig instanceof Error) { output_manager_default.prettyError(localConfig); return 1; } const targetOrSubcommand = parsedArgs.args[2]; const subSubCommand = parsedArgs.args[3]; const betaCommands = ["api", "curl"]; if (betaCommands.includes(targetOrSubcommand)) { output_manager_default.print( `${import_chalk146.default.grey( `${getTitleName()} CLI ${pkg_default.version} | ${import_chalk146.default.bold(targetOrSubcommand)} is in beta \u2014 https://vercel.com/feedback` )} ` ); } else { output_manager_default.print(`${import_chalk146.default.grey(`${getTitleName()} CLI ${pkg_default.version}`)} `); } if (!targetOrSubcommand && parsedArgs.flags["--version"]) { console.log(pkg_default.version); return 0; } const bareHelpOption = !targetOrSubcommand && parsedArgs.flags["--help"]; const bareHelpSubcommand = targetOrSubcommand === "help" && !subSubCommand; if (bareHelpOption || bareHelpSubcommand) { output_manager_default.print(help2()); return 0; } try { await (0, import_fs_extra24.mkdirp)(VERCEL_DIR4); } catch (err) { output_manager_default.error( `An unexpected error occurred while trying to create the global directory "${humanizePath( VERCEL_DIR4 )}" ${(0, import_error_utils38.errorToString)(err)}` ); return 1; } let config2; try { config2 = readConfigFile(); } catch (err) { if ((0, import_error_utils38.isErrnoException)(err) && err.code === "ENOENT") { config2 = defaultGlobalConfig; try { writeToConfigFile(config2); } catch (err2) { output_manager_default.error( `An unexpected error occurred while trying to save the config to "${humanizePath( VERCEL_CONFIG_PATH )}" ${(0, import_error_utils38.errorToString)(err2)}` ); return 1; } } else { output_manager_default.error( `An unexpected error occurred while trying to read the config in "${humanizePath( VERCEL_CONFIG_PATH )}" ${(0, import_error_utils38.errorToString)(err)}` ); return 1; } } let authConfig; try { authConfig = readAuthConfigFile(); } catch (err) { if ((0, import_error_utils38.isErrnoException)(err) && err.code === "ENOENT") { authConfig = defaultAuthConfig; try { writeToAuthConfigFile(authConfig); } catch (err2) { output_manager_default.error( `An unexpected error occurred while trying to write the auth config to "${humanizePath( VERCEL_AUTH_CONFIG_PATH )}" ${(0, import_error_utils38.errorToString)(err2)}` ); return 1; } } else { output_manager_default.error( `An unexpected error occurred while trying to read the auth config in "${humanizePath( VERCEL_AUTH_CONFIG_PATH )}" ${(0, import_error_utils38.errorToString)(err)}` ); return 1; } } const telemetryEventStore = new TelemetryEventStore({ isDebug: process.env.VERCEL_TELEMETRY_DEBUG === "1", config: config2.telemetry }); checkTelemetryStatus({ config: config2 }); if (process.env.FF_GUIDANCE_MODE) { checkGuidanceStatus({ config: config2 }); } const telemetry2 = new RootTelemetryClient({ opts: { store: telemetryEventStore } }); const { isAgent, agent: detectedAgent } = await determineAgent4(); telemetry2.trackAgenticUse(detectedAgent?.name); telemetry2.trackCPUs(); telemetry2.trackPlatform(); telemetry2.trackArch(); telemetry2.trackCIVendorName(); telemetry2.trackVersion(pkg_default.version); telemetry2.trackCliOptionCwd(parsedArgs.flags["--cwd"]); telemetry2.trackCliOptionLocalConfig(parsedArgs.flags["--local-config"]); telemetry2.trackCliOptionGlobalConfig(parsedArgs.flags["--global-config"]); telemetry2.trackCliFlagDebug(parsedArgs.flags["--debug"]); telemetry2.trackCliFlagNoColor(parsedArgs.flags["--no-color"]); telemetry2.trackCliOptionScope(parsedArgs.flags["--scope"]); telemetry2.trackCliOptionToken(parsedArgs.flags["--token"]); telemetry2.trackCliOptionTeam(parsedArgs.flags["--team"]); telemetry2.trackCliOptionApi(parsedArgs.flags["--api"]); if (typeof parsedArgs.flags["--api"] === "string") { apiUrl = parsedArgs.flags["--api"]; } else if (config2 && config2.api) { apiUrl = config2.api; } try { new URL10(apiUrl); } catch (err) { output_manager_default.error(`Please provide a valid URL instead of ${highlight(apiUrl)}.`); return 1; } client = new Client({ agent: new import_proxy_agent.ProxyAgent({ keepAlive: true }), apiUrl, stdin: process.stdin, stdout: process.stdout, stderr: output_manager_default.stream, config: config2, authConfig, localConfig, localConfigPath, argv: process.argv, telemetryEventStore, isAgent, agentName: detectedAgent?.name }); if (parsedArgs.flags["--cwd"]) { client.cwd = parsedArgs.flags["--cwd"]; } const { cwd } = client; let defaultDeploy = false; let subcommand = void 0; let userSuppliedSubCommand = ""; if (targetOrSubcommand) { const targetPath = join25(cwd, targetOrSubcommand); const targetPathExists = existsSync5(targetPath); const subcommandExists = GLOBAL_COMMANDS.has(targetOrSubcommand) || commands.has(targetOrSubcommand); if (targetPathExists && subcommandExists && !parsedArgs.flags["--cwd"] && !process.env.NOW_BUILDER) { output_manager_default.warn( `Did you mean to deploy the subdirectory "${targetOrSubcommand}"? Use \`vc --cwd ${targetOrSubcommand}\` instead.` ); } if (subcommandExists) { output_manager_default.debug(`user supplied known subcommand: "${targetOrSubcommand}"`); subcommand = targetOrSubcommand; userSuppliedSubCommand = targetOrSubcommand; } else { output_manager_default.debug( "user supplied a possible target for deployment or an extension" ); } } else { output_manager_default.debug("user supplied no target, defaulting to deploy"); subcommand = "deploy"; defaultDeploy = true; } if (subcommand === "help") { telemetry2.trackCliCommandHelp("help"); subcommand = subSubCommand || "deploy"; client.argv.push("-h"); } const subcommandsWithoutToken = [ "login", "logout", "help", "init", "build", "telemetry", "upgrade" ]; if (process.env.FF_GUIDANCE_MODE) { subcommandsWithoutToken.push("guidance"); } if ((!authConfig || !authConfig.token) && !client.argv.includes("-h") && !client.argv.includes("--help") && !parsedArgs.flags["--token"] && subcommand && !subcommandsWithoutToken.includes(subcommand)) { if (isTTY2) { output_manager_default.log(`No existing credentials found. Please log in:`); try { const result = await login2(client, { shouldParseArgs: false }); if (result !== 0) return result; } catch (error3) { printError(error3); return 1; } output_manager_default.debug(`Saved credentials in "${humanizePath(VERCEL_DIR4)}"`); } else { output_manager_default.prettyError({ message: `No existing credentials found. Please run ${getCommandName("login")} or pass ${param("--token")}`, link: "https://err.sh/vercel/no-credentials-found" }); return 1; } } if (typeof parsedArgs.flags["--token"] === "string" && subcommand === "switch") { output_manager_default.prettyError({ message: `This command doesn't work with ${param( "--token" )}. Please use ${param("--scope")}.`, link: "https://err.sh/vercel/no-token-allowed" }); return 1; } if (typeof parsedArgs.flags["--token"] === "string") { const token = parsedArgs.flags["--token"]; if (token.length === 0) { output_manager_default.prettyError({ message: `You defined ${param("--token")}, but it's missing a value`, link: "https://err.sh/vercel/missing-token-value" }); return 1; } const invalid = token.match(/(\W)/g); if (invalid) { const notContain = Array.from(new Set(invalid)).sort(); output_manager_default.prettyError({ message: `You defined ${param( "--token" )}, but its contents are invalid. Must not contain: ${notContain.map((c) => JSON.stringify(c)).join(", ")}`, link: "https://err.sh/vercel/invalid-token-value" }); return 1; } client.authConfig = { token, skipWrite: true }; if (client.config && client.config.currentTeam) { delete client.config.currentTeam; } } if (parsedArgs.flags["--team"]) { output_manager_default.warn( `The ${param("--team")} option is deprecated. Please use ${param( "--scope" )} instead.` ); } let targetCommand2 = typeof subcommand === "string" ? commands.get(subcommand) : void 0; const scope = parsedArgs.flags["--scope"] || parsedArgs.flags["--team"] || localConfig?.scope; if (typeof scope === "string" && targetCommand2 !== "login" && targetCommand2 !== "build" && !(targetCommand2 === "teams" && subSubCommand !== "invite")) { let user = null; try { user = await getUser(client); } catch (err) { if (err instanceof Error) { output_manager_default.debug(err.stack || err.toString()); } if ((0, import_error_utils38.isErrnoException)(err) && err.code === "NOT_AUTHORIZED") { output_manager_default.prettyError({ message: `You do not have access to the specified account`, link: "https://err.sh/vercel/scope-not-accessible" }); return 1; } output_manager_default.error( `Not able to load user because of unexpected error: ${(0, import_error_utils38.errorToString)(err)}` ); return 1; } if (user.id === scope || user.email === scope || user.username === scope) { if (user.version === "northstar") { output_manager_default.error("You cannot set your Personal Account as the scope."); return 1; } delete client.config.currentTeam; } else { let teams2 = []; try { teams2 = await getTeams(client); } catch (err) { if ((0, import_error_utils38.isErrnoException)(err) && err.code === "not_authorized") { output_manager_default.prettyError({ message: `You do not have access to the specified team`, link: "https://err.sh/vercel/scope-not-accessible" }); return 1; } if ((0, import_error_utils38.isErrnoException)(err) && err.code === "rate_limited") { output_manager_default.prettyError({ message: "Rate limited. Too many requests to the same endpoint: /teams" }); return 1; } output_manager_default.error("Not able to load teams"); return 1; } const related = teams2 && teams2.find((team) => team.id === scope || team.slug === scope); if (!related) { output_manager_default.prettyError({ message: "The specified scope does not exist", link: "https://err.sh/vercel/scope-not-existent" }); return 1; } client.config.currentTeam = related.id; } } let exitCode2; try { if (!targetCommand2) { targetCommand2 = parsedArgs.args[2]; try { exitCode2 = await execExtension( client, targetCommand2, parsedArgs.args.slice(3), cwd ); telemetry2.trackCliExtension(); } catch (err) { if ((0, import_error_utils38.isErrnoException)(err) && err.code === "ENOENT") { if (handleCommandTypo({ command: targetCommand2, availableCommands: commandNames })) { return 1; } targetCommand2 = subcommand = "deploy"; } else { throw err; } } } if (subcommand) { let func; switch (targetCommand2) { case "alias": telemetry2.trackCliCommandAlias(userSuppliedSubCommand); func = (init_alias2(), __toCommonJS3(alias_exports)).default; break; case "api": telemetry2.trackCliCommandApi(userSuppliedSubCommand); func = (init_api2(), __toCommonJS3(api_exports)).default; break; case "bisect": telemetry2.trackCliCommandBisect(userSuppliedSubCommand); func = (init_bisect2(), __toCommonJS3(bisect_exports)).default; break; case "blob": telemetry2.trackCliCommandBlob(userSuppliedSubCommand); func = (init_blob2(), __toCommonJS3(blob_exports)).default; break; case "build": telemetry2.trackCliCommandBuild(userSuppliedSubCommand); func = (init_build2(), __toCommonJS3(build_exports)).default; break; case "cache": telemetry2.trackCliCommandCache(userSuppliedSubCommand); func = (init_cache2(), __toCommonJS3(cache_exports)).default; break; case "certs": telemetry2.trackCliCommandCerts(userSuppliedSubCommand); func = (init_certs2(), __toCommonJS3(certs_exports)).default; break; case "curl": telemetry2.trackCliCommandCurl(userSuppliedSubCommand); func = (init_curl2(), __toCommonJS3(curl_exports)).default; break; case "deploy": telemetry2.trackCliCommandDeploy(userSuppliedSubCommand); telemetry2.trackCliDefaultDeploy(defaultDeploy); func = (init_deploy2(), __toCommonJS3(deploy_exports)).default; break; case "dev": telemetry2.trackCliCommandDev(userSuppliedSubCommand); func = (init_dev3(), __toCommonJS3(dev_exports)).default; break; case "dns": telemetry2.trackCliCommandDns(userSuppliedSubCommand); func = (init_dns2(), __toCommonJS3(dns_exports)).default; break; case "domains": telemetry2.trackCliCommandDomains(userSuppliedSubCommand); func = (init_domains2(), __toCommonJS3(domains_exports)).default; break; case "env": telemetry2.trackCliCommandEnv(userSuppliedSubCommand); func = (init_env2(), __toCommonJS3(env_exports)).default; break; case "git": telemetry2.trackCliCommandGit(userSuppliedSubCommand); func = (init_git2(), __toCommonJS3(git_exports)).default; break; case "guidance": if (process.env.FF_GUIDANCE_MODE) { telemetry2.trackCliCommandGuidance(userSuppliedSubCommand); func = (init_guidance2(), __toCommonJS3(guidance_exports)).default; break; } else { func = null; break; } case "httpstat": telemetry2.trackCliCommandHttpstat(userSuppliedSubCommand); func = (init_httpstat2(), __toCommonJS3(httpstat_exports)).default; break; case "init": telemetry2.trackCliCommandInit(userSuppliedSubCommand); func = (init_init3(), __toCommonJS3(init_exports)).default; break; case "inspect": telemetry2.trackCliCommandInspect(userSuppliedSubCommand); func = (init_inspect4(), __toCommonJS3(inspect_exports)).default; break; case "install": telemetry2.trackCliCommandInstall(userSuppliedSubCommand); func = (init_install2(), __toCommonJS3(install_exports)).default; break; case "integration": telemetry2.trackCliCommandIntegration(userSuppliedSubCommand); func = (init_integration2(), __toCommonJS3(integration_exports)).default; break; case "integration-resource": telemetry2.trackCliCommandIntegrationResource(userSuppliedSubCommand); func = (init_integration_resource2(), __toCommonJS3(integration_resource_exports)).default; break; case "link": telemetry2.trackCliCommandLink(userSuppliedSubCommand); func = (init_link4(), __toCommonJS3(link_exports2)).default; break; case "list": telemetry2.trackCliCommandList(userSuppliedSubCommand); func = (init_list8(), __toCommonJS3(list_exports)).default; break; case "logs": telemetry2.trackCliCommandLogs(userSuppliedSubCommand); func = (init_logs3(), __toCommonJS3(logs_exports)).default; break; case "logsv2": telemetry2.trackCliCommandLogsv2(userSuppliedSubCommand); func = (init_logsv22(), __toCommonJS3(logsv2_exports)).default; break; case "mcp": func = (init_mcp2(), __toCommonJS3(mcp_exports)).default; break; case "login": telemetry2.trackCliCommandLogin(userSuppliedSubCommand); func = (c) => (init_login2(), __toCommonJS3(login_exports)).default(c, { shouldParseArgs: true }); break; case "logout": telemetry2.trackCliCommandLogout(userSuppliedSubCommand); func = (init_logout2(), __toCommonJS3(logout_exports)).default; break; case "microfrontends": telemetry2.trackCliCommandMicrofrontends(userSuppliedSubCommand); func = (init_microfrontends2(), __toCommonJS3(microfrontends_exports)).default; break; case "open": telemetry2.trackCliCommandOpen(userSuppliedSubCommand); func = (init_open3(), __toCommonJS3(open_exports)).default; break; case "project": telemetry2.trackCliCommandProject(userSuppliedSubCommand); func = (init_project2(), __toCommonJS3(project_exports)).default; break; case "promote": telemetry2.trackCliCommandPromote(userSuppliedSubCommand); func = (init_promote2(), __toCommonJS3(promote_exports)).default; break; case "pull": telemetry2.trackCliCommandPull(userSuppliedSubCommand); func = (init_pull4(), __toCommonJS3(pull_exports)).default; break; case "redeploy": telemetry2.trackCliCommandRedeploy(userSuppliedSubCommand); func = (init_redeploy2(), __toCommonJS3(redeploy_exports)).default; break; case "redirects": telemetry2.trackCliCommandRedirects(userSuppliedSubCommand); func = (init_redirects2(), __toCommonJS3(redirects_exports)).default; break; case "remove": telemetry2.trackCliCommandRemove(userSuppliedSubCommand); func = (init_remove7(), __toCommonJS3(remove_exports)).default; break; case "rollback": telemetry2.trackCliCommandRollback(userSuppliedSubCommand); func = (init_rollback2(), __toCommonJS3(rollback_exports)).default; break; case "rr": case "release": case "rolling-release": telemetry2.trackCliCommandRollingRelease(userSuppliedSubCommand); func = (init_rolling_release2(), __toCommonJS3(rolling_release_exports)).default; break; case "target": telemetry2.trackCliCommandTarget(userSuppliedSubCommand); func = (init_target2(), __toCommonJS3(target_exports)).default; break; case "teams": telemetry2.trackCliCommandTeams(userSuppliedSubCommand); func = (init_teams2(), __toCommonJS3(teams_exports)).default; break; case "telemetry": telemetry2.trackCliCommandTelemetry(userSuppliedSubCommand); func = (init_telemetry3(), __toCommonJS3(telemetry_exports)).default; break; case "upgrade": telemetry2.trackCliCommandUpgrade(userSuppliedSubCommand); func = (init_upgrade3(), __toCommonJS3(upgrade_exports)).default; break; case "whoami": telemetry2.trackCliCommandWhoami(userSuppliedSubCommand); func = (init_whoami2(), __toCommonJS3(whoami_exports)).default; break; default: func = null; break; } if (!func || !targetCommand2) { if (!handleCommandTypo({ command: subcommand, availableCommands: commandNames })) { output_manager_default.error(`The ${param(subcommand)} subcommand does not exist`); } return 1; } if (func.default) { func = func.default; } exitCode2 = await func(client); } } catch (err) { if ((0, import_error_utils38.isErrnoException)(err) && err.code === "ENOTFOUND") { const matches = /getaddrinfo ENOTFOUND (.*)$/.exec(err.message || ""); if (matches && matches[1]) { const hostname3 = matches[1]; output_manager_default.error( `The hostname ${highlight( hostname3 )} could not be resolved. Please verify your internet connectivity and DNS configuration.` ); } if (typeof err.stack === "string") { output_manager_default.debug(err.stack); } return 1; } if ((0, import_error_utils38.isErrnoException)(err) && err.code === "ECONNRESET") { const matches = /request to https:\/\/(.*?)\//.exec(err.message || ""); const hostname3 = matches?.[1]; if (hostname3) { output_manager_default.error( `Connection to ${highlight( hostname3 )} interrupted. Please verify your internet connectivity and DNS configuration.` ); } return 1; } if ((0, import_error_utils38.isErrnoException)(err) && (err.code === "NOT_AUTHORIZED" || err.code === "TEAM_DELETED")) { output_manager_default.prettyError(err); return 1; } if (err instanceof APIError && 400 <= err.status && err.status <= 499) { err.message = err.serverMessage; output_manager_default.prettyError(err); return 1; } if ((0, import_error_utils38.isErrnoException)(err)) { if (typeof err.stack === "string") { output_manager_default.debug(err.stack); } output_manager_default.prettyError(err); } else { await reportError(getSentry(), client, err); output_manager_default.error(`An unexpected error occurred in ${subcommand}: ${err}`); } return 1; } telemetryEventStore.updateTeamId(client.config.currentTeam); await telemetryEventStore.save(); return exitCode2; }; main18().then(async (exitCode2) => { if (!process.env.NO_UPDATE_NOTIFIER) { const latest = getLatestVersion({ pkg: pkg_default }); if (latest) { const changelog = "https://github.com/vercel/vercel/releases"; if (isTTY2) { const errorMsg = exitCode2 && exitCode2 !== 2 ? import_chalk146.default.magenta( ` The latest update ${import_chalk146.default.italic( "may" )} fix any errors that occurred.` ) : ""; output_manager_default.print( ` Update available for Vercel CLI (${import_chalk146.default.gray( `v${pkg_default.version}` )} \u2192 ${import_chalk146.default.green(`v${latest}`)})${errorMsg} ` ); const action = await client.input.expand({ message: "What would you like to do?", default: "u", choices: [ { key: "u", name: "Upgrade now", value: "upgrade" }, { key: "c", name: "View changelog", value: "changelog" }, { key: "s", name: "Skip", value: "skip" } ] }); if (action === "upgrade") { const upgradeExitCode = await executeUpgrade(); process.exitCode = upgradeExitCode; return; } else if (action === "changelog") { await (0, import_open9.default)(changelog); } } else { const errorMsg = exitCode2 && exitCode2 !== 2 ? import_chalk146.default.magenta( ` The latest update ${import_chalk146.default.italic( "may" )} fix any errors that occurred.` ) : ""; output_manager_default.print( box( `Update available! ${import_chalk146.default.gray(`v${pkg_default.version}`)} \u226B ${import_chalk146.default.green( `v${latest}` )} Changelog: ${output_manager_default.link(changelog, changelog, { fallback: false })} Run ${import_chalk146.default.cyan(cmd(await getUpdateCommand()))} to update.${errorMsg}` ) ); output_manager_default.print("\n"); } } } process.exitCode = exitCode2; }).catch(handleUnexpected); /*! Bundled license information: @sentry/node/cjs/integrations/anr/worker-script.js: (*! @sentry/node 7.120.1 (17b8021) | https://github.com/getsentry/sentry-javascript *) localforage/dist/localforage.js: (*! localForage -- Offline Storage, Improved Version 1.10.0 https://localforage.github.io/localForage (c) 2013-2017 Mozilla, Apache License 2.0 *) bytes/index.js: (*! * bytes * Copyright(c) 2012-2014 TJ Holowaychuk * Copyright(c) 2015 Jed Watson * MIT Licensed *) imurmurhash/imurmurhash.js: (** * @preserve * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013) * * @author Jens Taylor * @see http://github.com/homebrewing/brauhaus-diff * @author Gary Court * @see http://github.com/garycourt/murmurhash-js * @author Austin Appleby * @see http://sites.google.com/site/murmurhash/ *) is-extglob/index.js: (*! * is-extglob * * Copyright (c) 2014-2016, Jon Schlinkert. * Licensed under the MIT License. *) is-glob/index.js: (*! * is-glob * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. *) is-number/index.js: (*! * is-number * * Copyright (c) 2014-present, Jon Schlinkert. * Released under the MIT License. *) to-regex-range/index.js: (*! * to-regex-range * * Copyright (c) 2015-present, Jon Schlinkert. * Released under the MIT License. *) fill-range/index.js: (*! * fill-range * * Copyright (c) 2014-present, Jon Schlinkert. * Licensed under the MIT License. *) queue-microtask/index.js: (*! queue-microtask. MIT License. Feross Aboukhadijeh *) run-parallel/index.js: (*! run-parallel. MIT License. Feross Aboukhadijeh *) safe-buffer/index.js: (*! safe-buffer. MIT License. Feross Aboukhadijeh *) uri-js/dist/es5/uri.all.js: (** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js *) mime-db/index.js: (*! * mime-db * Copyright(c) 2014 Jonathan Ong * MIT Licensed *) mime-types/index.js: (*! * mime-types * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) bytes/index.js: (*! * bytes * Copyright(c) 2012-2014 TJ Holowaychuk * Copyright(c) 2015 Jed Watson * MIT Licensed *) depd/lib/compat/callsite-tostring.js: (*! * depd * Copyright(c) 2014 Douglas Christopher Wilson * MIT Licensed *) depd/lib/compat/event-listener-count.js: (*! * depd * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) depd/lib/compat/index.js: (*! * depd * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed *) depd/index.js: (*! * depd * Copyright(c) 2014-2017 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 *) 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-2015 Douglas Christopher Wilson * MIT Licensed *) http-proxy-node16/lib/http-proxy/passes/web-outgoing.js: (*! * Array of passes. * * A `pass` is just a function that is executed on `req, res, options` * so that you can easily add new checks while still keeping the base * flexible. *) http-proxy-node16/lib/http-proxy/passes/web-incoming.js: (*! * Array of passes. * * A `pass` is just a function that is executed on `req, res, options` * so that you can easily add new checks while still keeping the base * flexible. *) http-proxy-node16/lib/http-proxy/passes/ws-incoming.js: (*! * Array of passes. * * A `pass` is just a function that is executed on `req, socket, options` * so that you can easily add new checks while still keeping the base * flexible. *) http-proxy-node16/index.js: (*! * Caron dimonio, con occhi di bragia * loro accennando, tutte le raccoglie; * batte col remo qualunque s’adagia * * Charon the demon, with the eyes of glede, * Beckoning to them, collects them all together, * Beats with his oar whoever lags behind * * Dante - The Divine Comedy (Canto III) *) mime-db/index.js: (*! * mime-db * Copyright(c) 2014 Jonathan Ong * MIT Licensed *) mime-types/index.js: (*! * mime-types * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) content-disposition/index.js: (*! * content-disposition * Copyright(c) 2014 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 *) 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 *) */